@helixui/library 2.1.2 → 3.0.0-next.62

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 (819) hide show
  1. package/custom-elements.json +904 -1044
  2. package/dist/base/helix-element.d.ts +20 -8
  3. package/dist/base/helix-element.d.ts.map +1 -1
  4. package/dist/components/hx-accordion/hx-accordion-item.d.ts +7 -4
  5. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  6. package/dist/components/hx-accordion/hx-accordion-item.styles.d.ts.map +1 -1
  7. package/dist/components/hx-accordion/hx-accordion.d.ts +3 -2
  8. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  9. package/dist/components/hx-accordion/hx-accordion.styles.d.ts.map +1 -1
  10. package/dist/components/hx-accordion/index.d.ts +1 -0
  11. package/dist/components/hx-accordion/index.d.ts.map +1 -1
  12. package/dist/components/hx-accordion/index.js +1 -1
  13. package/dist/components/hx-action-bar/hx-action-bar.d.ts +26 -14
  14. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  15. package/dist/components/hx-action-bar/hx-action-bar.styles.d.ts.map +1 -1
  16. package/dist/components/hx-action-bar/index.js +1 -1
  17. package/dist/components/hx-alert/hx-alert.d.ts +7 -2
  18. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  19. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  20. package/dist/components/hx-alert/index.d.ts +1 -0
  21. package/dist/components/hx-alert/index.d.ts.map +1 -1
  22. package/dist/components/hx-alert/index.js +1 -1
  23. package/dist/components/hx-avatar/hx-avatar.d.ts +3 -2
  24. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  25. package/dist/components/hx-avatar/index.js +1 -1
  26. package/dist/components/hx-badge/hx-badge.d.ts +2 -9
  27. package/dist/components/hx-badge/hx-badge.d.ts.map +1 -1
  28. package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
  29. package/dist/components/hx-badge/index.d.ts +1 -1
  30. package/dist/components/hx-badge/index.d.ts.map +1 -1
  31. package/dist/components/hx-badge/index.js +1 -1
  32. package/dist/components/hx-banner/hx-banner.d.ts +3 -2
  33. package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
  34. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  35. package/dist/components/hx-banner/index.js +1 -1
  36. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +2 -2
  37. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  38. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.styles.d.ts.map +1 -1
  39. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +9 -19
  40. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  41. package/dist/components/hx-breadcrumb/hx-breadcrumb.styles.d.ts.map +1 -1
  42. package/dist/components/hx-breadcrumb/index.js +1 -1
  43. package/dist/components/hx-button/hx-button.d.ts +31 -9
  44. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  45. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  46. package/dist/components/hx-button/index.d.ts +1 -0
  47. package/dist/components/hx-button/index.d.ts.map +1 -1
  48. package/dist/components/hx-button/index.js +1 -1
  49. package/dist/components/hx-button-group/hx-button-group.d.ts +4 -6
  50. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  51. package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
  52. package/dist/components/hx-button-group/index.js +1 -1
  53. package/dist/components/hx-card/hx-card.d.ts +19 -2
  54. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  55. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  56. package/dist/components/hx-card/index.js +1 -1
  57. package/dist/components/hx-carousel/hx-carousel-item.d.ts +2 -2
  58. package/dist/components/hx-carousel/hx-carousel-item.d.ts.map +1 -1
  59. package/dist/components/hx-carousel/hx-carousel-item.styles.d.ts.map +1 -1
  60. package/dist/components/hx-carousel/hx-carousel.d.ts +2 -2
  61. package/dist/components/hx-carousel/hx-carousel.d.ts.map +1 -1
  62. package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
  63. package/dist/components/hx-carousel/index.js +1 -1
  64. package/dist/components/hx-checkbox/hx-checkbox.d.ts +52 -5
  65. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  66. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  67. package/dist/components/hx-checkbox/index.d.ts +1 -0
  68. package/dist/components/hx-checkbox/index.d.ts.map +1 -1
  69. package/dist/components/hx-checkbox/index.js +1 -1
  70. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +14 -20
  71. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  72. package/dist/components/hx-checkbox-group/hx-checkbox-group.styles.d.ts.map +1 -1
  73. package/dist/components/hx-checkbox-group/index.d.ts +1 -0
  74. package/dist/components/hx-checkbox-group/index.d.ts.map +1 -1
  75. package/dist/components/hx-checkbox-group/index.js +1 -1
  76. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
  77. package/dist/components/hx-clinical-status/index.js +1 -1
  78. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts +3 -2
  79. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  80. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  81. package/dist/components/hx-code-snippet/index.js +1 -1
  82. package/dist/components/hx-color-picker/hx-color-picker.d.ts +12 -19
  83. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  84. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  85. package/dist/components/hx-color-picker/index.d.ts +1 -0
  86. package/dist/components/hx-color-picker/index.d.ts.map +1 -1
  87. package/dist/components/hx-color-picker/index.js +1 -1
  88. package/dist/components/hx-combobox/hx-combobox.d.ts +45 -22
  89. package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
  90. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  91. package/dist/components/hx-combobox/index.d.ts +1 -0
  92. package/dist/components/hx-combobox/index.d.ts.map +1 -1
  93. package/dist/components/hx-combobox/index.js +1 -1
  94. package/dist/components/hx-container/hx-container.d.ts +2 -4
  95. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  96. package/dist/components/hx-container/hx-container.styles.d.ts.map +1 -1
  97. package/dist/components/hx-container/index.d.ts +0 -1
  98. package/dist/components/hx-container/index.d.ts.map +1 -1
  99. package/dist/components/hx-container/index.js +1 -1
  100. package/dist/components/hx-copy-button/hx-copy-button.d.ts +2 -2
  101. package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
  102. package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
  103. package/dist/components/hx-copy-button/index.js +1 -1
  104. package/dist/components/hx-counter/hx-counter.d.ts +23 -2
  105. package/dist/components/hx-counter/hx-counter.d.ts.map +1 -1
  106. package/dist/components/hx-counter/hx-counter.styles.d.ts.map +1 -1
  107. package/dist/components/hx-counter/index.js +1 -1
  108. package/dist/components/hx-data-table/hx-data-table.d.ts +46 -2
  109. package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
  110. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  111. package/dist/components/hx-data-table/index.d.ts +1 -0
  112. package/dist/components/hx-data-table/index.d.ts.map +1 -1
  113. package/dist/components/hx-data-table/index.js +1 -1
  114. package/dist/components/hx-date-picker/hx-date-picker.d.ts +35 -35
  115. package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
  116. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  117. package/dist/components/hx-date-picker/index.d.ts +1 -0
  118. package/dist/components/hx-date-picker/index.d.ts.map +1 -1
  119. package/dist/components/hx-date-picker/index.js +1 -1
  120. package/dist/components/hx-dialog/hx-dialog.d.ts +44 -5
  121. package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
  122. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  123. package/dist/components/hx-dialog/index.js +1 -1
  124. package/dist/components/hx-divider/hx-divider.d.ts +3 -4
  125. package/dist/components/hx-divider/hx-divider.d.ts.map +1 -1
  126. package/dist/components/hx-divider/hx-divider.styles.d.ts.map +1 -1
  127. package/dist/components/hx-divider/index.d.ts +0 -1
  128. package/dist/components/hx-divider/index.d.ts.map +1 -1
  129. package/dist/components/hx-divider/index.js +1 -1
  130. package/dist/components/hx-drawer/hx-drawer.d.ts +39 -2
  131. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  132. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  133. package/dist/components/hx-drawer/index.js +1 -1
  134. package/dist/components/hx-dropdown/hx-dropdown.d.ts +11 -7
  135. package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
  136. package/dist/components/hx-dropdown/hx-dropdown.styles.d.ts.map +1 -1
  137. package/dist/components/hx-dropdown/index.js +1 -1
  138. package/dist/components/hx-field/hx-field.d.ts +4 -3
  139. package/dist/components/hx-field/hx-field.d.ts.map +1 -1
  140. package/dist/components/hx-field/hx-field.styles.d.ts.map +1 -1
  141. package/dist/components/hx-field/index.js +1 -1
  142. package/dist/components/hx-field-label/hx-field-label.d.ts +2 -2
  143. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  144. package/dist/components/hx-field-label/hx-field-label.styles.d.ts.map +1 -1
  145. package/dist/components/hx-field-label/index.js +1 -1
  146. package/dist/components/hx-file-upload/hx-file-upload.d.ts +38 -18
  147. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  148. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  149. package/dist/components/hx-file-upload/index.d.ts +1 -0
  150. package/dist/components/hx-file-upload/index.d.ts.map +1 -1
  151. package/dist/components/hx-file-upload/index.js +1 -1
  152. package/dist/components/hx-form/hx-form.d.ts +2 -2
  153. package/dist/components/hx-form/hx-form.d.ts.map +1 -1
  154. package/dist/components/hx-form/hx-form.styles.d.ts +8 -0
  155. package/dist/components/hx-form/hx-form.styles.d.ts.map +1 -1
  156. package/dist/components/hx-form/index.js +1 -1
  157. package/dist/components/hx-format-date/hx-format-date.d.ts +2 -2
  158. package/dist/components/hx-format-date/hx-format-date.d.ts.map +1 -1
  159. package/dist/components/hx-format-date/hx-format-date.styles.d.ts.map +1 -1
  160. package/dist/components/hx-format-date/index.js +1 -1
  161. package/dist/components/hx-grid/hx-grid.d.ts +4 -3
  162. package/dist/components/hx-grid/hx-grid.d.ts.map +1 -1
  163. package/dist/components/hx-grid/hx-grid.styles.d.ts.map +1 -1
  164. package/dist/components/hx-grid/index.js +1 -1
  165. package/dist/components/hx-help-text/hx-help-text.d.ts +2 -4
  166. package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
  167. package/dist/components/hx-help-text/hx-help-text.styles.d.ts.map +1 -1
  168. package/dist/components/hx-help-text/index.js +1 -1
  169. package/dist/components/hx-icon/hx-icon.d.ts +17 -2
  170. package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
  171. package/dist/components/hx-icon/hx-icon.styles.d.ts.map +1 -1
  172. package/dist/components/hx-icon/index.js +1 -1
  173. package/dist/components/hx-icon-button/hx-icon-button.d.ts +10 -14
  174. package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
  175. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  176. package/dist/components/hx-icon-button/index.js +1 -1
  177. package/dist/components/hx-image/hx-image.d.ts +2 -2
  178. package/dist/components/hx-image/hx-image.d.ts.map +1 -1
  179. package/dist/components/hx-image/hx-image.styles.d.ts.map +1 -1
  180. package/dist/components/hx-image/index.js +1 -1
  181. package/dist/components/hx-link/hx-link.d.ts +4 -2
  182. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  183. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  184. package/dist/components/hx-link/index.js +1 -1
  185. package/dist/components/hx-list/hx-list-item.d.ts +3 -2
  186. package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
  187. package/dist/components/hx-list/hx-list-item.styles.d.ts.map +1 -1
  188. package/dist/components/hx-list/hx-list.d.ts +3 -2
  189. package/dist/components/hx-list/hx-list.d.ts.map +1 -1
  190. package/dist/components/hx-list/hx-list.styles.d.ts.map +1 -1
  191. package/dist/components/hx-list/index.js +1 -1
  192. package/dist/components/hx-menu/hx-menu-divider.d.ts +2 -2
  193. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  194. package/dist/components/hx-menu/hx-menu-divider.styles.d.ts.map +1 -1
  195. package/dist/components/hx-menu/hx-menu-item.d.ts +2 -2
  196. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  197. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  198. package/dist/components/hx-menu/hx-menu.d.ts +2 -2
  199. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  200. package/dist/components/hx-menu/hx-menu.styles.d.ts.map +1 -1
  201. package/dist/components/hx-menu/index.js +1 -1
  202. package/dist/components/hx-meter/hx-meter.d.ts +3 -4
  203. package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
  204. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  205. package/dist/components/hx-meter/index.js +1 -1
  206. package/dist/components/hx-nav/hx-nav.d.ts +2 -4
  207. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  208. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  209. package/dist/components/hx-nav/index.d.ts +1 -1
  210. package/dist/components/hx-nav/index.d.ts.map +1 -1
  211. package/dist/components/hx-nav/index.js +1 -1
  212. package/dist/components/hx-number-input/hx-number-input.d.ts +14 -20
  213. package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
  214. package/dist/components/hx-number-input/hx-number-input.styles.d.ts.map +1 -1
  215. package/dist/components/hx-number-input/index.d.ts +1 -0
  216. package/dist/components/hx-number-input/index.d.ts.map +1 -1
  217. package/dist/components/hx-number-input/index.js +1 -1
  218. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +2 -2
  219. package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
  220. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  221. package/dist/components/hx-overflow-menu/index.js +1 -1
  222. package/dist/components/hx-pagination/hx-pagination.d.ts +10 -2
  223. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  224. package/dist/components/hx-pagination/index.d.ts +1 -0
  225. package/dist/components/hx-pagination/index.d.ts.map +1 -1
  226. package/dist/components/hx-pagination/index.js +1 -1
  227. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +47 -5
  228. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
  229. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
  230. package/dist/components/hx-patient-banner/index.js +1 -1
  231. package/dist/components/hx-phi-field/hx-phi-field.d.ts +87 -6
  232. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  233. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
  234. package/dist/components/hx-phi-field/index.js +1 -1
  235. package/dist/components/hx-popover/hx-popover.d.ts +4 -2
  236. package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
  237. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  238. package/dist/components/hx-popover/index.js +1 -1
  239. package/dist/components/hx-popup/hx-popup.d.ts +7 -2
  240. package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
  241. package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
  242. package/dist/components/hx-popup/index.js +1 -1
  243. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +3 -4
  244. package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
  245. package/dist/components/hx-progress-bar/index.js +1 -1
  246. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +3 -2
  247. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  248. package/dist/components/hx-progress-ring/hx-progress-ring.styles.d.ts.map +1 -1
  249. package/dist/components/hx-progress-ring/index.js +1 -1
  250. package/dist/components/hx-prose/hx-prose.d.ts +3 -2
  251. package/dist/components/hx-prose/hx-prose.d.ts.map +1 -1
  252. package/dist/components/hx-prose/hx-prose.styles.d.ts +8 -0
  253. package/dist/components/hx-prose/hx-prose.styles.d.ts.map +1 -1
  254. package/dist/components/hx-prose/index.js +1 -1
  255. package/dist/components/hx-radio-group/hx-radio-group.d.ts +14 -39
  256. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  257. package/dist/components/hx-radio-group/hx-radio-group.styles.d.ts.map +1 -1
  258. package/dist/components/hx-radio-group/hx-radio.d.ts +19 -4
  259. package/dist/components/hx-radio-group/hx-radio.d.ts.map +1 -1
  260. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  261. package/dist/components/hx-radio-group/index.d.ts +1 -0
  262. package/dist/components/hx-radio-group/index.d.ts.map +1 -1
  263. package/dist/components/hx-radio-group/index.js +1 -1
  264. package/dist/components/hx-rating/hx-rating.d.ts +9 -20
  265. package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
  266. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  267. package/dist/components/hx-rating/index.d.ts +1 -0
  268. package/dist/components/hx-rating/index.d.ts.map +1 -1
  269. package/dist/components/hx-rating/index.js +1 -1
  270. package/dist/components/hx-select/hx-select.d.ts +26 -17
  271. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  272. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  273. package/dist/components/hx-select/index.d.ts +1 -0
  274. package/dist/components/hx-select/index.d.ts.map +1 -1
  275. package/dist/components/hx-select/index.js +1 -1
  276. package/dist/components/hx-side-nav/hx-nav-item.d.ts +2 -5
  277. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  278. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  279. package/dist/components/hx-side-nav/hx-side-nav.d.ts +3 -2
  280. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  281. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  282. package/dist/components/hx-side-nav/index.js +1 -1
  283. package/dist/components/hx-skeleton/hx-skeleton.d.ts +4 -3
  284. package/dist/components/hx-skeleton/hx-skeleton.d.ts.map +1 -1
  285. package/dist/components/hx-skeleton/hx-skeleton.styles.d.ts.map +1 -1
  286. package/dist/components/hx-skeleton/index.js +1 -1
  287. package/dist/components/hx-slider/hx-slider.d.ts +18 -22
  288. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  289. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  290. package/dist/components/hx-slider/index.d.ts +1 -0
  291. package/dist/components/hx-slider/index.d.ts.map +1 -1
  292. package/dist/components/hx-slider/index.js +1 -1
  293. package/dist/components/hx-spinner/hx-spinner.d.ts +2 -2
  294. package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
  295. package/dist/components/hx-spinner/hx-spinner.styles.d.ts.map +1 -1
  296. package/dist/components/hx-spinner/index.js +1 -1
  297. package/dist/components/hx-split-button/hx-split-button.d.ts +10 -4
  298. package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
  299. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  300. package/dist/components/hx-split-button/index.js +1 -1
  301. package/dist/components/hx-split-panel/hx-split-panel.d.ts +12 -2
  302. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  303. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  304. package/dist/components/hx-split-panel/index.js +1 -1
  305. package/dist/components/hx-stack/hx-stack.d.ts +2 -2
  306. package/dist/components/hx-stack/hx-stack.d.ts.map +1 -1
  307. package/dist/components/hx-stack/hx-stack.styles.d.ts.map +1 -1
  308. package/dist/components/hx-stack/index.js +1 -1
  309. package/dist/components/hx-stat/hx-stat.d.ts +6 -2
  310. package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
  311. package/dist/components/hx-stat/hx-stat.styles.d.ts.map +1 -1
  312. package/dist/components/hx-stat/index.js +1 -1
  313. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +3 -2
  314. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  315. package/dist/components/hx-status-indicator/hx-status-indicator.styles.d.ts.map +1 -1
  316. package/dist/components/hx-status-indicator/index.js +1 -1
  317. package/dist/components/hx-steps/hx-step.d.ts +3 -2
  318. package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
  319. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  320. package/dist/components/hx-steps/hx-steps.d.ts +11 -4
  321. package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
  322. package/dist/components/hx-steps/hx-steps.styles.d.ts.map +1 -1
  323. package/dist/components/hx-steps/index.js +1 -1
  324. package/dist/components/hx-structured-list/hx-structured-list.d.ts +3 -3
  325. package/dist/components/hx-structured-list/hx-structured-list.d.ts.map +1 -1
  326. package/dist/components/hx-structured-list/hx-structured-list.styles.d.ts.map +1 -1
  327. package/dist/components/hx-structured-list/index.js +1 -1
  328. package/dist/components/hx-style-scope/hx-style-scope.d.ts +4 -3
  329. package/dist/components/hx-style-scope/hx-style-scope.d.ts.map +1 -1
  330. package/dist/components/hx-style-scope/hx-style-scope.styles.d.ts.map +1 -1
  331. package/dist/components/hx-style-scope/index.js +1 -1
  332. package/dist/components/hx-switch/hx-switch.d.ts +25 -29
  333. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  334. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  335. package/dist/components/hx-switch/index.d.ts +2 -1
  336. package/dist/components/hx-switch/index.d.ts.map +1 -1
  337. package/dist/components/hx-switch/index.js +1 -1
  338. package/dist/components/hx-table/hx-table.d.ts +3 -2
  339. package/dist/components/hx-table/hx-table.d.ts.map +1 -1
  340. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
  341. package/dist/components/hx-table/hx-tbody.d.ts +2 -2
  342. package/dist/components/hx-table/hx-tbody.d.ts.map +1 -1
  343. package/dist/components/hx-table/hx-td.d.ts +2 -2
  344. package/dist/components/hx-table/hx-td.d.ts.map +1 -1
  345. package/dist/components/hx-table/hx-tfoot.d.ts +2 -2
  346. package/dist/components/hx-table/hx-tfoot.d.ts.map +1 -1
  347. package/dist/components/hx-table/hx-th.d.ts +2 -2
  348. package/dist/components/hx-table/hx-th.d.ts.map +1 -1
  349. package/dist/components/hx-table/hx-thead.d.ts +2 -2
  350. package/dist/components/hx-table/hx-thead.d.ts.map +1 -1
  351. package/dist/components/hx-table/hx-tr.d.ts +2 -2
  352. package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
  353. package/dist/components/hx-table/index.js +1 -1
  354. package/dist/components/hx-tabs/hx-tab-panel.d.ts +2 -2
  355. package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
  356. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  357. package/dist/components/hx-tabs/hx-tab.d.ts +2 -2
  358. package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
  359. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  360. package/dist/components/hx-tabs/hx-tabs.d.ts +14 -2
  361. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  362. package/dist/components/hx-tabs/hx-tabs.styles.d.ts.map +1 -1
  363. package/dist/components/hx-tabs/index.d.ts +1 -0
  364. package/dist/components/hx-tabs/index.d.ts.map +1 -1
  365. package/dist/components/hx-tabs/index.js +1 -1
  366. package/dist/components/hx-tag/hx-tag.d.ts +2 -4
  367. package/dist/components/hx-tag/hx-tag.d.ts.map +1 -1
  368. package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
  369. package/dist/components/hx-tag/index.d.ts +0 -2
  370. package/dist/components/hx-tag/index.d.ts.map +1 -1
  371. package/dist/components/hx-tag/index.js +1 -1
  372. package/dist/components/hx-text/hx-text.d.ts +2 -2
  373. package/dist/components/hx-text/hx-text.d.ts.map +1 -1
  374. package/dist/components/hx-text/hx-text.styles.d.ts.map +1 -1
  375. package/dist/components/hx-text/index.js +1 -1
  376. package/dist/components/hx-text-input/hx-text-input.d.ts +34 -7
  377. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  378. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  379. package/dist/components/hx-text-input/index.d.ts +1 -0
  380. package/dist/components/hx-text-input/index.d.ts.map +1 -1
  381. package/dist/components/hx-text-input/index.js +1 -1
  382. package/dist/components/hx-textarea/hx-textarea.d.ts +41 -25
  383. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  384. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  385. package/dist/components/hx-textarea/index.d.ts +1 -0
  386. package/dist/components/hx-textarea/index.d.ts.map +1 -1
  387. package/dist/components/hx-textarea/index.js +1 -1
  388. package/dist/components/hx-theme/hx-theme.d.ts +3 -11
  389. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  390. package/dist/components/hx-theme/hx-theme.styles.d.ts.map +1 -1
  391. package/dist/components/hx-theme/index.d.ts +0 -2
  392. package/dist/components/hx-theme/index.d.ts.map +1 -1
  393. package/dist/components/hx-theme/index.js +1 -1
  394. package/dist/components/hx-time-picker/hx-time-picker.d.ts +13 -31
  395. package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
  396. package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
  397. package/dist/components/hx-time-picker/index.d.ts +1 -0
  398. package/dist/components/hx-time-picker/index.d.ts.map +1 -1
  399. package/dist/components/hx-time-picker/index.js +1 -1
  400. package/dist/components/hx-toast/hx-toast-stack.d.ts +2 -2
  401. package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
  402. package/dist/components/hx-toast/hx-toast.d.ts +3 -2
  403. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  404. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  405. package/dist/components/hx-toast/index.js +1 -1
  406. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +10 -13
  407. package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
  408. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  409. package/dist/components/hx-toggle-button/index.d.ts +1 -0
  410. package/dist/components/hx-toggle-button/index.d.ts.map +1 -1
  411. package/dist/components/hx-toggle-button/index.js +1 -1
  412. package/dist/components/hx-tooltip/hx-tooltip.d.ts +2 -2
  413. package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
  414. package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
  415. package/dist/components/hx-tooltip/index.js +1 -1
  416. package/dist/components/hx-top-nav/hx-top-nav.d.ts +2 -2
  417. package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
  418. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  419. package/dist/components/hx-top-nav/index.js +1 -1
  420. package/dist/components/hx-tree-view/hx-tree-item.d.ts +2 -4
  421. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  422. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  423. package/dist/components/hx-tree-view/hx-tree-view.d.ts +2 -4
  424. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  425. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  426. package/dist/components/hx-tree-view/index.d.ts +0 -4
  427. package/dist/components/hx-tree-view/index.d.ts.map +1 -1
  428. package/dist/components/hx-tree-view/index.js +1 -1
  429. package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts +2 -2
  430. package/dist/components/hx-visually-hidden/hx-visually-hidden.d.ts.map +1 -1
  431. package/dist/components/hx-visually-hidden/hx-visually-hidden.styles.d.ts.map +1 -1
  432. package/dist/components/hx-visually-hidden/index.js +1 -1
  433. package/dist/css/helix-all.css +3717 -786
  434. package/dist/css/helix-core.css +277 -64
  435. package/dist/css/helix-data.css +86 -7
  436. package/dist/css/helix-feedback.css +215 -69
  437. package/dist/css/helix-forms.css +2122 -127
  438. package/dist/css/helix-layout.css +53 -7
  439. package/dist/css/helix-media.css +40 -16
  440. package/dist/css/helix-navigation.css +209 -48
  441. package/dist/css/helix-overlay.css +99 -12
  442. package/dist/css/helix-tokens.css +30 -11
  443. package/dist/css/helix-utility.css +118 -9
  444. package/dist/css/hx-accordion.css +9 -1
  445. package/dist/css/hx-action-bar.css +17 -3
  446. package/dist/css/hx-alert.css +39 -18
  447. package/dist/css/hx-avatar.css +1 -1
  448. package/dist/css/hx-badge.css +59 -24
  449. package/dist/css/hx-banner.css +35 -18
  450. package/dist/css/hx-breadcrumb.css +27 -0
  451. package/dist/css/hx-button-group.css +13 -0
  452. package/dist/css/hx-button.css +6 -3
  453. package/dist/css/hx-card.css +18 -6
  454. package/dist/css/hx-carousel.css +40 -16
  455. package/dist/css/hx-checkbox-group.css +36 -4
  456. package/dist/css/hx-checkbox.css +74 -8
  457. package/dist/css/hx-clinical-status.css +46 -23
  458. package/dist/css/hx-code-snippet.css +25 -3
  459. package/dist/css/hx-color-picker.css +276 -1
  460. package/dist/css/hx-combobox.css +391 -1
  461. package/dist/css/hx-container.css +10 -6
  462. package/dist/css/hx-copy-button.css +31 -3
  463. package/dist/css/hx-counter.css +11 -1
  464. package/dist/css/hx-data-table.css +24 -1
  465. package/dist/css/hx-date-picker.css +437 -1
  466. package/dist/css/hx-dialog.css +23 -2
  467. package/dist/css/hx-divider.css +8 -0
  468. package/dist/css/hx-drawer.css +22 -1
  469. package/dist/css/hx-dropdown.css +10 -1
  470. package/dist/css/hx-field-label.css +18 -2
  471. package/dist/css/hx-field.css +39 -3
  472. package/dist/css/hx-file-upload.css +60 -12
  473. package/dist/css/hx-format-date.css +11 -0
  474. package/dist/css/hx-grid.css +10 -0
  475. package/dist/css/hx-help-text.css +25 -5
  476. package/dist/css/hx-icon-button.css +27 -0
  477. package/dist/css/hx-icon.css +8 -0
  478. package/dist/css/hx-image.css +11 -3
  479. package/dist/css/hx-link.css +24 -6
  480. package/dist/css/hx-list.css +10 -0
  481. package/dist/css/hx-menu.css +10 -2
  482. package/dist/css/hx-meter.css +28 -14
  483. package/dist/css/hx-nav.css +27 -12
  484. package/dist/css/hx-number-input.css +78 -0
  485. package/dist/css/hx-overflow-menu.css +41 -10
  486. package/dist/css/hx-pagination.css +13 -13
  487. package/dist/css/hx-patient-banner.css +30 -10
  488. package/dist/css/hx-phi-field.css +20 -3
  489. package/dist/css/hx-popover.css +16 -4
  490. package/dist/css/hx-popup.css +12 -0
  491. package/dist/css/hx-progress-bar.css +1 -1
  492. package/dist/css/hx-progress-ring.css +26 -4
  493. package/dist/css/hx-radio-group.css +35 -3
  494. package/dist/css/hx-rating.css +45 -4
  495. package/dist/css/hx-select.css +89 -9
  496. package/dist/css/hx-side-nav.css +26 -0
  497. package/dist/css/hx-skeleton.css +13 -1
  498. package/dist/css/hx-slider.css +16 -11
  499. package/dist/css/hx-spinner.css +15 -3
  500. package/dist/css/hx-split-button.css +37 -2
  501. package/dist/css/hx-split-panel.css +14 -0
  502. package/dist/css/hx-stack.css +10 -0
  503. package/dist/css/hx-stat.css +52 -5
  504. package/dist/css/hx-status-indicator.css +15 -2
  505. package/dist/css/hx-steps.css +12 -0
  506. package/dist/css/hx-structured-list.css +18 -2
  507. package/dist/css/hx-style-scope.css +11 -0
  508. package/dist/css/hx-switch.css +66 -4
  509. package/dist/css/hx-table.css +9 -1
  510. package/dist/css/hx-tabs.css +15 -3
  511. package/dist/css/hx-tag.css +24 -12
  512. package/dist/css/hx-text-input.css +71 -9
  513. package/dist/css/hx-text.css +38 -5
  514. package/dist/css/hx-textarea.css +71 -15
  515. package/dist/css/hx-theme.css +11 -0
  516. package/dist/css/hx-time-picker.css +224 -1
  517. package/dist/css/hx-toast.css +19 -7
  518. package/dist/css/hx-toggle-button.css +41 -4
  519. package/dist/css/hx-tooltip.css +16 -4
  520. package/dist/css/hx-top-nav.css +29 -8
  521. package/dist/css/hx-tree-view.css +9 -0
  522. package/dist/css/hx-visually-hidden.css +12 -0
  523. package/dist/css/index.css +1 -1
  524. package/dist/css/manifest.json +49 -11
  525. package/dist/form-test-utils.d.ts +45 -0
  526. package/dist/form-test-utils.d.ts.map +1 -0
  527. package/dist/index.d.ts +28 -14
  528. package/dist/index.d.ts.map +1 -1
  529. package/dist/index.js +189 -176
  530. package/dist/index.js.map +1 -1
  531. package/dist/mixins/FormMixin.d.ts +24 -5
  532. package/dist/mixins/FormMixin.d.ts.map +1 -1
  533. package/dist/mixins/aria-delegation.d.ts +1 -1
  534. package/dist/mixins/aria-delegation.d.ts.map +1 -1
  535. package/dist/mixins/index.d.ts +3 -1
  536. package/dist/mixins/index.d.ts.map +1 -1
  537. package/dist/shared/{FormMixin-Bjvw20G5.js → FormMixin-B8PXk5RQ.js} +31 -14
  538. package/dist/shared/FormMixin-B8PXk5RQ.js.map +1 -0
  539. package/dist/shared/{aria-delegation-CBP9eQ0M.js → aria-delegation-Doq6RRUy.js} +6 -6
  540. package/dist/shared/aria-delegation-Doq6RRUy.js.map +1 -0
  541. package/dist/shared/{id-counter-JhvVCnjh.js → helix-element-BNEYeiys.js} +35 -44
  542. package/dist/shared/helix-element-BNEYeiys.js.map +1 -0
  543. package/dist/shared/{hx-accordion-CpfO0YQo.js → hx-accordion-Wt52OOZD.js} +127 -80
  544. package/dist/shared/hx-accordion-Wt52OOZD.js.map +1 -0
  545. package/dist/shared/{hx-action-bar-BpY1Z1UV.js → hx-action-bar-BKMADbHj.js} +90 -75
  546. package/dist/shared/hx-action-bar-BKMADbHj.js.map +1 -0
  547. package/dist/shared/{hx-alert-CHOjTBds.js → hx-alert-D7n94HwI.js} +47 -26
  548. package/dist/shared/hx-alert-D7n94HwI.js.map +1 -0
  549. package/dist/shared/{hx-avatar-an-WsuLl.js → hx-avatar-iLYzu8MJ.js} +10 -10
  550. package/dist/shared/hx-avatar-iLYzu8MJ.js.map +1 -0
  551. package/dist/shared/{hx-badge-DDXTLoWi.js → hx-badge-CVCmMPyW.js} +78 -43
  552. package/dist/shared/hx-badge-CVCmMPyW.js.map +1 -0
  553. package/dist/shared/{hx-banner-B-WEDiq7.js → hx-banner-C_He7Tr4.js} +60 -43
  554. package/dist/shared/hx-banner-C_He7Tr4.js.map +1 -0
  555. package/dist/shared/{hx-breadcrumb-item-DzLyeL5Z.js → hx-breadcrumb-item-CldCwD1d.js} +123 -83
  556. package/dist/shared/hx-breadcrumb-item-CldCwD1d.js.map +1 -0
  557. package/dist/shared/{hx-button-DoN8jjQT.js → hx-button-Ddl-T6T-.js} +117 -92
  558. package/dist/shared/hx-button-Ddl-T6T-.js.map +1 -0
  559. package/dist/shared/{hx-button-group-BXlMQTt_.js → hx-button-group-BJOGWoMa.js} +33 -21
  560. package/dist/shared/hx-button-group-BJOGWoMa.js.map +1 -0
  561. package/dist/shared/{hx-card-BgXZXDuc.js → hx-card-ycveujjL.js} +64 -38
  562. package/dist/shared/hx-card-ycveujjL.js.map +1 -0
  563. package/dist/shared/{hx-carousel-item-Dwt9Pphz.js → hx-carousel-item-D_dCv61-.js} +76 -41
  564. package/dist/shared/hx-carousel-item-D_dCv61-.js.map +1 -0
  565. package/dist/shared/{hx-checkbox-CTEZ9IFq.js → hx-checkbox-DkkoWoye.js} +163 -79
  566. package/dist/shared/hx-checkbox-DkkoWoye.js.map +1 -0
  567. package/dist/shared/{hx-checkbox-group-DThZeN5d.js → hx-checkbox-group-C3poJ-Zw.js} +105 -79
  568. package/dist/shared/hx-checkbox-group-C3poJ-Zw.js.map +1 -0
  569. package/dist/shared/{hx-clinical-status-m4soOOwg.js → hx-clinical-status-BS5lcddT.js} +74 -51
  570. package/dist/shared/hx-clinical-status-BS5lcddT.js.map +1 -0
  571. package/dist/shared/{hx-code-snippet-CoLYvX1Z.js → hx-code-snippet-B7wUKzyb.js} +35 -13
  572. package/dist/shared/{hx-code-snippet-CoLYvX1Z.js.map → hx-code-snippet-B7wUKzyb.js.map} +1 -1
  573. package/dist/shared/{hx-color-picker-DhOaNe6-.js → hx-color-picker-DBaKTVLr.js} +360 -98
  574. package/dist/shared/hx-color-picker-DBaKTVLr.js.map +1 -0
  575. package/dist/shared/hx-combobox-BmgYT7Ar.js +929 -0
  576. package/dist/shared/hx-combobox-BmgYT7Ar.js.map +1 -0
  577. package/dist/shared/{hx-container-31QT9KV_.js → hx-container-DVI7sxfX.js} +27 -23
  578. package/dist/shared/hx-container-DVI7sxfX.js.map +1 -0
  579. package/dist/shared/{hx-copy-button-BoM0WsMd.js → hx-copy-button-8deNUdwP.js} +68 -40
  580. package/dist/shared/hx-copy-button-8deNUdwP.js.map +1 -0
  581. package/dist/shared/{hx-counter-CP42cSVK.js → hx-counter-CKfl_g8K.js} +88 -43
  582. package/dist/shared/hx-counter-CKfl_g8K.js.map +1 -0
  583. package/dist/shared/{hx-data-table-D5Ne-goy.js → hx-data-table-B6h0RPn0.js} +203 -132
  584. package/dist/shared/hx-data-table-B6h0RPn0.js.map +1 -0
  585. package/dist/shared/hx-date-picker-Dq2Nb68_.js +1077 -0
  586. package/dist/shared/hx-date-picker-Dq2Nb68_.js.map +1 -0
  587. package/dist/shared/{hx-dialog-D4ubstxx.js → hx-dialog-CvIlY0Tc.js} +85 -52
  588. package/dist/shared/hx-dialog-CvIlY0Tc.js.map +1 -0
  589. package/dist/shared/{hx-divider-BBtOLHRP.js → hx-divider-DwpOrzMW.js} +23 -15
  590. package/dist/shared/hx-divider-DwpOrzMW.js.map +1 -0
  591. package/dist/shared/{hx-drawer--WDLuWtS.js → hx-drawer-Cx2ZJhBe.js} +101 -66
  592. package/dist/shared/hx-drawer-Cx2ZJhBe.js.map +1 -0
  593. package/dist/shared/{hx-dropdown-n5-XSmiV.js → hx-dropdown-BjDrPUq5.js} +55 -46
  594. package/dist/shared/hx-dropdown-BjDrPUq5.js.map +1 -0
  595. package/dist/shared/{hx-field-CwT9tki1.js → hx-field-Dp3qQMut.js} +61 -25
  596. package/dist/shared/hx-field-Dp3qQMut.js.map +1 -0
  597. package/dist/shared/{hx-field-label-CcOK9VU3.js → hx-field-label-BC8QViXv.js} +41 -25
  598. package/dist/shared/hx-field-label-BC8QViXv.js.map +1 -0
  599. package/dist/shared/{hx-file-upload-Dwtu3WcB.js → hx-file-upload-B6Yl1u0i.js} +201 -130
  600. package/dist/shared/hx-file-upload-B6Yl1u0i.js.map +1 -0
  601. package/dist/shared/{hx-form-fJE-FJQV.js → hx-form-ButQFt9A.js} +13 -18
  602. package/dist/shared/hx-form-ButQFt9A.js.map +1 -0
  603. package/dist/shared/{hx-format-date-B7L9odbA.js → hx-format-date-CKnlQOmV.js} +20 -9
  604. package/dist/shared/hx-format-date-CKnlQOmV.js.map +1 -0
  605. package/dist/shared/{hx-grid-BIAR5h9m.js → hx-grid-CXZf3jeK.js} +28 -18
  606. package/dist/shared/hx-grid-CXZf3jeK.js.map +1 -0
  607. package/dist/shared/{hx-help-text-Bmb80bP4.js → hx-help-text-D7eytSim.js} +45 -25
  608. package/dist/shared/hx-help-text-D7eytSim.js.map +1 -0
  609. package/dist/shared/{hx-icon-BKHs3OLu.js → hx-icon-CcyDPDYY.js} +104 -62
  610. package/dist/shared/hx-icon-CcyDPDYY.js.map +1 -0
  611. package/dist/shared/{hx-icon-button-CJuy9xbw.js → hx-icon-button-BHneqPCU.js} +58 -42
  612. package/dist/shared/hx-icon-button-BHneqPCU.js.map +1 -0
  613. package/dist/shared/{hx-image-ztiXumZB.js → hx-image-2gt14zZd.js} +34 -26
  614. package/dist/shared/hx-image-2gt14zZd.js.map +1 -0
  615. package/dist/shared/{hx-link-IVsXmsKx.js → hx-link-BESrWK8M.js} +72 -48
  616. package/dist/shared/hx-link-BESrWK8M.js.map +1 -0
  617. package/dist/shared/{hx-list-CoTDMp19.js → hx-list-_9qVv02L.js} +91 -49
  618. package/dist/shared/hx-list-_9qVv02L.js.map +1 -0
  619. package/dist/shared/{hx-menu-divider-DRT8yHRZ.js → hx-menu-divider-Ck-9Os1t.js} +103 -60
  620. package/dist/shared/hx-menu-divider-Ck-9Os1t.js.map +1 -0
  621. package/dist/shared/{hx-meter-BvSJoqDp.js → hx-meter-TbROk-dw.js} +64 -49
  622. package/dist/shared/hx-meter-TbROk-dw.js.map +1 -0
  623. package/dist/shared/{hx-nav-l0Rp7WPW.js → hx-nav-BcYDmjf7.js} +71 -56
  624. package/dist/shared/hx-nav-BcYDmjf7.js.map +1 -0
  625. package/dist/shared/{hx-nav-item-CJN4VDrf.js → hx-nav-item-pqPasRUm.js} +67 -23
  626. package/dist/shared/hx-nav-item-pqPasRUm.js.map +1 -0
  627. package/dist/shared/{hx-number-input-0Waw7Z7u.js → hx-number-input-mOIZ3-46.js} +169 -96
  628. package/dist/shared/hx-number-input-mOIZ3-46.js.map +1 -0
  629. package/dist/shared/{hx-overflow-menu-DElwFSCd.js → hx-overflow-menu-Dprb9lnT.js} +70 -38
  630. package/dist/shared/hx-overflow-menu-Dprb9lnT.js.map +1 -0
  631. package/dist/shared/{hx-pagination-BNtx-LG6.js → hx-pagination-AguTQjYC.js} +35 -35
  632. package/dist/shared/hx-pagination-AguTQjYC.js.map +1 -0
  633. package/dist/shared/{hx-patient-banner-BKiN7nIE.js → hx-patient-banner-uE6gqLpT.js} +67 -47
  634. package/dist/shared/hx-patient-banner-uE6gqLpT.js.map +1 -0
  635. package/dist/shared/{hx-phi-field-BiJH3V-k.js → hx-phi-field-BC_XowhC.js} +158 -59
  636. package/dist/shared/hx-phi-field-BC_XowhC.js.map +1 -0
  637. package/dist/shared/{hx-popover-D63RXn5H.js → hx-popover-B2_203ct.js} +48 -34
  638. package/dist/shared/hx-popover-B2_203ct.js.map +1 -0
  639. package/dist/shared/{hx-popup-BQWMhvMO.js → hx-popup-DZXpsJ1R.js} +89 -64
  640. package/dist/shared/hx-popup-DZXpsJ1R.js.map +1 -0
  641. package/dist/shared/{hx-progress-bar-Cm0VihTN.js → hx-progress-bar-KjEkEJLy.js} +21 -20
  642. package/dist/shared/hx-progress-bar-KjEkEJLy.js.map +1 -0
  643. package/dist/shared/{hx-progress-ring-BJeiDr3q.js → hx-progress-ring-3zMwvrwD.js} +56 -34
  644. package/dist/shared/hx-progress-ring-3zMwvrwD.js.map +1 -0
  645. package/dist/shared/{hx-prose-Ml_L2zje.js → hx-prose-BCtK7YL6.js} +48 -15
  646. package/dist/shared/{hx-prose-Ml_L2zje.js.map → hx-prose-BCtK7YL6.js.map} +1 -1
  647. package/dist/shared/{hx-radio-f8c5ggHG.js → hx-radio-BBC5qZgE.js} +202 -123
  648. package/dist/shared/hx-radio-BBC5qZgE.js.map +1 -0
  649. package/dist/shared/{hx-rating-qRJZXskm.js → hx-rating-C3E3ENJb.js} +92 -69
  650. package/dist/shared/hx-rating-C3E3ENJb.js.map +1 -0
  651. package/dist/shared/{hx-select-B5wq9Swh.js → hx-select-CixTo7jp.js} +206 -136
  652. package/dist/shared/hx-select-CixTo7jp.js.map +1 -0
  653. package/dist/shared/{hx-skeleton-e5K9Qaxq.js → hx-skeleton-LxkI0pxr.js} +41 -29
  654. package/dist/shared/hx-skeleton-LxkI0pxr.js.map +1 -0
  655. package/dist/shared/{hx-slider-BvXtvxmN.js → hx-slider-DFHuzF3N.js} +79 -91
  656. package/dist/shared/hx-slider-DFHuzF3N.js.map +1 -0
  657. package/dist/shared/{hx-spinner-Dyese1Tb.js → hx-spinner-BKjuCdZB.js} +32 -20
  658. package/dist/shared/hx-spinner-BKjuCdZB.js.map +1 -0
  659. package/dist/shared/{hx-split-button-CPndTJlC.js → hx-split-button-CGcJMmCG.js} +59 -22
  660. package/dist/shared/hx-split-button-CGcJMmCG.js.map +1 -0
  661. package/dist/shared/{hx-split-panel-Dx72NaET.js → hx-split-panel-C-1R10Mc.js} +71 -47
  662. package/dist/shared/hx-split-panel-C-1R10Mc.js.map +1 -0
  663. package/dist/shared/{hx-stack-B76_1O6g.js → hx-stack-DGfcOfWJ.js} +21 -11
  664. package/dist/shared/hx-stack-DGfcOfWJ.js.map +1 -0
  665. package/dist/shared/{hx-stat-DKD2E7An.js → hx-stat-BTpykQAt.js} +103 -48
  666. package/dist/shared/hx-stat-BTpykQAt.js.map +1 -0
  667. package/dist/shared/{hx-status-indicator-ClWpK6zz.js → hx-status-indicator-X2QEWNFt.js} +36 -23
  668. package/dist/shared/hx-status-indicator-X2QEWNFt.js.map +1 -0
  669. package/dist/shared/{hx-step-C2Jk4mHa.js → hx-step-CRNQlmSo.js} +83 -32
  670. package/dist/shared/hx-step-CRNQlmSo.js.map +1 -0
  671. package/dist/shared/{hx-structured-list-DKlrv7kS.js → hx-structured-list-CqNbaEXg.js} +32 -16
  672. package/dist/shared/hx-structured-list-CqNbaEXg.js.map +1 -0
  673. package/dist/shared/hx-style-scope-TDnR8H4O.js +251 -0
  674. package/dist/shared/hx-style-scope-TDnR8H4O.js.map +1 -0
  675. package/dist/shared/{hx-switch-BzMN37PV.js → hx-switch-DqOD9JR7.js} +122 -81
  676. package/dist/shared/hx-switch-DqOD9JR7.js.map +1 -0
  677. package/dist/shared/{hx-tab-panel-J58zOSjq.js → hx-tab-panel-BIzKfW5i.js} +156 -102
  678. package/dist/shared/hx-tab-panel-BIzKfW5i.js.map +1 -0
  679. package/dist/shared/{hx-tag-F0ZcYj9b.js → hx-tag-CgnrNnte.js} +30 -18
  680. package/dist/shared/hx-tag-CgnrNnte.js.map +1 -0
  681. package/dist/shared/{hx-td-CNCvzBwY.js → hx-td-Bra35cH4.js} +55 -47
  682. package/dist/shared/hx-td-Bra35cH4.js.map +1 -0
  683. package/dist/shared/{hx-text-DcWBqZwx.js → hx-text-DMC2CPlL.js} +74 -41
  684. package/dist/shared/hx-text-DMC2CPlL.js.map +1 -0
  685. package/dist/shared/{hx-text-input-Scyeefec.js → hx-text-input--q0GH78x.js} +123 -61
  686. package/dist/shared/hx-text-input--q0GH78x.js.map +1 -0
  687. package/dist/shared/{hx-textarea-BfSJJtA1.js → hx-textarea-CK621vSL.js} +124 -89
  688. package/dist/shared/hx-textarea-CK621vSL.js.map +1 -0
  689. package/dist/shared/{hx-theme-pc1V7dyL.js → hx-theme-DfEy-SJA.js} +72 -64
  690. package/dist/shared/hx-theme-DfEy-SJA.js.map +1 -0
  691. package/dist/shared/{hx-time-picker-CZvmihHD.js → hx-time-picker-tPUfgElQ.js} +300 -82
  692. package/dist/shared/hx-time-picker-tPUfgElQ.js.map +1 -0
  693. package/dist/shared/{hx-toggle-button-BZUQUULm.js → hx-toggle-button-L-uBJr-a.js} +72 -42
  694. package/dist/shared/hx-toggle-button-L-uBJr-a.js.map +1 -0
  695. package/dist/shared/{hx-tooltip-Ny4i1Idj.js → hx-tooltip-B_zfKvwc.js} +44 -31
  696. package/dist/shared/hx-tooltip-B_zfKvwc.js.map +1 -0
  697. package/dist/shared/{hx-top-nav-CC4FW2Hp.js → hx-top-nav-CATbRvIv.js} +53 -30
  698. package/dist/shared/hx-top-nav-CATbRvIv.js.map +1 -0
  699. package/dist/shared/{hx-tree-item-CPQ9dJiK.js → hx-tree-item-A45WCiBu.js} +37 -9
  700. package/dist/shared/hx-tree-item-A45WCiBu.js.map +1 -0
  701. package/dist/shared/hx-visually-hidden-0bZKOWgT.js +66 -0
  702. package/dist/shared/hx-visually-hidden-0bZKOWgT.js.map +1 -0
  703. package/dist/shared/id-counter-DuX8vsui.js +11 -0
  704. package/dist/shared/id-counter-DuX8vsui.js.map +1 -0
  705. package/dist/shared/{toast-factory-CEMNOt1T.js → toast-factory-BPPnG3mM.js} +58 -46
  706. package/dist/shared/toast-factory-BPPnG3mM.js.map +1 -0
  707. package/dist/utilities/injectLightStyles.d.ts.map +1 -1
  708. package/dist/utilities/sanitizeCss.d.ts +43 -0
  709. package/dist/utilities/sanitizeCss.d.ts.map +1 -0
  710. package/figma-inventory.json +18614 -0
  711. package/package.json +35 -14
  712. package/dist/shared/FormMixin-Bjvw20G5.js.map +0 -1
  713. package/dist/shared/aria-delegation-CBP9eQ0M.js.map +0 -1
  714. package/dist/shared/document-token-adoption-DuYNKd4k.js +0 -21
  715. package/dist/shared/document-token-adoption-DuYNKd4k.js.map +0 -1
  716. package/dist/shared/hx-accordion-CpfO0YQo.js.map +0 -1
  717. package/dist/shared/hx-action-bar-BpY1Z1UV.js.map +0 -1
  718. package/dist/shared/hx-alert-CHOjTBds.js.map +0 -1
  719. package/dist/shared/hx-avatar-an-WsuLl.js.map +0 -1
  720. package/dist/shared/hx-badge-DDXTLoWi.js.map +0 -1
  721. package/dist/shared/hx-banner-B-WEDiq7.js.map +0 -1
  722. package/dist/shared/hx-breadcrumb-item-DzLyeL5Z.js.map +0 -1
  723. package/dist/shared/hx-button-DoN8jjQT.js.map +0 -1
  724. package/dist/shared/hx-button-group-BXlMQTt_.js.map +0 -1
  725. package/dist/shared/hx-card-BgXZXDuc.js.map +0 -1
  726. package/dist/shared/hx-carousel-item-Dwt9Pphz.js.map +0 -1
  727. package/dist/shared/hx-checkbox-CTEZ9IFq.js.map +0 -1
  728. package/dist/shared/hx-checkbox-group-DThZeN5d.js.map +0 -1
  729. package/dist/shared/hx-clinical-status-m4soOOwg.js.map +0 -1
  730. package/dist/shared/hx-color-picker-DhOaNe6-.js.map +0 -1
  731. package/dist/shared/hx-combobox-BJ4lQocO.js +0 -544
  732. package/dist/shared/hx-combobox-BJ4lQocO.js.map +0 -1
  733. package/dist/shared/hx-container-31QT9KV_.js.map +0 -1
  734. package/dist/shared/hx-copy-button-BoM0WsMd.js.map +0 -1
  735. package/dist/shared/hx-counter-CP42cSVK.js.map +0 -1
  736. package/dist/shared/hx-data-table-D5Ne-goy.js.map +0 -1
  737. package/dist/shared/hx-date-picker-Cd3I3WkX.js +0 -627
  738. package/dist/shared/hx-date-picker-Cd3I3WkX.js.map +0 -1
  739. package/dist/shared/hx-dialog-D4ubstxx.js.map +0 -1
  740. package/dist/shared/hx-divider-BBtOLHRP.js.map +0 -1
  741. package/dist/shared/hx-drawer--WDLuWtS.js.map +0 -1
  742. package/dist/shared/hx-dropdown-n5-XSmiV.js.map +0 -1
  743. package/dist/shared/hx-field-CwT9tki1.js.map +0 -1
  744. package/dist/shared/hx-field-label-CcOK9VU3.js.map +0 -1
  745. package/dist/shared/hx-file-upload-Dwtu3WcB.js.map +0 -1
  746. package/dist/shared/hx-form-fJE-FJQV.js.map +0 -1
  747. package/dist/shared/hx-format-date-B7L9odbA.js.map +0 -1
  748. package/dist/shared/hx-grid-BIAR5h9m.js.map +0 -1
  749. package/dist/shared/hx-help-text-Bmb80bP4.js.map +0 -1
  750. package/dist/shared/hx-icon-BKHs3OLu.js.map +0 -1
  751. package/dist/shared/hx-icon-button-CJuy9xbw.js.map +0 -1
  752. package/dist/shared/hx-image-ztiXumZB.js.map +0 -1
  753. package/dist/shared/hx-link-IVsXmsKx.js.map +0 -1
  754. package/dist/shared/hx-list-CoTDMp19.js.map +0 -1
  755. package/dist/shared/hx-menu-divider-DRT8yHRZ.js.map +0 -1
  756. package/dist/shared/hx-meter-BvSJoqDp.js.map +0 -1
  757. package/dist/shared/hx-nav-item-CJN4VDrf.js.map +0 -1
  758. package/dist/shared/hx-nav-l0Rp7WPW.js.map +0 -1
  759. package/dist/shared/hx-number-input-0Waw7Z7u.js.map +0 -1
  760. package/dist/shared/hx-overflow-menu-DElwFSCd.js.map +0 -1
  761. package/dist/shared/hx-pagination-BNtx-LG6.js.map +0 -1
  762. package/dist/shared/hx-patient-banner-BKiN7nIE.js.map +0 -1
  763. package/dist/shared/hx-phi-field-BiJH3V-k.js.map +0 -1
  764. package/dist/shared/hx-popover-D63RXn5H.js.map +0 -1
  765. package/dist/shared/hx-popup-BQWMhvMO.js.map +0 -1
  766. package/dist/shared/hx-progress-bar-Cm0VihTN.js.map +0 -1
  767. package/dist/shared/hx-progress-ring-BJeiDr3q.js.map +0 -1
  768. package/dist/shared/hx-radio-f8c5ggHG.js.map +0 -1
  769. package/dist/shared/hx-rating-qRJZXskm.js.map +0 -1
  770. package/dist/shared/hx-select-B5wq9Swh.js.map +0 -1
  771. package/dist/shared/hx-skeleton-e5K9Qaxq.js.map +0 -1
  772. package/dist/shared/hx-slider-BvXtvxmN.js.map +0 -1
  773. package/dist/shared/hx-spinner-Dyese1Tb.js.map +0 -1
  774. package/dist/shared/hx-split-button-CPndTJlC.js.map +0 -1
  775. package/dist/shared/hx-split-panel-Dx72NaET.js.map +0 -1
  776. package/dist/shared/hx-stack-B76_1O6g.js.map +0 -1
  777. package/dist/shared/hx-stat-DKD2E7An.js.map +0 -1
  778. package/dist/shared/hx-status-indicator-ClWpK6zz.js.map +0 -1
  779. package/dist/shared/hx-step-C2Jk4mHa.js.map +0 -1
  780. package/dist/shared/hx-structured-list-DKlrv7kS.js.map +0 -1
  781. package/dist/shared/hx-style-scope-CsQ2Phf_.js +0 -126
  782. package/dist/shared/hx-style-scope-CsQ2Phf_.js.map +0 -1
  783. package/dist/shared/hx-switch-BzMN37PV.js.map +0 -1
  784. package/dist/shared/hx-tab-panel-J58zOSjq.js.map +0 -1
  785. package/dist/shared/hx-tag-F0ZcYj9b.js.map +0 -1
  786. package/dist/shared/hx-td-CNCvzBwY.js.map +0 -1
  787. package/dist/shared/hx-text-DcWBqZwx.js.map +0 -1
  788. package/dist/shared/hx-text-input-Scyeefec.js.map +0 -1
  789. package/dist/shared/hx-textarea-BfSJJtA1.js.map +0 -1
  790. package/dist/shared/hx-theme-pc1V7dyL.js.map +0 -1
  791. package/dist/shared/hx-time-picker-CZvmihHD.js.map +0 -1
  792. package/dist/shared/hx-toggle-button-BZUQUULm.js.map +0 -1
  793. package/dist/shared/hx-tooltip-Ny4i1Idj.js.map +0 -1
  794. package/dist/shared/hx-top-nav-CC4FW2Hp.js.map +0 -1
  795. package/dist/shared/hx-tree-item-CPQ9dJiK.js.map +0 -1
  796. package/dist/shared/hx-visually-hidden-vKX8QjeX.js +0 -54
  797. package/dist/shared/hx-visually-hidden-vKX8QjeX.js.map +0 -1
  798. package/dist/shared/id-counter-JhvVCnjh.js.map +0 -1
  799. package/dist/shared/toast-factory-CEMNOt1T.js.map +0 -1
  800. package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts +0 -12
  801. package/dist/tools/cem-a11y-analyzer/analyzers/aria-analyzer.d.ts.map +0 -1
  802. package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts +0 -13
  803. package/dist/tools/cem-a11y-analyzer/analyzers/focus-analyzer.d.ts.map +0 -1
  804. package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts +0 -13
  805. package/dist/tools/cem-a11y-analyzer/analyzers/form-analyzer.d.ts.map +0 -1
  806. package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts +0 -12
  807. package/dist/tools/cem-a11y-analyzer/analyzers/keyboard-analyzer.d.ts.map +0 -1
  808. package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts +0 -13
  809. package/dist/tools/cem-a11y-analyzer/analyzers/label-analyzer.d.ts.map +0 -1
  810. package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts +0 -12
  811. package/dist/tools/cem-a11y-analyzer/analyzers/motion-analyzer.d.ts.map +0 -1
  812. package/dist/tools/cem-a11y-analyzer/index.d.ts +0 -14
  813. package/dist/tools/cem-a11y-analyzer/index.d.ts.map +0 -1
  814. package/dist/tools/cem-a11y-analyzer/reporter.d.ts +0 -6
  815. package/dist/tools/cem-a11y-analyzer/reporter.d.ts.map +0 -1
  816. package/dist/tools/cem-a11y-analyzer/scorer.d.ts +0 -22
  817. package/dist/tools/cem-a11y-analyzer/scorer.d.ts.map +0 -1
  818. package/dist/tools/cem-a11y-analyzer/types.d.ts +0 -171
  819. package/dist/tools/cem-a11y-analyzer/types.d.ts.map +0 -1
@@ -18,7 +18,7 @@
18
18
  display: flex;
19
19
  flex-direction: column;
20
20
  gap: var(--hx-space-1, 0.25rem);
21
- font-family: var(--hx-font-family-sans, sans-serif);
21
+ font-family: var(--hx-checkbox-font-family, var(--hx-font-family-sans, sans-serif));
22
22
  }
23
23
 
24
24
  /* ─── Control (checkbox + label row) ─── */
@@ -60,7 +60,7 @@
60
60
  width: var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));
61
61
  height: var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));
62
62
  border: var(--hx-border-width-medium, 2px) solid
63
- var(--hx-checkbox-border-color, var(--hx-color-neutral-300, #ced4da));
63
+ var(--hx-checkbox-border-color, var(--hx-color-neutral-300, #cbd5e1));
64
64
  border-radius: var(--hx-checkbox-border-radius, var(--hx-border-radius-sm, 0.25rem));
65
65
  background-color: var(--hx-checkbox-bg, var(--hx-color-neutral-0, #ffffff));
66
66
  transition:
@@ -98,13 +98,13 @@
98
98
  /* ─── Error State ─── */
99
99
 
100
100
  .checkbox--error .checkbox__box {
101
- border-color: var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545));
101
+ border-color: var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc2626));
102
102
  }
103
103
 
104
104
  .checkbox--error.checkbox--checked .checkbox__box,
105
105
  .checkbox--error.checkbox--indeterminate .checkbox__box {
106
- background-color: var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545));
107
- border-color: var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545));
106
+ background-color: var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc2626));
107
+ border-color: var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc2626));
108
108
  }
109
109
 
110
110
  /* ─── Hover ─── */
@@ -122,7 +122,7 @@
122
122
  }
123
123
 
124
124
  .checkbox--error .checkbox__control:hover .checkbox__box {
125
- border-color: var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc3545));
125
+ border-color: var(--hx-checkbox-error-color, var(--hx-color-error-500, #dc2626));
126
126
  }
127
127
 
128
128
  /* ─── Checkmark Icon ─── */
@@ -151,7 +151,7 @@
151
151
  .checkbox__label {
152
152
  font-size: var(--hx-font-size-sm, 0.875rem);
153
153
  font-weight: var(--hx-font-weight-medium, 500);
154
- color: var(--hx-checkbox-label-color, var(--hx-color-neutral-700, #343a40));
154
+ color: var(--hx-checkbox-label-color, var(--hx-color-neutral-700, #334155));
155
155
  line-height: var(--hx-line-height-normal, 1.5);
156
156
  user-select: none;
157
157
  -webkit-user-select: none;
@@ -166,7 +166,7 @@
166
166
 
167
167
  .checkbox__help-text {
168
168
  font-size: var(--hx-font-size-xs, 0.75rem);
169
- color: var(--hx-checkbox-help-text-color, var(--hx-color-neutral-500, #6c757d));
169
+ color: var(--hx-checkbox-help-text-color, var(--hx-color-neutral-500, #64748b));
170
170
  line-height: var(--hx-line-height-normal, 1.5);
171
171
  padding-inline-start: calc(
172
172
  var(--hx-checkbox-size, var(--hx-size-5, 1.25rem)) + var(--hx-space-2, 0.5rem)
@@ -219,6 +219,72 @@
219
219
  transition: none;
220
220
  }
221
221
  }
222
+
223
+ /* ─── High Contrast Mode (forced-colors) ─── */
224
+
225
+ @media (forced-colors: active) {
226
+ .checkbox__box {
227
+ forced-color-adjust: none;
228
+ background-color: ButtonFace;
229
+ border: 2px solid ButtonText;
230
+ }
231
+
232
+ .checkbox__input:focus-visible ~ .checkbox__box {
233
+ outline: 3px solid Highlight;
234
+ outline-offset: 2px;
235
+ }
236
+
237
+ .checkbox--checked .checkbox__box,
238
+ .checkbox--indeterminate .checkbox__box {
239
+ background-color: Highlight;
240
+ border-color: Highlight;
241
+ }
242
+
243
+ .checkbox__icon {
244
+ stroke: HighlightText;
245
+ }
246
+
247
+ .checkbox--error .checkbox__box {
248
+ border-color: LinkText;
249
+ }
250
+
251
+ .checkbox--error.checkbox--checked .checkbox__box,
252
+ .checkbox--error.checkbox--indeterminate .checkbox__box {
253
+ background-color: LinkText;
254
+ border-color: LinkText;
255
+ }
256
+
257
+ :host([disabled]) {
258
+ opacity: 1;
259
+ }
260
+
261
+ :host([disabled]) .checkbox__box {
262
+ border-color: GrayText;
263
+ background-color: ButtonFace;
264
+ }
265
+
266
+ :host([disabled]) .checkbox--checked .checkbox__box,
267
+ :host([disabled]) .checkbox--indeterminate .checkbox__box {
268
+ background-color: GrayText;
269
+ border-color: GrayText;
270
+ }
271
+
272
+ :host([disabled]) .checkbox__label {
273
+ color: GrayText;
274
+ }
275
+
276
+ .checkbox__label {
277
+ color: CanvasText;
278
+ }
279
+
280
+ .checkbox__help-text {
281
+ color: GrayText;
282
+ }
283
+
284
+ .checkbox__error {
285
+ color: LinkText;
286
+ }
287
+ }
222
288
  /* ── hx-checkbox-group ── */
223
289
  :host {
224
290
  display: block;
@@ -242,7 +308,7 @@
242
308
  display: flex;
243
309
  flex-direction: column;
244
310
  gap: var(--hx-space-2);
245
- font-family: var(--hx-font-family-sans);
311
+ font-family: var(--hx-checkbox-group-font-family, var(--hx-font-family-sans));
246
312
  }
247
313
 
248
314
  /* ─── Legend ─── */
@@ -260,7 +326,7 @@
260
326
  }
261
327
 
262
328
  .fieldset__required-marker {
263
- color: var(--hx-checkbox-group-error-color, var(--hx-color-error-500, #dc3545));
329
+ color: var(--hx-checkbox-group-error-color, var(--hx-color-error-text, #b91c1c));
264
330
  font-weight: var(--hx-font-weight-bold);
265
331
  }
266
332
 
@@ -280,28 +346,1161 @@
280
346
  /* ─── Error State ─── */
281
347
 
282
348
  .fieldset--error .fieldset__legend {
283
- color: var(--hx-checkbox-group-error-color, var(--hx-color-error-500, #dc3545));
349
+ color: var(--hx-checkbox-group-error-color, var(--hx-color-error-text, #b91c1c));
284
350
  }
285
351
 
286
352
  /* ─── Help Text & Error Messages ─── */
287
353
 
288
- .fieldset__help-text {
289
- font-size: var(--hx-font-size-xs);
290
- color: var(--hx-checkbox-group-help-text-color, var(--hx-color-neutral-500));
291
- line-height: var(--hx-line-height-normal);
292
- }
354
+ .fieldset__help-text {
355
+ font-size: var(--hx-font-size-xs);
356
+ color: var(--hx-checkbox-group-help-text-color, var(--hx-color-neutral-500));
357
+ line-height: var(--hx-line-height-normal);
358
+ }
359
+
360
+ .fieldset__error {
361
+ font-size: var(--hx-font-size-xs);
362
+ color: var(--hx-checkbox-group-error-color, var(--hx-color-error-text, #b91c1c));
363
+ line-height: var(--hx-line-height-normal);
364
+ }
365
+
366
+ /* ─── High Contrast Mode (forced-colors) ─── */
367
+
368
+ @media (forced-colors: active) {
369
+ .fieldset {
370
+ border: none;
371
+ }
372
+
373
+ .fieldset__legend {
374
+ color: CanvasText;
375
+ }
376
+
377
+ .fieldset--error .fieldset__legend {
378
+ color: LinkText;
379
+ }
380
+
381
+ :host([disabled]) {
382
+ opacity: 1;
383
+ }
384
+
385
+ :host([disabled]) .fieldset__legend {
386
+ color: GrayText;
387
+ }
388
+
389
+ .fieldset__help-text {
390
+ color: GrayText;
391
+ }
392
+
393
+ .fieldset__error {
394
+ color: LinkText;
395
+ }
396
+ }
397
+ /* ── hx-color-picker ── */
398
+ :host {
399
+ display: inline-block;
400
+ position: relative;
401
+ font-family: var(--hx-font-family-sans, sans-serif);
402
+ font-size: var(--hx-font-size-sm, 0.875rem);
403
+ }
404
+ :host([disabled]) {
405
+ pointer-events: none;
406
+ opacity: var(--hx-opacity-disabled, 0.5);
407
+ }
408
+ .trigger {
409
+ display: inline-flex;
410
+ align-items: center;
411
+ gap: var(--hx-space-2, 0.5rem);
412
+ padding: var(--hx-space-1, 0.25rem);
413
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #cbd5e1);
414
+ border-radius: var(--hx-border-radius-md, 0.375rem);
415
+ background: var(--hx-color-neutral-0, #ffffff);
416
+ cursor: pointer;
417
+ transition: border-color var(--hx-transition-fast, 150ms ease);
418
+ }
419
+ .trigger:hover:not([disabled]) {
420
+ border-color: var(--hx-color-primary-500, #2563eb);
421
+ }
422
+ :is(.trigger, .gradient-grid, .slider-track, .swatch-btn, .format-btn):focus-visible {
423
+ outline: var(--hx-focus-ring-width, 2px) solid
424
+ var(--hx-focus-ring-color, var(--hx-color-primary-500));
425
+ outline-offset: var(--hx-focus-ring-offset, 2px);
426
+ }
427
+ .trigger-swatch {
428
+ width: 1.5rem;
429
+ height: 1.5rem;
430
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
431
+ border: var(--hx-border-width-thin, 1px) solid
432
+ var(--hx-color-picker-swatch-border, var(--hx-overlay-black-10, rgba(0, 0, 0, 0.1)));
433
+ background: var(--_preview-color, #000);
434
+ display: block;
435
+ flex-shrink: 0;
436
+ }
437
+ .trigger-label {
438
+ font-size: var(--hx-font-size-sm, 0.875rem);
439
+ color: var(--hx-color-neutral-700, #334155);
440
+ font-family: var(--hx-font-family-mono, monospace);
441
+ white-space: nowrap;
442
+ }
443
+ .panel {
444
+ position: absolute;
445
+ z-index: var(--hx-color-picker-z-index, 1000);
446
+ top: calc(100% + 4px);
447
+ left: 0;
448
+ background: var(--hx-color-neutral-0, #ffffff);
449
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #e2e8f0);
450
+ border-radius: var(--hx-border-radius-lg, 0.5rem);
451
+ box-shadow: 0 8px 24px
452
+ var(--hx-color-picker-panel-shadow, var(--hx-overlay-black-15, rgba(0, 0, 0, 0.15)));
453
+ padding: var(--hx-space-4, 1rem);
454
+ width: var(--hx-color-picker-width, 260px);
455
+ display: flex;
456
+ flex-direction: column;
457
+ gap: var(--hx-space-3, 0.75rem);
458
+ outline: none;
459
+ }
460
+ :host([inline]) .panel {
461
+ position: static;
462
+ box-shadow: none;
463
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #e2e8f0);
464
+ border-radius: var(--hx-border-radius-lg, 0.5rem);
465
+ }
466
+ .gradient-grid {
467
+ position: relative;
468
+ width: 100%;
469
+ height: var(--hx-color-picker-grid-height, 160px);
470
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
471
+ cursor: crosshair;
472
+ overflow: hidden;
473
+ touch-action: none;
474
+ flex-shrink: 0;
475
+ }
476
+ .gradient-grid-bg {
477
+ position: absolute;
478
+ inset: 0;
479
+ background:
480
+ linear-gradient(to bottom, transparent, #000),
481
+ linear-gradient(to right, #fff, var(--_hue-color, hsl(0, 100%, 50%)));
482
+ pointer-events: none;
483
+ }
484
+ .gradient-thumb {
485
+ position: absolute;
486
+ width: 12px;
487
+ height: 12px;
488
+ border-radius: 50%;
489
+ border: none;
490
+ box-shadow:
491
+ 0 0 0 2px var(--hx-color-picker-thumb-border, var(--hx-color-neutral-0, #ffffff)),
492
+ 0 0 0 3px var(--hx-color-picker-thumb-shadow, var(--hx-overlay-black-30, rgba(0, 0, 0, 0.3)));
493
+ transform: translate(-50%, -50%);
494
+ pointer-events: none;
495
+ top: var(--_thumb-y, 0%);
496
+ left: var(--_thumb-x, 100%);
497
+ }
498
+ .slider-track {
499
+ position: relative;
500
+ width: 100%;
501
+ height: 12px;
502
+ border-radius: 6px;
503
+ cursor: pointer;
504
+ touch-action: none;
505
+ flex-shrink: 0;
506
+ }
507
+ .hue-track {
508
+ background: linear-gradient(
509
+ to right,
510
+ red,
511
+ #ff8000,
512
+ #ff0,
513
+ #80ff00,
514
+ #0f0,
515
+ #00ff80,
516
+ #0ff,
517
+ #0080ff,
518
+ #00f,
519
+ #7f00ff,
520
+ #f0f,
521
+ #ff0080,
522
+ red
523
+ );
524
+ }
525
+ .opacity-track {
526
+ background-image:
527
+ linear-gradient(to right, transparent, var(--_hue-color, hsl(0, 100%, 50%))),
528
+ repeating-conic-gradient(#ccc 0% 25%, #fff 0% 50%) 0 0 / 12px 12px;
529
+ }
530
+ .slider-thumb {
531
+ position: absolute;
532
+ top: 50%;
533
+ width: 16px;
534
+ height: 16px;
535
+ border-radius: 50%;
536
+ border: none;
537
+ box-shadow:
538
+ 0 0 0 2px var(--hx-color-picker-thumb-border, var(--hx-color-neutral-0, #ffffff)),
539
+ 0 0 0 3px var(--hx-color-picker-thumb-shadow, var(--hx-overlay-black-30, rgba(0, 0, 0, 0.3)));
540
+ transform: translate(-50%, -50%);
541
+ pointer-events: none;
542
+ left: var(--_slider-pct, 0%);
543
+ background: var(--_thumb-color, hsl(0, 100%, 50%));
544
+ }
545
+ .swatches {
546
+ display: flex;
547
+ flex-wrap: wrap;
548
+ gap: var(--hx-space-1, 0.25rem);
549
+ }
550
+ .swatch-btn {
551
+ width: 20px;
552
+ height: 20px;
553
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
554
+ border: var(--hx-border-width-thin, 1px) solid
555
+ var(--hx-color-picker-swatch-border, var(--hx-overlay-black-10, rgba(0, 0, 0, 0.1)));
556
+ cursor: pointer;
557
+ padding: 0;
558
+ flex-shrink: 0;
559
+ transition: transform var(--hx-transition-fast, 150ms ease);
560
+ }
561
+ .swatch-btn:hover {
562
+ transform: scale(1.15);
563
+ border-color: var(
564
+ --hx-color-picker-swatch-border-hover,
565
+ var(--hx-overlay-black-30, rgba(0, 0, 0, 0.3))
566
+ );
567
+ }
568
+ .input-area {
569
+ display: flex;
570
+ align-items: center;
571
+ gap: var(--hx-space-2, 0.5rem);
572
+ }
573
+ .format-btn {
574
+ flex-shrink: 0;
575
+ padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
576
+ background: var(--hx-color-neutral-100, #f1f5f9);
577
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #cbd5e1);
578
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
579
+ cursor: pointer;
580
+ font-size: var(--hx-font-size-xs, 0.75rem);
581
+ color: var(--hx-color-neutral-600, #475569);
582
+ text-transform: uppercase;
583
+ font-weight: var(--hx-font-weight-semibold, 600);
584
+ letter-spacing: 0.05em;
585
+ }
586
+ .color-input {
587
+ flex: 1;
588
+ min-width: 0;
589
+ padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
590
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #cbd5e1);
591
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
592
+ font-family: var(--hx-font-family-mono, monospace);
593
+ font-size: var(--hx-font-size-sm, 0.875rem);
594
+ color: var(--hx-color-neutral-900, #0f172a);
595
+ background: var(--hx-color-neutral-0, #ffffff);
596
+ outline: none;
597
+ }
598
+ .color-input:focus-visible {
599
+ border-color: var(--hx-focus-ring-color, var(--hx-color-primary-500));
600
+ box-shadow: 0 0 0 2px
601
+ color-mix(in srgb, var(--hx-focus-ring-color, var(--hx-color-primary-500)) 20%, transparent);
602
+ }
603
+ .input-preview {
604
+ width: 24px;
605
+ height: 24px;
606
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
607
+ border: var(--hx-border-width-thin, 1px) solid
608
+ var(--hx-color-picker-swatch-border, var(--hx-overlay-black-10, rgba(0, 0, 0, 0.1)));
609
+ background: var(--_preview-color, #000);
610
+ flex-shrink: 0;
611
+ }
612
+ @media (prefers-reduced-motion: reduce) {
613
+ .trigger,
614
+ .swatch-btn {
615
+ transition: none;
616
+ }
617
+ }
618
+ @media (forced-colors: active) {
619
+ .trigger {
620
+ forced-color-adjust: none;
621
+ background-color: Field;
622
+ color: FieldText;
623
+ border: 2px solid ButtonText;
624
+ }
625
+ .trigger:hover:not([disabled]) {
626
+ border-color: Highlight;
627
+ }
628
+ :is(.trigger, .gradient-grid, .slider-track, .swatch-btn, .format-btn):focus-visible {
629
+ outline-color: Highlight;
630
+ }
631
+ .panel {
632
+ forced-color-adjust: none;
633
+ background-color: Canvas;
634
+ border: 2px solid CanvasText;
635
+ box-shadow: none;
636
+ }
637
+ .gradient-thumb,
638
+ .slider-thumb {
639
+ box-shadow: 0 0 0 2px CanvasText;
640
+ }
641
+ .swatch-btn {
642
+ border: 2px solid ButtonText;
643
+ }
644
+ .swatch-btn:hover {
645
+ border-color: Highlight;
646
+ }
647
+ .color-input {
648
+ forced-color-adjust: none;
649
+ background-color: Field;
650
+ color: FieldText;
651
+ border: 2px solid ButtonText;
652
+ }
653
+ .color-input:focus-visible {
654
+ border-color: Highlight;
655
+ box-shadow: none;
656
+ }
657
+ .format-btn {
658
+ forced-color-adjust: none;
659
+ background-color: ButtonFace;
660
+ color: ButtonText;
661
+ border: 2px solid ButtonText;
662
+ }
663
+ .trigger-label {
664
+ color: FieldText;
665
+ }
666
+ :host([disabled]) {
667
+ opacity: 1;
668
+ }
669
+ :host([disabled]) .trigger {
670
+ border-color: GrayText;
671
+ color: GrayText;
672
+ }
673
+ }
674
+ /* ── hx-combobox ── */
675
+ :host {
676
+ display: block;
677
+ }
678
+ :host([disabled]) {
679
+ opacity: var(--hx-opacity-disabled, 0.5);
680
+ pointer-events: none;
681
+ }
682
+ * {
683
+ box-sizing: border-box;
684
+ }
685
+ .field {
686
+ display: flex;
687
+ flex-direction: column;
688
+ gap: var(--hx-space-1, 0.25rem);
689
+ font-family: var(--hx-combobox-font-family, var(--hx-font-family-sans, sans-serif));
690
+ position: relative;
691
+ }
692
+ .field__label {
693
+ display: flex;
694
+ align-items: baseline;
695
+ gap: var(--hx-space-1, 0.25rem);
696
+ font-size: var(--hx-font-size-sm, 0.875rem);
697
+ font-weight: var(--hx-font-weight-medium, 500);
698
+ color: var(--hx-combobox-label-color, var(--hx-color-neutral-700, #334155));
699
+ line-height: var(--hx-line-height-normal, 1.5);
700
+ }
701
+ .field__required-marker {
702
+ color: var(--hx-combobox-error-color, var(--hx-color-error-text, #b91c1c));
703
+ font-weight: var(--hx-font-weight-bold, 700);
704
+ }
705
+ .field__input-wrapper {
706
+ position: relative;
707
+ display: flex;
708
+ align-items: center;
709
+ border: var(--hx-border-width-thin, 1px) solid
710
+ var(--hx-combobox-border-color, var(--hx-color-neutral-300, #cbd5e1));
711
+ border-radius: var(--hx-combobox-border-radius, var(--hx-border-radius-md, 0.375rem));
712
+ background-color: var(--hx-combobox-bg, var(--hx-color-neutral-0, #ffffff));
713
+ transition:
714
+ border-color var(--hx-transition-fast, 150ms ease),
715
+ box-shadow var(--hx-transition-fast, 150ms ease);
716
+ }
717
+ .field__input-wrapper:focus-within {
718
+ border-color: var(
719
+ --hx-combobox-focus-ring-color,
720
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
721
+ );
722
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
723
+ color-mix(
724
+ in srgb,
725
+ var(
726
+ --hx-combobox-focus-ring-color,
727
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
728
+ )
729
+ calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
730
+ transparent
731
+ );
732
+ }
733
+ .field--error .field__input-wrapper {
734
+ border-color: var(--hx-combobox-error-color, var(--hx-color-error-500, #dc2626));
735
+ }
736
+ .field--error .field__input-wrapper:focus-within {
737
+ border-color: var(--hx-combobox-error-color, var(--hx-color-error-500, #dc2626));
738
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
739
+ color-mix(
740
+ in srgb,
741
+ var(--hx-combobox-error-color, var(--hx-color-error-500, #dc2626))
742
+ calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
743
+ transparent
744
+ );
745
+ }
746
+ .field__prefix,
747
+ .field__suffix {
748
+ display: flex;
749
+ align-items: center;
750
+ padding: 0 var(--hx-space-2, 0.5rem);
751
+ color: var(--hx-color-neutral-500, #64748b);
752
+ flex-shrink: 0;
753
+ }
754
+ .field__input {
755
+ flex: 1;
756
+ min-width: 0;
757
+ min-height: var(--hx-input-height-md, var(--hx-size-10, 2.5rem));
758
+ border: none;
759
+ background: transparent;
760
+ outline: none;
761
+ font-family: inherit;
762
+ font-size: var(--hx-font-size-md, 1rem);
763
+ line-height: var(--hx-line-height-normal, 1.5);
764
+ color: var(--hx-combobox-color, var(--hx-color-neutral-800, #1e293b));
765
+ padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
766
+ }
767
+ .field__input::placeholder {
768
+ color: var(--hx-color-neutral-400, #94a3b8);
769
+ }
770
+ .field__input--sm {
771
+ min-height: var(--hx-input-height-sm, var(--hx-size-8, 2rem));
772
+ font-size: var(--hx-font-size-sm, 0.875rem);
773
+ padding: var(--hx-space-1, 0.25rem) var(--hx-space-3, 0.75rem);
774
+ }
775
+ .field__input--lg {
776
+ min-height: var(--hx-input-height-lg, var(--hx-size-12, 3rem));
777
+ font-size: var(--hx-font-size-lg, 1.125rem);
778
+ padding: var(--hx-space-3, 0.75rem) var(--hx-space-4, 1rem);
779
+ }
780
+ .field__clear-button,
781
+ .field__loading-indicator {
782
+ display: flex;
783
+ align-items: center;
784
+ justify-content: center;
785
+ margin-inline-end: var(--hx-space-2, 0.5rem);
786
+ flex-shrink: 0;
787
+ color: var(--hx-color-neutral-400, #94a3b8);
788
+ }
789
+ .field__clear-button {
790
+ width: 1.25rem;
791
+ height: 1.25rem;
792
+ border: none;
793
+ background: transparent;
794
+ cursor: pointer;
795
+ padding: 0;
796
+ border-radius: var(--hx-border-radius-full, 9999px);
797
+ transition: color var(--hx-transition-fast, 150ms ease);
798
+ }
799
+ .field__clear-button:hover {
800
+ color: var(--hx-color-neutral-700, #334155);
801
+ }
802
+ .field__clear-button:focus-visible {
803
+ outline: var(--hx-focus-ring-width, 2px) solid
804
+ var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
805
+ outline-offset: var(--hx-focus-ring-offset, 2px);
806
+ }
807
+ .field__loading-indicator {
808
+ width: 1rem;
809
+ height: 1rem;
810
+ }
811
+ .field__loading-spinner {
812
+ width: 1rem;
813
+ height: 1rem;
814
+ border: 2px solid currentColor;
815
+ border-top-color: transparent;
816
+ border-radius: 50%;
817
+ animation: hx-spin 0.7s linear infinite;
818
+ }
819
+ @keyframes hx-spin {
820
+ to {
821
+ transform: rotate(360deg);
822
+ }
823
+ }
824
+ @media (prefers-reduced-motion: reduce) {
825
+ .field__loading-spinner {
826
+ animation: none;
827
+ }
828
+ }
829
+ .field__listbox {
830
+ position: absolute;
831
+ top: calc(100% + var(--hx-space-1, 0.25rem));
832
+ left: 0;
833
+ right: 0;
834
+ z-index: var(--hx-z-index-dropdown, 1000);
835
+ background-color: var(--hx-combobox-listbox-bg, var(--hx-color-neutral-0, #ffffff));
836
+ border: var(--hx-border-width-thin, 1px) solid
837
+ var(--hx-combobox-border-color, var(--hx-color-neutral-300, #cbd5e1));
838
+ border-radius: var(--hx-combobox-border-radius, var(--hx-border-radius-md, 0.375rem));
839
+ box-shadow: var(
840
+ --hx-combobox-listbox-shadow,
841
+ 0 4px 16px color-mix(in srgb, var(--hx-color-neutral-900, #0f172a) 12%, transparent)
842
+ );
843
+ max-height: var(--hx-combobox-listbox-max-height, 16rem);
844
+ overflow: hidden;
845
+ display: flex;
846
+ flex-direction: column;
847
+ }
848
+ .field__listbox[hidden] {
849
+ display: none;
850
+ }
851
+ .field__options {
852
+ overflow-y: auto;
853
+ flex: 1;
854
+ padding: var(--hx-space-1, 0.25rem) 0;
855
+ }
856
+ .field__option {
857
+ display: flex;
858
+ align-items: center;
859
+ gap: var(--hx-space-2, 0.5rem);
860
+ padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
861
+ font-size: var(--hx-font-size-md, 1rem);
862
+ color: var(--hx-combobox-color, var(--hx-color-neutral-800, #1e293b));
863
+ cursor: pointer;
864
+ user-select: none;
865
+ -webkit-user-select: none;
866
+ transition: background-color var(--hx-transition-fast, 150ms ease);
867
+ }
868
+ .field__option:hover {
869
+ background-color: var(--hx-combobox-option-hover-bg, var(--hx-color-primary-50, #eff6ff));
870
+ }
871
+ .field__option--selected {
872
+ background-color: var(--hx-combobox-option-selected-bg, var(--hx-color-primary-100, #dbeafe));
873
+ font-weight: var(--hx-font-weight-medium, 500);
874
+ }
875
+ .field__option--focused {
876
+ background-color: var(--hx-combobox-option-hover-bg, var(--hx-color-primary-50, #eff6ff));
877
+ outline: var(--hx-focus-ring-width, 2px) solid
878
+ var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
879
+ outline-offset: var(--hx-combobox-option-focus-ring-offset, -2px);
880
+ }
881
+ .field__option--focused.field__option--selected {
882
+ background-color: var(--hx-combobox-option-selected-bg, var(--hx-color-primary-100, #dbeafe));
883
+ }
884
+ .field__option--disabled {
885
+ opacity: var(--hx-opacity-disabled, 0.5);
886
+ cursor: not-allowed;
887
+ pointer-events: none;
888
+ }
889
+ .field__option-label {
890
+ flex: 1;
891
+ white-space: nowrap;
892
+ overflow: hidden;
893
+ text-overflow: ellipsis;
894
+ }
895
+ .field__no-options {
896
+ padding: var(--hx-space-3, 0.75rem);
897
+ text-align: center;
898
+ color: var(--hx-color-neutral-400, #94a3b8);
899
+ font-size: var(--hx-font-size-sm, 0.875rem);
900
+ }
901
+ .field__sr-only {
902
+ position: absolute;
903
+ width: 1px;
904
+ height: 1px;
905
+ padding: 0;
906
+ margin: -1px;
907
+ overflow: hidden;
908
+ clip: rect(0, 0, 0, 0);
909
+ white-space: nowrap;
910
+ border: 0;
911
+ }
912
+ .field__help-text,
913
+ .field__error {
914
+ font-size: var(--hx-font-size-xs, 0.75rem);
915
+ line-height: var(--hx-line-height-normal, 1.5);
916
+ }
917
+ .field__help-text {
918
+ color: var(--hx-color-neutral-500, #64748b);
919
+ }
920
+ .field__error {
921
+ color: var(--hx-combobox-error-color, var(--hx-color-error-text, #b91c1c));
922
+ }
923
+ @media (prefers-reduced-motion: reduce) {
924
+ .field__input-wrapper,
925
+ .field__option,
926
+ .field__clear-button,
927
+ .field__chip-remove {
928
+ transition: none;
929
+ }
930
+ }
931
+ @media (forced-colors: active) {
932
+ .field__input-wrapper {
933
+ forced-color-adjust: none;
934
+ background-color: Field;
935
+ color: FieldText;
936
+ border: 2px solid ButtonText;
937
+ }
938
+ .field__input {
939
+ color: FieldText;
940
+ }
941
+ .field__input::placeholder {
942
+ color: GrayText;
943
+ }
944
+ .field__input-wrapper:focus-within {
945
+ border-color: Highlight;
946
+ box-shadow: none;
947
+ }
948
+ .field__listbox {
949
+ forced-color-adjust: none;
950
+ background-color: Canvas;
951
+ border: 2px solid CanvasText;
952
+ box-shadow: none;
953
+ }
954
+ .field__option {
955
+ color: CanvasText;
956
+ }
957
+ .field__option:hover {
958
+ background-color: Highlight;
959
+ color: HighlightText;
960
+ }
961
+ .field__option--selected {
962
+ background-color: Highlight;
963
+ color: HighlightText;
964
+ }
965
+ .field__option--focused {
966
+ outline-color: Highlight;
967
+ background-color: Highlight;
968
+ color: HighlightText;
969
+ }
970
+ .field__option--disabled {
971
+ color: GrayText;
972
+ opacity: 1;
973
+ }
974
+ .field__chip {
975
+ forced-color-adjust: none;
976
+ background-color: Highlight;
977
+ color: HighlightText;
978
+ border: 1px solid HighlightText;
979
+ }
980
+ .field__chip-remove:focus-visible {
981
+ outline-color: Highlight;
982
+ }
983
+ .field__clear-button:focus-visible {
984
+ outline-color: Highlight;
985
+ }
986
+ .field--error .field__input-wrapper {
987
+ border-color: LinkText;
988
+ }
989
+ :host([disabled]) {
990
+ opacity: 1;
991
+ }
992
+ :host([disabled]) .field__input-wrapper {
993
+ border-color: GrayText;
994
+ color: GrayText;
995
+ }
996
+ :host([disabled]) .field__input {
997
+ color: GrayText;
998
+ }
999
+ .field__label {
1000
+ color: CanvasText;
1001
+ }
1002
+ .field__help-text {
1003
+ color: GrayText;
1004
+ }
1005
+ .field__error {
1006
+ color: LinkText;
1007
+ }
1008
+ }
1009
+ :host([multiple]) .field__input-wrapper {
1010
+ flex-wrap: wrap;
1011
+ padding: var(--hx-space-1, 0.25rem);
1012
+ gap: var(--hx-space-1, 0.25rem);
1013
+ align-items: center;
1014
+ }
1015
+ :host([multiple]) .field__input {
1016
+ min-width: 8rem;
1017
+ padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
1018
+ flex-shrink: 1;
1019
+ }
1020
+ .field__chip {
1021
+ display: inline-flex;
1022
+ align-items: center;
1023
+ gap: var(--hx-space-1, 0.25rem);
1024
+ padding: 0 var(--hx-space-1, 0.25rem) 0 var(--hx-space-2, 0.5rem);
1025
+ height: 1.5rem;
1026
+ background-color: var(--hx-combobox-chip-bg, var(--hx-color-primary-100, #dbeafe));
1027
+ color: var(--hx-combobox-chip-color, var(--hx-color-primary-800, #1e3a8a));
1028
+ border-radius: var(--hx-border-radius-full, 9999px);
1029
+ font-size: var(--hx-font-size-sm, 0.875rem);
1030
+ white-space: nowrap;
1031
+ max-width: 12rem;
1032
+ flex-shrink: 0;
1033
+ }
1034
+ .field__chip-label {
1035
+ overflow: hidden;
1036
+ text-overflow: ellipsis;
1037
+ max-width: 8rem;
1038
+ }
1039
+ .field__chip-remove {
1040
+ display: inline-flex;
1041
+ align-items: center;
1042
+ justify-content: center;
1043
+ flex-shrink: 0;
1044
+ width: 1rem;
1045
+ height: 1rem;
1046
+ border: none;
1047
+ background: none;
1048
+ cursor: pointer;
1049
+ padding: 0;
1050
+ color: inherit;
1051
+ opacity: 0.7;
1052
+ border-radius: 50%;
1053
+ line-height: 1;
1054
+ transition: opacity var(--hx-transition-fast, 150ms ease);
1055
+ }
1056
+ .field__chip-remove:hover {
1057
+ opacity: 1;
1058
+ background-color: var(--hx-combobox-chip-remove-hover-bg, var(--hx-color-primary-200, #bfdbfe));
1059
+ }
1060
+ .field__chip-remove:focus-visible {
1061
+ outline: var(--hx-focus-ring-width, 2px) solid
1062
+ var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
1063
+ outline-offset: var(--hx-focus-ring-offset, 2px);
1064
+ opacity: 1;
1065
+ }
1066
+ /* ── hx-date-picker ── */
1067
+ /* ============================================================
1068
+ Host
1069
+ ============================================================ */
1070
+
1071
+ :host {
1072
+ display: block;
1073
+ position: relative;
1074
+ }
1075
+
1076
+ :host([disabled]) {
1077
+ opacity: var(--hx-opacity-disabled, 0.5);
1078
+ pointer-events: none;
1079
+ }
1080
+
1081
+ * {
1082
+ box-sizing: border-box;
1083
+ }
1084
+
1085
+ /* ============================================================
1086
+ Field layout
1087
+ ============================================================ */
1088
+
1089
+ .field {
1090
+ display: flex;
1091
+ flex-direction: column;
1092
+ gap: var(--hx-space-1, 0.25rem);
1093
+ font-family: var(--hx-date-picker-font-family, var(--hx-font-family-sans, sans-serif));
1094
+ position: relative;
1095
+ }
1096
+
1097
+ .field__label-wrapper {
1098
+ display: contents;
1099
+ }
1100
+
1101
+ .field__label {
1102
+ display: flex;
1103
+ align-items: baseline;
1104
+ gap: var(--hx-space-1, 0.25rem);
1105
+ font-size: var(--hx-font-size-sm, 0.875rem);
1106
+ font-weight: var(--hx-font-weight-medium, 500);
1107
+ color: var(--hx-date-picker-label-color, var(--hx-color-neutral-700, #334155));
1108
+ line-height: var(--hx-line-height-normal, 1.5);
1109
+ }
1110
+
1111
+ .field__required-marker {
1112
+ color: var(--hx-date-picker-error-color, var(--hx-color-error-text, #b91c1c));
1113
+ font-weight: var(--hx-font-weight-bold, 700);
1114
+ }
1115
+
1116
+ /* ============================================================
1117
+ Input wrapper
1118
+ ============================================================ */
1119
+
1120
+ .field__input-wrapper {
1121
+ display: flex;
1122
+ align-items: stretch;
1123
+ border: var(--hx-border-width-thin, 1px) solid
1124
+ var(--hx-date-picker-border-color, var(--hx-color-neutral-300, #cbd5e1));
1125
+ border-radius: var(--hx-date-picker-border-radius, var(--hx-border-radius-md, 0.375rem));
1126
+ background-color: var(--hx-date-picker-bg, var(--hx-color-neutral-0, #ffffff));
1127
+ transition:
1128
+ border-color var(--hx-transition-fast, 150ms ease),
1129
+ box-shadow var(--hx-transition-fast, 150ms ease);
1130
+ overflow: hidden;
1131
+ }
1132
+
1133
+ .field__input-wrapper:focus-within {
1134
+ border-color: var(
1135
+ --hx-date-picker-focus-ring-color,
1136
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
1137
+ );
1138
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
1139
+ color-mix(
1140
+ in srgb,
1141
+ var(
1142
+ --hx-date-picker-focus-ring-color,
1143
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
1144
+ )
1145
+ calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
1146
+ transparent
1147
+ );
1148
+ }
1149
+
1150
+ .field--error .field__input-wrapper {
1151
+ border-color: var(--hx-date-picker-error-color, var(--hx-color-error-500, #dc2626));
1152
+ }
1153
+
1154
+ .field--error .field__input-wrapper:focus-within {
1155
+ border-color: var(--hx-date-picker-error-color, var(--hx-color-error-500, #dc2626));
1156
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
1157
+ color-mix(
1158
+ in srgb,
1159
+ var(--hx-date-picker-error-color, var(--hx-color-error-500, #dc2626))
1160
+ calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
1161
+ transparent
1162
+ );
1163
+ }
1164
+
1165
+ /* ============================================================
1166
+ Input element
1167
+ ============================================================ */
1168
+
1169
+ .field__input {
1170
+ flex: 1;
1171
+ border: none;
1172
+ outline: none;
1173
+ background: transparent;
1174
+ padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
1175
+ font-family: inherit;
1176
+ font-size: var(--hx-font-size-md, 1rem);
1177
+ color: var(--hx-date-picker-color, var(--hx-color-neutral-800, #1e293b));
1178
+ line-height: var(--hx-line-height-normal, 1.5);
1179
+ min-height: var(--hx-size-10, 2.5rem);
1180
+ width: 100%;
1181
+ cursor: default;
1182
+ }
1183
+
1184
+ .field__input::placeholder {
1185
+ color: var(--hx-color-neutral-400, #94a3b8);
1186
+ }
1187
+
1188
+ .field__input:disabled {
1189
+ cursor: not-allowed;
1190
+ }
1191
+
1192
+ /* ============================================================
1193
+ Calendar trigger button
1194
+ ============================================================ */
1195
+
1196
+ .field__trigger {
1197
+ display: flex;
1198
+ align-items: center;
1199
+ justify-content: center;
1200
+ padding: 0 var(--hx-space-3, 0.75rem);
1201
+ border: none;
1202
+ border-left: var(--hx-border-width-thin, 1px) solid
1203
+ var(--hx-date-picker-border-color, var(--hx-color-neutral-300, #cbd5e1));
1204
+ background: transparent;
1205
+ color: var(--hx-date-picker-trigger-color, var(--hx-color-neutral-500, #64748b));
1206
+ cursor: pointer;
1207
+ flex-shrink: 0;
1208
+ transition: color var(--hx-transition-fast, 150ms ease);
1209
+ outline: none;
1210
+ }
1211
+
1212
+ .field__trigger:focus-visible {
1213
+ color: var(
1214
+ --hx-date-picker-focus-ring-color,
1215
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
1216
+ );
1217
+ background-color: color-mix(
1218
+ in srgb,
1219
+ var(
1220
+ --hx-date-picker-focus-ring-color,
1221
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
1222
+ )
1223
+ 8%,
1224
+ transparent
1225
+ );
1226
+ }
1227
+
1228
+ .field__trigger:hover:not(:disabled) {
1229
+ color: var(--hx-date-picker-trigger-hover-color, var(--hx-color-neutral-700, #334155));
1230
+ background-color: color-mix(in srgb, var(--hx-color-neutral-900, #0f172a) 4%, transparent);
1231
+ }
1232
+
1233
+ .field__trigger:disabled {
1234
+ cursor: not-allowed;
1235
+ }
1236
+
1237
+ /* ============================================================
1238
+ Calendar popover
1239
+ ============================================================ */
1240
+
1241
+ .calendar {
1242
+ position: absolute;
1243
+ top: calc(100% + var(--hx-space-1, 0.25rem));
1244
+ left: 0;
1245
+ z-index: var(--hx-z-index-dropdown, 1000);
1246
+ min-width: var(--hx-date-picker-calendar-min-width, 18rem);
1247
+ background-color: var(--hx-date-picker-calendar-bg, var(--hx-color-neutral-0, #ffffff));
1248
+ border: var(--hx-border-width-thin, 1px) solid
1249
+ var(--hx-date-picker-calendar-border-color, var(--hx-color-neutral-200, #e2e8f0));
1250
+ border-radius: var(--hx-date-picker-calendar-border-radius, var(--hx-border-radius-lg, 0.5rem));
1251
+ box-shadow: var(
1252
+ --hx-date-picker-calendar-shadow,
1253
+ var(--hx-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1))
1254
+ );
1255
+ padding: var(--hx-space-3, 0.75rem);
1256
+ outline: none;
1257
+ }
1258
+
1259
+ @media (prefers-reduced-motion: no-preference) {
1260
+ .calendar {
1261
+ animation: calendar-appear var(--hx-transition-fast, 150ms ease) forwards;
1262
+ }
1263
+ }
1264
+
1265
+ @keyframes calendar-appear {
1266
+ 0% {
1267
+ opacity: 0;
1268
+ transform: translateY(-0.25rem);
1269
+ }
1270
+
1271
+ to {
1272
+ opacity: 1;
1273
+ transform: translateY(0);
1274
+ }
1275
+ }
1276
+
1277
+ /* ============================================================
1278
+ Calendar navigation
1279
+ ============================================================ */
1280
+
1281
+ .calendar__nav {
1282
+ display: flex;
1283
+ align-items: center;
1284
+ justify-content: space-between;
1285
+ margin-bottom: var(--hx-space-3, 0.75rem);
1286
+ }
1287
+
1288
+ :is(.calendar__nav-btn, .calendar__day, .calendar__day-cell, .calendar__weekday) {
1289
+ display: flex;
1290
+ align-items: center;
1291
+ justify-content: center;
1292
+ }
1293
+
1294
+ :is(.calendar__nav-btn, .calendar__day) {
1295
+ width: var(--hx-touch-target-min, 2.75rem);
1296
+ height: var(--hx-touch-target-min, 2.75rem);
1297
+ border: none;
1298
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
1299
+ background: transparent;
1300
+ cursor: pointer;
1301
+ outline: none;
1302
+ transition:
1303
+ background-color var(--hx-transition-fast, 150ms ease),
1304
+ color var(--hx-transition-fast, 150ms ease);
1305
+ }
1306
+
1307
+ .calendar__nav-btn {
1308
+ color: var(--hx-color-neutral-600, #475569);
1309
+ font-size: var(--hx-font-size-lg, 1.125rem);
1310
+ line-height: 1;
1311
+ }
1312
+
1313
+ .calendar__nav-btn:hover {
1314
+ background-color: var(--hx-color-neutral-100, #f1f5f9);
1315
+ color: var(--hx-color-neutral-900, #0f172a);
1316
+ }
1317
+
1318
+ :is(.calendar__nav-btn, .calendar__day):focus-visible {
1319
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
1320
+ var(
1321
+ --hx-date-picker-focus-ring-color,
1322
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
1323
+ );
1324
+ z-index: 1;
1325
+ }
1326
+
1327
+ .calendar__nav-btn:disabled {
1328
+ opacity: var(--hx-opacity-disabled, 0.5);
1329
+ cursor: not-allowed;
1330
+ pointer-events: none;
1331
+ }
1332
+
1333
+ .calendar__month-label {
1334
+ font-size: var(--hx-font-size-sm, 0.875rem);
1335
+ font-weight: var(--hx-font-weight-semibold, 600);
1336
+ color: var(--hx-color-neutral-800, #1e293b);
1337
+ flex: 1;
1338
+ text-align: center;
1339
+ }
1340
+
1341
+ /* ============================================================
1342
+ Calendar grid
1343
+ ============================================================ */
1344
+
1345
+ .calendar__grid {
1346
+ display: flex;
1347
+ flex-direction: column;
1348
+ gap: var(--hx-space-1, 0.25rem);
1349
+ }
1350
+
1351
+ .calendar__row {
1352
+ display: grid;
1353
+ grid-template-columns: repeat(7, 1fr);
1354
+ gap: var(--hx-space-1, 0.25rem);
1355
+ }
1356
+
1357
+ .calendar__weekday {
1358
+ height: var(--hx-size-8, 2rem);
1359
+ font-size: var(--hx-font-size-xs, 0.75rem);
1360
+ font-weight: var(--hx-font-weight-semibold, 600);
1361
+ color: var(--hx-color-neutral-500, #64748b);
1362
+ text-transform: uppercase;
1363
+ letter-spacing: 0.05em;
1364
+ }
1365
+
1366
+ /* ============================================================
1367
+ Calendar day cells
1368
+ ============================================================ */
1369
+
1370
+ .calendar__day {
1371
+ color: var(--hx-color-neutral-800, #1e293b);
1372
+ font-size: var(--hx-font-size-sm, 0.875rem);
1373
+ font-family: inherit;
1374
+ position: relative;
1375
+ }
1376
+
1377
+ .calendar__day:hover:not(.calendar__day--disabled):not(.calendar__day--selected) {
1378
+ background-color: var(--hx-color-neutral-100, #f1f5f9);
1379
+ color: var(--hx-color-neutral-900, #0f172a);
1380
+ }
1381
+
1382
+ .calendar__day--selected {
1383
+ background-color: var(--hx-date-picker-selected-bg, var(--hx-color-primary-500, #2563eb));
1384
+ color: var(--hx-date-picker-selected-color, var(--hx-color-neutral-0, #ffffff));
1385
+ font-weight: var(--hx-font-weight-semibold, 600);
1386
+ }
1387
+
1388
+ .calendar__day--selected:hover {
1389
+ background-color: var(--hx-date-picker-selected-hover-bg, var(--hx-color-primary-600, #1d4ed8));
1390
+ }
1391
+
1392
+ .calendar__day--today:not(.calendar__day--selected) {
1393
+ font-weight: var(--hx-font-weight-bold, 700);
1394
+ color: var(--hx-date-picker-today-color, var(--hx-color-primary-600, #1d4ed8));
1395
+ }
1396
+
1397
+ .calendar__day--today:not(.calendar__day--selected)::after {
1398
+ content: '';
1399
+ position: absolute;
1400
+ bottom: 0.2rem;
1401
+ left: 50%;
1402
+ transform: translate(-50%);
1403
+ width: 0.25rem;
1404
+ height: 0.25rem;
1405
+ border-radius: 50%;
1406
+ background-color: currentColor;
1407
+ }
1408
+
1409
+ .calendar__day--disabled {
1410
+ opacity: var(--hx-opacity-disabled, 0.5);
1411
+ cursor: not-allowed;
1412
+ pointer-events: none;
1413
+ }
1414
+
1415
+ /* ============================================================
1416
+ Live region (screen reader announcements)
1417
+ ============================================================ */
1418
+
1419
+ .calendar__live-region {
1420
+ position: absolute;
1421
+ width: 1px;
1422
+ height: 1px;
1423
+ padding: 0;
1424
+ margin: -1px;
1425
+ overflow: hidden;
1426
+ clip: rect(0, 0, 0, 0);
1427
+ white-space: nowrap;
1428
+ border: 0;
1429
+ }
1430
+
1431
+ /* ============================================================
1432
+ Help text and error message
1433
+ ============================================================ */
1434
+
1435
+ .field__help-text,
1436
+ .field__error {
1437
+ font-size: var(--hx-font-size-xs, 0.75rem);
1438
+ line-height: var(--hx-line-height-normal, 1.5);
1439
+ }
1440
+
1441
+ .field__help-text {
1442
+ color: var(--hx-color-neutral-500, #64748b);
1443
+ }
1444
+
1445
+ .field__error {
1446
+ color: var(--hx-date-picker-error-color, var(--hx-color-error-text, #b91c1c));
1447
+ }
1448
+
1449
+ /* ============================================================
1450
+ Reduced motion
1451
+ ============================================================ */
1452
+
1453
+ @media (prefers-reduced-motion: reduce) {
1454
+ .field__input-wrapper,
1455
+ .field__trigger,
1456
+ .calendar__nav-btn,
1457
+ .calendar__day {
1458
+ transition: none;
1459
+ }
1460
+ }
1461
+
1462
+ /* ============================================================
1463
+ Forced colors (Windows High Contrast)
1464
+ ============================================================ */
1465
+
1466
+ @media (forced-colors: active) {
1467
+ .field__input-wrapper {
1468
+ border: 1px solid ButtonText;
1469
+ }
1470
+
1471
+ .field__input-wrapper:focus-within {
1472
+ outline: 2px solid Highlight;
1473
+ outline-offset: 1px;
1474
+ box-shadow: none;
1475
+ }
1476
+
1477
+ :is(.calendar__day:focus-visible, .calendar__nav-btn:focus-visible) {
1478
+ outline: 2px solid Highlight;
1479
+ box-shadow: none;
1480
+ }
1481
+
1482
+ .calendar__day--selected {
1483
+ background-color: Highlight;
1484
+ color: HighlightText;
1485
+ border: 1px solid Highlight;
1486
+ }
1487
+
1488
+ .calendar__day--today:not(.calendar__day--selected) {
1489
+ border: 2px solid LinkText;
1490
+ }
1491
+
1492
+ .calendar__day--today:not(.calendar__day--selected)::after {
1493
+ display: none;
1494
+ }
1495
+
1496
+ .calendar__day--disabled {
1497
+ color: GrayText;
1498
+ }
293
1499
 
294
- .fieldset__error {
295
- font-size: var(--hx-font-size-xs);
296
- color: var(--hx-checkbox-group-error-color, var(--hx-color-error-500, #dc3545));
297
- line-height: var(--hx-line-height-normal);
1500
+ .field--error .field__input-wrapper {
1501
+ border-color: LinkText;
1502
+ }
298
1503
  }
299
- /* ── hx-color-picker ── */
300
- :host{display:inline-block;position:relative;font-family:var(--hx-font-family-sans, sans-serif);font-size:var(--hx-font-size-sm, .875rem)}:host([disabled]){pointer-events:none;opacity:var(--hx-opacity-disabled, .4)}.trigger{display:inline-flex;align-items:center;gap:var(--hx-space-2, .5rem);padding:var(--hx-space-1, .25rem);border:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #d1d5db);border-radius:var(--hx-border-radius-md, .375rem);background:var(--hx-color-neutral-0, #fff);cursor:pointer;transition:border-color var(--hx-transition-fast, .15s ease)}.trigger:hover:not([disabled]){border-color:var(--hx-color-primary-500, #3b82f6)}:is(.trigger,.gradient-grid,.slider-track,.swatch-btn,.format-btn):focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, var(--hx-color-primary-500));outline-offset:var(--hx-focus-ring-offset, 2px)}.trigger-swatch{width:1.5rem;height:1.5rem;border-radius:var(--hx-border-radius-sm, .25rem);border:var(--hx-border-width-thin, 1px) solid var(--hx-color-picker-swatch-border, var(--hx-overlay-black-10, rgba(0, 0, 0, .1)));background:var(--_preview-color, #000);display:block;flex-shrink:0}.trigger-label{font-size:var(--hx-font-size-sm, .875rem);color:var(--hx-color-neutral-700, #374151);font-family:var(--hx-font-family-mono, monospace);white-space:nowrap}.panel{position:absolute;z-index:var(--hx-color-picker-z-index, 1000);top:calc(100% + 4px);left:0;background:var(--hx-color-neutral-0, #fff);border:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #e5e7eb);border-radius:var(--hx-border-radius-lg, .5rem);box-shadow:0 8px 24px var(--hx-color-picker-panel-shadow, var(--hx-overlay-black-15, rgba(0, 0, 0, .15)));padding:var(--hx-space-4, 1rem);width:var(--hx-color-picker-width, 260px);display:flex;flex-direction:column;gap:var(--hx-space-3, .75rem);outline:none}:host([inline]) .panel{position:static;box-shadow:none;border:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #e5e7eb);border-radius:var(--hx-border-radius-lg, .5rem)}.gradient-grid{position:relative;width:100%;height:var(--hx-color-picker-grid-height, 160px);border-radius:var(--hx-border-radius-sm, .25rem);cursor:crosshair;overflow:hidden;touch-action:none;flex-shrink:0}.gradient-grid-bg{position:absolute;inset:0;background:linear-gradient(to bottom,transparent,#000),linear-gradient(to right,#fff,var(--_hue-color, hsl(0, 100%, 50%)));pointer-events:none}.gradient-thumb{position:absolute;width:12px;height:12px;border-radius:50%;border:none;box-shadow:0 0 0 2px var(--hx-color-picker-thumb-border, var(--hx-color-neutral-0, #fff)),0 0 0 3px var(--hx-color-picker-thumb-shadow, var(--hx-overlay-black-30, rgba(0, 0, 0, .3)));transform:translate(-50%,-50%);pointer-events:none;top:var(--_thumb-y, 0%);left:var(--_thumb-x, 100%)}.slider-track{position:relative;width:100%;height:12px;border-radius:6px;cursor:pointer;touch-action:none;flex-shrink:0}.hue-track{background:linear-gradient(to right,red,#ff8000,#ff0,#80ff00,#0f0,#00ff80,#0ff,#0080ff,#00f,#7f00ff,#f0f,#ff0080,red)}.opacity-track{background-image:linear-gradient(to right,transparent,var(--_hue-color, hsl(0, 100%, 50%))),repeating-conic-gradient(#ccc 0% 25%,#fff 0% 50%) 0 0 / 12px 12px}.slider-thumb{position:absolute;top:50%;width:16px;height:16px;border-radius:50%;border:none;box-shadow:0 0 0 2px var(--hx-color-picker-thumb-border, var(--hx-color-neutral-0, #fff)),0 0 0 3px var(--hx-color-picker-thumb-shadow, var(--hx-overlay-black-30, rgba(0, 0, 0, .3)));transform:translate(-50%,-50%);pointer-events:none;left:var(--_slider-pct, 0%);background:var(--_thumb-color, hsl(0, 100%, 50%))}.swatches{display:flex;flex-wrap:wrap;gap:var(--hx-space-1, .25rem)}.swatch-btn{width:20px;height:20px;border-radius:var(--hx-border-radius-sm, .25rem);border:var(--hx-border-width-thin, 1px) solid var(--hx-color-picker-swatch-border, var(--hx-overlay-black-10, rgba(0, 0, 0, .1)));cursor:pointer;padding:0;flex-shrink:0;transition:transform var(--hx-transition-fast, .15s ease)}.swatch-btn:hover{transform:scale(1.15);border-color:var( --hx-color-picker-swatch-border-hover, var(--hx-overlay-black-30, rgba(0, 0, 0, .3)) )}.input-area{display:flex;align-items:center;gap:var(--hx-space-2, .5rem)}.format-btn{flex-shrink:0;padding:var(--hx-space-1, .25rem) var(--hx-space-2, .5rem);background:var(--hx-color-neutral-100, #f3f4f6);border:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #d1d5db);border-radius:var(--hx-border-radius-sm, .25rem);cursor:pointer;font-size:var(--hx-font-size-xs, .75rem);color:var(--hx-color-neutral-600, #4b5563);text-transform:uppercase;font-weight:var(--hx-font-weight-semibold, 600);letter-spacing:.05em}.color-input{flex:1;min-width:0;padding:var(--hx-space-1, .25rem) var(--hx-space-2, .5rem);border:var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #d1d5db);border-radius:var(--hx-border-radius-sm, .25rem);font-family:var(--hx-font-family-mono, monospace);font-size:var(--hx-font-size-sm, .875rem);color:var(--hx-color-neutral-900, #111827);background:var(--hx-color-neutral-0, #fff);outline:none}.color-input:focus{border-color:var(--hx-focus-ring-color, var(--hx-color-primary-500));box-shadow:0 0 0 2px color-mix(in srgb,var(--hx-focus-ring-color, var(--hx-color-primary-500)) 20%,transparent)}.input-preview{width:24px;height:24px;border-radius:var(--hx-border-radius-sm, .25rem);border:var(--hx-border-width-thin, 1px) solid var(--hx-color-picker-swatch-border, var(--hx-overlay-black-10, rgba(0, 0, 0, .1)));background:var(--_preview-color, #000);flex-shrink:0}@media(prefers-reduced-motion:reduce){.trigger,.swatch-btn{transition:none}}
301
- /* ── hx-combobox ── */
302
- :host{display:block}:host([disabled]){opacity:var(--hx-opacity-disabled, .5);pointer-events:none}*{box-sizing:border-box}.field{display:flex;flex-direction:column;gap:var(--hx-space-1, .25rem);font-family:var(--hx-combobox-font-family, var(--hx-font-family-sans, sans-serif));position:relative}.field__label{display:flex;align-items:baseline;gap:var(--hx-space-1, .25rem);font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-medium, 500);color:var(--hx-combobox-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5)}.field__required-marker{color:var(--hx-combobox-error-color, var(--hx-color-error-text, #b91c1c));font-weight:var(--hx-font-weight-bold, 700)}.field__input-wrapper{position:relative;display:flex;align-items:center;border:var(--hx-border-width-thin, 1px) solid var(--hx-combobox-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-combobox-border-radius, var(--hx-border-radius-md, .375rem));background-color:var(--hx-combobox-bg, var(--hx-color-neutral-0, #ffffff));transition:border-color var(--hx-transition-fast, .15s ease),box-shadow var(--hx-transition-fast, .15s ease)}.field__input-wrapper:focus-within{border-color:var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa)));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}.field--error .field__input-wrapper{border-color:var(--hx-combobox-error-color, var(--hx-color-error-500, #dc3545))}.field--error .field__input-wrapper:focus-within{border-color:var(--hx-combobox-error-color, var(--hx-color-error-500, #dc3545));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-combobox-error-color, var(--hx-color-error-500, #dc3545)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}.field__prefix,.field__suffix{display:flex;align-items:center;padding:0 var(--hx-space-2, .5rem);color:var(--hx-color-neutral-500, #6c757d);flex-shrink:0}.field__input{flex:1;min-width:0;min-height:var(--hx-input-height-md, var(--hx-size-10, 2.5rem));border:none;background:transparent;outline:none;font-family:inherit;font-size:var(--hx-font-size-md, 1rem);line-height:var(--hx-line-height-normal, 1.5);color:var(--hx-combobox-color, var(--hx-color-neutral-800, #212529));padding:var(--hx-space-2, .5rem) var(--hx-space-3, .75rem)}.field__input::placeholder{color:var(--hx-color-neutral-400, #adb5bd)}.field__input--sm{min-height:var(--hx-input-height-sm, var(--hx-size-8, 2rem));font-size:var(--hx-font-size-sm, .875rem);padding:var(--hx-space-1, .25rem) var(--hx-space-3, .75rem)}.field__input--lg{min-height:var(--hx-input-height-lg, var(--hx-size-12, 3rem));font-size:var(--hx-font-size-lg, 1.125rem);padding:var(--hx-space-3, .75rem) var(--hx-space-4, 1rem)}.field__clear-button,.field__loading-indicator{display:flex;align-items:center;justify-content:center;margin-inline-end:var(--hx-space-2, .5rem);flex-shrink:0;color:var(--hx-color-neutral-400, #adb5bd)}.field__clear-button{width:1.25rem;height:1.25rem;border:none;background:transparent;cursor:pointer;padding:0;border-radius:var(--hx-border-radius-full, 9999px);transition:color var(--hx-transition-fast, .15s ease)}.field__clear-button:hover{color:var(--hx-color-neutral-700, #343a40)}.field__clear-button:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));outline-offset:var(--hx-focus-ring-offset, 2px)}.field__loading-indicator{width:1rem;height:1rem}.field__loading-spinner{width:1rem;height:1rem;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:hx-spin .7s linear infinite}@keyframes hx-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.field__loading-spinner{animation:none}}.field__listbox{position:absolute;top:calc(100% + var(--hx-space-1, .25rem));left:0;right:0;z-index:var(--hx-z-index-dropdown, 100);background-color:var(--hx-combobox-listbox-bg, var(--hx-color-neutral-0, #ffffff));border:var(--hx-border-width-thin, 1px) solid var(--hx-combobox-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-combobox-border-radius, var(--hx-border-radius-md, .375rem));box-shadow:var( --hx-combobox-listbox-shadow, 0 4px 16px color-mix(in srgb, var(--hx-color-neutral-900, #0d1117) 12%, transparent) );max-height:var(--hx-combobox-listbox-max-height, 16rem);overflow:hidden;display:flex;flex-direction:column}.field__listbox[hidden]{display:none}.field__options{overflow-y:auto;flex:1;padding:var(--hx-space-1, .25rem) 0}.field__option{display:flex;align-items:center;gap:var(--hx-space-2, .5rem);padding:var(--hx-space-2, .5rem) var(--hx-space-3, .75rem);font-size:var(--hx-font-size-md, 1rem);color:var(--hx-combobox-color, var(--hx-color-neutral-800, #212529));cursor:pointer;user-select:none;-webkit-user-select:none;transition:background-color var(--hx-transition-fast, .15s ease)}.field__option:hover{background-color:var(--hx-combobox-option-hover-bg, var(--hx-color-primary-50, #eff6ff))}.field__option--selected{background-color:var(--hx-combobox-option-selected-bg, var(--hx-color-primary-100, #dbeafe));font-weight:var(--hx-font-weight-medium, 500)}.field__option--focused{background-color:var(--hx-combobox-option-hover-bg, var(--hx-color-primary-50, #eff6ff));outline:var(--hx-focus-ring-width, 2px) solid var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));outline-offset:var(--hx-combobox-option-focus-ring-offset, -2px)}.field__option--focused.field__option--selected{background-color:var(--hx-combobox-option-selected-bg, var(--hx-color-primary-100, #dbeafe))}.field__option--disabled{opacity:var(--hx-opacity-disabled, .5);cursor:not-allowed;pointer-events:none}.field__option-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field__no-options{padding:var(--hx-space-3, .75rem);text-align:center;color:var(--hx-color-neutral-400, #adb5bd);font-size:var(--hx-font-size-sm, .875rem)}.field__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.field__help-text,.field__error{font-size:var(--hx-font-size-xs, .75rem);line-height:var(--hx-line-height-normal, 1.5)}.field__help-text{color:var(--hx-color-neutral-500, #6c757d)}.field__error{color:var(--hx-combobox-error-color, var(--hx-color-error-text, #b91c1c))}@media(prefers-reduced-motion:reduce){.field__input-wrapper,.field__option,.field__clear-button,.field__chip-remove{transition:none}}:host([multiple]) .field__input-wrapper{flex-wrap:wrap;padding:var(--hx-space-1, .25rem);gap:var(--hx-space-1, .25rem);align-items:center}:host([multiple]) .field__input{min-width:8rem;padding:var(--hx-space-1, .25rem) var(--hx-space-2, .5rem);flex-shrink:1}.field__chip{display:inline-flex;align-items:center;gap:var(--hx-space-1, .25rem);padding:0 var(--hx-space-1, .25rem) 0 var(--hx-space-2, .5rem);height:1.5rem;background-color:var(--hx-combobox-chip-bg, var(--hx-color-primary-100, #dbeafe));color:var(--hx-combobox-chip-color, var(--hx-color-primary-800, #1e40af));border-radius:var(--hx-border-radius-full, 9999px);font-size:var(--hx-font-size-sm, .875rem);white-space:nowrap;max-width:12rem;flex-shrink:0}.field__chip-label{overflow:hidden;text-overflow:ellipsis;max-width:8rem}.field__chip-remove{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1rem;height:1rem;border:none;background:none;cursor:pointer;padding:0;color:inherit;opacity:.7;border-radius:50%;line-height:1;transition:opacity var(--hx-transition-fast, .15s ease)}.field__chip-remove:hover{opacity:1;background-color:var(--hx-combobox-chip-remove-hover-bg, var(--hx-color-primary-200, #bfdbfe))}.field__chip-remove:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));outline-offset:var(--hx-focus-ring-offset, 2px);opacity:1}
303
- /* ── hx-date-picker ── */
304
- :host{display:block;position:relative}:host([disabled]){opacity:var(--hx-opacity-disabled, .5);pointer-events:none}*{box-sizing:border-box}.field{display:flex;flex-direction:column;gap:var(--hx-space-1, .25rem);font-family:var(--hx-date-picker-font-family, var(--hx-font-family-sans, sans-serif));position:relative}.field__label-wrapper{display:contents}.field__label{display:flex;align-items:baseline;gap:var(--hx-space-1, .25rem);font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-medium, 500);color:var(--hx-date-picker-label-color, var(--hx-color-neutral-700, #343a40));line-height:var(--hx-line-height-normal, 1.5)}.field__required-marker{color:var(--hx-date-picker-error-color, var(--hx-color-error-text, #b91c1c));font-weight:var(--hx-font-weight-bold, 700)}.field__input-wrapper{display:flex;align-items:stretch;border:var(--hx-border-width-thin, 1px) solid var(--hx-date-picker-border-color, var(--hx-color-neutral-300, #ced4da));border-radius:var(--hx-date-picker-border-radius, var(--hx-border-radius-md, .375rem));background-color:var(--hx-date-picker-bg, var(--hx-color-neutral-0, #ffffff));transition:border-color var(--hx-transition-fast, .15s ease),box-shadow var(--hx-transition-fast, .15s ease);overflow:hidden}.field__input-wrapper:focus-within{border-color:var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa)));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}.field--error .field__input-wrapper{border-color:var(--hx-date-picker-error-color, var(--hx-color-error-500, #dc3545))}.field--error .field__input-wrapper:focus-within{border-color:var(--hx-date-picker-error-color, var(--hx-color-error-500, #dc3545));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-date-picker-error-color, var(--hx-color-error-500, #dc3545)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}.field__input{flex:1;border:none;outline:none;background:transparent;padding:var(--hx-space-2, .5rem) var(--hx-space-3, .75rem);font-family:inherit;font-size:var(--hx-font-size-md, 1rem);color:var(--hx-date-picker-color, var(--hx-color-neutral-800, #212529));line-height:var(--hx-line-height-normal, 1.5);min-height:var(--hx-size-10, 2.5rem);width:100%;cursor:default}.field__input::placeholder{color:var(--hx-color-neutral-400, #adb5bd)}.field__input:disabled{cursor:not-allowed}.field__trigger{display:flex;align-items:center;justify-content:center;padding:0 var(--hx-space-3, .75rem);border:none;border-left:var(--hx-border-width-thin, 1px) solid var(--hx-date-picker-border-color, var(--hx-color-neutral-300, #ced4da));background:transparent;color:var(--hx-date-picker-trigger-color, var(--hx-color-neutral-500, #6c757d));cursor:pointer;flex-shrink:0;transition:color var(--hx-transition-fast, .15s ease);outline:none}.field__trigger:focus-visible{color:var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa)));background-color:color-mix(in srgb,var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))) 8%,transparent)}.field__trigger:hover:not(:disabled){color:var(--hx-date-picker-trigger-hover-color, var(--hx-color-neutral-700, #343a40));background-color:color-mix(in srgb,var(--hx-color-neutral-900, #212529) 4%,transparent)}.field__trigger:disabled{cursor:not-allowed}.calendar{position:absolute;top:calc(100% + var(--hx-space-1, .25rem));left:0;z-index:var(--hx-z-index-dropdown, 1000);min-width:var(--hx-date-picker-calendar-min-width, 18rem);background-color:var(--hx-date-picker-calendar-bg, var(--hx-color-neutral-0, #ffffff));border:var(--hx-border-width-thin, 1px) solid var(--hx-date-picker-calendar-border-color, var(--hx-color-neutral-200, #e9ecef));border-radius:var(--hx-date-picker-calendar-border-radius, var(--hx-border-radius-lg, .5rem));box-shadow:var( --hx-date-picker-calendar-shadow, 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1) );padding:var(--hx-space-3, .75rem);outline:none}@media(prefers-reduced-motion:no-preference){.calendar{animation:calendar-appear var(--hx-transition-fast, .15s ease) forwards}}@keyframes calendar-appear{0%{opacity:0;transform:translateY(-.25rem)}to{opacity:1;transform:translateY(0)}}.calendar__nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--hx-space-3, .75rem)}:is(.calendar__nav-btn,.calendar__day,.calendar__day-cell,.calendar__weekday){display:flex;align-items:center;justify-content:center}:is(.calendar__nav-btn,.calendar__day){width:var(--hx-touch-target-min, 2.75rem);height:var(--hx-touch-target-min, 2.75rem);border:none;border-radius:var(--hx-border-radius-sm, .25rem);background:transparent;cursor:pointer;outline:none;transition:background-color var(--hx-transition-fast, .15s ease),color var(--hx-transition-fast, .15s ease)}.calendar__nav-btn{color:var(--hx-color-neutral-600, #495057);font-size:var(--hx-font-size-lg, 1.125rem);line-height:1}.calendar__nav-btn:hover{background-color:var(--hx-color-neutral-100, #f8f9fa);color:var(--hx-color-neutral-900, #212529)}:is(.calendar__nav-btn,.calendar__day):focus-visible{box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa)));z-index:1}.calendar__nav-btn:disabled{opacity:var(--hx-opacity-disabled, .4);cursor:not-allowed;pointer-events:none}.calendar__month-label{font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-semibold, 600);color:var(--hx-color-neutral-800, #212529);flex:1;text-align:center}.calendar__grid{display:flex;flex-direction:column;gap:var(--hx-space-1, .25rem)}.calendar__row{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--hx-space-1, .25rem)}.calendar__weekday{height:var(--hx-size-8, 2rem);font-size:var(--hx-font-size-xs, .75rem);font-weight:var(--hx-font-weight-semibold, 600);color:var(--hx-color-neutral-500, #6c757d);text-transform:uppercase;letter-spacing:.05em}.calendar__day{color:var(--hx-color-neutral-800, #212529);font-size:var(--hx-font-size-sm, .875rem);font-family:inherit;position:relative}.calendar__day:hover:not(.calendar__day--disabled):not(.calendar__day--selected){background-color:var(--hx-color-neutral-100, #f8f9fa);color:var(--hx-color-neutral-900, #212529)}.calendar__day--selected{background-color:var(--hx-date-picker-selected-bg, var(--hx-color-primary-500, #2563eb));color:var(--hx-date-picker-selected-color, var(--hx-color-neutral-0, #ffffff));font-weight:var(--hx-font-weight-semibold, 600)}.calendar__day--selected:hover{background-color:var(--hx-date-picker-selected-hover-bg, var(--hx-color-primary-600, #1d4ed8))}.calendar__day--today:not(.calendar__day--selected){font-weight:var(--hx-font-weight-bold, 700);color:var(--hx-date-picker-today-color, var(--hx-color-primary-600, #1d4ed8))}.calendar__day--today:not(.calendar__day--selected):after{content:"";position:absolute;bottom:.2rem;left:50%;transform:translate(-50%);width:.25rem;height:.25rem;border-radius:50%;background-color:currentColor}.calendar__day--disabled{opacity:var(--hx-opacity-disabled, .4);cursor:not-allowed;pointer-events:none}.calendar__live-region{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.field__help-text,.field__error{font-size:var(--hx-font-size-xs, .75rem);line-height:var(--hx-line-height-normal, 1.5)}.field__help-text{color:var(--hx-color-neutral-500, #6c757d)}.field__error{color:var(--hx-date-picker-error-color, var(--hx-color-error-text, #b91c1c))}@media(prefers-reduced-motion:reduce){.field__input-wrapper,.field__trigger,.calendar__nav-btn,.calendar__day{transition:none}}@media(forced-colors:active){.field__input-wrapper{border:1px solid ButtonText}.field__input-wrapper:focus-within{outline:2px solid Highlight;outline-offset:1px;box-shadow:none}:is(.calendar__day:focus-visible,.calendar__nav-btn:focus-visible){outline:2px solid Highlight;box-shadow:none}.calendar__day--selected{background-color:Highlight;color:HighlightText;border:1px solid Highlight}.calendar__day--today:not(.calendar__day--selected){border:2px solid LinkText}.calendar__day--today:not(.calendar__day--selected):after{display:none}.calendar__day--disabled{color:GrayText}.field--error .field__input-wrapper{border-color:LinkText}}
305
1504
  /* ── hx-field ── */
306
1505
  :host {
307
1506
  display: block;
@@ -350,7 +1549,7 @@
350
1549
  gap: var(--hx-space-1, 0.25rem);
351
1550
  font-size: var(--hx-font-size-sm, 0.875rem);
352
1551
  font-weight: var(--hx-font-weight-medium, 500);
353
- color: var(--hx-field-label-color, var(--hx-color-neutral-700, #374151));
1552
+ color: var(--hx-field-label-color, var(--hx-color-neutral-700, #334155));
354
1553
  line-height: var(--hx-line-height-normal, 1.5);
355
1554
  cursor: pointer;
356
1555
  }
@@ -400,7 +1599,7 @@
400
1599
 
401
1600
  .field__help-text {
402
1601
  font-size: var(--hx-font-size-xs, 0.75rem);
403
- color: var(--hx-field-help-text-color, var(--hx-color-neutral-500, #6b7280));
1602
+ color: var(--hx-field-help-text-color, var(--hx-color-neutral-500, #64748b));
404
1603
  line-height: var(--hx-line-height-normal, 1.5);
405
1604
  }
406
1605
 
@@ -417,10 +1616,46 @@
417
1616
  }
418
1617
 
419
1618
  .field--error .field__control {
420
- outline: 2px solid var(--hx-field-error-color, var(--hx-color-error-500, #ef4444));
1619
+ outline: 2px solid var(--hx-field-error-color, var(--hx-color-error-500, #dc2626));
421
1620
  outline-offset: var(--hx-focus-ring-offset, 2px);
422
1621
  border-radius: var(--hx-border-radius-sm, 0.25rem);
423
1622
  }
1623
+
1624
+ /* ─── High Contrast Mode (forced-colors) ─── */
1625
+
1626
+ @media (forced-colors: active) {
1627
+ .field__label {
1628
+ color: CanvasText;
1629
+ }
1630
+
1631
+ .field__required-marker {
1632
+ color: LinkText;
1633
+ }
1634
+
1635
+ .field--error .field__label {
1636
+ color: LinkText;
1637
+ }
1638
+
1639
+ .field--error .field__control {
1640
+ outline-color: LinkText;
1641
+ }
1642
+
1643
+ :host([disabled]) {
1644
+ opacity: 1;
1645
+ }
1646
+
1647
+ :host([disabled]) .field__label {
1648
+ color: GrayText;
1649
+ }
1650
+
1651
+ .field__help-text {
1652
+ color: GrayText;
1653
+ }
1654
+
1655
+ .field__error {
1656
+ color: LinkText;
1657
+ }
1658
+ }
424
1659
  /* ── hx-field-label ── */
425
1660
  :host {
426
1661
  display: block;
@@ -432,7 +1667,7 @@
432
1667
  gap: var(--hx-space-1, 0.25rem);
433
1668
  font-size: var(--hx-font-label-size, var(--hx-font-size-sm, 0.875rem));
434
1669
  font-weight: var(--hx-font-label-weight, var(--hx-font-weight-medium, 500));
435
- color: var(--hx-field-label-color, var(--hx-color-neutral-700, #374151));
1670
+ color: var(--hx-field-label-color, var(--hx-color-neutral-700, #334155));
436
1671
  line-height: var(--hx-font-label-line-height, var(--hx-line-height-normal, 1.5));
437
1672
  font-family: var(--hx-font-label-family, var(--hx-font-family-sans, sans-serif));
438
1673
  }
@@ -445,7 +1680,23 @@
445
1680
  .optional-indicator {
446
1681
  font-size: var(--hx-font-size-xs, 0.75rem);
447
1682
  font-weight: var(--hx-font-weight-normal, 400);
448
- color: var(--hx-color-neutral-500, #6b7280);
1683
+ color: var(--hx-color-neutral-500, #64748b);
1684
+ }
1685
+
1686
+ /* ─── High Contrast Mode (forced-colors) ─── */
1687
+
1688
+ @media (forced-colors: active) {
1689
+ .label {
1690
+ color: CanvasText;
1691
+ }
1692
+
1693
+ .required-indicator {
1694
+ color: LinkText;
1695
+ }
1696
+
1697
+ .optional-indicator {
1698
+ color: GrayText;
1699
+ }
449
1700
  }
450
1701
 
451
1702
  .visually-hidden {
@@ -477,7 +1728,7 @@
477
1728
  display: flex;
478
1729
  flex-direction: column;
479
1730
  gap: var(--hx-space-2, 0.5rem);
480
- font-family: var(--hx-font-family-sans, sans-serif);
1731
+ font-family: var(--hx-file-upload-font-family, var(--hx-font-family-sans, sans-serif));
481
1732
  }
482
1733
 
483
1734
  /* ─── Label ─── */
@@ -488,7 +1739,7 @@
488
1739
  gap: var(--hx-space-1, 0.25rem);
489
1740
  font-size: var(--hx-font-size-sm, 0.875rem);
490
1741
  font-weight: var(--hx-font-weight-medium, 500);
491
- color: var(--hx-color-neutral-700, #343a40);
1742
+ color: var(--hx-color-neutral-700, #334155);
492
1743
  line-height: var(--hx-line-height-normal, 1.5);
493
1744
  }
494
1745
 
@@ -503,9 +1754,9 @@
503
1754
  min-height: var(--hx-space-32, 8rem);
504
1755
  padding: var(--hx-space-6, 1.5rem) var(--hx-space-4, 1rem);
505
1756
  border: var(--hx-border-width-thin, 1px) dashed
506
- var(--hx-file-upload-dropzone-border-color, var(--hx-color-neutral-300, #ced4da));
1757
+ var(--hx-file-upload-dropzone-border-color, var(--hx-color-neutral-300, #cbd5e1));
507
1758
  border-radius: var(--hx-file-upload-dropzone-border-radius, var(--hx-border-radius-lg, 0.5rem));
508
- background-color: var(--hx-file-upload-dropzone-bg, var(--hx-color-neutral-50, #f8f9fa));
1759
+ background-color: var(--hx-file-upload-dropzone-bg, var(--hx-color-neutral-50, #f8fafc));
509
1760
  cursor: pointer;
510
1761
  text-align: center;
511
1762
  transition:
@@ -513,7 +1764,7 @@
513
1764
  background-color var(--hx-transition-fast, 150ms ease),
514
1765
  box-shadow var(--hx-transition-fast, 150ms ease);
515
1766
  user-select: none;
516
- color: var(--hx-color-neutral-600, #495057);
1767
+ color: var(--hx-color-neutral-600, #475569);
517
1768
  font-size: var(--hx-font-size-sm, 0.875rem);
518
1769
  }
519
1770
 
@@ -544,7 +1795,7 @@
544
1795
  }
545
1796
 
546
1797
  .dropzone--error {
547
- border-color: var(--hx-file-upload-error-color, var(--hx-color-error-500, #dc3545));
1798
+ border-color: var(--hx-file-upload-error-color, var(--hx-color-error-500, #dc2626));
548
1799
  }
549
1800
 
550
1801
  @media (prefers-reduced-motion: reduce) {
@@ -589,7 +1840,7 @@
589
1840
  flex-direction: column;
590
1841
  gap: var(--hx-space-1, 0.25rem);
591
1842
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
592
- border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #e9ecef);
1843
+ border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-200, #e2e8f0);
593
1844
  border-radius: var(--hx-border-radius-md, 0.375rem);
594
1845
  background-color: var(--hx-color-neutral-0, #ffffff);
595
1846
  }
@@ -604,7 +1855,7 @@
604
1855
  flex: 1;
605
1856
  font-size: var(--hx-font-size-sm, 0.875rem);
606
1857
  font-weight: var(--hx-font-weight-medium, 500);
607
- color: var(--hx-color-neutral-800, #212529);
1858
+ color: var(--hx-color-neutral-800, #1e293b);
608
1859
  overflow: hidden;
609
1860
  text-overflow: ellipsis;
610
1861
  white-space: nowrap;
@@ -613,7 +1864,7 @@
613
1864
  .file-item__size {
614
1865
  flex-shrink: 0;
615
1866
  font-size: var(--hx-font-size-xs, 0.75rem);
616
- color: var(--hx-color-neutral-500, #6c757d);
1867
+ color: var(--hx-color-neutral-500, #64748b);
617
1868
  }
618
1869
 
619
1870
  .file-item__remove {
@@ -621,11 +1872,13 @@
621
1872
  display: inline-flex;
622
1873
  align-items: center;
623
1874
  justify-content: center;
1875
+ min-width: 44px;
1876
+ min-height: 44px;
624
1877
  padding: var(--hx-space-1, 0.25rem);
625
1878
  border: none;
626
1879
  border-radius: var(--hx-border-radius-sm, 0.25rem);
627
1880
  background: transparent;
628
- color: var(--hx-color-neutral-500, #6c757d);
1881
+ color: var(--hx-color-neutral-500, #64748b);
629
1882
  cursor: pointer;
630
1883
  line-height: 1;
631
1884
  transition:
@@ -635,7 +1888,7 @@
635
1888
 
636
1889
  .file-item__remove:hover {
637
1890
  color: var(--hx-file-upload-error-color, var(--hx-color-error-text, #b91c1c));
638
- background-color: color-mix(in srgb, var(--hx-color-error-500, #dc3545) 8%, transparent);
1891
+ background-color: color-mix(in srgb, var(--hx-color-error-500, #dc2626) 8%, transparent);
639
1892
  }
640
1893
 
641
1894
  .file-item__remove:focus-visible {
@@ -658,7 +1911,7 @@
658
1911
  .progress-track {
659
1912
  width: 100%;
660
1913
  height: var(--hx-file-upload-progress-height, var(--hx-space-1, 0.25rem));
661
- background-color: var(--hx-color-neutral-200, #e9ecef);
1914
+ background-color: var(--hx-color-neutral-200, #e2e8f0);
662
1915
  border-radius: var(--hx-border-radius-full, 9999px);
663
1916
  overflow: hidden;
664
1917
  }
@@ -700,6 +1953,52 @@
700
1953
  color: var(--hx-file-upload-error-color, var(--hx-color-error-text, #b91c1c));
701
1954
  line-height: var(--hx-line-height-normal, 1.5);
702
1955
  }
1956
+
1957
+ /* ─── Forced colors (Windows High Contrast / Forced Colors Mode) ─── */
1958
+
1959
+ @media (forced-colors: active) {
1960
+ .dropzone {
1961
+ border: 2px dashed ButtonText;
1962
+ background-color: Canvas;
1963
+ color: ButtonText;
1964
+ }
1965
+
1966
+ .dropzone--drag-over {
1967
+ border: 2px solid Highlight;
1968
+ outline: none;
1969
+ background-color: Canvas;
1970
+ }
1971
+
1972
+ .dropzone--error {
1973
+ border: 2px solid LinkText;
1974
+ }
1975
+
1976
+ .dropzone:focus-visible {
1977
+ outline: 2px solid Highlight;
1978
+ outline-offset: 2px;
1979
+ }
1980
+
1981
+ .progress-bar {
1982
+ background: Highlight;
1983
+ forced-color-adjust: none;
1984
+ }
1985
+
1986
+ .file-item__remove:hover {
1987
+ outline: 2px solid Highlight;
1988
+ background-color: transparent;
1989
+ color: ButtonText;
1990
+ }
1991
+
1992
+ .file-item__remove:focus-visible {
1993
+ outline: 2px solid Highlight;
1994
+ }
1995
+
1996
+ :host([disabled]) .dropzone {
1997
+ border-color: GrayText;
1998
+ color: GrayText;
1999
+ opacity: 1;
2000
+ }
2001
+ }
703
2002
  /* ── hx-help-text ── */
704
2003
  :host {
705
2004
  display: block;
@@ -713,7 +2012,7 @@
713
2012
  font-size: var(--hx-help-text-font-size, var(--hx-font-size-sm, 0.875rem));
714
2013
  font-weight: var(--hx-help-text-font-weight, var(--hx-font-weight-normal, 400));
715
2014
  line-height: var(--hx-help-text-line-height, var(--hx-line-height-normal, 1.5));
716
- color: var(--hx-help-text-color, var(--hx-color-neutral-500, #6b7280));
2015
+ color: var(--hx-help-text-color, var(--hx-color-neutral-500, #64748b));
717
2016
  margin: 0;
718
2017
  }
719
2018
 
@@ -730,25 +2029,45 @@
730
2029
  /* ─── Variant: default ─── */
731
2030
 
732
2031
  .help-text--default {
733
- --hx-help-text-color: var(--hx-color-neutral-500, #6b7280);
2032
+ --hx-help-text-color: var(--hx-color-neutral-500, #64748b);
734
2033
  }
735
2034
 
736
2035
  /* ─── Variant: error ─── */
737
2036
 
738
2037
  .help-text--error {
739
- --hx-help-text-color: var(--hx-color-error-600, #dc2626);
2038
+ --hx-help-text-color: var(--hx-color-error-600, #b91c1c);
740
2039
  }
741
2040
 
742
2041
  /* ─── Variant: warning ─── */
743
2042
 
744
2043
  .help-text--warning {
745
- --hx-help-text-color: var(--hx-color-warning-700, #b45309);
2044
+ --hx-help-text-color: var(--hx-color-warning-700, #92400e);
746
2045
  }
747
2046
 
748
2047
  /* ─── Variant: success ─── */
749
2048
 
750
2049
  .help-text--success {
751
- --hx-help-text-color: var(--hx-color-success-700, #15803d);
2050
+ --hx-help-text-color: var(--hx-color-success-700, #166534);
2051
+ }
2052
+
2053
+ /* ─── High Contrast Mode (forced-colors) ─── */
2054
+
2055
+ @media (forced-colors: active) {
2056
+ .help-text {
2057
+ color: GrayText;
2058
+ }
2059
+
2060
+ .help-text--error {
2061
+ color: LinkText;
2062
+ }
2063
+
2064
+ .help-text--warning {
2065
+ color: CanvasText;
2066
+ }
2067
+
2068
+ .help-text--success {
2069
+ color: CanvasText;
2070
+ }
752
2071
  }
753
2072
  /* ── hx-number-input ── */
754
2073
  :host {
@@ -996,6 +2315,84 @@
996
2315
  transition: none;
997
2316
  }
998
2317
  }
2318
+
2319
+ /* ─── High Contrast Mode (forced-colors) ─── */
2320
+
2321
+ @media (forced-colors: active) {
2322
+ .field__input-wrapper {
2323
+ forced-color-adjust: none;
2324
+ background-color: Field;
2325
+ color: FieldText;
2326
+ border: 2px solid ButtonText;
2327
+ }
2328
+
2329
+ .field__input {
2330
+ color: FieldText;
2331
+ }
2332
+
2333
+ .field__input::placeholder {
2334
+ color: GrayText;
2335
+ }
2336
+
2337
+ .field__input-wrapper:focus-within {
2338
+ border-color: Highlight;
2339
+ box-shadow: none;
2340
+ }
2341
+
2342
+ .field__stepper {
2343
+ border-color: ButtonText;
2344
+ }
2345
+
2346
+ .field__stepper-btn {
2347
+ forced-color-adjust: none;
2348
+ background-color: ButtonFace;
2349
+ color: ButtonText;
2350
+ border-color: ButtonText;
2351
+ }
2352
+
2353
+ .field__stepper-btn:hover:not(:disabled) {
2354
+ background-color: Highlight;
2355
+ color: HighlightText;
2356
+ }
2357
+
2358
+ .field__stepper-btn:focus-visible {
2359
+ outline-color: Highlight;
2360
+ }
2361
+
2362
+ .field__stepper-btn:disabled {
2363
+ color: GrayText;
2364
+ opacity: 1;
2365
+ }
2366
+
2367
+ :host([disabled]) {
2368
+ opacity: 1;
2369
+ }
2370
+
2371
+ :host([disabled]) .field__input-wrapper {
2372
+ border-color: GrayText;
2373
+ color: GrayText;
2374
+ }
2375
+
2376
+ :host([disabled]) .field__input {
2377
+ color: GrayText;
2378
+ }
2379
+
2380
+ .field--error .field__input-wrapper {
2381
+ border-color: LinkText;
2382
+ }
2383
+
2384
+ .field__label {
2385
+ color: CanvasText;
2386
+ }
2387
+
2388
+ .field__help-text {
2389
+ color: GrayText;
2390
+ }
2391
+
2392
+ .field__error {
2393
+ color: LinkText;
2394
+ }
2395
+ }
999
2396
  /* ── hx-radio-group ── */
1000
2397
  :host {
1001
2398
  display: block;
@@ -1019,7 +2416,7 @@
1019
2416
  display: flex;
1020
2417
  flex-direction: column;
1021
2418
  gap: var(--hx-space-2, 0.5rem);
1022
- font-family: var(--hx-font-family-sans, sans-serif);
2419
+ font-family: var(--hx-radio-group-font-family, var(--hx-font-family-sans, sans-serif));
1023
2420
  }
1024
2421
 
1025
2422
  /* ─── Legend ─── */
@@ -1030,7 +2427,7 @@
1030
2427
  gap: var(--hx-space-1, 0.25rem);
1031
2428
  font-size: var(--hx-font-size-sm, 0.875rem);
1032
2429
  font-weight: var(--hx-font-weight-medium, 500);
1033
- color: var(--hx-radio-group-label-color, var(--hx-color-neutral-700, #343a40));
2430
+ color: var(--hx-radio-group-label-color, var(--hx-color-neutral-700, #334155));
1034
2431
  line-height: var(--hx-line-height-normal, 1.5);
1035
2432
  padding: 0;
1036
2433
  margin-bottom: var(--hx-space-1, 0.25rem);
@@ -1064,7 +2461,7 @@
1064
2461
 
1065
2462
  .fieldset__help-text {
1066
2463
  font-size: var(--hx-font-size-xs, 0.75rem);
1067
- color: var(--hx-radio-group-help-text-color, var(--hx-color-neutral-500, #6c757d));
2464
+ color: var(--hx-radio-group-help-text-color, var(--hx-color-neutral-500, #64748b));
1068
2465
  line-height: var(--hx-line-height-normal, 1.5);
1069
2466
  }
1070
2467
 
@@ -1073,6 +2470,38 @@
1073
2470
  color: var(--hx-radio-group-error-color, var(--hx-color-error-text, #b91c1c));
1074
2471
  line-height: var(--hx-line-height-normal, 1.5);
1075
2472
  }
2473
+
2474
+ /* ─── High Contrast Mode (forced-colors) ─── */
2475
+
2476
+ @media (forced-colors: active) {
2477
+ .fieldset {
2478
+ border: none;
2479
+ }
2480
+
2481
+ .fieldset__legend {
2482
+ color: CanvasText;
2483
+ }
2484
+
2485
+ .fieldset--error .fieldset__legend {
2486
+ color: LinkText;
2487
+ }
2488
+
2489
+ :host([disabled]) {
2490
+ opacity: 1;
2491
+ }
2492
+
2493
+ :host([disabled]) .fieldset__legend {
2494
+ color: GrayText;
2495
+ }
2496
+
2497
+ .fieldset__help-text {
2498
+ color: GrayText;
2499
+ }
2500
+
2501
+ .fieldset__error {
2502
+ color: LinkText;
2503
+ }
2504
+ }
1076
2505
  /* ── hx-rating ── */
1077
2506
  :host {
1078
2507
  display: inline-block;
@@ -1108,16 +2537,18 @@
1108
2537
  justify-content: center;
1109
2538
  position: relative;
1110
2539
  cursor: pointer;
1111
- color: var(--hx-rating-empty-color, var(--hx-color-neutral-300, #d1d5db));
2540
+ color: var(--hx-rating-empty-color, var(--hx-color-neutral-300, #cbd5e1));
1112
2541
  line-height: 1;
1113
- transition: transform var(--hx-transition-fast, 0.15s ease);
2542
+ min-width: var(--hx-touch-target-min, 2.75rem);
2543
+ min-height: var(--hx-touch-target-min, 2.75rem);
2544
+ transition: transform var(--hx-transition-fast, 150ms ease);
1114
2545
  }
1115
2546
 
1116
2547
  .symbol:focus-visible {
1117
2548
  outline: var(--hx-focus-ring-width, 2px) solid
1118
2549
  var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa));
1119
2550
  outline-offset: var(--hx-focus-ring-offset, 2px);
1120
- border-radius: var(--hx-border-radius-sm, 0.125rem);
2551
+ border-radius: var(--hx-border-radius-sm, 0.25rem);
1121
2552
  }
1122
2553
 
1123
2554
  .symbol--full,
@@ -1157,7 +2588,7 @@
1157
2588
  position: absolute;
1158
2589
  left: 0;
1159
2590
  top: 0;
1160
- color: var(--hx-rating-empty-color, var(--hx-color-neutral-300, #d1d5db));
2591
+ color: var(--hx-rating-empty-color, var(--hx-color-neutral-300, #cbd5e1));
1161
2592
  /* Clip to right 50% for the empty half */
1162
2593
  clip-path: inset(0 0 0 50%);
1163
2594
  }
@@ -1169,6 +2600,45 @@
1169
2600
  transition: none;
1170
2601
  }
1171
2602
  }
2603
+
2604
+ /* ─── High Contrast Mode (forced-colors) ─── */
2605
+
2606
+ @media (forced-colors: active) {
2607
+ .symbol {
2608
+ forced-color-adjust: none;
2609
+ color: ButtonText;
2610
+ }
2611
+
2612
+ .symbol:focus-visible {
2613
+ outline: 3px solid Highlight;
2614
+ outline-offset: 2px;
2615
+ }
2616
+
2617
+ .symbol--full,
2618
+ .symbol--half {
2619
+ color: Highlight;
2620
+ }
2621
+
2622
+ .star-half__empty {
2623
+ color: ButtonText;
2624
+ }
2625
+
2626
+ .base:not(.base--readonly) .symbol:hover {
2627
+ color: Highlight;
2628
+ }
2629
+
2630
+ .symbol--disabled {
2631
+ color: GrayText;
2632
+ }
2633
+
2634
+ :host([disabled]) {
2635
+ opacity: 1;
2636
+ }
2637
+
2638
+ :host([disabled]) .symbol {
2639
+ color: GrayText;
2640
+ }
2641
+ }
1172
2642
  /* ── hx-select ── */
1173
2643
  /* ─── 3-tier token cascade: component → semantic → hardcoded fallback ─── */
1174
2644
  :host {
@@ -1176,14 +2646,14 @@
1176
2646
 
1177
2647
  /* Background & foreground */
1178
2648
  --_bg: var(--hx-select-bg, var(--hx-color-neutral-0, #ffffff));
1179
- --_color: var(--hx-select-color, var(--hx-color-neutral-800, #212529));
1180
- --_placeholder-color: var(--hx-select-placeholder-color, var(--hx-color-neutral-400, #adb5bd));
2649
+ --_color: var(--hx-select-color, var(--hx-color-neutral-800, #1e293b));
2650
+ --_placeholder-color: var(--hx-select-placeholder-color, var(--hx-color-neutral-400, #94a3b8));
1181
2651
 
1182
2652
  /* Label */
1183
- --_label-color: var(--hx-select-label-color, var(--hx-color-neutral-700, #343a40));
2653
+ --_label-color: var(--hx-select-label-color, var(--hx-color-neutral-700, #334155));
1184
2654
 
1185
2655
  /* Border */
1186
- --_border-color: var(--hx-select-border-color, var(--hx-color-neutral-300, #ced4da));
2656
+ --_border-color: var(--hx-select-border-color, var(--hx-color-neutral-300, #cbd5e1));
1187
2657
  --_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
1188
2658
 
1189
2659
  /* Focus ring */
@@ -1193,10 +2663,10 @@
1193
2663
  );
1194
2664
 
1195
2665
  /* Error */
1196
- --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #dc3545));
2666
+ --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #dc2626));
1197
2667
 
1198
2668
  /* Chevron */
1199
- --_chevron-color: var(--hx-select-chevron-color, var(--hx-color-neutral-500, #6c757d));
2669
+ --_chevron-color: var(--hx-select-chevron-color, var(--hx-color-neutral-500, #64748b));
1200
2670
  --_chevron-size: var(--hx-select-chevron-size, 0.5rem);
1201
2671
 
1202
2672
  /* Listbox */
@@ -1271,7 +2741,6 @@
1271
2741
  outline: none;
1272
2742
  }
1273
2743
 
1274
- .field__trigger:focus,
1275
2744
  .field__trigger:focus-visible {
1276
2745
  border-color: var(--_focus-ring-color);
1277
2746
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
@@ -1340,7 +2809,6 @@
1340
2809
  border-color: var(--_error-color);
1341
2810
  }
1342
2811
 
1343
- .field--error .field__trigger:focus,
1344
2812
  .field--error .field__trigger:focus-visible {
1345
2813
  border-color: var(--_error-color);
1346
2814
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
@@ -1450,7 +2918,7 @@
1450
2918
  }
1451
2919
 
1452
2920
  .field__help-text {
1453
- color: var(--hx-color-neutral-500, #6c757d);
2921
+ color: var(--hx-color-neutral-500, #64748b);
1454
2922
  }
1455
2923
 
1456
2924
  .field__error {
@@ -1464,6 +2932,88 @@
1464
2932
  transition: none;
1465
2933
  }
1466
2934
  }
2935
+
2936
+ /* ─── High Contrast Mode (forced-colors) ─── */
2937
+
2938
+ @media (forced-colors: active) {
2939
+ .field__trigger {
2940
+ forced-color-adjust: none;
2941
+ background-color: Field;
2942
+ color: FieldText;
2943
+ border: 2px solid ButtonText;
2944
+ }
2945
+
2946
+ .field__trigger:focus-visible {
2947
+ outline: 3px solid Highlight;
2948
+ outline-offset: 2px;
2949
+ box-shadow: none;
2950
+ }
2951
+
2952
+ .field__trigger[aria-disabled='true'] {
2953
+ color: GrayText;
2954
+ border-color: GrayText;
2955
+ }
2956
+
2957
+ .field__trigger--placeholder .field__trigger-value {
2958
+ color: GrayText;
2959
+ }
2960
+
2961
+ .field__chevron::after {
2962
+ border-color: FieldText;
2963
+ }
2964
+
2965
+ .field__listbox {
2966
+ forced-color-adjust: none;
2967
+ background-color: Canvas;
2968
+ border: 2px solid CanvasText;
2969
+ box-shadow: none;
2970
+ }
2971
+
2972
+ .field__option {
2973
+ color: CanvasText;
2974
+ }
2975
+
2976
+ .field__option:hover {
2977
+ background-color: Highlight;
2978
+ color: HighlightText;
2979
+ }
2980
+
2981
+ .field__option--selected {
2982
+ background-color: Highlight;
2983
+ color: HighlightText;
2984
+ }
2985
+
2986
+ .field__option--focused {
2987
+ outline-color: Highlight;
2988
+ background-color: Highlight;
2989
+ color: HighlightText;
2990
+ }
2991
+
2992
+ .field__option--disabled {
2993
+ color: GrayText;
2994
+ opacity: 1;
2995
+ }
2996
+
2997
+ .field--error .field__trigger {
2998
+ border-color: LinkText;
2999
+ }
3000
+
3001
+ :host([disabled]) {
3002
+ opacity: 1;
3003
+ }
3004
+
3005
+ .field__label {
3006
+ color: CanvasText;
3007
+ }
3008
+
3009
+ .field__help-text {
3010
+ color: GrayText;
3011
+ }
3012
+
3013
+ .field__error {
3014
+ color: LinkText;
3015
+ }
3016
+ }
1467
3017
  /* ── hx-slider ── */
1468
3018
  :host {
1469
3019
  display: block;
@@ -1484,7 +3034,7 @@
1484
3034
  display: flex;
1485
3035
  flex-direction: column;
1486
3036
  gap: var(--hx-space-1, 0.25rem);
1487
- font-family: var(--hx-font-family-sans, sans-serif);
3037
+ font-family: var(--hx-slider-font-family, var(--hx-font-family-sans, sans-serif));
1488
3038
  }
1489
3039
 
1490
3040
  /* ─── Label Row ─── */
@@ -1499,14 +3049,14 @@
1499
3049
  .slider__label {
1500
3050
  font-size: var(--hx-font-size-sm, 0.875rem);
1501
3051
  font-weight: var(--hx-font-weight-medium, 500);
1502
- color: var(--hx-slider-label-color, var(--hx-color-neutral-700, #343a40));
3052
+ color: var(--hx-slider-label-color, var(--hx-color-neutral-700, #334155));
1503
3053
  line-height: var(--hx-line-height-normal, 1.5);
1504
3054
  }
1505
3055
 
1506
3056
  .slider__value-display {
1507
3057
  font-size: var(--hx-font-size-sm, 0.875rem);
1508
3058
  font-weight: var(--hx-font-weight-medium, 500);
1509
- color: var(--hx-slider-value-color, var(--hx-color-neutral-600, #6c757d));
3059
+ color: var(--hx-slider-value-color, var(--hx-color-neutral-600, #475569));
1510
3060
  line-height: var(--hx-line-height-normal, 1.5);
1511
3061
  font-variant-numeric: tabular-nums;
1512
3062
  min-width: var(--hx-size-8, 2rem);
@@ -1524,7 +3074,7 @@
1524
3074
  position: relative;
1525
3075
  width: 100%;
1526
3076
  border-radius: var(--hx-border-radius-full, 9999px);
1527
- background-color: var(--hx-slider-track-bg, var(--hx-color-neutral-200, #e9ecef));
3077
+ background-color: var(--hx-slider-track-bg, var(--hx-color-neutral-200, #e2e8f0));
1528
3078
  overflow: visible;
1529
3079
  }
1530
3080
 
@@ -1602,8 +3152,13 @@
1602
3152
  background: transparent;
1603
3153
  border: none;
1604
3154
  outline: none;
1605
- /* Expand the hit area so the thumb is easy to grab */
1606
- padding-block: var(--hx-slider-input-padding-block, 0.75rem);
3155
+ /* Expand the hit area so the thumb meets WCAG 2.5.8 touch target (44px).
3156
+ The input's total height = track height + 2 * padding-block. With 0.75rem
3157
+ (~12px) padding on each side and a track of ~6px, the total target area is
3158
+ ~30px. We increase to 1rem (~16px) per side for a ~38px minimum, supplemented
3159
+ by the visual thumb size. */
3160
+ padding-block: var(--hx-slider-input-padding-block, 1rem);
3161
+ min-height: var(--hx-touch-target-min, 2.75rem);
1607
3162
  }
1608
3163
 
1609
3164
  /* In forced-color mode, restore native outline so the input remains focusable */
@@ -1719,7 +3274,7 @@
1719
3274
  top: 0;
1720
3275
  width: var(--hx-border-width-thin, 1px);
1721
3276
  height: 100%;
1722
- background-color: var(--hx-slider-tick-color, var(--hx-color-neutral-400, #adb5bd));
3277
+ background-color: var(--hx-slider-tick-color, var(--hx-color-neutral-400, #94a3b8));
1723
3278
  transform: translateX(-50%);
1724
3279
  }
1725
3280
 
@@ -1729,7 +3284,7 @@
1729
3284
  display: flex;
1730
3285
  justify-content: space-between;
1731
3286
  font-size: var(--hx-font-size-xs, 0.75rem);
1732
- color: var(--hx-slider-range-label-color, var(--hx-color-neutral-500, #6c757d));
3287
+ color: var(--hx-slider-range-label-color, var(--hx-color-neutral-500, #64748b));
1733
3288
  line-height: var(--hx-line-height-normal, 1.5);
1734
3289
  margin-top: var(--hx-space-0-5, 0.125rem);
1735
3290
  }
@@ -1738,18 +3293,18 @@
1738
3293
 
1739
3294
  .slider__help-text {
1740
3295
  font-size: var(--hx-font-size-xs, 0.75rem);
1741
- color: var(--hx-slider-help-text-color, var(--hx-color-neutral-500, #6c757d));
3296
+ color: var(--hx-slider-help-text-color, var(--hx-color-neutral-500, #64748b));
1742
3297
  line-height: var(--hx-line-height-normal, 1.5);
1743
3298
  }
1744
3299
 
1745
3300
  /* ─── Disabled state ─── */
1746
3301
 
1747
3302
  .slider--disabled .slider__fill {
1748
- background-color: var(--hx-color-neutral-400, #adb5bd);
3303
+ background-color: var(--hx-color-neutral-400, #94a3b8);
1749
3304
  }
1750
3305
 
1751
3306
  .slider--disabled .slider__thumb-visual {
1752
- border-color: var(--hx-color-neutral-400, #adb5bd);
3307
+ border-color: var(--hx-color-neutral-400, #94a3b8);
1753
3308
  }
1754
3309
  /* ── hx-switch ── */
1755
3310
  :host {
@@ -1771,13 +3326,17 @@
1771
3326
  display: flex;
1772
3327
  flex-direction: column;
1773
3328
  gap: var(--hx-space-1, 0.25rem);
1774
- font-family: var(--hx-font-family-sans, sans-serif);
3329
+ font-family: var(--hx-switch-font-family, var(--hx-font-family-sans, sans-serif));
1775
3330
  }
1776
3331
 
3332
+ /* WCAG 2.5.5 (healthcare mandate): minimum 44px touch target height.
3333
+ The track itself is smaller visually, but the row must meet the
3334
+ interactive touch target threshold for all size variants. */
1777
3335
  .switch__control-row {
1778
3336
  display: flex;
1779
3337
  align-items: center;
1780
3338
  gap: var(--hx-space-2, 0.5rem);
3339
+ min-height: var(--hx-touch-target-min, 2.75rem);
1781
3340
  }
1782
3341
 
1783
3342
  /* --- Track --- */
@@ -1790,7 +3349,7 @@
1790
3349
  border: none;
1791
3350
  padding: 0;
1792
3351
  border-radius: var(--hx-border-radius-full, 9999px);
1793
- background-color: var(--hx-switch-track-bg, var(--hx-color-neutral-300, #ced4da));
3352
+ background-color: var(--hx-switch-track-bg, var(--hx-color-neutral-300, #cbd5e1));
1794
3353
  cursor: pointer;
1795
3354
  transition: background-color var(--hx-transition-fast, 150ms ease);
1796
3355
  outline: none;
@@ -1886,38 +3445,96 @@
1886
3445
  .switch__label {
1887
3446
  font-size: var(--hx-font-size-sm, 0.875rem);
1888
3447
  font-weight: var(--hx-font-weight-medium, 500);
1889
- color: var(--hx-switch-label-color, var(--hx-color-neutral-700, #343a40));
3448
+ color: var(--hx-switch-label-color, var(--hx-color-neutral-700, #334155));
1890
3449
  line-height: var(--hx-line-height-normal, 1.5);
1891
3450
  cursor: pointer;
1892
3451
  user-select: none;
1893
3452
  -webkit-user-select: none;
1894
3453
  }
1895
3454
 
1896
- .switch__required-marker {
1897
- color: var(--hx-switch-error-color, var(--hx-color-error-text, #b91c1c));
1898
- font-weight: var(--hx-font-weight-bold, 700);
1899
- }
3455
+ .switch__required-marker {
3456
+ color: var(--hx-switch-error-color, var(--hx-color-error-text, #b91c1c));
3457
+ font-weight: var(--hx-font-weight-bold, 700);
3458
+ }
3459
+
3460
+ /* --- Help Text & Error --- */
3461
+
3462
+ .switch__help-text {
3463
+ font-size: var(--hx-font-size-xs, 0.75rem);
3464
+ color: var(--hx-switch-help-text-color, var(--hx-color-neutral-500, #64748b));
3465
+ line-height: var(--hx-line-height-normal, 1.5);
3466
+ }
3467
+
3468
+ .switch__error {
3469
+ font-size: var(--hx-font-size-xs, 0.75rem);
3470
+ color: var(--hx-switch-error-color, var(--hx-color-error-text, #b91c1c));
3471
+ line-height: var(--hx-line-height-normal, 1.5);
3472
+ }
3473
+
3474
+ /* --- Reduced Motion --- */
3475
+
3476
+ @media (prefers-reduced-motion: reduce) {
3477
+ .switch__track,
3478
+ .switch__thumb {
3479
+ transition: none;
3480
+ }
3481
+ }
3482
+
3483
+ /* ─── High Contrast Mode (forced-colors) ─── */
3484
+
3485
+ @media (forced-colors: active) {
3486
+ .switch__track {
3487
+ forced-color-adjust: none;
3488
+ background-color: ButtonFace;
3489
+ border: 2px solid ButtonText;
3490
+ }
3491
+
3492
+ .switch__track:focus-visible {
3493
+ outline: 3px solid Highlight;
3494
+ outline-offset: 2px;
3495
+ }
3496
+
3497
+ .switch__thumb {
3498
+ background-color: ButtonText;
3499
+ box-shadow: none;
3500
+ }
3501
+
3502
+ .switch--checked .switch__track {
3503
+ background-color: Highlight;
3504
+ border-color: Highlight;
3505
+ }
3506
+
3507
+ .switch--checked .switch__thumb {
3508
+ background-color: HighlightText;
3509
+ }
3510
+
3511
+ :host([disabled]) {
3512
+ opacity: 1;
3513
+ }
3514
+
3515
+ :host([disabled]) .switch__track {
3516
+ border-color: GrayText;
3517
+ background-color: ButtonFace;
3518
+ }
1900
3519
 
1901
- /* --- Help Text & Error --- */
3520
+ :host([disabled]) .switch__thumb {
3521
+ background-color: GrayText;
3522
+ }
1902
3523
 
1903
- .switch__help-text {
1904
- font-size: var(--hx-font-size-xs, 0.75rem);
1905
- color: var(--hx-switch-help-text-color, var(--hx-color-neutral-500, #6c757d));
1906
- line-height: var(--hx-line-height-normal, 1.5);
1907
- }
3524
+ :host([disabled]) .switch__label {
3525
+ color: GrayText;
3526
+ }
1908
3527
 
1909
- .switch__error {
1910
- font-size: var(--hx-font-size-xs, 0.75rem);
1911
- color: var(--hx-switch-error-color, var(--hx-color-error-text, #b91c1c));
1912
- line-height: var(--hx-line-height-normal, 1.5);
1913
- }
3528
+ .switch__label {
3529
+ color: CanvasText;
3530
+ }
1914
3531
 
1915
- /* --- Reduced Motion --- */
3532
+ .switch__help-text {
3533
+ color: GrayText;
3534
+ }
1916
3535
 
1917
- @media (prefers-reduced-motion: reduce) {
1918
- .switch__track,
1919
- .switch__thumb {
1920
- transition: none;
3536
+ .switch__error {
3537
+ color: LinkText;
1921
3538
  }
1922
3539
  }
1923
3540
  /* ── hx-text-input ── */
@@ -1994,7 +3611,7 @@
1994
3611
  gap: var(--hx-space-1, 0.25rem);
1995
3612
  font-size: var(--hx-font-size-sm, 0.875rem);
1996
3613
  font-weight: var(--hx-font-weight-medium, 500);
1997
- color: var(--hx-input-label-color, var(--hx-color-neutral-700, #343a40));
3614
+ color: var(--hx-input-label-color, var(--hx-color-neutral-700, #334155));
1998
3615
  line-height: var(--hx-line-height-normal, 1.5);
1999
3616
  }
2000
3617
 
@@ -2009,7 +3626,7 @@
2009
3626
  display: flex;
2010
3627
  align-items: center;
2011
3628
  border: var(--hx-border-width-thin, 1px) solid
2012
- var(--hx-input-border-color, var(--hx-color-neutral-300, #ced4da));
3629
+ var(--hx-input-border-color, var(--hx-color-neutral-300, #cbd5e1));
2013
3630
  border-radius: var(--hx-input-border-radius, var(--hx-border-radius-md, 0.375rem));
2014
3631
  background-color: var(--hx-input-bg, var(--hx-color-neutral-0, #ffffff));
2015
3632
  transition:
@@ -2038,15 +3655,15 @@
2038
3655
  /* ─── Error State ─── */
2039
3656
 
2040
3657
  .field--error .field__input-wrapper {
2041
- border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));
3658
+ border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc2626));
2042
3659
  }
2043
3660
 
2044
3661
  .field--error .field__input-wrapper:focus-within {
2045
- border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));
3662
+ border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc2626));
2046
3663
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
2047
3664
  color-mix(
2048
3665
  in srgb,
2049
- var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))
3666
+ var(--hx-input-error-color, var(--hx-color-error-500, #dc2626))
2050
3667
  calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
2051
3668
  transparent
2052
3669
  );
@@ -2058,7 +3675,7 @@
2058
3675
  .field__suffix {
2059
3676
  display: flex;
2060
3677
  align-items: center;
2061
- color: var(--hx-color-neutral-500, #6c757d);
3678
+ color: var(--hx-color-neutral-500, #64748b);
2062
3679
  flex-shrink: 0;
2063
3680
  }
2064
3681
 
@@ -2081,14 +3698,18 @@
2081
3698
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
2082
3699
  font-family: inherit;
2083
3700
  font-size: var(--hx-font-size-md, 1rem);
2084
- color: var(--hx-input-color, var(--hx-color-neutral-800, #212529));
3701
+ color: var(--hx-input-color, var(--hx-color-neutral-800, #1e293b));
2085
3702
  line-height: var(--hx-line-height-normal, 1.5);
2086
3703
  min-height: var(--hx-size-10, 2.5rem);
2087
3704
  width: 100%;
2088
3705
  }
2089
3706
 
2090
3707
  .field__input::placeholder {
2091
- color: var(--hx-color-neutral-400, #adb5bd);
3708
+ color: var(--hx-color-neutral-400, #94a3b8);
3709
+ }
3710
+
3711
+ .field__input:focus-visible {
3712
+ outline: none; /* wrapper ring handles keyboard focus indication */
2092
3713
  }
2093
3714
 
2094
3715
  .field__input:disabled {
@@ -2117,7 +3738,7 @@
2117
3738
 
2118
3739
  .field__help-text {
2119
3740
  font-size: var(--hx-font-size-xs, 0.75rem);
2120
- color: var(--hx-color-neutral-500, #6c757d);
3741
+ color: var(--hx-color-neutral-500, #64748b);
2121
3742
  line-height: var(--hx-line-height-normal, 1.5);
2122
3743
  }
2123
3744
 
@@ -2134,6 +3755,64 @@
2134
3755
  transition: none;
2135
3756
  }
2136
3757
  }
3758
+
3759
+ /* ─── High Contrast Mode (forced-colors) ─── */
3760
+
3761
+ @media (forced-colors: active) {
3762
+ .field__input-wrapper {
3763
+ forced-color-adjust: none;
3764
+ background-color: Field;
3765
+ color: FieldText;
3766
+ border: 2px solid ButtonText;
3767
+ }
3768
+
3769
+ .field__input {
3770
+ color: FieldText;
3771
+ }
3772
+
3773
+ .field__input::placeholder {
3774
+ color: GrayText;
3775
+ }
3776
+
3777
+ .field__input-wrapper:focus-within {
3778
+ border-color: Highlight;
3779
+ box-shadow: none;
3780
+ }
3781
+
3782
+ .field__input:focus-visible {
3783
+ outline: 3px solid Highlight;
3784
+ outline-offset: -3px;
3785
+ }
3786
+
3787
+ :host([disabled]) {
3788
+ opacity: 1;
3789
+ }
3790
+
3791
+ :host([disabled]) .field__input-wrapper {
3792
+ border-color: GrayText;
3793
+ color: GrayText;
3794
+ }
3795
+
3796
+ :host([disabled]) .field__input {
3797
+ color: GrayText;
3798
+ }
3799
+
3800
+ .field--error .field__input-wrapper {
3801
+ border-color: LinkText;
3802
+ }
3803
+
3804
+ .field__label {
3805
+ color: CanvasText;
3806
+ }
3807
+
3808
+ .field__help-text {
3809
+ color: GrayText;
3810
+ }
3811
+
3812
+ .field__error {
3813
+ color: LinkText;
3814
+ }
3815
+ }
2137
3816
  /* ── hx-textarea ── */
2138
3817
  :host {
2139
3818
  display: block;
@@ -2167,7 +3846,7 @@
2167
3846
  gap: var(--hx-space-1, 0.25rem);
2168
3847
  font-size: var(--hx-font-size-sm, 0.875rem);
2169
3848
  font-weight: var(--hx-font-weight-medium, 500);
2170
- color: var(--hx-input-label-color, var(--hx-color-neutral-700, #343a40));
3849
+ color: var(--hx-input-label-color, var(--hx-color-neutral-700, #334155));
2171
3850
  line-height: var(--hx-line-height-normal, 1.5);
2172
3851
  }
2173
3852
 
@@ -2182,7 +3861,7 @@
2182
3861
  display: flex;
2183
3862
  flex-direction: column;
2184
3863
  border: var(--hx-border-width-thin, 1px) solid
2185
- var(--hx-input-border-color, var(--hx-color-neutral-300, #ced4da));
3864
+ var(--hx-input-border-color, var(--hx-color-neutral-300, #cbd5e1));
2186
3865
  border-radius: var(--hx-input-border-radius, var(--hx-border-radius-md, 0.375rem));
2187
3866
  background-color: var(--hx-input-bg, var(--hx-color-neutral-0, #ffffff));
2188
3867
  transition:
@@ -2196,9 +3875,6 @@
2196
3875
  --hx-input-focus-ring-color,
2197
3876
  var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
2198
3877
  );
2199
- /* Solid fallback for browsers without color-mix() (Chrome < 111, Safari < 16.2) — WCAG 1.4.11 */
2200
- box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
2201
- rgba(37, 99, 235, var(--hx-focus-ring-opacity, 0.25));
2202
3878
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
2203
3879
  color-mix(
2204
3880
  in srgb,
@@ -2214,18 +3890,15 @@
2214
3890
  /* --- Error State --- */
2215
3891
 
2216
3892
  .field--error .field__textarea-wrapper {
2217
- border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));
3893
+ border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc2626));
2218
3894
  }
2219
3895
 
2220
3896
  .field--error .field__textarea-wrapper:focus-within {
2221
- border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc3545));
2222
- /* Solid fallback for browsers without color-mix() — WCAG 1.4.11 */
2223
- box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
2224
- rgba(220, 53, 69, var(--hx-focus-ring-opacity, 0.25));
3897
+ border-color: var(--hx-input-error-color, var(--hx-color-error-500, #dc2626));
2225
3898
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
2226
3899
  color-mix(
2227
3900
  in srgb,
2228
- var(--hx-input-error-color, var(--hx-color-error-500, #dc3545))
3901
+ var(--hx-input-error-color, var(--hx-color-error-500, #dc2626))
2229
3902
  calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
2230
3903
  transparent
2231
3904
  );
@@ -2240,7 +3913,7 @@
2240
3913
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
2241
3914
  font-family: inherit;
2242
3915
  font-size: var(--hx-font-size-md, 1rem);
2243
- color: var(--hx-input-color, var(--hx-color-neutral-800, #212529));
3916
+ color: var(--hx-input-color, var(--hx-color-neutral-800, #1e293b));
2244
3917
  line-height: var(--hx-line-height-normal, 1.5);
2245
3918
  min-height: var(--hx-textarea-min-height, var(--hx-size-20, 5rem));
2246
3919
  width: 100%;
@@ -2248,7 +3921,11 @@
2248
3921
  }
2249
3922
 
2250
3923
  .field__textarea::placeholder {
2251
- color: var(--hx-color-neutral-400, #adb5bd);
3924
+ color: var(--hx-color-neutral-400, #94a3b8);
3925
+ }
3926
+
3927
+ .field__textarea:focus-visible {
3928
+ outline: none; /* wrapper ring handles keyboard focus indication */
2252
3929
  }
2253
3930
 
2254
3931
  .field__textarea:disabled {
@@ -2282,7 +3959,7 @@
2282
3959
 
2283
3960
  .field__counter {
2284
3961
  font-size: var(--hx-font-size-xs, 0.75rem);
2285
- color: var(--hx-color-neutral-500, #6c757d);
3962
+ color: var(--hx-color-neutral-500, #64748b);
2286
3963
  line-height: var(--hx-line-height-normal, 1.5);
2287
3964
  text-align: end;
2288
3965
  }
@@ -2305,7 +3982,7 @@
2305
3982
 
2306
3983
  .field__help-text {
2307
3984
  font-size: var(--hx-font-size-xs, 0.75rem);
2308
- color: var(--hx-color-neutral-500, #6c757d);
3985
+ color: var(--hx-color-neutral-500, #64748b);
2309
3986
  line-height: var(--hx-line-height-normal, 1.5);
2310
3987
  }
2311
3988
 
@@ -2314,8 +3991,289 @@
2314
3991
  color: var(--hx-input-error-color, var(--hx-color-error-text, #b91c1c));
2315
3992
  line-height: var(--hx-line-height-normal, 1.5);
2316
3993
  }
3994
+
3995
+ /* ─── High Contrast Mode (forced-colors) ─── */
3996
+
3997
+ @media (forced-colors: active) {
3998
+ .field__textarea-wrapper {
3999
+ forced-color-adjust: none;
4000
+ background-color: Field;
4001
+ color: FieldText;
4002
+ border: 2px solid ButtonText;
4003
+ }
4004
+
4005
+ .field__textarea {
4006
+ color: FieldText;
4007
+ }
4008
+
4009
+ .field__textarea::placeholder {
4010
+ color: GrayText;
4011
+ }
4012
+
4013
+ .field__textarea-wrapper:focus-within {
4014
+ border-color: Highlight;
4015
+ box-shadow: none;
4016
+ }
4017
+
4018
+ .field__textarea:focus-visible {
4019
+ outline: 3px solid Highlight;
4020
+ outline-offset: -3px;
4021
+ }
4022
+
4023
+ :host([disabled]) {
4024
+ opacity: 1;
4025
+ }
4026
+
4027
+ :host([disabled]) .field__textarea-wrapper {
4028
+ border-color: GrayText;
4029
+ color: GrayText;
4030
+ }
4031
+
4032
+ :host([disabled]) .field__textarea {
4033
+ color: GrayText;
4034
+ }
4035
+
4036
+ .field--error .field__textarea-wrapper {
4037
+ border-color: LinkText;
4038
+ }
4039
+
4040
+ .field__label {
4041
+ color: CanvasText;
4042
+ }
4043
+
4044
+ .field__help-text {
4045
+ color: GrayText;
4046
+ }
4047
+
4048
+ .field__error {
4049
+ color: LinkText;
4050
+ }
4051
+ }
2317
4052
  /* ── hx-time-picker ── */
2318
- :host{display:block;position:relative}:host([disabled]){opacity:var(--hx-opacity-disabled, .5);pointer-events:none}*{box-sizing:border-box}.field{display:flex;flex-direction:column;gap:var(--hx-space-1, .25rem);font-family:var(--hx-time-picker-font-family, var(--hx-font-family-sans, sans-serif))}.field__label{display:flex;align-items:baseline;gap:var(--hx-space-1, .25rem);font-size:var(--hx-font-size-sm, .875rem);font-weight:var(--hx-font-weight-medium, 500);color:var(--hx-time-picker-label-color, var(--hx-color-neutral-700));line-height:var(--hx-line-height-normal, 1.5)}.field__required-marker{color:var(--hx-time-picker-error-color, var(--hx-color-error-text, #b91c1c));font-weight:var(--hx-font-weight-bold, 700)}.field__combobox{position:relative;display:flex;align-items:center;border:var(--hx-border-width-thin, 1px) solid var(--hx-time-picker-border-color, var(--hx-color-neutral-300));border-radius:var(--hx-time-picker-border-radius, var(--hx-border-radius-md, .375rem));background-color:var(--hx-time-picker-bg, var(--hx-color-neutral-0));transition:border-color var(--hx-transition-fast, .15s ease),box-shadow var(--hx-transition-fast, .15s ease);overflow:visible}.field__combobox:focus-within{border-color:var(--hx-time-picker-focus-ring-color, var(--hx-focus-ring-color));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-time-picker-focus-ring-color, var(--hx-focus-ring-color)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}.field--error .field__combobox{border-color:var(--hx-time-picker-error-color, var(--hx-color-error-500))}.field--error .field__combobox:focus-within{border-color:var(--hx-time-picker-error-color, var(--hx-color-error-500));box-shadow:0 0 0 var(--hx-focus-ring-width, 2px) color-mix(in srgb,var(--hx-time-picker-error-color, var(--hx-color-error-500)) calc(var(--hx-focus-ring-opacity, .25) * 100%),transparent)}.field__input{flex:1;border:none;outline:none;background:transparent;padding:var(--hx-space-2, .5rem) var(--hx-space-3, .75rem);font-family:inherit;font-size:var(--hx-font-size-md, 1rem);color:var(--hx-time-picker-color, var(--hx-color-neutral-800));line-height:var(--hx-line-height-normal, 1.5);min-height:var(--hx-size-10, 2.5rem);width:100%;cursor:text}.field__input::placeholder{color:var(--hx-color-neutral-400)}.field__input:disabled{cursor:not-allowed}.field__toggle{display:flex;align-items:center;justify-content:center;border:none;background:transparent;padding:0 var(--hx-space-3, .75rem);color:var(--hx-time-picker-chevron-color, var(--hx-color-neutral-500));cursor:pointer;height:100%;min-height:var(--hx-size-10, 2.5rem);flex-shrink:0;border-inline-start:var(--hx-border-width-thin, 1px) solid var(--hx-time-picker-border-color, var(--hx-color-neutral-300))}.field__toggle:focus-visible{outline:var(--hx-focus-ring-width, 2px) solid var(--hx-time-picker-focus-ring-color, var(--hx-focus-ring-color));outline-offset:-2px;border-radius:0 var(--hx-time-picker-border-radius, var(--hx-border-radius-md, .375rem))}.field__listbox{position:absolute;top:calc(100% + var(--hx-space-1, .25rem));inset-inline-start:0;inset-inline-end:0;z-index:var(--hx-z-index-dropdown, 1000);background-color:var(--hx-time-picker-listbox-bg, var(--hx-color-neutral-0));border:var(--hx-border-width-thin, 1px) solid var(--hx-time-picker-border-color, var(--hx-color-neutral-300));border-radius:var(--hx-time-picker-border-radius, var(--hx-border-radius-md, .375rem));box-shadow:var( --hx-time-picker-listbox-shadow, 0 4px 16px color-mix(in srgb, var(--hx-color-neutral-900) 12%, transparent) );max-height:var(--hx-time-picker-listbox-max-height, 16rem);overflow-y:auto;padding:var(--hx-space-1, .25rem) 0;list-style:none;margin:0}@media(prefers-reduced-motion:no-preference){.field__listbox{animation:hx-listbox-enter var(--hx-transition-fast, .15s ease) forwards}}@keyframes hx-listbox-enter{0%{opacity:0;transform:translateY(-.25rem)}to{opacity:1;transform:translateY(0)}}.field__option{display:flex;align-items:center;padding:var(--hx-space-2, .5rem) var(--hx-space-3, .75rem);font-size:var(--hx-font-size-md, 1rem);font-family:inherit;color:var(--hx-time-picker-option-color, var(--hx-color-neutral-800));cursor:pointer;transition:background-color var(--hx-transition-fast, .15s ease);line-height:var(--hx-line-height-normal, 1.5)}.field__option:hover,.field__option--active{background-color:var(--hx-time-picker-option-hover-bg, var(--hx-color-primary-50));color:var(--hx-time-picker-option-hover-color, var(--hx-color-primary-700))}.field__option--selected{background-color:var(--hx-time-picker-option-selected-bg, var(--hx-color-primary-100));color:var(--hx-time-picker-option-selected-color, var(--hx-color-primary-800));font-weight:var(--hx-font-weight-medium, 500)}.field__option--selected.field__option--active{background-color:var(--hx-time-picker-option-selected-bg, var(--hx-color-primary-100))}@media(prefers-reduced-motion:reduce){.field__combobox,.field__option{transition:none}}.field__help-text,.field__error{font-size:var(--hx-font-size-xs, .75rem);line-height:var(--hx-line-height-normal, 1.5)}.field__help-text{color:var(--hx-color-neutral-500)}.field__error{color:var(--hx-time-picker-error-color, var(--hx-color-error-text, #b91c1c))}
4053
+ :host {
4054
+ display: block;
4055
+ position: relative;
4056
+ }
4057
+ :host([disabled]) {
4058
+ opacity: var(--hx-opacity-disabled, 0.5);
4059
+ pointer-events: none;
4060
+ }
4061
+ * {
4062
+ box-sizing: border-box;
4063
+ }
4064
+ .field {
4065
+ display: flex;
4066
+ flex-direction: column;
4067
+ gap: var(--hx-space-1, 0.25rem);
4068
+ font-family: var(--hx-time-picker-font-family, var(--hx-font-family-sans, sans-serif));
4069
+ }
4070
+ .field__label {
4071
+ display: flex;
4072
+ align-items: baseline;
4073
+ gap: var(--hx-space-1, 0.25rem);
4074
+ font-size: var(--hx-font-size-sm, 0.875rem);
4075
+ font-weight: var(--hx-font-weight-medium, 500);
4076
+ color: var(--hx-time-picker-label-color, var(--hx-color-neutral-700));
4077
+ line-height: var(--hx-line-height-normal, 1.5);
4078
+ }
4079
+ .field__required-marker {
4080
+ color: var(--hx-time-picker-error-color, var(--hx-color-error-text, #b91c1c));
4081
+ font-weight: var(--hx-font-weight-bold, 700);
4082
+ }
4083
+ .field__combobox {
4084
+ position: relative;
4085
+ display: flex;
4086
+ align-items: center;
4087
+ border: var(--hx-border-width-thin, 1px) solid
4088
+ var(--hx-time-picker-border-color, var(--hx-color-neutral-300));
4089
+ border-radius: var(--hx-time-picker-border-radius, var(--hx-border-radius-md, 0.375rem));
4090
+ background-color: var(--hx-time-picker-bg, var(--hx-color-neutral-0));
4091
+ transition:
4092
+ border-color var(--hx-transition-fast, 150ms ease),
4093
+ box-shadow var(--hx-transition-fast, 150ms ease);
4094
+ overflow: visible;
4095
+ }
4096
+ .field__combobox:focus-within {
4097
+ border-color: var(--hx-time-picker-focus-ring-color, var(--hx-focus-ring-color));
4098
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
4099
+ color-mix(
4100
+ in srgb,
4101
+ var(--hx-time-picker-focus-ring-color, var(--hx-focus-ring-color))
4102
+ calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
4103
+ transparent
4104
+ );
4105
+ }
4106
+ .field--error .field__combobox {
4107
+ border-color: var(--hx-time-picker-error-color, var(--hx-color-error-500));
4108
+ }
4109
+ .field--error .field__combobox:focus-within {
4110
+ border-color: var(--hx-time-picker-error-color, var(--hx-color-error-500));
4111
+ box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
4112
+ color-mix(
4113
+ in srgb,
4114
+ var(--hx-time-picker-error-color, var(--hx-color-error-500))
4115
+ calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
4116
+ transparent
4117
+ );
4118
+ }
4119
+ .field__input {
4120
+ flex: 1;
4121
+ border: none;
4122
+ outline: none;
4123
+ background: transparent;
4124
+ padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
4125
+ font-family: inherit;
4126
+ font-size: var(--hx-font-size-md, 1rem);
4127
+ color: var(--hx-time-picker-color, var(--hx-color-neutral-800));
4128
+ line-height: var(--hx-line-height-normal, 1.5);
4129
+ min-height: var(--hx-size-10, 2.5rem);
4130
+ width: 100%;
4131
+ cursor: text;
4132
+ }
4133
+ .field__input::placeholder {
4134
+ color: var(--hx-color-neutral-400);
4135
+ }
4136
+ .field__input:disabled {
4137
+ cursor: not-allowed;
4138
+ }
4139
+ .field__toggle {
4140
+ display: flex;
4141
+ align-items: center;
4142
+ justify-content: center;
4143
+ border: none;
4144
+ background: transparent;
4145
+ padding: 0 var(--hx-space-3, 0.75rem);
4146
+ color: var(--hx-time-picker-chevron-color, var(--hx-color-neutral-500));
4147
+ cursor: pointer;
4148
+ height: 100%;
4149
+ min-height: var(--hx-size-10, 2.5rem);
4150
+ flex-shrink: 0;
4151
+ border-inline-start: var(--hx-border-width-thin, 1px) solid
4152
+ var(--hx-time-picker-border-color, var(--hx-color-neutral-300));
4153
+ }
4154
+ .field__toggle:focus-visible {
4155
+ outline: var(--hx-focus-ring-width, 2px) solid
4156
+ var(--hx-time-picker-focus-ring-color, var(--hx-focus-ring-color));
4157
+ outline-offset: -2px;
4158
+ border-radius: 0 var(--hx-time-picker-border-radius, var(--hx-border-radius-md, 0.375rem));
4159
+ }
4160
+ .field__listbox {
4161
+ position: absolute;
4162
+ top: calc(100% + var(--hx-space-1, 0.25rem));
4163
+ inset-inline-start: 0;
4164
+ inset-inline-end: 0;
4165
+ z-index: var(--hx-z-index-dropdown, 1000);
4166
+ background-color: var(--hx-time-picker-listbox-bg, var(--hx-color-neutral-0));
4167
+ border: var(--hx-border-width-thin, 1px) solid
4168
+ var(--hx-time-picker-border-color, var(--hx-color-neutral-300));
4169
+ border-radius: var(--hx-time-picker-border-radius, var(--hx-border-radius-md, 0.375rem));
4170
+ box-shadow: var(
4171
+ --hx-time-picker-listbox-shadow,
4172
+ 0 4px 16px color-mix(in srgb, var(--hx-color-neutral-900) 12%, transparent)
4173
+ );
4174
+ max-height: var(--hx-time-picker-listbox-max-height, 16rem);
4175
+ overflow-y: auto;
4176
+ padding: var(--hx-space-1, 0.25rem) 0;
4177
+ list-style: none;
4178
+ margin: 0;
4179
+ }
4180
+ @media (prefers-reduced-motion: no-preference) {
4181
+ .field__listbox {
4182
+ animation: hx-listbox-enter var(--hx-transition-fast, 150ms ease) forwards;
4183
+ }
4184
+ }
4185
+ @keyframes hx-listbox-enter {
4186
+ 0% {
4187
+ opacity: 0;
4188
+ transform: translateY(-0.25rem);
4189
+ }
4190
+ to {
4191
+ opacity: 1;
4192
+ transform: translateY(0);
4193
+ }
4194
+ }
4195
+ .field__option {
4196
+ display: flex;
4197
+ align-items: center;
4198
+ padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
4199
+ font-size: var(--hx-font-size-md, 1rem);
4200
+ font-family: inherit;
4201
+ color: var(--hx-time-picker-option-color, var(--hx-color-neutral-800));
4202
+ cursor: pointer;
4203
+ transition: background-color var(--hx-transition-fast, 150ms ease);
4204
+ line-height: var(--hx-line-height-normal, 1.5);
4205
+ }
4206
+ .field__option:hover,
4207
+ .field__option--active {
4208
+ background-color: var(--hx-time-picker-option-hover-bg, var(--hx-color-primary-50));
4209
+ color: var(--hx-time-picker-option-hover-color, var(--hx-color-primary-700));
4210
+ }
4211
+ .field__option--selected {
4212
+ background-color: var(--hx-time-picker-option-selected-bg, var(--hx-color-primary-100));
4213
+ color: var(--hx-time-picker-option-selected-color, var(--hx-color-primary-800));
4214
+ font-weight: var(--hx-font-weight-medium, 500);
4215
+ }
4216
+ .field__option--selected.field__option--active {
4217
+ background-color: var(--hx-time-picker-option-selected-bg, var(--hx-color-primary-100));
4218
+ }
4219
+ @media (prefers-reduced-motion: reduce) {
4220
+ .field__combobox,
4221
+ .field__option {
4222
+ transition: none;
4223
+ }
4224
+ }
4225
+ .field__help-text,
4226
+ .field__error {
4227
+ font-size: var(--hx-font-size-xs, 0.75rem);
4228
+ line-height: var(--hx-line-height-normal, 1.5);
4229
+ }
4230
+ .field__help-text {
4231
+ color: var(--hx-color-neutral-500);
4232
+ }
4233
+ .field__error {
4234
+ color: var(--hx-time-picker-error-color, var(--hx-color-error-text, #b91c1c));
4235
+ }
4236
+ @media (forced-colors: active) {
4237
+ .field__combobox {
4238
+ border-color: ButtonText;
4239
+ background-color: Canvas;
4240
+ }
4241
+ .field__combobox:focus-within {
4242
+ outline: 3px solid Highlight;
4243
+ outline-offset: 0;
4244
+ box-shadow: none;
4245
+ }
4246
+ .field--error .field__combobox {
4247
+ border-color: LinkText;
4248
+ }
4249
+ .field--error .field__combobox:focus-within {
4250
+ outline-color: Highlight;
4251
+ box-shadow: none;
4252
+ }
4253
+ .field__toggle:focus-visible {
4254
+ outline: 3px solid Highlight;
4255
+ outline-offset: 0;
4256
+ }
4257
+ .field__listbox {
4258
+ border-color: ButtonText;
4259
+ background-color: Canvas;
4260
+ box-shadow: none;
4261
+ }
4262
+ .field__option:hover,
4263
+ .field__option--active {
4264
+ background-color: Highlight;
4265
+ color: HighlightText;
4266
+ forced-color-adjust: none;
4267
+ }
4268
+ .field__option--selected {
4269
+ background-color: Highlight;
4270
+ color: HighlightText;
4271
+ forced-color-adjust: none;
4272
+ }
4273
+ .field__error {
4274
+ color: LinkText;
4275
+ }
4276
+ }
2319
4277
  /* ── hx-toggle-button ── */
2320
4278
  :host {
2321
4279
  display: inline-block;
@@ -2371,10 +4329,13 @@
2371
4329
 
2372
4330
  /* ─── Size Variants ─── */
2373
4331
 
4332
+ /* WCAG 2.5.5 (healthcare mandate): minimum 44px touch target for sm variant.
4333
+ min-height uses --hx-touch-target-min to guarantee the interactive area
4334
+ meets the threshold even though the visual size token is smaller. */
2374
4335
  .button--sm {
2375
4336
  padding: var(--hx-space-1, 0.25rem) var(--hx-space-3, 0.75rem);
2376
4337
  font-size: var(--hx-font-size-sm, 0.875rem);
2377
- min-height: var(--hx-size-8, 2rem);
4338
+ min-height: var(--hx-touch-target-min, 2.75rem);
2378
4339
  }
2379
4340
 
2380
4341
  .button--md {
@@ -2444,7 +4405,7 @@
2444
4405
  * to give clear visual feedback without introducing a new color.
2445
4406
  */
2446
4407
  .button--primary.button--pressed {
2447
- --hx-toggle-button-bg: var(--hx-toggle-button-pressed-bg, var(--hx-color-primary-700, #1d4ed8));
4408
+ --hx-toggle-button-bg: var(--hx-toggle-button-pressed-bg, var(--hx-color-primary-700, #1e40af));
2448
4409
  --hx-toggle-button-color: var(
2449
4410
  --hx-toggle-button-pressed-color,
2450
4411
  var(--hx-color-neutral-0, #ffffff)
@@ -2470,7 +4431,7 @@
2470
4431
  --hx-toggle-button-bg: var(--hx-toggle-button-pressed-bg, var(--hx-color-primary-100, #dbeafe));
2471
4432
  --hx-toggle-button-color: var(
2472
4433
  --hx-toggle-button-pressed-color,
2473
- var(--hx-color-primary-700, #1d4ed8)
4434
+ var(--hx-color-primary-700, #1e40af)
2474
4435
  );
2475
4436
  --hx-toggle-button-border-color: var(--hx-color-primary-400, #60a5fa);
2476
4437
  box-shadow: inset 0 0 0 1px var(--hx-color-primary-400, #60a5fa);
@@ -2481,7 +4442,7 @@
2481
4442
  --hx-toggle-button-bg: var(--hx-toggle-button-pressed-bg, var(--hx-color-primary-100, #dbeafe));
2482
4443
  --hx-toggle-button-color: var(
2483
4444
  --hx-toggle-button-pressed-color,
2484
- var(--hx-color-primary-700, #1d4ed8)
4445
+ var(--hx-color-primary-700, #1e40af)
2485
4446
  );
2486
4447
  --hx-toggle-button-border-color: transparent;
2487
4448
  }
@@ -2522,4 +4483,38 @@
2522
4483
  .button {
2523
4484
  transition: none;
2524
4485
  }
4486
+ }
4487
+
4488
+ /* ─── High Contrast Mode (forced-colors) ─── */
4489
+
4490
+ @media (forced-colors: active) {
4491
+ .button {
4492
+ forced-color-adjust: none;
4493
+ background-color: ButtonFace;
4494
+ color: ButtonText;
4495
+ border: 2px solid ButtonText;
4496
+ }
4497
+
4498
+ .button:focus-visible {
4499
+ outline: 3px solid Highlight;
4500
+ outline-offset: 2px;
4501
+ }
4502
+
4503
+ .button--pressed {
4504
+ background-color: Highlight;
4505
+ color: HighlightText;
4506
+ border-color: Highlight;
4507
+ box-shadow: none;
4508
+ }
4509
+
4510
+ .button[disabled] {
4511
+ background-color: ButtonFace;
4512
+ color: GrayText;
4513
+ border-color: GrayText;
4514
+ opacity: 1;
4515
+ }
4516
+
4517
+ :host([disabled]) {
4518
+ opacity: 1;
4519
+ }
2525
4520
  }