@threadlabs/looma 0.29.9 → 0.29.11

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 (414) hide show
  1. package/editor/node-views/element.d.ts +7 -0
  2. package/editor/node-views/expand.d.ts +8 -0
  3. package/editor/node-views/table-of-contents.d.ts +8 -0
  4. package/package.json +3 -3
  5. package/styles/ui-action-bar.css +1 -1
  6. package/styles/ui-affordance-scope.css +1 -1
  7. package/styles/ui-avatar-group.css +1 -1
  8. package/styles/ui-avatar.css +1 -1
  9. package/styles/ui-badge.css +1 -1
  10. package/styles/ui-breadcrumb-item.css +1 -1
  11. package/styles/ui-breadcrumbs.css +1 -1
  12. package/styles/ui-button.css +1 -1
  13. package/styles/ui-callout.css +1 -1
  14. package/styles/ui-card.css +1 -1
  15. package/styles/ui-checkbox.css +1 -1
  16. package/styles/ui-cluster.css +1 -1
  17. package/styles/ui-combobox.css +1 -1
  18. package/styles/ui-container.css +1 -1
  19. package/styles/ui-context-menu.css +1 -1
  20. package/styles/ui-cover.css +1 -1
  21. package/styles/ui-description-item.css +1 -1
  22. package/styles/ui-description-list.css +1 -1
  23. package/styles/ui-dialog.css +1 -1
  24. package/styles/ui-disclosure.css +1 -1
  25. package/styles/ui-editable.css +1 -1
  26. package/styles/ui-editor-block-actions.css +1 -1
  27. package/styles/ui-editor-chip-editor.css +1 -1
  28. package/styles/ui-editor-code-language.css +1 -1
  29. package/styles/ui-editor-image-toolbar.css +1 -1
  30. package/styles/ui-editor-insert-table-grid.css +1 -1
  31. package/styles/ui-editor-link-card.css +1 -1
  32. package/styles/ui-editor-link-form.css +1 -1
  33. package/styles/ui-editor-mention-menu-item.css +1 -1
  34. package/styles/ui-editor-mention-menu.css +1 -1
  35. package/styles/ui-editor-slash-menu-group.css +1 -1
  36. package/styles/ui-editor-slash-menu-item.css +1 -1
  37. package/styles/ui-editor-slash-menu.css +1 -1
  38. package/styles/ui-editor-surface.css +1 -1
  39. package/styles/ui-editor-table-context-menu.css +1 -1
  40. package/styles/ui-editor-table-overlay.css +1 -1
  41. package/styles/ui-editor-table-toolbar.css +1 -1
  42. package/styles/ui-editor-toolbar.css +1 -1
  43. package/styles/ui-floating-action-button.css +1 -1
  44. package/styles/ui-form-field.css +1 -1
  45. package/styles/ui-grid.css +1 -1
  46. package/styles/ui-icon-button.css +1 -1
  47. package/styles/ui-icon.css +1 -1
  48. package/styles/ui-image.css +1 -1
  49. package/styles/ui-input-group.css +1 -1
  50. package/styles/ui-input.css +1 -1
  51. package/styles/ui-list-item.css +1 -1
  52. package/styles/ui-list.css +1 -1
  53. package/styles/ui-listbox.css +1 -1
  54. package/styles/ui-menu-group.css +1 -1
  55. package/styles/ui-menu-item.css +1 -1
  56. package/styles/ui-menu.css +1 -1
  57. package/styles/ui-meter.css +1 -1
  58. package/styles/ui-nav-item.css +1 -1
  59. package/styles/ui-page-header.css +1 -1
  60. package/styles/ui-popover.css +1 -1
  61. package/styles/ui-radio-group.css +1 -1
  62. package/styles/ui-radio.css +1 -1
  63. package/styles/ui-reel.css +1 -1
  64. package/styles/ui-scroll-area.css +1 -1
  65. package/styles/ui-search-result-row.css +1 -1
  66. package/styles/ui-search-shell.css +1 -1
  67. package/styles/ui-section.css +1 -1
  68. package/styles/ui-select.css +1 -1
  69. package/styles/ui-separator.css +1 -1
  70. package/styles/ui-sidebar.css +1 -1
  71. package/styles/ui-spinner.css +1 -1
  72. package/styles/ui-stack.css +1 -1
  73. package/styles/ui-status-message.css +1 -1
  74. package/styles/ui-swatch.css +1 -1
  75. package/styles/ui-switch.css +1 -1
  76. package/styles/ui-switcher.css +1 -1
  77. package/styles/ui-table.css +1 -1
  78. package/styles/ui-tabs.css +1 -1
  79. package/styles/ui-text.css +1 -1
  80. package/styles/ui-textarea.css +1 -1
  81. package/styles/ui-toast-region.css +1 -1
  82. package/styles/ui-toast.css +1 -1
  83. package/styles/ui-tooltip.css +1 -1
  84. package/styles/ui-top-bar.css +1 -1
  85. package/styles/ui-tree-item.css +1 -1
  86. package/styles/ui-tree.css +1 -1
  87. package/vanilla/UiActionBar.d.ts +1 -1
  88. package/vanilla/UiActionBar.js +1 -1
  89. package/vanilla/UiAffordanceScope.d.ts +1 -1
  90. package/vanilla/UiAffordanceScope.js +1 -1
  91. package/vanilla/UiAvatar.d.ts +1 -1
  92. package/vanilla/UiAvatar.js +1 -1
  93. package/vanilla/UiAvatarGroup.d.ts +1 -1
  94. package/vanilla/UiAvatarGroup.js +1 -1
  95. package/vanilla/UiBadge.d.ts +1 -1
  96. package/vanilla/UiBadge.js +1 -1
  97. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  98. package/vanilla/UiBreadcrumbItem.js +1 -1
  99. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  100. package/vanilla/UiBreadcrumbs.js +1 -1
  101. package/vanilla/UiButton.d.ts +1 -1
  102. package/vanilla/UiButton.js +1 -1
  103. package/vanilla/UiCallout.d.ts +1 -1
  104. package/vanilla/UiCallout.js +1 -1
  105. package/vanilla/UiCard.d.ts +1 -1
  106. package/vanilla/UiCard.js +1 -1
  107. package/vanilla/UiCheckbox.d.ts +1 -1
  108. package/vanilla/UiCheckbox.js +1 -1
  109. package/vanilla/UiCluster.d.ts +1 -1
  110. package/vanilla/UiCluster.js +1 -1
  111. package/vanilla/UiCombobox.d.ts +1 -1
  112. package/vanilla/UiCombobox.js +1 -1
  113. package/vanilla/UiContainer.d.ts +1 -1
  114. package/vanilla/UiContainer.js +1 -1
  115. package/vanilla/UiContextMenu.d.ts +1 -1
  116. package/vanilla/UiContextMenu.js +1 -1
  117. package/vanilla/UiCover.d.ts +1 -1
  118. package/vanilla/UiCover.js +1 -1
  119. package/vanilla/UiDescriptionItem.d.ts +1 -1
  120. package/vanilla/UiDescriptionItem.js +1 -1
  121. package/vanilla/UiDescriptionList.d.ts +1 -1
  122. package/vanilla/UiDescriptionList.js +1 -1
  123. package/vanilla/UiDialog.d.ts +1 -1
  124. package/vanilla/UiDialog.js +1 -1
  125. package/vanilla/UiDisclosure.d.ts +1 -1
  126. package/vanilla/UiDisclosure.js +1 -1
  127. package/vanilla/UiEditable.d.ts +1 -1
  128. package/vanilla/UiEditable.js +1 -1
  129. package/vanilla/UiEditorBlockActions.d.ts +1 -1
  130. package/vanilla/UiEditorBlockActions.js +1 -1
  131. package/vanilla/UiEditorChipEditor.d.ts +1 -1
  132. package/vanilla/UiEditorChipEditor.js +1 -1
  133. package/vanilla/UiEditorCodeLanguage.d.ts +1 -1
  134. package/vanilla/UiEditorCodeLanguage.js +1 -1
  135. package/vanilla/UiEditorImageToolbar.d.ts +1 -1
  136. package/vanilla/UiEditorImageToolbar.js +1 -1
  137. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  138. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  139. package/vanilla/UiEditorLinkCard.d.ts +1 -1
  140. package/vanilla/UiEditorLinkCard.js +1 -1
  141. package/vanilla/UiEditorLinkForm.d.ts +1 -1
  142. package/vanilla/UiEditorLinkForm.js +1 -1
  143. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  144. package/vanilla/UiEditorMentionMenu.js +1 -1
  145. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  146. package/vanilla/UiEditorMentionMenuItem.js +1 -1
  147. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  148. package/vanilla/UiEditorSlashMenu.js +1 -1
  149. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  150. package/vanilla/UiEditorSlashMenuGroup.js +1 -1
  151. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  152. package/vanilla/UiEditorSlashMenuItem.js +1 -1
  153. package/vanilla/UiEditorSurface.d.ts +1 -1
  154. package/vanilla/UiEditorSurface.js +1 -1
  155. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  156. package/vanilla/UiEditorTableContextMenu.js +1 -1
  157. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  158. package/vanilla/UiEditorTableOverlay.js +1 -1
  159. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  160. package/vanilla/UiEditorTableToolbar.js +1 -1
  161. package/vanilla/UiEditorToolbar.d.ts +1 -1
  162. package/vanilla/UiEditorToolbar.js +1 -1
  163. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  164. package/vanilla/UiFloatingActionButton.js +1 -1
  165. package/vanilla/UiFormField.d.ts +1 -1
  166. package/vanilla/UiFormField.js +1 -1
  167. package/vanilla/UiGrid.d.ts +1 -1
  168. package/vanilla/UiGrid.js +1 -1
  169. package/vanilla/UiIcon.d.ts +1 -1
  170. package/vanilla/UiIcon.js +1 -1
  171. package/vanilla/UiIconButton.d.ts +1 -1
  172. package/vanilla/UiIconButton.js +1 -1
  173. package/vanilla/UiImage.d.ts +1 -1
  174. package/vanilla/UiImage.js +1 -1
  175. package/vanilla/UiInput.d.ts +1 -1
  176. package/vanilla/UiInput.js +1 -1
  177. package/vanilla/UiInputGroup.d.ts +1 -1
  178. package/vanilla/UiInputGroup.js +1 -1
  179. package/vanilla/UiList.d.ts +1 -1
  180. package/vanilla/UiList.js +1 -1
  181. package/vanilla/UiListItem.d.ts +1 -1
  182. package/vanilla/UiListItem.js +1 -1
  183. package/vanilla/UiListbox.d.ts +1 -1
  184. package/vanilla/UiListbox.js +1 -1
  185. package/vanilla/UiMenu.d.ts +1 -1
  186. package/vanilla/UiMenu.js +1 -1
  187. package/vanilla/UiMenuGroup.d.ts +1 -1
  188. package/vanilla/UiMenuGroup.js +1 -1
  189. package/vanilla/UiMenuItem.d.ts +1 -1
  190. package/vanilla/UiMenuItem.js +1 -1
  191. package/vanilla/UiMeter.d.ts +1 -1
  192. package/vanilla/UiMeter.js +1 -1
  193. package/vanilla/UiNavItem.d.ts +1 -1
  194. package/vanilla/UiNavItem.js +1 -1
  195. package/vanilla/UiPageHeader.d.ts +1 -1
  196. package/vanilla/UiPageHeader.js +1 -1
  197. package/vanilla/UiPopover.d.ts +1 -1
  198. package/vanilla/UiPopover.js +1 -1
  199. package/vanilla/UiRadio.d.ts +1 -1
  200. package/vanilla/UiRadio.js +1 -1
  201. package/vanilla/UiRadioGroup.d.ts +1 -1
  202. package/vanilla/UiRadioGroup.js +1 -1
  203. package/vanilla/UiReel.d.ts +1 -1
  204. package/vanilla/UiReel.js +1 -1
  205. package/vanilla/UiScrollArea.d.ts +1 -1
  206. package/vanilla/UiScrollArea.js +1 -1
  207. package/vanilla/UiSearchResultRow.d.ts +1 -1
  208. package/vanilla/UiSearchResultRow.js +1 -1
  209. package/vanilla/UiSearchShell.d.ts +1 -1
  210. package/vanilla/UiSearchShell.js +1 -1
  211. package/vanilla/UiSection.d.ts +1 -1
  212. package/vanilla/UiSection.js +1 -1
  213. package/vanilla/UiSelect.d.ts +1 -1
  214. package/vanilla/UiSelect.js +1 -1
  215. package/vanilla/UiSeparator.d.ts +1 -1
  216. package/vanilla/UiSeparator.js +1 -1
  217. package/vanilla/UiSidebar.d.ts +1 -1
  218. package/vanilla/UiSidebar.js +1 -1
  219. package/vanilla/UiSpinner.d.ts +1 -1
  220. package/vanilla/UiSpinner.js +1 -1
  221. package/vanilla/UiStack.d.ts +1 -1
  222. package/vanilla/UiStack.js +1 -1
  223. package/vanilla/UiStatusMessage.d.ts +1 -1
  224. package/vanilla/UiStatusMessage.js +1 -1
  225. package/vanilla/UiSwatch.d.ts +1 -1
  226. package/vanilla/UiSwatch.js +1 -1
  227. package/vanilla/UiSwitch.d.ts +1 -1
  228. package/vanilla/UiSwitch.js +1 -1
  229. package/vanilla/UiSwitcher.d.ts +1 -1
  230. package/vanilla/UiSwitcher.js +1 -1
  231. package/vanilla/UiTable.d.ts +1 -1
  232. package/vanilla/UiTable.js +1 -1
  233. package/vanilla/UiTabs.d.ts +1 -1
  234. package/vanilla/UiTabs.js +1 -1
  235. package/vanilla/UiText.d.ts +1 -1
  236. package/vanilla/UiText.js +1 -1
  237. package/vanilla/UiTextarea.d.ts +1 -1
  238. package/vanilla/UiTextarea.js +1 -1
  239. package/vanilla/UiToast.d.ts +1 -1
  240. package/vanilla/UiToast.js +1 -1
  241. package/vanilla/UiToastRegion.d.ts +1 -1
  242. package/vanilla/UiToastRegion.js +1 -1
  243. package/vanilla/UiTooltip.d.ts +1 -1
  244. package/vanilla/UiTooltip.js +1 -1
  245. package/vanilla/UiTopBar.d.ts +1 -1
  246. package/vanilla/UiTopBar.js +1 -1
  247. package/vanilla/UiTree.d.ts +1 -1
  248. package/vanilla/UiTree.js +1 -1
  249. package/vanilla/UiTreeItem.d.ts +1 -1
  250. package/vanilla/UiTreeItem.js +1 -1
  251. package/vue/UiActionBar.vue +1 -1
  252. package/vue/UiAffordanceScope.vue +1 -1
  253. package/vue/UiAvatar.vue +1 -1
  254. package/vue/UiAvatarGroup.vue +1 -1
  255. package/vue/UiBadge.vue +1 -1
  256. package/vue/UiBreadcrumbItem.vue +1 -1
  257. package/vue/UiBreadcrumbs.vue +1 -1
  258. package/vue/UiButton.vue +1 -1
  259. package/vue/UiCallout.vue +1 -1
  260. package/vue/UiCard.vue +1 -1
  261. package/vue/UiCheckbox.vue +1 -1
  262. package/vue/UiCluster.vue +1 -1
  263. package/vue/UiCombobox.vue +1 -1
  264. package/vue/UiContainer.vue +1 -1
  265. package/vue/UiContextMenu.vue +1 -1
  266. package/vue/UiCover.vue +1 -1
  267. package/vue/UiDescriptionItem.vue +1 -1
  268. package/vue/UiDescriptionList.vue +1 -1
  269. package/vue/UiDialog.vue +1 -1
  270. package/vue/UiDisclosure.vue +1 -1
  271. package/vue/UiEditable.vue +1 -1
  272. package/vue/UiEditorBlockActions.vue +1 -1
  273. package/vue/UiEditorChipEditor.vue +1 -1
  274. package/vue/UiEditorCodeLanguage.vue +1 -1
  275. package/vue/UiEditorImageToolbar.vue +1 -1
  276. package/vue/UiEditorInsertTableGrid.vue +1 -1
  277. package/vue/UiEditorLinkCard.vue +1 -1
  278. package/vue/UiEditorLinkForm.vue +1 -1
  279. package/vue/UiEditorMentionMenu.vue +1 -1
  280. package/vue/UiEditorMentionMenuItem.vue +1 -1
  281. package/vue/UiEditorSlashMenu.vue +1 -1
  282. package/vue/UiEditorSlashMenuGroup.vue +1 -1
  283. package/vue/UiEditorSlashMenuItem.vue +1 -1
  284. package/vue/UiEditorSurface.vue +1 -1
  285. package/vue/UiEditorTableContextMenu.vue +1 -1
  286. package/vue/UiEditorTableOverlay.vue +1 -1
  287. package/vue/UiEditorTableToolbar.vue +1 -1
  288. package/vue/UiEditorToolbar.vue +1 -1
  289. package/vue/UiFloatingActionButton.vue +1 -1
  290. package/vue/UiFormField.vue +1 -1
  291. package/vue/UiGrid.vue +1 -1
  292. package/vue/UiIcon.vue +1 -1
  293. package/vue/UiIconButton.vue +1 -1
  294. package/vue/UiImage.vue +1 -1
  295. package/vue/UiInput.vue +1 -1
  296. package/vue/UiInputGroup.vue +1 -1
  297. package/vue/UiList.vue +1 -1
  298. package/vue/UiListItem.vue +1 -1
  299. package/vue/UiListbox.vue +1 -1
  300. package/vue/UiMenu.vue +1 -1
  301. package/vue/UiMenuGroup.vue +1 -1
  302. package/vue/UiMenuItem.vue +1 -1
  303. package/vue/UiMeter.vue +1 -1
  304. package/vue/UiNavItem.vue +1 -1
  305. package/vue/UiPageHeader.vue +1 -1
  306. package/vue/UiPopover.vue +1 -1
  307. package/vue/UiRadio.vue +1 -1
  308. package/vue/UiRadioGroup.vue +1 -1
  309. package/vue/UiReel.vue +1 -1
  310. package/vue/UiScrollArea.vue +1 -1
  311. package/vue/UiSearchResultRow.vue +1 -1
  312. package/vue/UiSearchShell.vue +1 -1
  313. package/vue/UiSection.vue +1 -1
  314. package/vue/UiSelect.vue +1 -1
  315. package/vue/UiSeparator.vue +1 -1
  316. package/vue/UiSidebar.vue +1 -1
  317. package/vue/UiSpinner.vue +1 -1
  318. package/vue/UiStack.vue +1 -1
  319. package/vue/UiStatusMessage.vue +1 -1
  320. package/vue/UiSwatch.vue +1 -1
  321. package/vue/UiSwitch.vue +1 -1
  322. package/vue/UiSwitcher.vue +1 -1
  323. package/vue/UiTable.vue +1 -1
  324. package/vue/UiTabs.vue +1 -1
  325. package/vue/UiText.vue +1 -1
  326. package/vue/UiTextarea.vue +1 -1
  327. package/vue/UiToast.vue +1 -1
  328. package/vue/UiToastRegion.vue +1 -1
  329. package/vue/UiTooltip.vue +1 -1
  330. package/vue/UiTopBar.vue +1 -1
  331. package/vue/UiTree.vue +1 -1
  332. package/vue/UiTreeItem.vue +1 -1
  333. package/vue/chunks/UiActionBar.js +1 -1
  334. package/vue/chunks/UiAffordanceScope.js +1 -1
  335. package/vue/chunks/UiAvatar.js +1 -1
  336. package/vue/chunks/UiAvatarGroup.js +1 -1
  337. package/vue/chunks/UiBadge.js +1 -1
  338. package/vue/chunks/UiBreadcrumbItem.js +1 -1
  339. package/vue/chunks/UiBreadcrumbs.js +1 -1
  340. package/vue/chunks/UiButton.js +1 -1
  341. package/vue/chunks/UiCallout.js +1 -1
  342. package/vue/chunks/UiCard.js +1 -1
  343. package/vue/chunks/UiCheckbox.js +1 -1
  344. package/vue/chunks/UiCluster.js +1 -1
  345. package/vue/chunks/UiCombobox.js +1 -1
  346. package/vue/chunks/UiContainer.js +1 -1
  347. package/vue/chunks/UiContextMenu.js +1 -1
  348. package/vue/chunks/UiCover.js +1 -1
  349. package/vue/chunks/UiDescriptionItem.js +1 -1
  350. package/vue/chunks/UiDescriptionList.js +1 -1
  351. package/vue/chunks/UiDialog.js +1 -1
  352. package/vue/chunks/UiDisclosure.js +1 -1
  353. package/vue/chunks/UiEditable.js +1 -1
  354. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  355. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  356. package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
  357. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  358. package/vue/chunks/UiEditorSlashMenuGroup.js +1 -1
  359. package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
  360. package/vue/chunks/UiEditorSurface.js +1 -1
  361. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  362. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  363. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  364. package/vue/chunks/UiEditorToolbar.js +1 -1
  365. package/vue/chunks/UiFloatingActionButton.js +1 -1
  366. package/vue/chunks/UiFormField.js +1 -1
  367. package/vue/chunks/UiGrid.js +1 -1
  368. package/vue/chunks/UiIcon.js +1 -1
  369. package/vue/chunks/UiIconButton.js +1 -1
  370. package/vue/chunks/UiImage.js +1 -1
  371. package/vue/chunks/UiInput.js +1 -1
  372. package/vue/chunks/UiInputGroup.js +1 -1
  373. package/vue/chunks/UiList.js +1 -1
  374. package/vue/chunks/UiListItem.js +1 -1
  375. package/vue/chunks/UiListbox.js +1 -1
  376. package/vue/chunks/UiMenu.js +1 -1
  377. package/vue/chunks/UiMenuGroup.js +1 -1
  378. package/vue/chunks/UiMenuItem.js +1 -1
  379. package/vue/chunks/UiMeter.js +1 -1
  380. package/vue/chunks/UiNavItem.js +1 -1
  381. package/vue/chunks/UiPageHeader.js +1 -1
  382. package/vue/chunks/UiPopover.js +1 -1
  383. package/vue/chunks/UiRadio.js +1 -1
  384. package/vue/chunks/UiRadioGroup.js +1 -1
  385. package/vue/chunks/UiReel.js +1 -1
  386. package/vue/chunks/UiScrollArea.js +1 -1
  387. package/vue/chunks/UiSearchResultRow.js +1 -1
  388. package/vue/chunks/UiSearchShell.js +1 -1
  389. package/vue/chunks/UiSection.js +1 -1
  390. package/vue/chunks/UiSelect.js +1 -1
  391. package/vue/chunks/UiSeparator.js +1 -1
  392. package/vue/chunks/UiSidebar.js +1 -1
  393. package/vue/chunks/UiSpinner.js +1 -1
  394. package/vue/chunks/UiStack.js +1 -1
  395. package/vue/chunks/UiStatusMessage.js +1 -1
  396. package/vue/chunks/UiSwatch.js +1 -1
  397. package/vue/chunks/UiSwitch.js +1 -1
  398. package/vue/chunks/UiSwitcher.js +1 -1
  399. package/vue/chunks/UiTable.js +1 -1
  400. package/vue/chunks/UiTabs.js +1 -1
  401. package/vue/chunks/UiText.js +1 -1
  402. package/vue/chunks/UiTextarea.js +1 -1
  403. package/vue/chunks/UiToast.js +1 -1
  404. package/vue/chunks/UiToastRegion.js +1 -1
  405. package/vue/chunks/UiTooltip.js +1 -1
  406. package/vue/chunks/UiTopBar.js +1 -1
  407. package/vue/chunks/UiTree.js +1 -1
  408. package/vue/chunks/UiTreeItem.js +1 -1
  409. package/vue/components.css +3057 -22
  410. package/vue/editor/LoomaEditor.d.ts +2 -2
  411. package/vue/editor/index.js +9835 -731
  412. package/vue/host.ts +1 -1
  413. package/vue/editor/expand.d.ts +0 -7
  414. package/vue/editor/table-of-contents.d.ts +0 -7
@@ -939,12 +939,12 @@ ol:where([data-hn-ui-breadcrumbs]) {
939
939
  }
940
940
 
941
941
  /* A rounded SVG arc grows and recedes over a quiet full-circle track. */
942
- @keyframes ui-spinner-rotate-7acb6679 {
942
+ @keyframes ui-spinner-rotate-e50f176a {
943
943
  100% {
944
944
  transform: rotate(1turn);
945
945
  }
946
946
  }
947
- @keyframes ui-spinner-dash-7acb6679 {
947
+ @keyframes ui-spinner-dash-e50f176a {
948
948
  0% {
949
949
  stroke-dasharray: 1, 150;
950
950
  stroke-dashoffset: 0;
@@ -980,7 +980,7 @@ svg {
980
980
  display: block;
981
981
  inline-size: 100%;
982
982
  block-size: 100%;
983
- animation: ui-spinner-rotate-7acb6679 2s linear infinite;
983
+ animation: ui-spinner-rotate-e50f176a 2s linear infinite;
984
984
  }
985
985
  circle {
986
986
  stroke-width: 3;
@@ -993,7 +993,7 @@ circle {
993
993
  stroke: currentColor;
994
994
  stroke-dasharray: 90, 150;
995
995
  stroke-dashoffset: 0;
996
- animation: ui-spinner-dash-7acb6679 1.5s ease-in-out infinite;
996
+ animation: ui-spinner-dash-e50f176a 1.5s ease-in-out infinite;
997
997
  }
998
998
  @media (prefers-reduced-motion: reduce) {
999
999
  svg,.arc {
@@ -1777,7 +1777,7 @@ html[data-ui-input-modality="touch"]
1777
1777
  /* The label, and under it an optional line saying what the choice means. */
1778
1778
 
1779
1779
  /* Centre the tick's box and lift it slightly for the rotated check shape. */
1780
- @keyframes ui-checkbox-check-fe145372 {
1780
+ @keyframes ui-checkbox-check-ec105bae {
1781
1781
  from {
1782
1782
  opacity: 0;
1783
1783
  transform: translateY(-0.09rem) rotate(45deg) scale(0.55);
@@ -1872,7 +1872,7 @@ input:checked:where([data-hn-ui-checkbox])::after {
1872
1872
  border-width: 0 0.125rem 0.125rem 0;
1873
1873
  opacity: 1;
1874
1874
  transform: translateY(-0.09rem) rotate(45deg);
1875
- animation: ui-checkbox-check-fe145372 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1))
1875
+ animation: ui-checkbox-check-ec105bae 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1))
1876
1876
  both;
1877
1877
  }
1878
1878
  input:indeterminate:where([data-hn-ui-checkbox])::after {
@@ -3036,13 +3036,13 @@ dd:where([data-hn-ui-description-item]) {
3036
3036
  /* A CSS-drawn X. */
3037
3037
 
3038
3038
  /* A touch target, like Button on coarse pointers. */
3039
- @keyframes ui-dialog-enter-539eaebb {
3039
+ @keyframes ui-dialog-enter-c6c839fc {
3040
3040
  from {
3041
3041
  opacity: 0;
3042
3042
  transform: scale(0.96);
3043
3043
  }
3044
3044
  }
3045
- @keyframes ui-dialog-backdrop-enter-539eaebb {
3045
+ @keyframes ui-dialog-backdrop-enter-c6c839fc {
3046
3046
  from {
3047
3047
  background-color: transparent;
3048
3048
  }
@@ -3090,7 +3090,7 @@ from {
3090
3090
  pointer-events: auto;
3091
3091
  opacity: 1;
3092
3092
  transform: scale(1);
3093
- animation: ui-dialog-enter-539eaebb var(--ui-dialog-duration, var(--ui-motion-base))
3093
+ animation: ui-dialog-enter-c6c839fc var(--ui-dialog-duration, var(--ui-motion-base))
3094
3094
  var(--ui-motion-ease);
3095
3095
  }
3096
3096
  :scope[data-ui-dialog-state~="size=sm"]:where([data-hn-ui-dialog]) {
@@ -3208,7 +3208,7 @@ footer:empty:where([data-hn-ui-dialog]) {
3208
3208
  }
3209
3209
  :scope[open]:modal:where([data-hn-ui-dialog])::backdrop {
3210
3210
  background-color: var(--ui-overlay-backdrop);
3211
- animation: ui-dialog-backdrop-enter-539eaebb var(--_ui-dialog-duration, var(--ui-motion-base))
3211
+ animation: ui-dialog-backdrop-enter-c6c839fc var(--_ui-dialog-duration, var(--ui-motion-base))
3212
3212
  var(--ui-motion-ease);
3213
3213
  }
3214
3214
  :scope[open][data-ui-backdrop-hidden]:where([data-hn-ui-dialog])::backdrop {
@@ -9432,7 +9432,7 @@ input:where([data-hn-ui-switch]),input:where([data-hn-ui-switch])::after {
9432
9432
  }
9433
9433
 
9434
9434
  /* Leaving slides on down and fades; the controller removes the toast when this ends. */
9435
- @keyframes ui-toast-enter-f573d590 {
9435
+ @keyframes ui-toast-enter-ae90d81c {
9436
9436
  from {
9437
9437
  opacity: 0;
9438
9438
  transform: translateY(-1rem);
@@ -9442,7 +9442,7 @@ to {
9442
9442
  transform: translateY(0);
9443
9443
  }
9444
9444
  }
9445
- @keyframes ui-toast-exit-f573d590 {
9445
+ @keyframes ui-toast-exit-ae90d81c {
9446
9446
  from {
9447
9447
  opacity: 1;
9448
9448
  transform: translateY(0);
@@ -9452,7 +9452,7 @@ to {
9452
9452
  transform: translateY(0.75rem);
9453
9453
  }
9454
9454
  }
9455
- @keyframes ui-toast-enter-bottom-f573d590 {
9455
+ @keyframes ui-toast-enter-bottom-ae90d81c {
9456
9456
  from {
9457
9457
  opacity: 0;
9458
9458
  transform: translateY(1rem);
@@ -9462,7 +9462,7 @@ to {
9462
9462
  transform: translateY(0);
9463
9463
  }
9464
9464
  }
9465
- @keyframes ui-toast-exit-bottom-f573d590 {
9465
+ @keyframes ui-toast-exit-bottom-ae90d81c {
9466
9466
  from {
9467
9467
  opacity: 1;
9468
9468
  transform: translateY(0);
@@ -9553,7 +9553,7 @@ to {
9553
9553
  --_ui-toast-region-shadow,
9554
9554
  var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
9555
9555
  );
9556
- animation: ui-toast-enter-f573d590 var(--_ui-toast-region-enter-duration, 0.32s)
9556
+ animation: ui-toast-enter-ae90d81c var(--_ui-toast-region-enter-duration, 0.32s)
9557
9557
  var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
9558
9558
  }
9559
9559
  .toast[data-tone="info"]:where([data-hn-ui-toast-region]) {
@@ -9573,17 +9573,17 @@ to {
9573
9573
  --_ui-toast-region-tone-surface: var(--ui-danger-soft);
9574
9574
  }
9575
9575
  .toast.closing:where([data-hn-ui-toast-region]) {
9576
- animation: ui-toast-exit-f573d590 var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease)
9576
+ animation: ui-toast-exit-ae90d81c var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease)
9577
9577
  both;
9578
9578
  pointer-events: none;
9579
9579
  }
9580
9580
  :is(:scope[data-ui-toast-region-state~="placement=bottom"], :scope[data-ui-toast-region-state~="placement=bottom-start"], :scope[data-ui-toast-region-state~="placement=bottom-end"])
9581
9581
  .toast:where([data-hn-ui-toast-region]) {
9582
- animation-name: ui-toast-enter-bottom-f573d590;
9582
+ animation-name: ui-toast-enter-bottom-ae90d81c;
9583
9583
  }
9584
9584
  :is(:scope[data-ui-toast-region-state~="placement=bottom"], :scope[data-ui-toast-region-state~="placement=bottom-start"], :scope[data-ui-toast-region-state~="placement=bottom-end"])
9585
9585
  .toast.closing:where([data-hn-ui-toast-region]) {
9586
- animation-name: ui-toast-exit-bottom-f573d590;
9586
+ animation-name: ui-toast-exit-bottom-ae90d81c;
9587
9587
  }
9588
9588
  @media (prefers-reduced-motion: reduce) {
9589
9589
  .toast:where([data-hn-ui-toast-region]),.toast.closing:where([data-hn-ui-toast-region]) {
@@ -9784,7 +9784,7 @@ to {
9784
9784
  slides, the label reaches back under the icon (the controller measures how far) with its text
9785
9785
  where it was, and fades out across the gap before the icon, fully gone where the icon begins
9786
9786
  to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
9787
- @keyframes ui-tree-item-marquee-fb8daa44 {
9787
+ @keyframes ui-tree-item-marquee-9af20e85 {
9788
9788
  from {
9789
9789
  transform: translateX(0);
9790
9790
  }
@@ -10040,7 +10040,7 @@ to {
10040
10040
  .row[data-ui-marquee] > .label > .label-text:where([data-hn-ui-tree-item]) {
10041
10041
  /* Once per pass: the controller restarts it after a rest at the end, so the name holds still
10042
10042
  long enough to read rather than sliding back and forth. */
10043
- animation: ui-tree-item-marquee-fb8daa44 var(--_marquee-duration) linear 0.5s 1 normal forwards;
10043
+ animation: ui-tree-item-marquee-9af20e85 var(--_marquee-duration) linear 0.5s 1 normal forwards;
10044
10044
  will-change: transform;
10045
10045
  }
10046
10046
  .row[data-ui-marquee] > .label:where([data-hn-ui-tree-item]) {
@@ -10965,7 +10965,3042 @@ html[data-ui-input-modality="touch"]
10965
10965
  width: 3px;
10966
10966
  background: var(--ui-affordance-direct-color, var(--ui-accent-solid, #5b55d6));
10967
10967
  }
10968
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
10968
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
10969
+ @supports (-moz-appearance: none) {
10970
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
10971
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
10972
+ }
10973
+ @supports (-moz-appearance: none) {
10974
+ [data-component~="ui-button"] { --html-next-scope-owner: "ui-button" !important; }
10975
+ }
10976
+ @scope ([data-component~="ui-button"]) to ([data-component], [data-slotted]) {
10977
+ /* This component's hooks style the element they are set on, and never a nested one. */
10978
+ @property --ui-button-active-surface {
10979
+ syntax: "*";
10980
+ inherits: false;
10981
+ }
10982
+ @property --ui-button-border {
10983
+ syntax: "*";
10984
+ inherits: false;
10985
+ }
10986
+ @property --ui-button-disabled-filter {
10987
+ syntax: "*";
10988
+ inherits: false;
10989
+ }
10990
+ @property --ui-button-disabled-opacity {
10991
+ syntax: "*";
10992
+ inherits: false;
10993
+ }
10994
+ @property --ui-button-ghost-active-surface {
10995
+ syntax: "*";
10996
+ inherits: false;
10997
+ }
10998
+ @property --ui-button-ghost-hover-surface {
10999
+ syntax: "*";
11000
+ inherits: false;
11001
+ }
11002
+ @property --ui-button-ghost-text {
11003
+ syntax: "*";
11004
+ inherits: false;
11005
+ }
11006
+ @property --ui-button-hover-border {
11007
+ syntax: "*";
11008
+ inherits: false;
11009
+ }
11010
+ @property --ui-button-hover-surface {
11011
+ syntax: "*";
11012
+ inherits: false;
11013
+ }
11014
+ @property --ui-button-link-hover-text {
11015
+ syntax: "*";
11016
+ inherits: false;
11017
+ }
11018
+ @property --ui-button-link-text {
11019
+ syntax: "*";
11020
+ inherits: false;
11021
+ }
11022
+ @property --ui-button-min-block-size {
11023
+ syntax: "*";
11024
+ inherits: false;
11025
+ }
11026
+ @property --ui-button-radius {
11027
+ syntax: "*";
11028
+ inherits: false;
11029
+ }
11030
+ @property --ui-button-shadow {
11031
+ syntax: "*";
11032
+ inherits: false;
11033
+ }
11034
+ @property --ui-button-solid-shadow {
11035
+ syntax: "*";
11036
+ inherits: false;
11037
+ }
11038
+ @property --ui-button-surface {
11039
+ syntax: "*";
11040
+ inherits: false;
11041
+ }
11042
+ @property --ui-button-text {
11043
+ syntax: "*";
11044
+ inherits: false;
11045
+ }
11046
+ @property --ui-button-white-space {
11047
+ syntax: "*";
11048
+ inherits: false;
11049
+ }
11050
+
11051
+ :scope:where([data-component~="ui-button"]) {
11052
+ /* Optional inherited action-group values keep text and icon actions under the same light.
11053
+ One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
11054
+ A single ambient lift avoids stacking a face gradient or another inset bevel. */
11055
+ --_ui-action-start: 1px;
11056
+ --_ui-action-edge: var(
11057
+ --ui-action-edge,
11058
+ inset var(--_ui-action-start) 1px 0 light-dark(rgb(255 255 255 / 0.08), rgb(255 255 255 / 0.06)),
11059
+ inset calc(-1 * var(--_ui-action-start)) -1px 0 light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.08))
11060
+ );
11061
+ --_ui-action-shadow: var(--_ui-action-edge), 0 1px 2px light-dark(rgb(0 0 0 / 0.10), rgb(0 0 0 / 0.20));
11062
+ --_hue: var(--ui-accent);
11063
+ --_hue-hover: var(--ui-accent-hover);
11064
+ --_hue-active: var(--ui-accent-active);
11065
+ --_hue-text: var(--ui-accent-active);
11066
+ --_on-hue: var(--ui-on-accent);
11067
+
11068
+ --_tone: var(--_hue);
11069
+ --_tone-hover: var(--_hue-hover);
11070
+ --_tone-active: var(--_hue-active);
11071
+ --_tone-text: var(--_hue-text);
11072
+ --_on-tone: var(--_on-hue);
11073
+
11074
+ display: inline-flex;
11075
+ align-items: center;
11076
+ justify-content: center;
11077
+ column-gap: var(--ui-space-2);
11078
+ vertical-align: middle;
11079
+ color: var(--_tone-text);
11080
+ }
11081
+
11082
+ :scope:where([data-component~="ui-button"]):dir(rtl) {
11083
+ --_ui-action-start: -1px;
11084
+ }
11085
+
11086
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="align=start"] {
11087
+ justify-content: flex-start;
11088
+ text-align: start;
11089
+ }
11090
+
11091
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="stretch"] {
11092
+ display: flex;
11093
+ inline-size: 100%;
11094
+ }
11095
+
11096
+ :scope:where([data-component~="ui-button"]) {
11097
+ appearance: none;
11098
+ min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
11099
+ border-style: solid;
11100
+ border-width: var(--ui-border-width);
11101
+ border-color: var(--ui-button-border, var(--_tone));
11102
+ border-radius: var(--ui-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
11103
+ background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / 5%));
11104
+ color: var(--ui-button-text, var(--_tone-text));
11105
+ font: inherit;
11106
+ font-weight: var(--ui-font-medium);
11107
+ text-decoration: none;
11108
+ /* Unset, a button wraps as its container does. */
11109
+ white-space: var(--ui-button-white-space, inherit);
11110
+ line-height: var(--ui-line-height-tight);
11111
+ padding: var(--ui-space-2) var(--ui-space-3);
11112
+ background-image: none;
11113
+ box-shadow: var(--ui-button-shadow, var(--ui-action-shadow, var(--_ui-action-shadow)));
11114
+ cursor: pointer;
11115
+ transition:
11116
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
11117
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
11118
+ color var(--ui-motion-fast) var(--ui-motion-ease),
11119
+ box-shadow var(--ui-motion-base) var(--ui-motion-ease);
11120
+ margin: 0;
11121
+ }
11122
+
11123
+ /* An anchor keeps the boxed button look even when an app styles ordinary links. */
11124
+ :scope:where([data-component~="ui-button"]):is(a) {
11125
+ text-decoration: none;
11126
+ }
11127
+
11128
+ .spinner-wrap {
11129
+ display: inline-flex;
11130
+ flex: none;
11131
+ vertical-align: middle;
11132
+ }
11133
+
11134
+ /* A count is an adornment, not another line of label text. Keep the standard control height
11135
+ with enough inset for a 24px mark; large content can still grow the button naturally. */
11136
+ :scope:where([data-component~="ui-button"]):not([variant="link"]):has(.badge:not(:empty)) {
11137
+ padding-block: var(--ui-space-0-5);
11138
+ }
11139
+
11140
+ .badge {
11141
+ display: inline-flex;
11142
+ align-items: center;
11143
+ flex: none;
11144
+ }
11145
+
11146
+ .badge:empty {
11147
+ display: none;
11148
+ }
11149
+
11150
+ @supports (text-box-trim: trim-both) {
11151
+ :scope:where([data-component~="ui-button"]) {
11152
+ text-box-trim: trim-both;
11153
+ text-box-edge: cap alphabetic;
11154
+ }
11155
+ }
11156
+
11157
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="size=xs"] {
11158
+ min-block-size: 1.5rem;
11159
+ padding: calc(var(--ui-space-0-5) * 1.5) calc(var(--ui-space-1) * 1.25);
11160
+ font-size: var(--ui-font-size-xs);
11161
+ }
11162
+
11163
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="shape=pill"] {
11164
+ border-radius: var(--ui-button-radius, var(--ui-radius-round));
11165
+ }
11166
+
11167
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="size=sm"] {
11168
+ min-block-size: var(--ui-control-size-sm);
11169
+ padding: var(--ui-space-1) var(--ui-space-2);
11170
+ font-size: var(--ui-font-size-sm);
11171
+ }
11172
+
11173
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="size=lg"] {
11174
+ min-block-size: var(--ui-control-size-lg);
11175
+ padding: var(--ui-space-3) var(--ui-space-4);
11176
+ font-size: var(--ui-font-size-md);
11177
+ }
11178
+
11179
+ /* Card actions inherit Button's palette and behavior; only their shared layout changes.
11180
+ The icon may contain any decorative composition. Empty icons remove their column. */
11181
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"] {
11182
+ display: grid;
11183
+ grid-template-columns: auto minmax(0, 1fr) auto;
11184
+ align-content: center;
11185
+ align-items: start;
11186
+ gap: var(--ui-space-3);
11187
+ inline-size: 100%;
11188
+ min-block-size: max(var(--ui-control-min-block-size), var(--ui-control-size-md));
11189
+ text-align: start;
11190
+ white-space: normal;
11191
+ box-shadow: none;
11192
+ background-image: none;
11193
+ }
11194
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"][data-ui-button-state~="size=lg"] {
11195
+ min-block-size: max(var(--ui-control-min-block-size), var(--ui-control-size-lg));
11196
+ }
11197
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"]:has(.card-icon:empty) {
11198
+ grid-template-columns: minmax(0, 1fr) auto;
11199
+ }
11200
+ .card-icon {
11201
+ display: flex;
11202
+ align-items: flex-start;
11203
+ }
11204
+ .card-icon:empty {
11205
+ display: none;
11206
+ }
11207
+ .card-content {
11208
+ min-inline-size: 0;
11209
+ }
11210
+ .card-action {
11211
+ display: flex;
11212
+ align-items: center;
11213
+ align-self: center;
11214
+ }
11215
+
11216
+ /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
11217
+ is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
11218
+ :scope:where([data-component~="ui-button"]):hover:not(:disabled, [aria-disabled="true"]) {
11219
+ border-color: var(--ui-button-hover-border, var(--_tone-hover));
11220
+ background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
11221
+ }
11222
+
11223
+ /* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
11224
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"][data-ui-button-state~="tone=neutral"] {
11225
+ border-color: var(--ui-button-border, var(--ui-border));
11226
+ }
11227
+
11228
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"][data-ui-button-state~="tone=neutral"]:hover:not(:disabled, [aria-disabled="true"]) {
11229
+ border-color: var(--ui-button-hover-border, var(--ui-border-strong));
11230
+ }
11231
+
11232
+ /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
11233
+ :scope:where([data-component~="ui-button"]):active:not(:disabled, [aria-disabled="true"]) {
11234
+ background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
11235
+ background-image: none;
11236
+ box-shadow: var(--ui-pressed);
11237
+ }
11238
+
11239
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=solid"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=danger"] {
11240
+ border-color: var(--_tone);
11241
+ background-color: var(--_tone);
11242
+ color: var(--_on-tone);
11243
+ box-shadow: var(--ui-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow)));
11244
+ }
11245
+
11246
+ :is(:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=solid"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=danger"]):hover:not(:disabled, [aria-disabled="true"]) {
11247
+ background-color: var(--_tone-hover);
11248
+ border-color: var(--_tone-hover);
11249
+ }
11250
+
11251
+ :is(:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=solid"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=danger"]):active:not(:disabled, [aria-disabled="true"]) {
11252
+ background-color: var(--_tone-active);
11253
+ border-color: var(--_tone-active);
11254
+ background-image: none;
11255
+ box-shadow: var(--ui-pressed);
11256
+ }
11257
+
11258
+ /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
11259
+ destructive secondary action, not a special case. */
11260
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=neutral"] {
11261
+ --_hue: var(--ui-text);
11262
+ --_hue-hover: var(--ui-text);
11263
+ --_hue-active: var(--ui-text);
11264
+ --_hue-text: var(--ui-text);
11265
+ --_on-hue: var(--ui-surface);
11266
+ }
11267
+
11268
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=danger"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=danger"] {
11269
+ --_hue: var(--ui-danger);
11270
+ --_hue-hover: var(--ui-danger-hover);
11271
+ --_hue-active: var(--ui-danger-hover);
11272
+ --_hue-text: var(--ui-danger-hover);
11273
+ --_on-hue: var(--ui-on-danger);
11274
+ }
11275
+
11276
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=success"] {
11277
+ --_hue: var(--ui-success);
11278
+ --_hue-hover: color-mix(in srgb, var(--ui-success) 85%, #000);
11279
+ --_hue-active: color-mix(in srgb, var(--ui-success) 75%, #000);
11280
+ --_hue-text: color-mix(in srgb, var(--ui-success) 85%, #000);
11281
+ --_on-hue: var(--ui-surface);
11282
+ }
11283
+
11284
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=warning"] {
11285
+ --_hue: var(--ui-warning);
11286
+ --_hue-hover: color-mix(in srgb, var(--ui-warning) 85%, #000);
11287
+ --_hue-active: color-mix(in srgb, var(--ui-warning) 75%, #000);
11288
+ --_hue-text: color-mix(in srgb, var(--ui-warning) 85%, #000);
11289
+ --_on-hue: var(--ui-surface);
11290
+ }
11291
+
11292
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=info"] {
11293
+ --_hue: var(--ui-info);
11294
+ --_hue-hover: color-mix(in srgb, var(--ui-info) 85%, #000);
11295
+ --_hue-active: color-mix(in srgb, var(--ui-info) 75%, #000);
11296
+ --_hue-text: color-mix(in srgb, var(--ui-info) 85%, #000);
11297
+ --_on-hue: var(--ui-surface);
11298
+ }
11299
+
11300
+ /* A value picker is a field, with Select's quiet edge and resting lift. */
11301
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=field"] {
11302
+ --_ui-field-shadow: var(--ui-shadow-sm);
11303
+ border-color: var(--ui-button-border, var(--ui-control-border, var(--ui-border-strong)));
11304
+ border-radius: var(--ui-button-radius, var(--ui-field-radius, var(--ui-radius-md)));
11305
+ background-color: var(--ui-button-surface, var(--ui-control-surface, var(--ui-surface-elevated)));
11306
+ color: var(--ui-button-text, var(--ui-text-primary));
11307
+ font-weight: var(--ui-font-normal);
11308
+ box-shadow: var(--ui-button-shadow, var(--_ui-field-shadow));
11309
+ }
11310
+
11311
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=field"]:hover:not(:disabled, [aria-disabled="true"]) {
11312
+ border-color: var(--ui-button-hover-border, var(--ui-control-border-hover, var(--ui-text-secondary)));
11313
+ background-color: var(--ui-button-hover-surface, var(--ui-control-surface, var(--ui-surface-elevated)));
11314
+ }
11315
+
11316
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=field"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
11317
+ --_ui-field-shadow: var(--ui-pressed);
11318
+ }
11319
+
11320
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=field"]:focus-visible {
11321
+ border-color: var(--ui-control-focus, var(--ui-accent-solid));
11322
+ box-shadow:
11323
+ var(--ui-button-shadow, var(--_ui-field-shadow)),
11324
+ var(--ui-control-focus-halo-shadow);
11325
+ }
11326
+
11327
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"] {
11328
+ border-color: transparent;
11329
+ background: transparent;
11330
+ box-shadow: none;
11331
+ color: var(--ui-button-ghost-text, var(--_tone-text));
11332
+ }
11333
+
11334
+ /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
11335
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"]:hover:not(:disabled, [aria-disabled="true"]) {
11336
+ background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
11337
+ border-color: transparent;
11338
+ }
11339
+
11340
+ /* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
11341
+ edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
11342
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
11343
+ background-color: var(--ui-button-ghost-active-surface, color-mix(in oklch, var(--ui-surface), var(--_tone) 3%));
11344
+ border-color: transparent;
11345
+ box-shadow: inset 0 0 0 1px oklch(from var(--_tone) l c h / 10%), inset 0 1px 2px oklch(from var(--_tone) l c h / 8%);
11346
+ }
11347
+
11348
+ /* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
11349
+ :scope:where([data-component~="ui-button"]):focus-visible {
11350
+ outline: none;
11351
+ box-shadow:
11352
+ var(--ui-button-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
11353
+ var(--ui-focus-halo);
11354
+ }
11355
+
11356
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=solid"]:focus-visible {
11357
+ box-shadow:
11358
+ var(--ui-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
11359
+ var(--ui-focus-halo);
11360
+ }
11361
+
11362
+ :is(:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"]):focus-visible {
11363
+ box-shadow: var(--ui-focus-halo);
11364
+ }
11365
+
11366
+ /* A loading action stays visually active; only an explicitly disabled action takes the
11367
+ neutral disabled palette. Its flat surface and muted ink make the state unambiguous. */
11368
+ :scope:where([data-component~="ui-button"]):is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
11369
+ border-color: var(--ui-disabled-border);
11370
+ background-color: var(--ui-disabled-surface);
11371
+ color: var(--ui-disabled-text);
11372
+ filter: var(--ui-button-disabled-filter, var(--ui-disabled-filter));
11373
+ opacity: var(--ui-button-disabled-opacity, 1);
11374
+ cursor: not-allowed;
11375
+ background-image: none;
11376
+ box-shadow: none;
11377
+ }
11378
+
11379
+ :is(:scope:where([data-component~="ui-button"])[data-ui-button-state~="loading"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="pending"]):focus-visible {
11380
+ box-shadow: var(--ui-focus-halo);
11381
+ }
11382
+
11383
+ /* Ghost keeps no border, but gains the same neutral surface as other disabled buttons. */
11384
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
11385
+ background-color: var(--ui-disabled-surface);
11386
+ border-color: transparent;
11387
+ }
11388
+
11389
+ /* The size states outrank :host, so sm is named too, or a small button would stay small. */
11390
+ @media (pointer: coarse) {
11391
+ :scope:where([data-component~="ui-button"]), :scope:where([data-component~="ui-button"])[data-ui-button-state~="size=sm"] {
11392
+ min-block-size: var(--ui-control-min-block-size);
11393
+ }
11394
+ }
11395
+
11396
+ /* Under touch, a link-style button's press lands within the control minimum: an invisible hit
11397
+ area, centred on it, like IconButton's. A boxed button grows to the minimum itself (below);
11398
+ a link-style one keeps its text size, so a standalone one ("See all" under a list) needs the
11399
+ area. xs sits inside a line of text the same way, so it keeps its size and gains the area too.
11400
+ Only these need it: a hit area on every button would reach over its neighbours. */
11401
+ html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"],
11402
+ html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-button"])[data-ui-button-state~="size=xs"] {
11403
+ position: relative;
11404
+ }
11405
+
11406
+ html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]::after,
11407
+ html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-button"])[data-ui-button-state~="size=xs"]::after {
11408
+ position: absolute;
11409
+ inset: 50% auto auto 50%;
11410
+ inline-size: max(100%, var(--ui-control-min-block-size));
11411
+ block-size: max(100%, var(--ui-control-min-block-size));
11412
+ transform: translate(-50%, -50%);
11413
+ content: "";
11414
+ }
11415
+
11416
+ /* Link: an inline text action. No box, padding, or minimum height (inline targets are exempt under
11417
+ WCAG 2.5.8); the inherited font; an underline that strengthens on hover; a visible focus ring. */
11418
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"] {
11419
+ display: inline;
11420
+ min-block-size: 0;
11421
+ padding: 0;
11422
+ border: 0;
11423
+ border-radius: var(--ui-radius-sm);
11424
+ background: none;
11425
+ box-shadow: none;
11426
+ font: inherit;
11427
+ color: var(--ui-button-link-text, var(--ui-text-secondary));
11428
+ text-decoration-line: underline;
11429
+ text-decoration-thickness: 1px;
11430
+ text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
11431
+ text-underline-offset: 0.2em;
11432
+ transition: color var(--ui-motion-fast) var(--ui-motion-ease), text-decoration-color var(--ui-motion-fast) var(--ui-motion-ease);
11433
+ }
11434
+
11435
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]:hover:not(:disabled, [aria-disabled="true"]) {
11436
+ color: var(--ui-button-link-hover-text, var(--ui-text-primary));
11437
+ text-decoration-color: currentColor;
11438
+ background: none;
11439
+ transform: none;
11440
+ }
11441
+
11442
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]:active:not(:disabled, [aria-disabled="true"]) {
11443
+ background: none;
11444
+ transform: none;
11445
+ }
11446
+
11447
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
11448
+ background: none;
11449
+ border-color: transparent;
11450
+ }
11451
+
11452
+ :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]:focus-visible {
11453
+ box-shadow: none;
11454
+ /* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
11455
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
11456
+ outline-offset: var(--ui-focus-width);
11457
+ }
11458
+
11459
+ /* A component that sets its display still honours the hidden attribute on its root. */
11460
+ :scope:where([data-component~="ui-button"])[hidden] {
11461
+ display: none;
11462
+ }
11463
+ }
11464
+ @scope ([data-component~="ui-button"]) to ([data-component]) {
11465
+ /* This component's hooks style the element they are set on, and never a nested one. */
11466
+
11467
+ /* An anchor keeps the boxed button look even when an app styles ordinary links. */
11468
+
11469
+ /* A count is an adornment, not another line of label text. Keep the standard control height
11470
+ with enough inset for a 24px mark; large content can still grow the button naturally. */
11471
+
11472
+ @supports (text-box-trim: trim-both) {
11473
+ }
11474
+
11475
+ /* Card actions inherit Button's palette and behavior; only their shared layout changes.
11476
+ The icon may contain any decorative composition. Empty icons remove their column. */
11477
+
11478
+ /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
11479
+ is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
11480
+
11481
+ /* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
11482
+
11483
+ /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
11484
+
11485
+ /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
11486
+ destructive secondary action, not a special case. */
11487
+
11488
+ /* A value picker is a field, with Select's quiet edge and resting lift. */
11489
+
11490
+ /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
11491
+
11492
+ /* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
11493
+ edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
11494
+
11495
+ /* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
11496
+
11497
+ /* A loading action stays visually active; only an explicitly disabled action takes the
11498
+ neutral disabled palette. Its flat surface and muted ink make the state unambiguous. */
11499
+
11500
+ /* Ghost keeps no border, but gains the same neutral surface as other disabled buttons. */
11501
+
11502
+ /* The size states outrank :host, so sm is named too, or a small button would stay small. */
11503
+ @media (pointer: coarse) {
11504
+ }
11505
+
11506
+ /* Under touch, a link-style button's press lands within the control minimum: an invisible hit
11507
+ area, centred on it, like IconButton's. A boxed button grows to the minimum itself (below);
11508
+ a link-style one keeps its text size, so a standalone one ("See all" under a list) needs the
11509
+ area. xs sits inside a line of text the same way, so it keeps its size and gains the area too.
11510
+ Only these need it: a hit area on every button would reach over its neighbours. */
11511
+
11512
+ /* Link: an inline text action. No box, padding, or minimum height (inline targets are exempt under
11513
+ WCAG 2.5.8); the inherited font; an underline that strengthens on hover; a visible focus ring. */
11514
+
11515
+ /* A component that sets its display still honours the hidden attribute on its root. */
11516
+ }
11517
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
11518
+ @supports (-moz-appearance: none) {
11519
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11520
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
11521
+ }
11522
+ @supports (-moz-appearance: none) {
11523
+ [data-component~="ui-cluster"] { --html-next-scope-owner: "ui-cluster" !important; }
11524
+ }
11525
+ @scope ([data-component~="ui-cluster"]) to ([data-component], [data-slotted]) {
11526
+ /* This component's hooks style the element they are set on, and never a nested one. */
11527
+ @property --ui-cluster-gap {
11528
+ syntax: "*";
11529
+ inherits: false;
11530
+ }
11531
+
11532
+ :scope:where([data-component~="ui-cluster"]) {
11533
+ --_layout-gap: var(--ui-space-3);
11534
+ display: flex;
11535
+ flex-wrap: wrap;
11536
+ align-items: center;
11537
+ gap: var(--ui-cluster-gap, var(--_layout-gap));
11538
+ min-inline-size: 0;
11539
+ max-inline-size: 100%;
11540
+ margin: 0;
11541
+ }
11542
+
11543
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="fixed"] {
11544
+ flex: none;
11545
+ }
11546
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="padding=s"] {
11547
+ padding: var(--ui-space-2);
11548
+ }
11549
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="padding=m"] {
11550
+ padding: var(--ui-space-3);
11551
+ }
11552
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="padding=l"] {
11553
+ padding: var(--ui-space-4);
11554
+ }
11555
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="paddingEnd=s"] {
11556
+ padding-inline-end: var(--ui-space-2);
11557
+ }
11558
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="paddingEnd=m"] {
11559
+ padding-inline-end: var(--ui-space-3);
11560
+ }
11561
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="paddingEnd=l"] {
11562
+ padding-inline-end: var(--ui-space-4);
11563
+ }
11564
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="paddingEnd=xl"] {
11565
+ padding-inline-end: calc(var(--ui-space-4) * 4);
11566
+ }
11567
+
11568
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=xs"] {
11569
+ --_layout-gap: var(--ui-space-2);
11570
+ }
11571
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=s"] {
11572
+ --_layout-gap: var(--ui-space-3);
11573
+ }
11574
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=m"] {
11575
+ --_layout-gap: var(--ui-space-4);
11576
+ }
11577
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=l"] {
11578
+ --_layout-gap: var(--ui-space-5);
11579
+ }
11580
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=xl"] {
11581
+ --_layout-gap: var(--ui-space-6);
11582
+ }
11583
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="align=start"] {
11584
+ align-items: flex-start;
11585
+ }
11586
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="align=end"] {
11587
+ align-items: flex-end;
11588
+ }
11589
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="align=baseline"] {
11590
+ align-items: baseline;
11591
+ }
11592
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="align=stretch"] {
11593
+ align-items: stretch;
11594
+ }
11595
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="justify=center"] {
11596
+ justify-content: center;
11597
+ }
11598
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="justify=end"] {
11599
+ justify-content: flex-end;
11600
+ }
11601
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="justify=between"] {
11602
+ justify-content: space-between;
11603
+ }
11604
+ :scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="wrap=nowrap"] {
11605
+ flex-wrap: nowrap;
11606
+ }
11607
+
11608
+ /* A component that sets its display still honours the hidden attribute on its root. */
11609
+ :scope:where([data-component~="ui-cluster"])[hidden] {
11610
+ display: none;
11611
+ }
11612
+ }
11613
+ @scope ([data-component~="ui-cluster"]) to ([data-component]) {
11614
+ /* This component's hooks style the element they are set on, and never a nested one. */
11615
+
11616
+ /* A component that sets its display still honours the hidden attribute on its root. */
11617
+ }
11618
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
11619
+ @supports (-moz-appearance: none) {
11620
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11621
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
11622
+ }
11623
+ @supports (-moz-appearance: none) {
11624
+ [data-component~="ui-form-field"] { --html-next-scope-owner: "ui-form-field" !important; }
11625
+ }
11626
+ @scope ([data-component~="ui-form-field"]) to ([data-component], [data-slotted]) {
11627
+ /* This component's hooks style the element they are set on, and never a nested one. */
11628
+ @property --ui-form-field-danger {
11629
+ syntax: "*";
11630
+ inherits: false;
11631
+ }
11632
+ @property --ui-form-field-help-font-size {
11633
+ syntax: "*";
11634
+ inherits: false;
11635
+ }
11636
+ @property --ui-form-field-help-min-block-size {
11637
+ syntax: "*";
11638
+ inherits: false;
11639
+ }
11640
+ @property --ui-form-field-help-text {
11641
+ syntax: "*";
11642
+ inherits: false;
11643
+ }
11644
+ @property --ui-form-field-label-font-size {
11645
+ syntax: "*";
11646
+ inherits: false;
11647
+ }
11648
+ @property --ui-form-field-label-text {
11649
+ syntax: "*";
11650
+ inherits: false;
11651
+ }
11652
+ @property --ui-form-field-min-inline-size {
11653
+ syntax: "*";
11654
+ inherits: false;
11655
+ }
11656
+
11657
+ :scope:where([data-component~="ui-form-field"]) {
11658
+ /* Hooks do not inherit, so the parts below read them from the root. */
11659
+ --_ui-form-field-danger: var(--ui-form-field-danger);
11660
+ --_ui-form-field-help-min-block-size: var(--ui-form-field-help-min-block-size);
11661
+ --_ui-form-field-label-text: var(--ui-form-field-label-text);
11662
+ --_ui-form-field-label-font-size: var(--ui-form-field-label-font-size);
11663
+ --_ui-form-field-help-text: var(--ui-form-field-help-text);
11664
+ --_ui-form-field-help-font-size: var(--ui-form-field-help-font-size);
11665
+
11666
+ display: grid;
11667
+ gap: var(--ui-space-2);
11668
+ min-inline-size: var(--ui-form-field-min-inline-size, 0);
11669
+ align-content: start;
11670
+ color: var(--ui-text-primary);
11671
+ }
11672
+
11673
+ /* Each named region styles whatever fills it, however it was slotted (slot="…" in HTML, #label
11674
+ in Vue), and generates no box of its own, so an empty region adds no gap. */
11675
+ .label,
11676
+ .help,
11677
+ .error {
11678
+ display: contents;
11679
+ }
11680
+
11681
+ .label {
11682
+ color: var(--_ui-form-field-label-text, var(--ui-text-secondary));
11683
+ font-size: var(--_ui-form-field-label-font-size, var(--ui-font-size-sm));
11684
+ }
11685
+
11686
+ /* A label action, such as a small help button, sits after the label text in a box one line
11687
+ tall, centred on the first line and overflowing it. A button taller than a line of label
11688
+ text then never makes this field's label row taller than its neighbours' in a grid row. */
11689
+ .label:has(> .label-action > *) {
11690
+ display: flex;
11691
+ align-items: start;
11692
+ gap: var(--ui-space-1);
11693
+ }
11694
+
11695
+ .label-action {
11696
+ display: flex;
11697
+ align-items: unsafe center;
11698
+ block-size: 1lh;
11699
+ }
11700
+
11701
+ .label-action:not(:has(> *)) {
11702
+ display: none;
11703
+ }
11704
+
11705
+ .help {
11706
+ color: var(--_ui-form-field-help-text, var(--ui-text-muted));
11707
+ font-size: var(--_ui-form-field-help-font-size, var(--ui-font-size-sm));
11708
+ line-height: var(--ui-line-height-md);
11709
+ }
11710
+
11711
+ .error {
11712
+ display: none;
11713
+ }
11714
+
11715
+ :scope:where([data-component~="ui-form-field"])[data-ui-form-field-state~="invalid"] .error {
11716
+ display: contents;
11717
+ }
11718
+
11719
+ /* An error reads in the danger colour, the one the invalid control's border takes. */
11720
+
11721
+ /* A component that sets its display still honours the hidden attribute on its root. */
11722
+ :scope:where([data-component~="ui-form-field"])[hidden] {
11723
+ display: none;
11724
+ }
11725
+ }
11726
+ @scope ([data-component~="ui-form-field"]) to ([data-component]) {
11727
+ /* This component's hooks style the element they are set on, and never a nested one. */
11728
+
11729
+ /* Each named region styles whatever fills it, however it was slotted (slot="…" in HTML, #label
11730
+ in Vue), and generates no box of its own, so an empty region adds no gap. */
11731
+
11732
+ /* A label action, such as a small help button, sits after the label text in a box one line
11733
+ tall, centred on the first line and overflowing it. A button taller than a line of label
11734
+ text then never makes this field's label row taller than its neighbours' in a grid row. */
11735
+
11736
+ .help > :where([data-slotted], [data-slotted] *):is(*) {
11737
+ min-block-size: var(--_ui-form-field-help-min-block-size, 0);
11738
+ }
11739
+
11740
+ /* An error reads in the danger colour, the one the invalid control's border takes. */
11741
+ .error,
11742
+ :where([data-slotted], [data-slotted] *):is([role="alert"]) {
11743
+ color: var(--_ui-form-field-danger, var(--ui-field-danger, var(--ui-danger)));
11744
+ font-size: var(--ui-font-size-sm);
11745
+ }
11746
+
11747
+ /* A component that sets its display still honours the hidden attribute on its root. */
11748
+ }
11749
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
11750
+ @supports (-moz-appearance: none) {
11751
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11752
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
11753
+ }
11754
+ @supports (-moz-appearance: none) {
11755
+ [data-component~="ui-icon"] { --html-next-scope-owner: "ui-icon" !important; }
11756
+ }
11757
+ @scope ([data-component~="ui-icon"]) to ([data-component], [data-slotted]) {
11758
+ /* This component's hooks style the element they are set on, and never a nested one. */
11759
+ @property --ui-icon-size {
11760
+ syntax: "*";
11761
+ inherits: false;
11762
+ }
11763
+ @property --ui-icon-stroke-width {
11764
+ syntax: "*";
11765
+ inherits: false;
11766
+ }
11767
+
11768
+ :scope:where([data-component~="ui-icon"]) {
11769
+ /* Hooks do not inherit, so the svg reads the stroke from the root. A Looma component that
11770
+ sizes the icons it renders sets --_ui-default-icon-*, which the icon's own hooks override. */
11771
+ --_ui-icon-stroke-width: var(--ui-icon-stroke-width, var(--_ui-default-icon-stroke-width));
11772
+
11773
+ display: inline-flex;
11774
+ flex: none;
11775
+ inline-size: var(--ui-icon-size, var(--_ui-default-icon-size, 1em));
11776
+ block-size: var(--ui-icon-size, var(--_ui-default-icon-size, 1em));
11777
+ }
11778
+
11779
+ svg {
11780
+ inline-size: 100%;
11781
+ block-size: 100%;
11782
+ stroke-width: var(--_ui-icon-stroke-width, 2);
11783
+ }
11784
+
11785
+ /* A component that sets its display still honours the hidden attribute on its root. */
11786
+ :scope:where([data-component~="ui-icon"])[hidden] {
11787
+ display: none;
11788
+ }
11789
+ }
11790
+ @scope ([data-component~="ui-icon"]) to ([data-component]) {
11791
+ /* This component's hooks style the element they are set on, and never a nested one. */
11792
+
11793
+ /* A component that sets its display still honours the hidden attribute on its root. */
11794
+ }
11795
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
11796
+ @supports (-moz-appearance: none) {
11797
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11798
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
11799
+ }
11800
+ @supports (-moz-appearance: none) {
11801
+ [data-component~="ui-icon-button"] { --html-next-scope-owner: "ui-icon-button" !important; }
11802
+ }
11803
+ @scope ([data-component~="ui-icon-button"]) to ([data-component], [data-slotted]) {
11804
+ /* This component's hooks style the element they are set on, and never a nested one. */
11805
+ @property --ui-icon-button-active-scale {
11806
+ syntax: "*";
11807
+ inherits: false;
11808
+ }
11809
+ @property --ui-icon-button-active-surface {
11810
+ syntax: "*";
11811
+ inherits: false;
11812
+ }
11813
+ @property --ui-icon-button-border {
11814
+ syntax: "*";
11815
+ inherits: false;
11816
+ }
11817
+ @property --ui-icon-button-disabled-filter {
11818
+ syntax: "*";
11819
+ inherits: false;
11820
+ }
11821
+ @property --ui-icon-button-disabled-opacity {
11822
+ syntax: "*";
11823
+ inherits: false;
11824
+ }
11825
+ @property --ui-icon-button-hover-border {
11826
+ syntax: "*";
11827
+ inherits: false;
11828
+ }
11829
+ @property --ui-icon-button-hover-surface {
11830
+ syntax: "*";
11831
+ inherits: false;
11832
+ }
11833
+ @property --ui-icon-button-hover-text {
11834
+ syntax: "*";
11835
+ inherits: false;
11836
+ }
11837
+ @property --ui-icon-button-icon-size {
11838
+ syntax: "*";
11839
+ inherits: false;
11840
+ }
11841
+ @property --ui-icon-button-icon-stroke-width {
11842
+ syntax: "*";
11843
+ inherits: false;
11844
+ }
11845
+ @property --ui-icon-button-outline-surface {
11846
+ syntax: "*";
11847
+ inherits: false;
11848
+ }
11849
+ @property --ui-icon-button-outline-text {
11850
+ syntax: "*";
11851
+ inherits: false;
11852
+ }
11853
+ @property --ui-icon-button-radius {
11854
+ syntax: "*";
11855
+ inherits: false;
11856
+ }
11857
+ @property --ui-icon-button-size {
11858
+ syntax: "*";
11859
+ inherits: false;
11860
+ }
11861
+ @property --ui-icon-button-solid-hover-surface {
11862
+ syntax: "*";
11863
+ inherits: false;
11864
+ }
11865
+ @property --ui-icon-button-solid-shadow {
11866
+ syntax: "*";
11867
+ inherits: false;
11868
+ }
11869
+ @property --ui-icon-button-solid-surface {
11870
+ syntax: "*";
11871
+ inherits: false;
11872
+ }
11873
+ @property --ui-icon-button-solid-text {
11874
+ syntax: "*";
11875
+ inherits: false;
11876
+ }
11877
+ @property --ui-icon-button-surface {
11878
+ syntax: "*";
11879
+ inherits: false;
11880
+ }
11881
+
11882
+ :scope:where([data-component~="ui-icon-button"]) {
11883
+ /* Optional inherited action-group values keep text and icon actions under the same light.
11884
+ One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
11885
+ A single ambient lift avoids stacking a face gradient or another inset bevel. */
11886
+ --_ui-action-start: 1px;
11887
+ --_ui-action-edge: var(
11888
+ --ui-action-edge,
11889
+ inset var(--_ui-action-start) 1px 0 light-dark(rgb(255 255 255 / 0.08), rgb(255 255 255 / 0.06)),
11890
+ inset calc(-1 * var(--_ui-action-start)) -1px 0 light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.08))
11891
+ );
11892
+ --_ui-action-shadow: var(--_ui-action-edge), 0 1px 2px light-dark(rgb(0 0 0 / 0.10), rgb(0 0 0 / 0.20));
11893
+ /* Hooks do not inherit, so the parts below read them from the root. */
11894
+ --_ui-icon-button-icon-size: var(--ui-icon-button-icon-size);
11895
+ --_ui-icon-button-icon-stroke-width: var(--ui-icon-button-icon-stroke-width);
11896
+
11897
+ display: inline-flex;
11898
+ color: var(--ui-text-secondary);
11899
+ }
11900
+
11901
+ :scope:where([data-component~="ui-icon-button"]):dir(rtl) {
11902
+ --_ui-action-start: -1px;
11903
+ }
11904
+
11905
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="tone=accent"] {
11906
+ --_icon-button-border: var(--ui-accent-solid);
11907
+ --_icon-button-hover-border: var(--ui-accent-hover);
11908
+ --_icon-button-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
11909
+ --_icon-button-outline-surface: color-mix(in srgb, var(--ui-accent-solid) 5%, var(--ui-surface-default));
11910
+ color: var(--_icon-button-text);
11911
+ }
11912
+
11913
+ /* Omitted tone retains the existing accent solid; explicit neutral is additive. */
11914
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="tone=neutral"] {
11915
+ --_icon-button-solid-surface: var(--ui-text-primary);
11916
+ --_icon-button-solid-hover-surface: var(--ui-text-primary);
11917
+ --_icon-button-solid-text: var(--ui-surface-default);
11918
+ }
11919
+
11920
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"] {
11921
+ position: relative;
11922
+ }
11923
+
11924
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]::before {
11925
+ content: "";
11926
+ position: absolute;
11927
+ inset: 50% auto auto 50%;
11928
+ z-index: 1;
11929
+ inline-size: var(--ui-affordance-guide-size);
11930
+ block-size: var(--ui-affordance-guide-size);
11931
+ border-radius: var(--ui-radius-round);
11932
+ background: var(--ui-affordance-guide-color, var(--ui-border-strong));
11933
+ opacity: calc(var(--ui-affordance-guide-opacity) * var(--ui-affordance-scope-guide, 1));
11934
+ transform: translate(-50%, -50%);
11935
+ transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
11936
+ pointer-events: none;
11937
+ }
11938
+
11939
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"][data-ui-icon-button-state~="guide=bar"]::before {
11940
+ inline-size: 2px;
11941
+ block-size: 20px;
11942
+ background: var(--ui-border-strong);
11943
+ opacity: 1;
11944
+ }
11945
+
11946
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:disabled::before {
11947
+ opacity: 0;
11948
+ }
11949
+
11950
+ /* At rest an anticipatory button shows only its guide dot. The icon grows into place when
11951
+ proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
11952
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"] .content {
11953
+ opacity: 1;
11954
+ transform: scale(1);
11955
+ transition: opacity var(--ui-motion-fast) var(--ui-motion-ease), transform calc(var(--ui-motion-fast) * 2) cubic-bezier(0.2, 1.4, 0.35, 1);
11956
+ }
11957
+
11958
+ @media (hover: hover) and (pointer: fine) {
11959
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:not(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible) {
11960
+ border-color: transparent;
11961
+ background-color: transparent;
11962
+ box-shadow: none;
11963
+ }
11964
+
11965
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:not(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)
11966
+ .content {
11967
+ opacity: 0;
11968
+ transform: scale(0.65);
11969
+ transition-duration: var(--ui-motion-fast);
11970
+ }
11971
+ }
11972
+
11973
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"], [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
11974
+ opacity: 0;
11975
+ }
11976
+
11977
+ :scope:where([data-component~="ui-icon-button"]) {
11978
+ /* The size prop resolves here; --ui-icon-button-size overrides it on an element. */
11979
+ --_size: 2rem;
11980
+ appearance: none;
11981
+ inline-size: var(--ui-icon-button-size, var(--_size));
11982
+ block-size: var(--ui-icon-button-size, var(--_size));
11983
+ min-inline-size: var(--ui-icon-button-size, var(--_size));
11984
+ min-block-size: var(--ui-icon-button-size, var(--_size));
11985
+ padding: 0;
11986
+ margin: 0;
11987
+ border: var(--ui-border-width) solid transparent;
11988
+ border-radius: var(--ui-icon-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
11989
+ background-color: var(--ui-icon-button-surface, transparent);
11990
+ color: inherit;
11991
+ display: inline-flex;
11992
+ align-items: center;
11993
+ justify-content: center;
11994
+ cursor: pointer;
11995
+ transition:
11996
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
11997
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
11998
+ color var(--ui-motion-fast) var(--ui-motion-ease),
11999
+ box-shadow var(--ui-motion-base) var(--ui-motion-ease),
12000
+ scale var(--ui-motion-fast) var(--ui-motion-ease);
12001
+ }
12002
+
12003
+ @media (hover: none), (pointer: coarse) {
12004
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]::before {
12005
+ opacity: 0;
12006
+ }
12007
+ }
12008
+
12009
+ /* A touch target without a bigger button: an invisible hit area, at least the control
12010
+ minimum, centred on the button (::before is the anticipatory guide). */
12011
+ @media (pointer: coarse) {
12012
+ :scope:where([data-component~="ui-icon-button"]) {
12013
+ position: relative;
12014
+ }
12015
+
12016
+ :scope:where([data-component~="ui-icon-button"])::after {
12017
+ content: "";
12018
+ position: absolute;
12019
+ inset: 50% auto auto 50%;
12020
+ inline-size: max(100%, var(--ui-control-min-block-size));
12021
+ block-size: max(100%, var(--ui-control-min-block-size));
12022
+ transform: translate(-50%, -50%);
12023
+ }
12024
+ }
12025
+
12026
+ html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-icon-button"]) {
12027
+ position: relative;
12028
+ }
12029
+
12030
+ html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-icon-button"])::after {
12031
+ content: "";
12032
+ position: absolute;
12033
+ inset: 50% auto auto 50%;
12034
+ inline-size: max(100%, var(--ui-control-min-block-size));
12035
+ block-size: max(100%, var(--ui-control-min-block-size));
12036
+ transform: translate(-50%, -50%);
12037
+ }
12038
+
12039
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="size=sm"] {
12040
+ --_size: 1.75rem;
12041
+ inline-size: var(--ui-icon-button-size, var(--_size));
12042
+ block-size: var(--ui-icon-button-size, var(--_size));
12043
+ min-inline-size: var(--ui-icon-button-size, var(--_size));
12044
+ min-block-size: var(--ui-icon-button-size, var(--_size));
12045
+ }
12046
+
12047
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="size=lg"] {
12048
+ --_size: 2.5rem;
12049
+ inline-size: var(--ui-icon-button-size, var(--_size));
12050
+ block-size: var(--ui-icon-button-size, var(--_size));
12051
+ min-inline-size: var(--ui-icon-button-size, var(--_size));
12052
+ min-block-size: var(--ui-icon-button-size, var(--_size));
12053
+ }
12054
+
12055
+ /* A text button's companion uses control geometry; compact icon buttons keep their own density. */
12056
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="matchButton"] {
12057
+ --_size: var(--ui-control-size-md);
12058
+ block-size: auto;
12059
+ align-self: stretch;
12060
+ }
12061
+
12062
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=sm"] {
12063
+ --_size: var(--ui-control-size-sm);
12064
+ }
12065
+
12066
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=lg"] {
12067
+ --_size: var(--ui-control-size-lg);
12068
+ }
12069
+
12070
+ @media (pointer: coarse) {
12071
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="matchButton"] {
12072
+ inline-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
12073
+ min-inline-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
12074
+ min-block-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
12075
+ }
12076
+ }
12077
+
12078
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="round"] {
12079
+ border-radius: var(--ui-radius-round);
12080
+ }
12081
+
12082
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"] {
12083
+ border-color: var(--ui-icon-button-border, var(--_icon-button-border, var(--ui-control-border, var(--ui-border-strong))));
12084
+ background-color: var(--ui-icon-button-outline-surface, var(--_icon-button-outline-surface, var(--ui-surface-default)));
12085
+ background-image: none;
12086
+ color: var(--ui-icon-button-outline-text, var(--_icon-button-text, var(--ui-text-primary)));
12087
+ box-shadow: var(--ui-action-shadow, var(--_ui-action-shadow));
12088
+ }
12089
+
12090
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"] {
12091
+ background-color: var(--ui-icon-button-solid-surface, var(--_icon-button-solid-surface, var(--ui-accent-solid)));
12092
+ background-image: none;
12093
+ color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
12094
+ box-shadow: var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow)));
12095
+ }
12096
+
12097
+ :scope:where([data-component~="ui-icon-button"]):hover:enabled:not([aria-disabled="true"]) {
12098
+ /* Derived from the text colour so the ghost hover shows on any background. */
12099
+ background-color: var(--ui-icon-button-hover-surface, color-mix(in srgb, currentColor 8%, transparent));
12100
+ color: var(--ui-icon-button-hover-text, var(--_icon-button-text, var(--ui-text-primary)));
12101
+ }
12102
+
12103
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"]:hover:enabled:not([aria-disabled="true"]) {
12104
+ border-color: var(--ui-icon-button-hover-border, var(--_icon-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border))));
12105
+ }
12106
+
12107
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"]:hover:enabled:not([aria-disabled="true"]) {
12108
+ background-color: var(--ui-icon-button-solid-hover-surface, var(--_icon-button-solid-hover-surface, var(--ui-accent-hover)));
12109
+ }
12110
+
12111
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=accent"]:hover:enabled:not([aria-disabled="true"]),
12112
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=neutral"]:hover:enabled:not([aria-disabled="true"]) {
12113
+ color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
12114
+ }
12115
+
12116
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=ghost"][aria-expanded="true"]:enabled:not([aria-disabled="true"]) {
12117
+ background-color: var(--ui-icon-button-active-surface, color-mix(in srgb, currentColor 16%, transparent));
12118
+ color: var(--ui-icon-button-hover-text, var(--_icon-button-text, var(--ui-text-primary)));
12119
+ box-shadow: var(--ui-pressed);
12120
+ }
12121
+
12122
+ /* Native toggle state persists after pointer release, including during loading. */
12123
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled {
12124
+ background-color: var(--ui-icon-button-active-surface, color-mix(in srgb, currentColor 12%, var(--ui-surface-default)));
12125
+ background-image: none;
12126
+ box-shadow: var(--ui-pressed);
12127
+ }
12128
+
12129
+ :scope:where([data-component~="ui-icon-button"]):active:enabled:not([aria-disabled="true"]) {
12130
+ scale: var(--ui-icon-button-active-scale, 0.96);
12131
+ }
12132
+
12133
+ :is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"]) {
12134
+ cursor: progress;
12135
+ }
12136
+
12137
+ .content {
12138
+ display: inline-flex;
12139
+ align-items: center;
12140
+ justify-content: center;
12141
+ }
12142
+
12143
+ :is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"]) .content {
12144
+ display: none;
12145
+ }
12146
+
12147
+ @media (prefers-reduced-motion: reduce) {
12148
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"] .content {
12149
+ transition: none;
12150
+ }
12151
+ }
12152
+
12153
+ :scope:where([data-component~="ui-icon-button"]):focus-visible {
12154
+ outline: none;
12155
+ box-shadow: var(--ui-focus-halo);
12156
+ }
12157
+
12158
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"]:focus-visible {
12159
+ box-shadow:
12160
+ var(--ui-action-shadow, var(--_ui-action-shadow)),
12161
+ var(--ui-focus-halo);
12162
+ }
12163
+
12164
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"]:focus-visible {
12165
+ box-shadow:
12166
+ var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
12167
+ var(--ui-focus-halo);
12168
+ }
12169
+
12170
+ :scope:where([data-component~="ui-icon-button"]):is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"]):active:enabled:not([aria-disabled="true"]) {
12171
+ background-image: none;
12172
+ box-shadow: var(--ui-pressed);
12173
+ }
12174
+
12175
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible {
12176
+ box-shadow:
12177
+ var(--ui-pressed),
12178
+ var(--ui-focus-halo);
12179
+ }
12180
+
12181
+ @media (forced-colors: active) {
12182
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled {
12183
+ outline: var(--ui-focus-width) solid Highlight;
12184
+ outline-offset: calc(-2 * var(--ui-focus-width));
12185
+ }
12186
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible {
12187
+ outline-offset: var(--ui-focus-width);
12188
+ }
12189
+ }
12190
+
12191
+ /* Disabled is a flat neutral control, independent of the active variant's tone. */
12192
+ :scope:where([data-component~="ui-icon-button"]):disabled {
12193
+ border-color: var(--ui-disabled-border);
12194
+ background-color: var(--ui-disabled-surface);
12195
+ color: var(--ui-disabled-text);
12196
+ filter: var(--ui-icon-button-disabled-filter, var(--ui-disabled-filter));
12197
+ opacity: var(--ui-icon-button-disabled-opacity, 1);
12198
+ cursor: not-allowed;
12199
+ box-shadow: none;
12200
+ background-image: none;
12201
+ }
12202
+
12203
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=ghost"]:disabled {
12204
+ border-color: transparent;
12205
+ }
12206
+
12207
+ :scope:where([data-component~="ui-icon-button"]) {
12208
+ --_icon-button-icon-default: var(--ui-icon-size-md);
12209
+ /* A slotted ui-icon is its own component, out of reach of the svg rule below; these are its
12210
+ defaults, which its own --ui-icon-* hooks still override. */
12211
+ --_ui-default-icon-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
12212
+ --_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
12213
+ }
12214
+
12215
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="size=sm"] {
12216
+ --_icon-button-icon-default: var(--ui-icon-size-sm);
12217
+ }
12218
+
12219
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="size=lg"] {
12220
+ --_icon-button-icon-default: var(--ui-icon-size-lg);
12221
+ }
12222
+
12223
+ /* A component that sets its display still honours the hidden attribute on its root. */
12224
+ :scope:where([data-component~="ui-icon-button"])[hidden] {
12225
+ display: none;
12226
+ }
12227
+ }
12228
+ @scope ([data-component~="ui-icon-button"]) to ([data-component]) {
12229
+ /* This component's hooks style the element they are set on, and never a nested one. */
12230
+
12231
+ /* Omitted tone retains the existing accent solid; explicit neutral is additive. */
12232
+
12233
+ /* At rest an anticipatory button shows only its guide dot. The icon grows into place when
12234
+ proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
12235
+
12236
+ @media (hover: hover) and (pointer: fine) {
12237
+ }
12238
+
12239
+ @media (hover: none), (pointer: coarse) {
12240
+ }
12241
+
12242
+ /* A touch target without a bigger button: an invisible hit area, at least the control
12243
+ minimum, centred on the button (::before is the anticipatory guide). */
12244
+ @media (pointer: coarse) {
12245
+ }
12246
+
12247
+ /* A text button's companion uses control geometry; compact icon buttons keep their own density. */
12248
+
12249
+ @media (pointer: coarse) {
12250
+ }
12251
+
12252
+ /* Native toggle state persists after pointer release, including during loading. */
12253
+
12254
+ @media (prefers-reduced-motion: reduce) {
12255
+ }
12256
+
12257
+ @media (forced-colors: active) {
12258
+ }
12259
+
12260
+ /* Disabled is a flat neutral control, independent of the active variant's tone. */
12261
+
12262
+ :where([data-slotted], [data-slotted] *):is(svg) {
12263
+ inline-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
12264
+ block-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
12265
+ flex-shrink: 0;
12266
+ stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
12267
+ }
12268
+
12269
+ /* A component that sets its display still honours the hidden attribute on its root. */
12270
+ }
12271
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
12272
+ @supports (-moz-appearance: none) {
12273
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12274
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12275
+ }
12276
+ @supports (-moz-appearance: none) {
12277
+ [data-component~="ui-list"] { --html-next-scope-owner: "ui-list" !important; }
12278
+ }
12279
+ @scope ([data-component~="ui-list"]) to ([data-component], [data-slotted]) {
12280
+ /* This component's hooks style the element they are set on, and never a nested one. */
12281
+ @property --ui-list-gap {
12282
+ syntax: "*";
12283
+ inherits: false;
12284
+ }
12285
+ @property --ui-list-min-item-width {
12286
+ syntax: "*";
12287
+ inherits: false;
12288
+ }
12289
+
12290
+ /* A list of native li elements or structured ui-list-item components. It owns the spacing between them, so a view never sets it. The
12291
+ explicit list role keeps the list announced as one: some browsers drop it from a list with no
12292
+ markers. */
12293
+ :scope:where([data-component~="ui-list"]) {
12294
+ --_list-gap: var(--ui-list-gap, var(--ui-space-1));
12295
+ --_list-min-item-width: var(--ui-list-min-item-width, 14rem);
12296
+ display: flex;
12297
+ flex-direction: column;
12298
+ inline-size: 100%;
12299
+ gap: var(--_list-gap);
12300
+ min-inline-size: 0;
12301
+ margin: 0;
12302
+ padding: 0;
12303
+ list-style: none;
12304
+ }
12305
+
12306
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="as=ol"],
12307
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="markers=disc"] {
12308
+ padding-inline-start: var(--ui-space-5);
12309
+ }
12310
+
12311
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="as=ol"] {
12312
+ list-style: decimal;
12313
+ }
12314
+
12315
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="markers=disc"] {
12316
+ list-style: disc;
12317
+ }
12318
+
12319
+ /* Compact passes its size to the items through private properties, which cross into each item. */
12320
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="density=compact"] {
12321
+ --_list-gap: var(--ui-list-gap, var(--ui-space-2));
12322
+ --_ui-list-item-min-size: 0;
12323
+ --_ui-list-item-padding-block: 0;
12324
+ --_ui-list-item-padding-inline: 0;
12325
+ --_ui-list-item-title-weight: var(--ui-font-normal);
12326
+ --_ui-list-native-padding-block: 0;
12327
+ --_ui-list-native-padding-inline: 0;
12328
+ }
12329
+
12330
+ :scope:where([data-component~="ui-list"])[data-ui-list-state~="layout=grid"] {
12331
+ --_list-gap: var(--ui-list-gap, var(--ui-space-3));
12332
+ display: grid;
12333
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--_list-min-item-width)), 1fr));
12334
+ }
12335
+
12336
+ /* A component that sets its display still honours the hidden attribute on its root. */
12337
+ :scope:where([data-component~="ui-list"])[hidden] {
12338
+ display: none;
12339
+ }
12340
+ }
12341
+ @scope ([data-component~="ui-list"]) to ([data-component]) {
12342
+ /* This component's hooks style the element they are set on, and never a nested one. */
12343
+
12344
+ /* A list of native li elements or structured ui-list-item components. It owns the spacing between them, so a view never sets it. The
12345
+ explicit list role keeps the list announced as one: some browsers drop it from a list with no
12346
+ markers. */
12347
+
12348
+ :scope:where([data-component~="ui-list"]) > :where([data-slotted], [data-slotted] *):is(li) {
12349
+ box-sizing: border-box;
12350
+ min-inline-size: 0;
12351
+ padding: var(--_ui-list-native-padding-block, var(--ui-space-2)) var(--_ui-list-native-padding-inline, var(--ui-space-3));
12352
+ border-radius: var(--ui-radius-md);
12353
+ color: var(--ui-text-primary);
12354
+ list-style: inherit;
12355
+ }
12356
+
12357
+ :scope:where([data-component~="ui-list"]) > :where([data-slotted], [data-slotted] *):is(li.card) {
12358
+ padding: var(--_ui-list-native-padding-block, var(--ui-space-3)) var(--_ui-list-native-padding-inline, var(--ui-space-4));
12359
+ border: var(--ui-border-width) solid var(--ui-border-strong);
12360
+ border-radius: var(--ui-radius-lg);
12361
+ background: var(--ui-surface-raised);
12362
+ list-style: none;
12363
+ }
12364
+
12365
+ /* Compact passes its size to the items through private properties, which cross into each item. */
12366
+
12367
+ /* A component that sets its display still honours the hidden attribute on its root. */
12368
+ }
12369
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
12370
+ @supports (-moz-appearance: none) {
12371
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12372
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12373
+ }
12374
+ @supports (-moz-appearance: none) {
12375
+ [data-component~="ui-menu"] { --html-next-scope-owner: "ui-menu" !important; }
12376
+ }
12377
+ @scope ([data-component~="ui-menu"]) to ([data-component], [data-slotted]) {
12378
+ /* This component's hooks style the element they are set on, and never a nested one. */
12379
+ @property --ui-menu-surface {
12380
+ syntax: "*";
12381
+ inherits: false;
12382
+ }
12383
+ @property --ui-menu-border {
12384
+ syntax: "*";
12385
+ inherits: false;
12386
+ }
12387
+ @property --ui-menu-radius {
12388
+ syntax: "*";
12389
+ inherits: false;
12390
+ }
12391
+ @property --ui-menu-shadow {
12392
+ syntax: "*";
12393
+ inherits: false;
12394
+ }
12395
+ @property --ui-menu-viewport-gap {
12396
+ syntax: "*";
12397
+ inherits: false;
12398
+ }
12399
+
12400
+ /* Compact sets its items' defaults, so nothing has to rescale a global; an item's own hooks
12401
+ still win. */
12402
+ :scope:where([data-component~="ui-menu"])[data-ui-menu-state~="density=compact"] {
12403
+ --_ui-default-menu-item-padding-block: var(--ui-space-1);
12404
+ --_ui-default-menu-item-padding-inline: var(--ui-space-2);
12405
+ --_ui-default-menu-item-font-size: var(--ui-font-size-sm);
12406
+ --_ui-default-menu-item-radius: var(--ui-radius-sm);
12407
+ padding: var(--ui-space-1);
12408
+ gap: 0;
12409
+ }
12410
+
12411
+ /* Small follows its trigger down: an item's own hooks still win. */
12412
+ :scope:where([data-component~="ui-menu"])[data-ui-menu-state~="size=sm"] {
12413
+ --_ui-default-menu-item-padding-block: var(--ui-space-0-5);
12414
+ --_ui-default-menu-item-padding-inline: var(--ui-space-2);
12415
+ --_ui-default-menu-item-font-size: var(--ui-font-size-xs);
12416
+ --_ui-default-menu-item-radius: var(--ui-radius-sm);
12417
+ --_ui-default-menu-item-min-block-size: 1.5rem;
12418
+ --_ui-default-menu-indicator-size: 0.75rem;
12419
+ min-inline-size: min(8rem, calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2));
12420
+ padding: var(--ui-space-1);
12421
+ gap: 0;
12422
+ }
12423
+
12424
+ :scope:where([data-component~="ui-menu"])[data-ui-menu-state~="icons"] {
12425
+ --_ui-default-menu-icon-display: inline-flex;
12426
+ }
12427
+
12428
+ :scope:where([data-component~="ui-menu"]) {
12429
+ --_ui-menu-surface: var(--ui-menu-surface);
12430
+ --_ui-menu-border: var(--ui-menu-border);
12431
+ --_ui-menu-radius: var(--ui-menu-radius);
12432
+ --_ui-menu-shadow: var(--ui-menu-shadow);
12433
+ /* A menu nested in a compact one starts again from its own density. */
12434
+ --_ui-default-menu-item-padding-block: initial;
12435
+ --_ui-default-menu-item-padding-inline: initial;
12436
+ --_ui-default-menu-item-font-size: initial;
12437
+ --_ui-default-menu-item-radius: initial;
12438
+ --_ui-default-menu-item-min-block-size: initial;
12439
+ --_ui-default-menu-indicator-size: initial;
12440
+ --_ui-default-menu-icon-display: none;
12441
+ display: flex;
12442
+ flex-direction: column;
12443
+ box-sizing: border-box;
12444
+ inline-size: max-content;
12445
+ min-inline-size: min(12rem, calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2));
12446
+ max-inline-size: calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2);
12447
+ padding: 0;
12448
+ border: 0;
12449
+ outline: 0;
12450
+ border-radius: 0;
12451
+ background: transparent;
12452
+ box-shadow: none;
12453
+ overflow: visible;
12454
+ }
12455
+
12456
+ .surface {
12457
+ display: flex;
12458
+ flex-direction: column;
12459
+ box-sizing: border-box;
12460
+ max-inline-size: inherit;
12461
+ padding: var(--ui-space-1);
12462
+ background: var(--_ui-menu-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
12463
+ border: var(--ui-border-width) solid var(--_ui-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
12464
+ border-radius: var(--_ui-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
12465
+ box-shadow: var(--_ui-menu-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
12466
+ max-block-size: inherit;
12467
+ overflow: auto;
12468
+ }
12469
+
12470
+ .surface hr {
12471
+ align-self: stretch;
12472
+ block-size: 0;
12473
+ margin: var(--ui-space-1) 0;
12474
+ border: 0;
12475
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
12476
+ }
12477
+
12478
+ :scope:where([data-component~="ui-menu"]):not([data-ui-menu-state~="internalOpen"]):not(:scope:where([data-component~="ui-menu"])[data-ui-menu-state~="inline"]) {
12479
+ display: none;
12480
+ }
12481
+
12482
+ :scope:where([data-component~="ui-menu"])[popover] {
12483
+ position: fixed;
12484
+ inset: auto;
12485
+ margin: 0;
12486
+ overflow: visible;
12487
+ max-block-size: calc(100dvh - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2);
12488
+ opacity: 0;
12489
+ transform: translateY(-4px) scale(0.99);
12490
+ transition:
12491
+ opacity var(--ui-motion-fast) var(--ui-motion-ease),
12492
+ transform var(--ui-motion-fast) var(--ui-motion-ease),
12493
+ display var(--ui-motion-fast) allow-discrete,
12494
+ overlay var(--ui-motion-fast) allow-discrete;
12495
+ }
12496
+
12497
+ :scope:where([data-component~="ui-menu"])[popover]:popover-open {
12498
+ opacity: 1;
12499
+ transform: translateY(0) scale(1);
12500
+ }
12501
+
12502
+ @starting-style {
12503
+ :scope:where([data-component~="ui-menu"])[popover]:popover-open {
12504
+ opacity: 0;
12505
+ transform: translateY(-4px) scale(0.99);
12506
+ }
12507
+ }
12508
+
12509
+ :scope:where([data-component~="ui-menu"])[hidden] {
12510
+ display: none;
12511
+ }
12512
+
12513
+ @media (prefers-reduced-motion: reduce) {
12514
+ :scope:where([data-component~="ui-menu"])[popover] {
12515
+ transition: none;
12516
+ }
12517
+ }
12518
+ }
12519
+ @scope ([data-component~="ui-menu"]) to ([data-component]) {
12520
+ /* This component's hooks style the element they are set on, and never a nested one. */
12521
+
12522
+ /* Compact sets its items' defaults, so nothing has to rescale a global; an item's own hooks
12523
+ still win. */
12524
+
12525
+ /* Small follows its trigger down: an item's own hooks still win. */
12526
+
12527
+ @starting-style {
12528
+ }
12529
+
12530
+ @media (prefers-reduced-motion: reduce) {
12531
+ }
12532
+ }
12533
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
12534
+ @supports (-moz-appearance: none) {
12535
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12536
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12537
+ }
12538
+ @supports (-moz-appearance: none) {
12539
+ [data-component~="ui-menu-item"] { --html-next-scope-owner: "ui-menu-item" !important; }
12540
+ }
12541
+ @scope ([data-component~="ui-menu-item"]) to ([data-component], [data-slotted]) {
12542
+ /* This component's hooks style the element they are set on, and never a nested one. */
12543
+ @property --ui-menu-item-font-size {
12544
+ syntax: "*";
12545
+ inherits: false;
12546
+ }
12547
+ @property --ui-menu-item-hover-surface {
12548
+ syntax: "*";
12549
+ inherits: false;
12550
+ }
12551
+ @property --ui-menu-item-min-block-size {
12552
+ syntax: "*";
12553
+ inherits: false;
12554
+ }
12555
+ @property --ui-menu-item-padding-block {
12556
+ syntax: "*";
12557
+ inherits: false;
12558
+ }
12559
+ @property --ui-menu-item-padding-inline {
12560
+ syntax: "*";
12561
+ inherits: false;
12562
+ }
12563
+ @property --ui-menu-item-radius {
12564
+ syntax: "*";
12565
+ inherits: false;
12566
+ }
12567
+
12568
+ :scope:where([data-component~="ui-menu-item"]) {
12569
+ display: flex;
12570
+ align-items: center;
12571
+ gap: var(--ui-space-2);
12572
+ box-sizing: border-box;
12573
+ width: 100%;
12574
+ padding: var(--ui-menu-item-padding-block, var(--_ui-default-menu-item-padding-block, var(--ui-space-2)))
12575
+ var(--ui-menu-item-padding-inline, var(--_ui-default-menu-item-padding-inline, var(--ui-space-3)));
12576
+ text-align: left;
12577
+ border-radius: var(--ui-menu-item-radius, var(--_ui-default-menu-item-radius, var(--ui-selection-radius)));
12578
+ color: var(--ui-text-primary);
12579
+ font-size: var(--ui-menu-item-font-size, var(--_ui-default-menu-item-font-size, var(--ui-font-size-md)));
12580
+ font-weight: var(--ui-font-medium);
12581
+ text-decoration: none;
12582
+ cursor: pointer;
12583
+ outline: none;
12584
+ transition: background-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease);
12585
+ }
12586
+
12587
+ /* A named icon has a fixed column; an icon-enabled menu reserves it on every row. */
12588
+ .icon {
12589
+ display: var(--_ui-default-menu-icon-display, none);
12590
+ align-items: center;
12591
+ justify-content: center;
12592
+ flex: none;
12593
+ inline-size: var(--ui-icon-size-sm);
12594
+ block-size: var(--ui-icon-size-sm);
12595
+ }
12596
+
12597
+ .icon:not(:empty) {
12598
+ display: inline-flex;
12599
+ }
12600
+
12601
+ :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="tone=danger"] {
12602
+ color: var(--ui-danger);
12603
+ }
12604
+
12605
+ .label {
12606
+ display: flex;
12607
+ align-items: center;
12608
+ gap: var(--ui-space-2);
12609
+ flex: 1;
12610
+ min-inline-size: 0;
12611
+ }
12612
+
12613
+ .indicator {
12614
+ display: inline-flex;
12615
+ align-items: center;
12616
+ justify-content: center;
12617
+ flex: none;
12618
+ box-sizing: border-box;
12619
+ inline-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
12620
+ block-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
12621
+ border: var(--ui-border-width) solid var(--ui-control-border);
12622
+ border-radius: var(--ui-radius-sm);
12623
+ color: var(--ui-surface);
12624
+ --_ui-default-icon-size: 0.75rem;
12625
+ }
12626
+
12627
+ :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="type=action"] .indicator {
12628
+ display: none;
12629
+ }
12630
+
12631
+ :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="type=checkbox"][aria-checked="true"] .indicator {
12632
+ border-color: var(--ui-accent);
12633
+ background: var(--ui-accent);
12634
+ }
12635
+
12636
+ /* A menu marks its chosen item with a check, as menus conventionally do; a radio circle reads
12637
+ as a form control. The empty slot keeps unchosen labels aligned with the chosen one. */
12638
+ :scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="type=radio"] .indicator {
12639
+ border-color: transparent;
12640
+ color: var(--ui-text-secondary);
12641
+ }
12642
+
12643
+ .shortcut {
12644
+ margin-inline-start: auto;
12645
+ color: var(--ui-text-secondary);
12646
+ font-size: var(--ui-font-size-sm);
12647
+ font-weight: var(--ui-font-normal);
12648
+ }
12649
+
12650
+ .shortcut:empty {
12651
+ display: none;
12652
+ }
12653
+
12654
+ /* A <kbd> takes the browser's monospace; the hint reads in the item's own type. */
12655
+
12656
+ /* Keep the text row at the shared control height where cap trimming is available. */
12657
+ @supports (text-box-trim: trim-both) {
12658
+ :scope:where([data-component~="ui-menu-item"]) {
12659
+ min-block-size: var(--ui-menu-item-min-block-size, var(--_ui-default-menu-item-min-block-size, var(--ui-control-size-md, 2.5rem)));
12660
+ text-box-trim: trim-both;
12661
+ text-box-edge: cap alphabetic;
12662
+ }
12663
+ }
12664
+
12665
+ :scope:where([data-component~="ui-menu-item"]):is(:hover, :focus-visible):not([aria-disabled="true"]) {
12666
+ background: var(--ui-menu-item-hover-surface, var(--ui-surface-subtle));
12667
+ }
12668
+
12669
+ :scope:where([data-component~="ui-menu-item"]):focus-visible {
12670
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
12671
+ outline-offset: calc(-1 * var(--ui-focus-width));
12672
+ }
12673
+
12674
+ :scope:where([data-component~="ui-menu-item"])[aria-disabled="true"] {
12675
+ background: var(--ui-disabled-surface);
12676
+ color: var(--ui-disabled-text);
12677
+ cursor: not-allowed;
12678
+ }
12679
+
12680
+ :scope:where([data-component~="ui-menu-item"])[aria-disabled="true"] .indicator {
12681
+ border-color: var(--ui-disabled-border);
12682
+ background: transparent;
12683
+ color: var(--ui-disabled-text);
12684
+ }
12685
+
12686
+ :scope:where([data-component~="ui-menu-item"])[aria-disabled="true"] .indicator:where(:not([data-component], [data-slotted]))::after {
12687
+ background: var(--ui-disabled-text);
12688
+ }
12689
+
12690
+ @media (forced-colors: active) {
12691
+ :scope:where([data-component~="ui-menu-item"]):focus-visible {
12692
+ outline-color: Highlight;
12693
+ }
12694
+ }
12695
+
12696
+ /* A component that sets its display still honours the hidden attribute on its root. */
12697
+ :scope:where([data-component~="ui-menu-item"])[hidden] {
12698
+ display: none;
12699
+ }
12700
+ }
12701
+ @scope ([data-component~="ui-menu-item"]) to ([data-component]) {
12702
+ /* This component's hooks style the element they are set on, and never a nested one. */
12703
+
12704
+ /* A named icon has a fixed column; an icon-enabled menu reserves it on every row. */
12705
+
12706
+ .icon :where([data-slotted], [data-slotted] *):is(svg) {
12707
+ inline-size: 100%;
12708
+ block-size: 100%;
12709
+ }
12710
+
12711
+ /* A menu marks its chosen item with a check, as menus conventionally do; a radio circle reads
12712
+ as a form control. The empty slot keeps unchosen labels aligned with the chosen one. */
12713
+
12714
+ /* A <kbd> takes the browser's monospace; the hint reads in the item's own type. */
12715
+ .shortcut :where([data-slotted], [data-slotted] *):is(kbd) {
12716
+ font: inherit;
12717
+ }
12718
+
12719
+ /* Keep the text row at the shared control height where cap trimming is available. */
12720
+ @supports (text-box-trim: trim-both) {
12721
+ }
12722
+
12723
+ @media (forced-colors: active) {
12724
+ }
12725
+
12726
+ /* A component that sets its display still honours the hidden attribute on its root. */
12727
+ }
12728
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
12729
+ @supports (-moz-appearance: none) {
12730
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12731
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12732
+ }
12733
+ @supports (-moz-appearance: none) {
12734
+ [data-component~="ui-popover"] { --html-next-scope-owner: "ui-popover" !important; }
12735
+ }
12736
+ @scope ([data-component~="ui-popover"]) to ([data-component], [data-slotted]) {
12737
+ /* This component's hooks style the element they are set on, and never a nested one. */
12738
+ @property --ui-popover-surface {
12739
+ syntax: "*";
12740
+ inherits: false;
12741
+ }
12742
+ @property --ui-popover-border {
12743
+ syntax: "*";
12744
+ inherits: false;
12745
+ }
12746
+ @property --ui-popover-radius {
12747
+ syntax: "*";
12748
+ inherits: false;
12749
+ }
12750
+ @property --ui-popover-shadow {
12751
+ syntax: "*";
12752
+ inherits: false;
12753
+ }
12754
+ @property --ui-popover-viewport-gap {
12755
+ syntax: "*";
12756
+ inherits: false;
12757
+ }
12758
+ @property --ui-popover-offset {
12759
+ syntax: "*";
12760
+ inherits: false;
12761
+ }
12762
+ @property --ui-popover-padding {
12763
+ syntax: "*";
12764
+ inherits: false;
12765
+ }
12766
+
12767
+ :scope:where([data-component~="ui-popover"]) {
12768
+ --_ui-popover-surface: var(--ui-popover-surface);
12769
+ --_ui-popover-border: var(--ui-popover-border);
12770
+ --_ui-popover-radius: var(--ui-popover-radius);
12771
+ --_ui-popover-shadow: var(--ui-popover-shadow);
12772
+ --_ui-popover-padding: var(--ui-popover-padding);
12773
+ box-sizing: border-box;
12774
+ max-inline-size: min(
12775
+ 20rem,
12776
+ calc(100vw - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2)
12777
+ );
12778
+ max-block-size: calc(100dvh - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2);
12779
+ overflow: visible;
12780
+ padding: 0;
12781
+ border: 0;
12782
+ outline: 0;
12783
+ border-radius: 0;
12784
+ background: transparent;
12785
+ box-shadow: none;
12786
+ }
12787
+
12788
+ .surface {
12789
+ box-sizing: border-box;
12790
+ max-inline-size: inherit;
12791
+ max-block-size: inherit;
12792
+ overflow: auto;
12793
+ padding: var(--_ui-popover-padding, var(--ui-space-3));
12794
+ background: var(--_ui-popover-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
12795
+ border: var(--ui-border-width) solid var(--_ui-popover-border, var(--ui-overlay-border, var(--ui-border-strong)));
12796
+ border-radius: var(--_ui-popover-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
12797
+ box-shadow: var(--_ui-popover-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
12798
+ }
12799
+
12800
+ :scope:where([data-component~="ui-popover"]):not([data-ui-popover-state~="internalOpen"]) {
12801
+ display: none;
12802
+ }
12803
+
12804
+ :scope:where([data-component~="ui-popover"])[popover] {
12805
+ position: fixed;
12806
+ inset: auto;
12807
+ margin: 0;
12808
+ opacity: 0;
12809
+ transform: translateY(-4px) scale(0.99);
12810
+ transition:
12811
+ opacity var(--ui-motion-fast) var(--ui-motion-ease),
12812
+ transform var(--ui-motion-fast) var(--ui-motion-ease),
12813
+ display var(--ui-motion-fast) allow-discrete,
12814
+ overlay var(--ui-motion-fast) allow-discrete;
12815
+ }
12816
+
12817
+ :scope:where([data-component~="ui-popover"])[popover]:popover-open {
12818
+ opacity: 1;
12819
+ transform: translateY(0) scale(1);
12820
+ }
12821
+
12822
+ @starting-style {
12823
+ :scope:where([data-component~="ui-popover"])[popover]:popover-open {
12824
+ opacity: 0;
12825
+ transform: translateY(-4px) scale(0.99);
12826
+ }
12827
+ }
12828
+
12829
+ :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=sm"] {
12830
+ inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
12831
+ max-inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
12832
+ }
12833
+ :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=md"] {
12834
+ inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
12835
+ max-inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
12836
+ }
12837
+ :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=lg"] {
12838
+ inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
12839
+ max-inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
12840
+ }
12841
+
12842
+ :scope:where([data-component~="ui-popover"])[hidden] {
12843
+ display: none;
12844
+ }
12845
+
12846
+ @media (prefers-reduced-motion: reduce) {
12847
+ :scope:where([data-component~="ui-popover"])[popover] {
12848
+ transition: none;
12849
+ }
12850
+ }
12851
+ }
12852
+ @scope ([data-component~="ui-popover"]) to ([data-component]) {
12853
+ /* This component's hooks style the element they are set on, and never a nested one. */
12854
+
12855
+ @starting-style {
12856
+ }
12857
+
12858
+ @media (prefers-reduced-motion: reduce) {
12859
+ }
12860
+ }
12861
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
12862
+ @supports (-moz-appearance: none) {
12863
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12864
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12865
+ }
12866
+ @supports (-moz-appearance: none) {
12867
+ [data-component~="ui-stack"] { --html-next-scope-owner: "ui-stack" !important; }
12868
+ }
12869
+ @scope ([data-component~="ui-stack"]) to ([data-component], [data-slotted]) {
12870
+ /* This component's hooks style the element they are set on, and never a nested one. */
12871
+ @property --ui-stack-height {
12872
+ syntax: "*";
12873
+ inherits: false;
12874
+ }
12875
+
12876
+ @property --ui-stack-gap {
12877
+ syntax: "*";
12878
+ inherits: false;
12879
+ }
12880
+
12881
+ :scope:where([data-component~="ui-stack"]) {
12882
+ --_layout-gap: var(--ui-space-4);
12883
+ display: flex;
12884
+ flex-direction: column;
12885
+ align-items: stretch;
12886
+ gap: var(--ui-stack-gap, var(--_layout-gap));
12887
+ min-inline-size: 0;
12888
+ max-inline-size: 100%;
12889
+ margin: 0;
12890
+ }
12891
+
12892
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="fill"] {
12893
+ flex: 1;
12894
+ min-block-size: 0;
12895
+ }
12896
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="height"] {
12897
+ block-size: calc(var(--ui-stack-height, 0) * 1px);
12898
+ min-block-size: 0;
12899
+ }
12900
+
12901
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=none"] {
12902
+ --_layout-gap: 0px;
12903
+ }
12904
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=xs"] {
12905
+ --_layout-gap: var(--ui-space-2);
12906
+ }
12907
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=s"] {
12908
+ --_layout-gap: var(--ui-space-3);
12909
+ }
12910
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=m"] {
12911
+ --_layout-gap: var(--ui-space-4);
12912
+ }
12913
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=l"] {
12914
+ --_layout-gap: var(--ui-space-5);
12915
+ }
12916
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=xl"] {
12917
+ --_layout-gap: var(--ui-space-6);
12918
+ }
12919
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=start"] {
12920
+ align-items: flex-start;
12921
+ }
12922
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=center"] {
12923
+ align-items: center;
12924
+ }
12925
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=end"] {
12926
+ align-items: flex-end;
12927
+ }
12928
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=center"] {
12929
+ justify-content: center;
12930
+ }
12931
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=end"] {
12932
+ justify-content: flex-end;
12933
+ }
12934
+ :scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=between"] {
12935
+ justify-content: space-between;
12936
+ }
12937
+
12938
+ /* A component that sets its display still honours the hidden attribute on its root. */
12939
+ :scope:where([data-component~="ui-stack"])[hidden] {
12940
+ display: none;
12941
+ }
12942
+ }
12943
+ @scope ([data-component~="ui-stack"]) to ([data-component]) {
12944
+ /* This component's hooks style the element they are set on, and never a nested one. */
12945
+
12946
+ /* A component that sets its display still honours the hidden attribute on its root. */
12947
+ }
12948
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
12949
+ @supports (-moz-appearance: none) {
12950
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
12951
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
12952
+ }
12953
+ @supports (-moz-appearance: none) {
12954
+ [data-component~="ui-text"] { --html-next-scope-owner: "ui-text" !important; }
12955
+ }
12956
+ @scope ([data-component~="ui-text"]) to ([data-component], [data-slotted]) {
12957
+ /* Running text, set on the type scale and in a tone that says what it is, so a view never styles
12958
+ text of its own. The root is a paragraph unless as= names a span, div, small, strong, label, or
12959
+ heading. */
12960
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="grow"] {
12961
+ flex: 1;
12962
+ }
12963
+
12964
+ :scope:where([data-component~="ui-text"]) {
12965
+ margin: 0;
12966
+ min-inline-size: 0;
12967
+ color: var(--ui-text-primary);
12968
+ text-align: start;
12969
+ }
12970
+
12971
+ /* A heading drops the browser's heading size and weight, so size and weight set it as they set
12972
+ any text, and inherit keeps the text around it. */
12973
+ :scope:where([data-component~="ui-text"]):is(h2, h3, h4, h5, h6) {
12974
+ font-size: inherit;
12975
+ font-weight: inherit;
12976
+ }
12977
+
12978
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=xs"] {
12979
+ font-size: var(--ui-font-size-xs);
12980
+ line-height: var(--ui-line-height);
12981
+ }
12982
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=sm"] {
12983
+ font-size: var(--ui-font-size-sm);
12984
+ line-height: var(--ui-line-height);
12985
+ }
12986
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=md"] {
12987
+ font-size: var(--ui-font-size-md);
12988
+ line-height: var(--ui-line-height);
12989
+ }
12990
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="size=lg"] {
12991
+ font-size: var(--ui-font-size-lg);
12992
+ line-height: var(--ui-line-height-relaxed);
12993
+ }
12994
+
12995
+ /* Opt in at the text owner; trimming does not inherit from a surrounding layout. */
12996
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="trim"] {
12997
+ text-box-trim: trim-both;
12998
+ text-box-edge: cap alphabetic;
12999
+ }
13000
+
13001
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=secondary"] {
13002
+ color: var(--ui-text-secondary);
13003
+ }
13004
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=muted"] {
13005
+ color: var(--ui-text-muted);
13006
+ }
13007
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=accent"] {
13008
+ color: var(--ui-accent-active);
13009
+ }
13010
+ /* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
13011
+ in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
13012
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=danger"] {
13013
+ color: var(--ui-danger-subtle-text);
13014
+ }
13015
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=success"] {
13016
+ color: var(--ui-success-subtle-text);
13017
+ }
13018
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=info"] {
13019
+ color: var(--ui-info-subtle-text);
13020
+ }
13021
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=warning"] {
13022
+ color: var(--ui-warning-subtle-text);
13023
+ }
13024
+
13025
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=normal"] {
13026
+ font-weight: var(--ui-font-normal);
13027
+ }
13028
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=medium"] {
13029
+ font-weight: var(--ui-font-medium);
13030
+ }
13031
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=semibold"] {
13032
+ font-weight: var(--ui-font-semibold);
13033
+ }
13034
+
13035
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="variant=eyebrow"] {
13036
+ font-size: var(--ui-font-size-xs);
13037
+ font-weight: var(--ui-font-semibold);
13038
+ letter-spacing: 0.06em;
13039
+ text-transform: uppercase;
13040
+ }
13041
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="variant=code"] {
13042
+ font-family: var(--ui-font-family-mono);
13043
+ }
13044
+
13045
+ /* A link in running text is underlined, so it stands apart from the words around it by more than
13046
+ colour. */
13047
+
13048
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="truncate"] {
13049
+ overflow: hidden;
13050
+ text-overflow: ellipsis;
13051
+ white-space: nowrap;
13052
+ }
13053
+
13054
+ /* Trim ends the layout box at the baseline; preserve descending ink while clipping long labels. */
13055
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="trim"][data-ui-text-state~="truncate"] {
13056
+ overflow-x: clip;
13057
+ overflow-y: visible;
13058
+ }
13059
+
13060
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="align=center"] {
13061
+ text-align: center;
13062
+ }
13063
+
13064
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="font=sans"] {
13065
+ font-family: var(--ui-font-family-sans, sans-serif);
13066
+ }
13067
+
13068
+ :scope:where([data-component~="ui-text"])[data-ui-text-state~="wrap=anywhere"] {
13069
+ overflow-wrap: anywhere;
13070
+ }
13071
+
13072
+ /* A component that sets its display still honours the hidden attribute on its root. */
13073
+ :scope:where([data-component~="ui-text"])[hidden] {
13074
+ display: none;
13075
+ }
13076
+ }
13077
+ @scope ([data-component~="ui-text"]) to ([data-component]) {
13078
+ /* Running text, set on the type scale and in a tone that says what it is, so a view never styles
13079
+ text of its own. The root is a paragraph unless as= names a span, div, small, strong, label, or
13080
+ heading. */
13081
+
13082
+ /* A heading drops the browser's heading size and weight, so size and weight set it as they set
13083
+ any text, and inherit keeps the text around it. */
13084
+
13085
+ /* Opt in at the text owner; trimming does not inherit from a surrounding layout. */
13086
+ /* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
13087
+ in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
13088
+
13089
+ /* A link in running text is underlined, so it stands apart from the words around it by more than
13090
+ colour. */
13091
+ :scope:where([data-component~="ui-text"]) :where([data-slotted], [data-slotted] *):is(a) {
13092
+ color: var(--ui-accent-active);
13093
+ text-decoration: underline;
13094
+ text-decoration-thickness: 0.06em;
13095
+ text-underline-offset: 0.18em;
13096
+ }
13097
+
13098
+ /* Trim ends the layout box at the baseline; preserve descending ink while clipping long labels. */
13099
+
13100
+ /* A component that sets its display still honours the hidden attribute on its root. */
13101
+ }
13102
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
13103
+ @supports (-moz-appearance: none) {
13104
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13105
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13106
+ }
13107
+ @supports (-moz-appearance: none) {
13108
+ [data-component~="ui-tooltip"] { --html-next-scope-owner: "ui-tooltip" !important; }
13109
+ }
13110
+ @scope ([data-component~="ui-tooltip"]) to ([data-component], [data-slotted]) {
13111
+ /* This component's hooks style the element they are set on, and never a nested one. */
13112
+ @property --ui-tooltip-arrow-size {
13113
+ syntax: "*";
13114
+ inherits: false;
13115
+ }
13116
+ @property --ui-tooltip-border {
13117
+ syntax: "*";
13118
+ inherits: false;
13119
+ }
13120
+ @property --ui-tooltip-inverse-surface {
13121
+ syntax: "*";
13122
+ inherits: false;
13123
+ }
13124
+ @property --ui-tooltip-inverse-text {
13125
+ syntax: "*";
13126
+ inherits: false;
13127
+ }
13128
+ @property --ui-tooltip-max-inline-size {
13129
+ syntax: "*";
13130
+ inherits: false;
13131
+ }
13132
+ @property --ui-tooltip-offset {
13133
+ syntax: "*";
13134
+ inherits: false;
13135
+ }
13136
+ @property --ui-tooltip-radius {
13137
+ syntax: "*";
13138
+ inherits: false;
13139
+ }
13140
+ @property --ui-tooltip-shadow {
13141
+ syntax: "*";
13142
+ inherits: false;
13143
+ }
13144
+ @property --ui-tooltip-surface {
13145
+ syntax: "*";
13146
+ inherits: false;
13147
+ }
13148
+ @property --ui-tooltip-text {
13149
+ syntax: "*";
13150
+ inherits: false;
13151
+ }
13152
+
13153
+ :scope:where([data-component~="ui-tooltip"]) {
13154
+ /* Hooks do not inherit, so the parts below read them from the root. */
13155
+ --_ui-tooltip-border: var(--ui-tooltip-border);
13156
+ --_ui-tooltip-max-inline-size: var(--ui-tooltip-max-inline-size);
13157
+ --_ui-tooltip-radius: var(--ui-tooltip-radius);
13158
+ --_ui-tooltip-surface: var(--ui-tooltip-surface);
13159
+ --_ui-tooltip-text: var(--ui-tooltip-text);
13160
+ --_ui-tooltip-shadow: var(--ui-tooltip-shadow);
13161
+ --_ui-tooltip-inverse-surface: var(--ui-tooltip-inverse-surface);
13162
+ --_ui-tooltip-inverse-text: var(--ui-tooltip-inverse-text);
13163
+ --_ui-tooltip-arrow-size: var(--ui-tooltip-arrow-size);
13164
+
13165
+ position: fixed;
13166
+ inset: auto;
13167
+ margin: 0;
13168
+ display: inline-block;
13169
+ box-sizing: border-box;
13170
+ padding: 0;
13171
+ border: 0;
13172
+ outline: 0;
13173
+ border-radius: 0;
13174
+ background: transparent;
13175
+ /* The UA popover default (overflow: auto) would clip the arrow. */
13176
+ overflow: visible;
13177
+ opacity: 0;
13178
+ transform: translateY(4px);
13179
+ transition:
13180
+ opacity var(--ui-motion-fast) var(--ui-motion-ease),
13181
+ transform var(--ui-motion-fast) var(--ui-motion-ease),
13182
+ display var(--ui-motion-fast) allow-discrete,
13183
+ overlay var(--ui-motion-fast) allow-discrete;
13184
+ }
13185
+
13186
+ /* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
13187
+ .surface {
13188
+ --_tooltip-line: var(--_ui-tooltip-border, var(--ui-overlay-border, var(--ui-border-strong)));
13189
+ position: relative;
13190
+ display: flex;
13191
+ align-items: baseline;
13192
+ gap: var(--ui-space-2);
13193
+ box-sizing: border-box;
13194
+ max-inline-size: var(--_ui-tooltip-max-inline-size, 18rem);
13195
+ border: var(--ui-border-width) solid var(--_tooltip-line);
13196
+ border-radius: var(--_ui-tooltip-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
13197
+ background: var(--_ui-tooltip-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
13198
+ color: var(--_ui-tooltip-text, var(--ui-text-primary));
13199
+ padding: var(--ui-space-2) var(--ui-space-3);
13200
+ font-family: var(--ui-font-family-sans);
13201
+ font-size: var(--ui-font-size-sm);
13202
+ line-height: var(--ui-line-height-tight);
13203
+ box-shadow: var(--_ui-tooltip-shadow, var(--ui-overlay-shadow, var(--ui-elevation-tooltip, var(--ui-shadow-md))));
13204
+ }
13205
+
13206
+ /* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
13207
+ it. The label stays first in the description, so a screen reader hears the name, then the keys. */
13208
+ .shortcut {
13209
+ display: inline-flex;
13210
+ align-items: center;
13211
+ padding-inline-start: var(--ui-space-2);
13212
+ border-inline-start: 1px solid color-mix(in oklab, currentColor 28%, transparent);
13213
+ color: color-mix(in oklab, currentColor 72%, transparent);
13214
+ font-size: var(--ui-font-size-xs);
13215
+ font-weight: var(--ui-font-normal);
13216
+ white-space: nowrap;
13217
+ vertical-align: baseline;
13218
+ }
13219
+
13220
+ .shortcut:empty {
13221
+ display: none;
13222
+ }
13223
+
13224
+ /* A <kbd> takes the browser's monospace; the hint reads in the tooltip's own type. */
13225
+
13226
+ :scope:where([data-component~="ui-tooltip"])[data-ui-tooltip-state~="inverse"] .surface {
13227
+ --_tooltip-line: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
13228
+ background: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
13229
+ color: var(--_ui-tooltip-inverse-text, var(--ui-surface-default));
13230
+ }
13231
+
13232
+ /* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
13233
+ * the surface border line, so the fill covers that stretch of border and the outline runs unbroken. */
13234
+ .surface:where(:not([data-component], [data-slotted]))::after {
13235
+ content: "";
13236
+ position: absolute;
13237
+ z-index: 1;
13238
+ inset-inline-start: var(--ui-space-3);
13239
+ inset-block-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13240
+ inline-size: var(--_ui-tooltip-arrow-size, 0.625rem);
13241
+ block-size: var(--_ui-tooltip-arrow-size, 0.625rem);
13242
+ box-sizing: border-box;
13243
+ background: inherit;
13244
+ border: 0 solid var(--_tooltip-line);
13245
+ border-inline-end-width: var(--ui-border-width);
13246
+ border-block-end-width: var(--ui-border-width);
13247
+ border-end-end-radius: var(--ui-border-width);
13248
+ transform: rotate(45deg) scaleX(1.25) scaleY(0.85);
13249
+ }
13250
+
13251
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="bottom"] .surface:where(:not([data-component], [data-slotted]))::after {
13252
+ inset-block-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13253
+ inset-block-end: auto;
13254
+ border-inline-end-width: 0;
13255
+ border-block-end-width: 0;
13256
+ border-inline-start-width: var(--ui-border-width);
13257
+ border-block-start-width: var(--ui-border-width);
13258
+ border-end-end-radius: 0;
13259
+ border-start-start-radius: var(--ui-border-width);
13260
+ }
13261
+
13262
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-align="center"] .surface:where(:not([data-component], [data-slotted]))::after {
13263
+ inset-inline-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
13264
+ }
13265
+
13266
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after {
13267
+ inset-inline-start: auto;
13268
+ inset-inline-end: var(--ui-space-3);
13269
+ }
13270
+
13271
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"] .surface:where(:not([data-component], [data-slotted]))::after,
13272
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"] .surface:where(:not([data-component], [data-slotted]))::after {
13273
+ inset-block-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
13274
+ inset-block-end: auto;
13275
+ border: 0 solid var(--_tooltip-line);
13276
+ }
13277
+
13278
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"] .surface:where(:not([data-component], [data-slotted]))::after {
13279
+ inset-inline-start: auto;
13280
+ inset-inline-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13281
+ border-inline-end-width: var(--ui-border-width);
13282
+ border-block-start-width: var(--ui-border-width);
13283
+ }
13284
+
13285
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"] .surface:where(:not([data-component], [data-slotted]))::after {
13286
+ inset-inline-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
13287
+ inset-inline-end: auto;
13288
+ border-inline-start-width: var(--ui-border-width);
13289
+ border-block-end-width: var(--ui-border-width);
13290
+ }
13291
+
13292
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"][data-ui-actual-align="start"] .surface:where(:not([data-component], [data-slotted]))::after,
13293
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"][data-ui-actual-align="start"] .surface:where(:not([data-component], [data-slotted]))::after {
13294
+ inset-block-start: var(--ui-space-3);
13295
+ }
13296
+
13297
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"][data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after,
13298
+ :scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"][data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after {
13299
+ inset-block-start: auto;
13300
+ inset-block-end: var(--ui-space-3);
13301
+ }
13302
+
13303
+ :scope:where([data-component~="ui-tooltip"]):popover-open {
13304
+ opacity: 1;
13305
+ transform: translateY(0);
13306
+ }
13307
+
13308
+ @starting-style {
13309
+ :scope:where([data-component~="ui-tooltip"]):popover-open {
13310
+ opacity: 0;
13311
+ transform: translateY(4px);
13312
+ }
13313
+ }
13314
+
13315
+ :scope:where([data-component~="ui-tooltip"])[hidden] {
13316
+ display: none;
13317
+ }
13318
+
13319
+ @media (prefers-reduced-motion: reduce) {
13320
+ :scope:where([data-component~="ui-tooltip"]) {
13321
+ transition: none;
13322
+ }
13323
+ }
13324
+ }
13325
+ @scope ([data-component~="ui-tooltip"]) to ([data-component]) {
13326
+ /* This component's hooks style the element they are set on, and never a nested one. */
13327
+
13328
+ /* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
13329
+
13330
+ /* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
13331
+ it. The label stays first in the description, so a screen reader hears the name, then the keys. */
13332
+
13333
+ /* A <kbd> takes the browser's monospace; the hint reads in the tooltip's own type. */
13334
+ .shortcut :where([data-slotted], [data-slotted] *):is(kbd) {
13335
+ font: inherit;
13336
+ }
13337
+
13338
+ /* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
13339
+ * the surface border line, so the fill covers that stretch of border and the outline runs unbroken. */
13340
+
13341
+ @starting-style {
13342
+ }
13343
+
13344
+ @media (prefers-reduced-motion: reduce) {
13345
+ }
13346
+ }
13347
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
13348
+ @supports (-moz-appearance: none) {
13349
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13350
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13351
+ }
13352
+ @supports (-moz-appearance: none) {
13353
+ [data-component~="ui-checkbox"] { --html-next-scope-owner: "ui-checkbox" !important; }
13354
+ }
13355
+ @scope ([data-component~="ui-checkbox"]) to ([data-component], [data-slotted]) {
13356
+ /* This component's hooks style the element they are set on, and never a nested one. */
13357
+ @property --ui-checkbox-gap {
13358
+ syntax: "*";
13359
+ inherits: false;
13360
+ }
13361
+ @property --ui-checkbox-invalid-border {
13362
+ syntax: "*";
13363
+ inherits: false;
13364
+ }
13365
+ @property --ui-checkbox-size {
13366
+ syntax: "*";
13367
+ inherits: false;
13368
+ }
13369
+
13370
+ :scope:where([data-component~="ui-checkbox"]) {
13371
+ /* Hooks do not inherit, so the parts below read them from the root. */
13372
+ --_ui-checkbox-size: var(--ui-checkbox-size);
13373
+ --_ui-checkbox-invalid-border: var(--ui-checkbox-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)));
13374
+
13375
+ display: inline-flex;
13376
+ align-items: flex-start;
13377
+ gap: var(--ui-checkbox-gap, var(--ui-space-2));
13378
+ max-inline-size: 100%;
13379
+ color: var(--ui-text-primary);
13380
+ cursor: pointer;
13381
+ }
13382
+
13383
+ /* The label, and under it an optional line saying what the choice means. */
13384
+ .text {
13385
+ display: flex;
13386
+ flex-direction: column;
13387
+ gap: var(--ui-space-1);
13388
+ min-inline-size: 0;
13389
+ }
13390
+
13391
+ .label {
13392
+ min-inline-size: 0;
13393
+ line-height: var(--ui-line-height-md);
13394
+ }
13395
+
13396
+ .description {
13397
+ color: var(--ui-text-secondary);
13398
+ font-size: var(--ui-font-size-sm);
13399
+ line-height: var(--ui-line-height);
13400
+ }
13401
+
13402
+ .description:empty {
13403
+ display: none;
13404
+ }
13405
+
13406
+ input {
13407
+ appearance: none;
13408
+ -webkit-appearance: none;
13409
+ position: relative;
13410
+ flex: 0 0 auto;
13411
+ inline-size: var(--_ui-checkbox-size, 1.125rem);
13412
+ block-size: var(--_ui-checkbox-size, 1.125rem);
13413
+ margin: 0.125em 0 0;
13414
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
13415
+ border-radius: var(--ui-radius-sm);
13416
+ background: var(--ui-control-surface, var(--ui-surface-default));
13417
+ box-shadow: var(--ui-control-inset);
13418
+ cursor: pointer;
13419
+ transition:
13420
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
13421
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
13422
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
13423
+ }
13424
+
13425
+ input:where(:not([data-component], [data-slotted]))::after {
13426
+ content: "";
13427
+ position: absolute;
13428
+ opacity: 0;
13429
+ transition: opacity 120ms var(--ui-motion-ease);
13430
+ }
13431
+
13432
+ input:checked,
13433
+ input:indeterminate {
13434
+ border-color: var(--ui-accent-solid);
13435
+ background: var(--ui-accent-solid);
13436
+ box-shadow: var(--ui-control-inset);
13437
+ }
13438
+
13439
+ /* Centre the tick's box and lift it slightly for the rotated check shape. */
13440
+ input:checked:where(:not([data-component], [data-slotted]))::after {
13441
+ inset: 0;
13442
+ margin: auto;
13443
+ inline-size: 0.28rem;
13444
+ block-size: 0.5rem;
13445
+ /* Longhands, not `border: solid var(...)`: lowering drops a shorthand that omits a
13446
+ component, which left the tick with no style and no colour. */
13447
+ border-style: solid;
13448
+ border-color: var(--ui-text-on-accent);
13449
+ border-width: 0 0.125rem 0.125rem 0;
13450
+ opacity: 1;
13451
+ transform: translateY(-0.09rem) rotate(45deg);
13452
+ animation: ui-checkbox-check 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
13453
+ }
13454
+
13455
+ input:indeterminate:where(:not([data-component], [data-slotted]))::after {
13456
+ inset: 50% 0.23rem auto;
13457
+ block-size: 0.125rem;
13458
+ border-radius: var(--ui-radius-round);
13459
+ background: var(--ui-text-on-accent);
13460
+ opacity: 1;
13461
+ transform: translateY(-50%);
13462
+ }
13463
+
13464
+ @keyframes ui-checkbox-check {
13465
+ from {
13466
+ opacity: 0;
13467
+ transform: translateY(-0.09rem) rotate(45deg) scale(0.55);
13468
+ }
13469
+ 65% {
13470
+ opacity: 1;
13471
+ transform: translateY(-0.09rem) rotate(45deg) scale(1.12);
13472
+ }
13473
+ to {
13474
+ opacity: 1;
13475
+ transform: translateY(-0.09rem) rotate(45deg) scale(1);
13476
+ }
13477
+ }
13478
+
13479
+ @media (prefers-reduced-motion: reduce) {
13480
+ input:where(:not([data-component], [data-slotted]))::after {
13481
+ transition: none;
13482
+ animation: none;
13483
+ }
13484
+ }
13485
+
13486
+ input:hover:enabled {
13487
+ border-color: var(--ui-accent-solid);
13488
+ }
13489
+
13490
+ input:focus-visible {
13491
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
13492
+ outline-offset: var(--ui-focus-width);
13493
+ }
13494
+
13495
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="invalid"] input {
13496
+ border-color: var(--_ui-checkbox-invalid-border);
13497
+ }
13498
+
13499
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] {
13500
+ color: var(--ui-disabled-text);
13501
+ cursor: not-allowed;
13502
+ }
13503
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] .description {
13504
+ color: var(--ui-disabled-text);
13505
+ }
13506
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] input {
13507
+ border-color: var(--ui-disabled-border);
13508
+ background: var(--ui-disabled-surface);
13509
+ box-shadow: none;
13510
+ cursor: not-allowed;
13511
+ }
13512
+
13513
+ /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
13514
+ and the first line centres in that control height, so the label shares a row's baseline.
13515
+ Multi-line labels and descriptions still grow downward from that first line. */
13516
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] {
13517
+ --_font: var(--ui-font-size-sm);
13518
+ --_row: var(--ui-control-size-sm);
13519
+ }
13520
+
13521
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] {
13522
+ --_font: var(--ui-font-size-md);
13523
+ --_row: var(--ui-control-size-lg);
13524
+ }
13525
+
13526
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"],
13527
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] {
13528
+ --_line: calc(var(--_font) * var(--ui-line-height-md));
13529
+ font-size: var(--_font);
13530
+ padding-block: calc((var(--_row) - var(--_line)) / 2);
13531
+ }
13532
+
13533
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] input,
13534
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] input {
13535
+ margin-top: calc((var(--_line) - var(--_ui-checkbox-size, 1.125rem)) / 2);
13536
+ }
13537
+
13538
+ @media (pointer: coarse) {
13539
+ :scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] {
13540
+ --_row: var(--ui-control-min-block-size);
13541
+ }
13542
+ }
13543
+
13544
+ /* A component that sets its display still honours the hidden attribute on its root. */
13545
+ :scope:where([data-component~="ui-checkbox"])[hidden] {
13546
+ display: none;
13547
+ }
13548
+ }
13549
+ @scope ([data-component~="ui-checkbox"]) to ([data-component]) {
13550
+ /* This component's hooks style the element they are set on, and never a nested one. */
13551
+
13552
+ /* The label, and under it an optional line saying what the choice means. */
13553
+
13554
+ /* Centre the tick's box and lift it slightly for the rotated check shape. */
13555
+
13556
+ @media (prefers-reduced-motion: reduce) {
13557
+ }
13558
+
13559
+ /* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
13560
+ and the first line centres in that control height, so the label shares a row's baseline.
13561
+ Multi-line labels and descriptions still grow downward from that first line. */
13562
+
13563
+ @media (pointer: coarse) {
13564
+ }
13565
+
13566
+ /* A component that sets its display still honours the hidden attribute on its root. */
13567
+ }
13568
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
13569
+ @supports (-moz-appearance: none) {
13570
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13571
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13572
+ }
13573
+ @supports (-moz-appearance: none) {
13574
+ [data-component~="ui-disclosure"] { --html-next-scope-owner: "ui-disclosure" !important; }
13575
+ }
13576
+ @scope ([data-component~="ui-disclosure"]) to ([data-component], [data-slotted]) {
13577
+ /* This component's hooks style the element they are set on, and never a nested one. */
13578
+ @property --ui-disclosure-trigger-min-block-size {
13579
+ syntax: "*";
13580
+ inherits: false;
13581
+ }
13582
+ @property --ui-disclosure-trigger-padding-block {
13583
+ syntax: "*";
13584
+ inherits: false;
13585
+ }
13586
+ @property --ui-disclosure-trigger-padding-inline {
13587
+ syntax: "*";
13588
+ inherits: false;
13589
+ }
13590
+
13591
+ /* Density resolves into the summary row's own values; the public tokens still override them. */
13592
+ :scope:where([data-component~="ui-disclosure"]) {
13593
+ /* Hooks do not inherit, so the parts below read them from the root. */
13594
+ --_ui-disclosure-trigger-min-block-size: var(--ui-disclosure-trigger-min-block-size);
13595
+ --_ui-disclosure-trigger-padding-block: var(--ui-disclosure-trigger-padding-block);
13596
+ --_ui-disclosure-trigger-padding-inline: var(--ui-disclosure-trigger-padding-inline);
13597
+
13598
+ --_trigger-min-block-size: var(--ui-control-size);
13599
+ --_trigger-padding-block: var(--ui-space-2);
13600
+ --_trigger-padding-inline: var(--ui-space-3);
13601
+ }
13602
+
13603
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="density=compact"] {
13604
+ --_trigger-min-block-size: var(--ui-control-size-sm);
13605
+ --_trigger-padding-block: var(--ui-space-1);
13606
+ --_trigger-padding-inline: var(--ui-space-2);
13607
+ }
13608
+
13609
+ /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
13610
+ * select or combobox. Stacked disclosures share their dividers. */
13611
+ :scope:where([data-component~="ui-disclosure"]) {
13612
+ display: block;
13613
+ inline-size: 100%;
13614
+ overflow: clip;
13615
+ border-block-end: var(--ui-border-width) solid var(--ui-border-divider);
13616
+ color: var(--ui-text-primary);
13617
+ }
13618
+
13619
+ .trigger {
13620
+ display: flex;
13621
+ gap: var(--ui-space-3);
13622
+ align-items: center;
13623
+ inline-size: 100%;
13624
+ min-block-size: var(--_ui-disclosure-trigger-min-block-size, var(--_trigger-min-block-size));
13625
+ padding: var(--_ui-disclosure-trigger-padding-block, var(--_trigger-padding-block))
13626
+ var(--_ui-disclosure-trigger-padding-inline, var(--_trigger-padding-inline));
13627
+ border: 0;
13628
+ background: transparent;
13629
+ color: inherit;
13630
+ font: inherit;
13631
+ font-weight: var(--ui-font-semibold);
13632
+ text-align: start;
13633
+ cursor: pointer;
13634
+ border-radius: var(--ui-radius-sm);
13635
+ transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
13636
+ }
13637
+
13638
+ .trigger:hover:not(:disabled) {
13639
+ background: color-mix(in srgb, currentColor 6%, transparent);
13640
+ }
13641
+ .trigger:focus-visible {
13642
+ outline: none;
13643
+ box-shadow: inset 0 0 0 var(--ui-focus-width) color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
13644
+ }
13645
+ .trigger:disabled {
13646
+ color: var(--ui-disabled-text);
13647
+ cursor: not-allowed;
13648
+ }
13649
+
13650
+ .summary {
13651
+ flex: 1;
13652
+ min-inline-size: 0;
13653
+ }
13654
+
13655
+ .leading,
13656
+ .indicator {
13657
+ display: inline-flex;
13658
+ align-items: center;
13659
+ justify-content: center;
13660
+ flex: none;
13661
+ }
13662
+ .leading:empty {
13663
+ display: none;
13664
+ }
13665
+ .indicator {
13666
+ transition: transform var(--ui-motion-feedback) var(--ui-motion-feedback-ease);
13667
+ }
13668
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .indicator {
13669
+ transform: rotate(180deg);
13670
+ }
13671
+
13672
+ .chevron {
13673
+ inline-size: 0.5rem;
13674
+ block-size: 0.5rem;
13675
+ border-inline-end: 2px solid currentColor;
13676
+ border-block-end: 2px solid currentColor;
13677
+ transform: rotate(45deg) translate(-1px, -1px);
13678
+ }
13679
+
13680
+ .panel {
13681
+ display: grid;
13682
+ grid-template-rows: 0fr;
13683
+ transition: grid-template-rows var(--ui-motion-reveal) var(--ui-motion-reveal-ease), content-visibility var(--ui-motion-reveal) allow-discrete;
13684
+ }
13685
+
13686
+ .panel-inner {
13687
+ min-block-size: 0;
13688
+ overflow: hidden;
13689
+ padding-inline: var(--ui-space-3);
13690
+ }
13691
+
13692
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .panel {
13693
+ grid-template-rows: 1fr;
13694
+ }
13695
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .panel-inner {
13696
+ padding-block: 0 var(--ui-space-3);
13697
+ }
13698
+
13699
+ /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
13700
+ * normal content-sized layout and its animation remain unchanged when fill is omitted. */
13701
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] {
13702
+ display: flex;
13703
+ flex-direction: column;
13704
+ flex: 0 0 var(--_ui-disclosure-heading-size, var(--_trigger-min-block-size));
13705
+ min-block-size: calc(var(--_ui-disclosure-heading-size, var(--_trigger-min-block-size)) + var(--ui-border-width));
13706
+ transition: flex-grow var(--ui-motion-layout) var(--ui-motion-layout-ease);
13707
+ border-block-end: 0;
13708
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
13709
+ }
13710
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"][data-ui-disclosure-state~="internalOpen"] {
13711
+ flex-grow: 1;
13712
+ }
13713
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .heading {
13714
+ flex: none;
13715
+ }
13716
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .trigger {
13717
+ border-radius: 0;
13718
+ }
13719
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .panel {
13720
+ flex: 1;
13721
+ min-block-size: 0;
13722
+ }
13723
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .panel-inner {
13724
+ display: flex;
13725
+ flex-direction: column;
13726
+ flex: 1;
13727
+ min-block-size: 0;
13728
+ padding: 0;
13729
+ }
13730
+
13731
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] .trigger {
13732
+ gap: var(--ui-nav-gap);
13733
+ padding-inline: var(--ui-nav-padding-inline);
13734
+ min-block-size: var(--ui-nav-min-block-size);
13735
+ padding-block: var(--ui-nav-padding-block);
13736
+ border-radius: var(--ui-selection-radius);
13737
+ font-size: var(--ui-font-size-md);
13738
+ font-weight: var(--ui-font-normal);
13739
+ color: var(--ui-text-secondary);
13740
+ }
13741
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"][data-ui-disclosure-state~="density=compact"] .trigger {
13742
+ padding-inline: var(--ui-nav-compact-padding-inline);
13743
+ padding-block: var(--ui-nav-compact-padding-block);
13744
+ min-block-size: var(--ui-nav-compact-min-block-size);
13745
+ font-size: var(--ui-font-size-sm);
13746
+ }
13747
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] .trigger:hover:not(:disabled) {
13748
+ background: var(--ui-nav-hover-surface);
13749
+ color: var(--ui-text-primary);
13750
+ }
13751
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] :is(.leading, .indicator) {
13752
+ inline-size: var(--ui-nav-icon-size);
13753
+ font-size: var(--ui-nav-icon-size);
13754
+ }
13755
+ @media (pointer: coarse) {
13756
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"][data-ui-disclosure-state~="density=compact"] .trigger {
13757
+ min-block-size: var(--ui-control-min-block-size);
13758
+ }
13759
+ }
13760
+
13761
+ @media (prefers-reduced-motion: reduce) {
13762
+ :scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"],
13763
+ .panel,
13764
+ .indicator {
13765
+ transition: none;
13766
+ }
13767
+ }
13768
+
13769
+ /* A component that sets its display still honours the hidden attribute on its root. */
13770
+ :scope:where([data-component~="ui-disclosure"])[hidden] {
13771
+ display: none;
13772
+ }
13773
+ }
13774
+ @scope ([data-component~="ui-disclosure"]) to ([data-component]) {
13775
+ /* This component's hooks style the element they are set on, and never a nested one. */
13776
+
13777
+ /* Density resolves into the summary row's own values; the public tokens still override them. */
13778
+
13779
+ /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
13780
+ * select or combobox. Stacked disclosures share their dividers. */
13781
+
13782
+ /* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
13783
+ * normal content-sized layout and its animation remain unchanged when fill is omitted. */
13784
+ @media (pointer: coarse) {
13785
+ }
13786
+
13787
+ @media (prefers-reduced-motion: reduce) {
13788
+ }
13789
+
13790
+ /* A component that sets its display still honours the hidden attribute on its root. */
13791
+ }
13792
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
13793
+ @supports (-moz-appearance: none) {
13794
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
13795
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
13796
+ }
13797
+ @supports (-moz-appearance: none) {
13798
+ [data-component~="ui-input"] { --html-next-scope-owner: "ui-input" !important; }
13799
+ }
13800
+ @scope ([data-component~="ui-input"]) to ([data-component], [data-slotted]) {
13801
+ /* This component's hooks style the element they are set on, and never a nested one. An Input
13802
+ Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
13803
+ @property --ui-input-border {
13804
+ syntax: "*";
13805
+ inherits: false;
13806
+ }
13807
+ @property --ui-input-border-hover {
13808
+ syntax: "*";
13809
+ inherits: false;
13810
+ }
13811
+ @property --ui-input-border-width {
13812
+ syntax: "*";
13813
+ inherits: false;
13814
+ }
13815
+ @property --ui-input-focus-border {
13816
+ syntax: "*";
13817
+ inherits: false;
13818
+ }
13819
+ @property --ui-input-focus-outline {
13820
+ syntax: "*";
13821
+ inherits: false;
13822
+ }
13823
+ @property --ui-input-focus-shadow {
13824
+ syntax: "*";
13825
+ inherits: false;
13826
+ }
13827
+ @property --ui-input-inline-size {
13828
+ syntax: "*";
13829
+ inherits: false;
13830
+ }
13831
+ @property --ui-input-invalid-border {
13832
+ syntax: "*";
13833
+ inherits: false;
13834
+ }
13835
+ @property --ui-input-invalid-focus-shadow {
13836
+ syntax: "*";
13837
+ inherits: false;
13838
+ }
13839
+ @property --ui-input-min-block-size {
13840
+ syntax: "*";
13841
+ inherits: false;
13842
+ }
13843
+ @property --ui-input-radius {
13844
+ syntax: "*";
13845
+ inherits: false;
13846
+ }
13847
+ @property --ui-input-shadow {
13848
+ syntax: "*";
13849
+ inherits: false;
13850
+ }
13851
+ @property --ui-input-surface {
13852
+ syntax: "*";
13853
+ inherits: false;
13854
+ }
13855
+
13856
+ :scope:where([data-component~="ui-input"]) {
13857
+ box-sizing: border-box;
13858
+ display: inline-block;
13859
+ inline-size: var(--ui-input-inline-size, 100%);
13860
+ min-inline-size: 0;
13861
+ min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-md)));
13862
+ margin: 0;
13863
+ padding: var(--ui-space-2) var(--ui-space-3);
13864
+ appearance: none;
13865
+ padding-inline-start: var(--_ui-default-input-padding-inline-start, var(--ui-space-3));
13866
+ border: var(--ui-input-border-width, var(--_ui-default-input-border-width, var(--ui-border-width))) solid
13867
+ var(--ui-input-border, var(--_ui-default-input-border, var(--ui-control-border, var(--ui-border-strong))));
13868
+ border-radius: var(--ui-input-radius, var(--_ui-default-input-radius, var(--ui-field-radius, var(--ui-radius-md))));
13869
+ background: var(--ui-input-surface, var(--_ui-default-input-surface, var(--ui-control-surface, var(--ui-surface-elevated))));
13870
+ color: var(--ui-text-primary);
13871
+ font: inherit;
13872
+ line-height: var(--ui-line-height-tight);
13873
+ box-shadow: var(--ui-input-shadow, var(--_ui-default-input-shadow, var(--ui-control-inset)));
13874
+ transition:
13875
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
13876
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
13877
+ background-color var(--ui-motion-fast) var(--ui-motion-ease);
13878
+ }
13879
+
13880
+ /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
13881
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"] {
13882
+ min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-sm)));
13883
+ padding: var(--ui-space-1) var(--ui-space-2);
13884
+ font-size: var(--ui-font-size-sm);
13885
+ }
13886
+
13887
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=lg"] {
13888
+ min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-lg)));
13889
+ padding: var(--ui-space-3) var(--ui-space-4);
13890
+ font-size: var(--ui-font-size-md);
13891
+ }
13892
+
13893
+ /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
13894
+ body-size text: below 16px, iOS zooms the page into the focused field. */
13895
+ @media (pointer: coarse) {
13896
+ :scope:where([data-component~="ui-input"]) {
13897
+ min-block-size: var(
13898
+ --ui-input-min-block-size,
13899
+ var(--_ui-default-input-min-block-size, max(var(--ui-control-size-md), var(--ui-control-min-block-size)))
13900
+ );
13901
+ }
13902
+
13903
+ :scope:where([data-component~="ui-input"]),
13904
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"],
13905
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=lg"] {
13906
+ font-size: var(--ui-font-size-md);
13907
+ }
13908
+
13909
+ :scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"] {
13910
+ min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-min-block-size)));
13911
+ }
13912
+ }
13913
+
13914
+ /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
13915
+ :scope:where([data-component~="ui-input"])::selection {
13916
+ background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
13917
+ color: inherit;
13918
+ }
13919
+
13920
+ :scope:where([data-component~="ui-input"])::placeholder {
13921
+ color: var(--ui-control-placeholder, var(--ui-text-secondary));
13922
+ opacity: 1;
13923
+ }
13924
+
13925
+ :scope:where([data-component~="ui-input"]):hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
13926
+ border-color: var(--ui-input-border-hover, var(--_ui-default-input-border-hover, var(--ui-control-border-hover, var(--ui-text-secondary))));
13927
+ }
13928
+
13929
+ :scope:where([data-component~="ui-input"]):focus-visible {
13930
+ border-color: var(--ui-input-focus-border, var(--_ui-default-input-focus-border, var(--ui-control-focus, var(--ui-accent-solid))));
13931
+ outline: none;
13932
+ box-shadow: var(--ui-input-focus-shadow, var(--_ui-default-input-focus-shadow, var(--ui-control-inset), var(--ui-control-focus-halo-shadow)));
13933
+ }
13934
+
13935
+ /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
13936
+ :scope:where([data-component~="ui-input"])[aria-invalid="true"],
13937
+ :scope:where([data-component~="ui-input"]):is(:user-invalid, [data-user-invalid]) {
13938
+ border-color: var(--ui-input-invalid-border, var(--_ui-default-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))));
13939
+ }
13940
+
13941
+ :scope:where([data-component~="ui-input"]):is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
13942
+ box-shadow: var(
13943
+ --ui-input-invalid-focus-shadow,
13944
+ var(
13945
+ --_ui-default-input-invalid-focus-shadow,
13946
+ var(--ui-control-inset),
13947
+ 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
13948
+ in srgb,
13949
+ var(--ui-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
13950
+ transparent
13951
+ )
13952
+ )
13953
+ );
13954
+ }
13955
+
13956
+ :scope:where([data-component~="ui-input"]):disabled {
13957
+ background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
13958
+ color: var(--ui-disabled-text);
13959
+ box-shadow: none;
13960
+ cursor: not-allowed;
13961
+ }
13962
+
13963
+ /* Forced colors drop box shadows, so the focus ring becomes an outline. */
13964
+ @media (forced-colors: active) {
13965
+ :scope:where([data-component~="ui-input"]):focus-visible {
13966
+ outline: var(--ui-input-focus-outline, var(--_ui-default-input-focus-outline, var(--ui-focus-width) solid Highlight));
13967
+ outline-offset: var(--ui-border-width);
13968
+ }
13969
+ }
13970
+
13971
+ /* No text-box-trim here: trimming a native input's line box below its line height lets the text
13972
+ * scroll vertically inside the field. Native inputs already center their single line. */
13973
+
13974
+ /* A component that sets its display still honours the hidden attribute on its root. */
13975
+ :scope:where([data-component~="ui-input"])[hidden] {
13976
+ display: none;
13977
+ }
13978
+ }
13979
+ @scope ([data-component~="ui-input"]) to ([data-component]) {
13980
+ /* This component's hooks style the element they are set on, and never a nested one. An Input
13981
+ Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
13982
+
13983
+ /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
13984
+
13985
+ /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
13986
+ body-size text: below 16px, iOS zooms the page into the focused field. */
13987
+ @media (pointer: coarse) {
13988
+ }
13989
+
13990
+ /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
13991
+
13992
+ /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
13993
+
13994
+ /* Forced colors drop box shadows, so the focus ring becomes an outline. */
13995
+ @media (forced-colors: active) {
13996
+ }
13997
+
13998
+ /* No text-box-trim here: trimming a native input's line box below its line height lets the text
13999
+ * scroll vertically inside the field. Native inputs already center their single line. */
14000
+
14001
+ /* A component that sets its display still honours the hidden attribute on its root. */
14002
+ }
14003
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
10969
14004
  @supports (-moz-appearance: none) {
10970
14005
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
10971
14006
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
@@ -11020,7 +14055,7 @@ html[data-ui-input-modality="touch"]
11020
14055
 
11021
14056
  /* The root is the hr, so the rules name :host; a bare hr matches only a descendant. */
11022
14057
  }
11023
- /* Generated by HTML Next 1.0.0-alpha.55. Do not edit. */
14058
+ /* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
11024
14059
  @supports (-moz-appearance: none) {
11025
14060
  :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
11026
14061
  :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }