@cratis/components 2.9.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (573) hide show
  1. package/README.md +128 -67
  2. package/dist/esm/CommandDialog/CommandDialog.d.ts.map +1 -1
  3. package/dist/esm/CommandDialog/CommandDialog.js +4 -4
  4. package/dist/esm/CommandDialog/CommandDialog.js.map +1 -1
  5. package/dist/esm/CommandDialog/CommandStepper.d.ts +18 -4
  6. package/dist/esm/CommandDialog/CommandStepper.d.ts.map +1 -1
  7. package/dist/esm/CommandDialog/CommandStepper.js +51 -60
  8. package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
  9. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts +6 -7
  10. package/dist/esm/CommandDialog/StepperCommandDialog.d.ts.map +1 -1
  11. package/dist/esm/CommandDialog/StepperCommandDialog.js +18 -15
  12. package/dist/esm/CommandDialog/StepperCommandDialog.js.map +1 -1
  13. package/dist/esm/CommandDialog/StepperPanel.d.ts +10 -0
  14. package/dist/esm/CommandDialog/StepperPanel.d.ts.map +1 -0
  15. package/dist/esm/CommandDialog/StepperPanel.js +30 -0
  16. package/dist/esm/CommandDialog/StepperPanel.js.map +1 -0
  17. package/dist/esm/CommandDialog/index.d.ts +1 -0
  18. package/dist/esm/CommandDialog/index.d.ts.map +1 -1
  19. package/dist/esm/CommandDialog/index.js +1 -0
  20. package/dist/esm/CommandDialog/index.js.map +1 -1
  21. package/dist/esm/CommandForm/fields/CalendarField.d.ts +3 -3
  22. package/dist/esm/CommandForm/fields/CalendarField.d.ts.map +1 -1
  23. package/dist/esm/CommandForm/fields/CalendarField.js +2 -8
  24. package/dist/esm/CommandForm/fields/CalendarField.js.map +1 -1
  25. package/dist/esm/CommandForm/fields/CheckboxField.d.ts +3 -3
  26. package/dist/esm/CommandForm/fields/CheckboxField.d.ts.map +1 -1
  27. package/dist/esm/CommandForm/fields/CheckboxField.js +1 -1
  28. package/dist/esm/CommandForm/fields/CheckboxField.js.map +1 -1
  29. package/dist/esm/CommandForm/fields/ChipsField.d.ts +4 -3
  30. package/dist/esm/CommandForm/fields/ChipsField.d.ts.map +1 -1
  31. package/dist/esm/CommandForm/fields/ChipsField.js +3 -3
  32. package/dist/esm/CommandForm/fields/ChipsField.js.map +1 -1
  33. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts +3 -3
  34. package/dist/esm/CommandForm/fields/ColorPickerField.d.ts.map +1 -1
  35. package/dist/esm/CommandForm/fields/ColorPickerField.js +16 -8
  36. package/dist/esm/CommandForm/fields/ColorPickerField.js.map +1 -1
  37. package/dist/esm/CommandForm/fields/DropdownField.d.ts +1 -1
  38. package/dist/esm/CommandForm/fields/DropdownField.d.ts.map +1 -1
  39. package/dist/esm/CommandForm/fields/DropdownField.js +1 -4
  40. package/dist/esm/CommandForm/fields/DropdownField.js.map +1 -1
  41. package/dist/esm/CommandForm/fields/InputTextField.d.ts +1 -1
  42. package/dist/esm/CommandForm/fields/InputTextField.d.ts.map +1 -1
  43. package/dist/esm/CommandForm/fields/InputTextField.js.map +1 -1
  44. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts +3 -3
  45. package/dist/esm/CommandForm/fields/MultiSelectField.d.ts.map +1 -1
  46. package/dist/esm/CommandForm/fields/MultiSelectField.js +2 -8
  47. package/dist/esm/CommandForm/fields/MultiSelectField.js.map +1 -1
  48. package/dist/esm/CommandForm/fields/NumberField.d.ts +3 -3
  49. package/dist/esm/CommandForm/fields/NumberField.d.ts.map +1 -1
  50. package/dist/esm/CommandForm/fields/NumberField.js +1 -1
  51. package/dist/esm/CommandForm/fields/NumberField.js.map +1 -1
  52. package/dist/esm/CommandForm/fields/PasswordField.d.ts +13 -0
  53. package/dist/esm/CommandForm/fields/PasswordField.d.ts.map +1 -0
  54. package/dist/esm/CommandForm/fields/PasswordField.js +20 -0
  55. package/dist/esm/CommandForm/fields/PasswordField.js.map +1 -0
  56. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts +3 -3
  57. package/dist/esm/CommandForm/fields/RadioButtonField.d.ts.map +1 -1
  58. package/dist/esm/CommandForm/fields/RadioButtonField.js +2 -1
  59. package/dist/esm/CommandForm/fields/RadioButtonField.js.map +1 -1
  60. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts +3 -3
  61. package/dist/esm/CommandForm/fields/RadioGroupField.d.ts.map +1 -1
  62. package/dist/esm/CommandForm/fields/RadioGroupField.js +2 -1
  63. package/dist/esm/CommandForm/fields/RadioGroupField.js.map +1 -1
  64. package/dist/esm/CommandForm/fields/RatingField.d.ts +14 -0
  65. package/dist/esm/CommandForm/fields/RatingField.d.ts.map +1 -0
  66. package/dist/esm/CommandForm/fields/RatingField.js +19 -0
  67. package/dist/esm/CommandForm/fields/RatingField.js.map +1 -0
  68. package/dist/esm/CommandForm/fields/SliderField.d.ts +3 -3
  69. package/dist/esm/CommandForm/fields/SliderField.d.ts.map +1 -1
  70. package/dist/esm/CommandForm/fields/SliderField.js +1 -1
  71. package/dist/esm/CommandForm/fields/SliderField.js.map +1 -1
  72. package/dist/esm/CommandForm/fields/TextAreaField.d.ts +3 -3
  73. package/dist/esm/CommandForm/fields/TextAreaField.d.ts.map +1 -1
  74. package/dist/esm/CommandForm/fields/TextAreaField.js +2 -2
  75. package/dist/esm/CommandForm/fields/TextAreaField.js.map +1 -1
  76. package/dist/esm/CommandForm/fields/ToggleSwitchField.d.ts +13 -0
  77. package/dist/esm/CommandForm/fields/ToggleSwitchField.d.ts.map +1 -0
  78. package/dist/esm/CommandForm/fields/ToggleSwitchField.js +20 -0
  79. package/dist/esm/CommandForm/fields/ToggleSwitchField.js.map +1 -0
  80. package/dist/esm/CommandForm/fields/index.d.ts +3 -0
  81. package/dist/esm/CommandForm/fields/index.d.ts.map +1 -1
  82. package/dist/esm/CommandForm/fields/index.js +3 -0
  83. package/dist/esm/CommandForm/fields/index.js.map +1 -1
  84. package/dist/esm/CommandForm/index.js +3 -0
  85. package/dist/esm/CommandForm/index.js.map +1 -1
  86. package/dist/esm/Common/ActionMenubar.d.ts +21 -0
  87. package/dist/esm/Common/ActionMenubar.d.ts.map +1 -0
  88. package/dist/esm/Common/ActionMenubar.js +20 -0
  89. package/dist/esm/Common/ActionMenubar.js.map +1 -0
  90. package/dist/esm/Common/CratisComponentsProvider.d.ts +5 -3
  91. package/dist/esm/Common/CratisComponentsProvider.d.ts.map +1 -1
  92. package/dist/esm/Common/CratisComponentsProvider.js +27 -11
  93. package/dist/esm/Common/CratisComponentsProvider.js.map +1 -1
  94. package/dist/esm/Common/DatePickerInput.d.ts +22 -0
  95. package/dist/esm/Common/DatePickerInput.d.ts.map +1 -0
  96. package/dist/esm/Common/DatePickerInput.js +18 -0
  97. package/dist/esm/Common/DatePickerInput.js.map +1 -0
  98. package/dist/esm/Common/FormElement.d.ts +0 -1
  99. package/dist/esm/Common/FormElement.d.ts.map +1 -1
  100. package/dist/esm/Common/FormElement.js +0 -1
  101. package/dist/esm/Common/FormElement.js.map +1 -1
  102. package/dist/esm/Common/Tooltip.d.ts +2 -2
  103. package/dist/esm/Common/Tooltip.d.ts.map +1 -1
  104. package/dist/esm/Common/Tooltip.js +25 -13
  105. package/dist/esm/Common/Tooltip.js.map +1 -1
  106. package/dist/esm/Common/index.d.ts +2 -0
  107. package/dist/esm/Common/index.d.ts.map +1 -1
  108. package/dist/esm/Common/index.js +2 -0
  109. package/dist/esm/Common/index.js.map +1 -1
  110. package/dist/esm/DataPage/DataPage.d.ts +17 -10
  111. package/dist/esm/DataPage/DataPage.d.ts.map +1 -1
  112. package/dist/esm/DataPage/DataPage.js +19 -18
  113. package/dist/esm/DataPage/DataPage.js.map +1 -1
  114. package/dist/esm/DataPage/index.d.ts +1 -0
  115. package/dist/esm/DataPage/index.d.ts.map +1 -1
  116. package/dist/esm/DataPage/index.js +1 -0
  117. package/dist/esm/DataPage/index.js.map +1 -1
  118. package/dist/esm/DataTables/Column.d.ts +25 -0
  119. package/dist/esm/DataTables/Column.d.ts.map +1 -0
  120. package/dist/esm/DataTables/Column.js +24 -0
  121. package/dist/esm/DataTables/Column.js.map +1 -0
  122. package/dist/esm/DataTables/ColumnFilterMenu.d.ts +10 -0
  123. package/dist/esm/DataTables/ColumnFilterMenu.d.ts.map +1 -0
  124. package/dist/esm/DataTables/ColumnFilterMenu.js +44 -0
  125. package/dist/esm/DataTables/ColumnFilterMenu.js.map +1 -0
  126. package/dist/esm/DataTables/DataTableCore.d.ts +33 -0
  127. package/dist/esm/DataTables/DataTableCore.d.ts.map +1 -0
  128. package/dist/esm/DataTables/DataTableCore.js +59 -0
  129. package/dist/esm/DataTables/DataTableCore.js.map +1 -0
  130. package/dist/esm/DataTables/DataTableFilterMeta.d.ts +6 -0
  131. package/dist/esm/DataTables/DataTableFilterMeta.d.ts.map +1 -0
  132. package/dist/esm/DataTables/DataTableFilterMeta.js +2 -0
  133. package/dist/esm/DataTables/DataTableFilterMeta.js.map +1 -0
  134. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts +9 -8
  135. package/dist/esm/DataTables/DataTableForObservableQuery.d.ts.map +1 -1
  136. package/dist/esm/DataTables/DataTableForObservableQuery.js +41 -64
  137. package/dist/esm/DataTables/DataTableForObservableQuery.js.map +1 -1
  138. package/dist/esm/DataTables/DataTableForQuery.d.ts +9 -8
  139. package/dist/esm/DataTables/DataTableForQuery.d.ts.map +1 -1
  140. package/dist/esm/DataTables/DataTableForQuery.js +17 -44
  141. package/dist/esm/DataTables/DataTableForQuery.js.map +1 -1
  142. package/dist/esm/DataTables/DataTableSelectionChangeEvent.d.ts +6 -0
  143. package/dist/esm/DataTables/DataTableSelectionChangeEvent.d.ts.map +1 -0
  144. package/dist/esm/DataTables/DataTableSelectionChangeEvent.js +2 -0
  145. package/dist/esm/DataTables/DataTableSelectionChangeEvent.js.map +1 -0
  146. package/dist/esm/DataTables/TablePaginator.d.ts +17 -0
  147. package/dist/esm/DataTables/TablePaginator.d.ts.map +1 -0
  148. package/dist/esm/DataTables/TablePaginator.js +22 -0
  149. package/dist/esm/DataTables/TablePaginator.js.map +1 -0
  150. package/dist/esm/DataTables/index.d.ts +4 -0
  151. package/dist/esm/DataTables/index.d.ts.map +1 -1
  152. package/dist/esm/DataTables/index.js +2 -0
  153. package/dist/esm/DataTables/index.js.map +1 -1
  154. package/dist/esm/DataTables/paginatorRange.d.ts +2 -0
  155. package/dist/esm/DataTables/paginatorRange.d.ts.map +1 -0
  156. package/dist/esm/DataTables/paginatorRange.js +21 -0
  157. package/dist/esm/DataTables/paginatorRange.js.map +1 -0
  158. package/dist/esm/DataTables/selectionKeys.d.ts +4 -0
  159. package/dist/esm/DataTables/selectionKeys.d.ts.map +1 -0
  160. package/dist/esm/DataTables/selectionKeys.js +34 -0
  161. package/dist/esm/DataTables/selectionKeys.js.map +1 -0
  162. package/dist/esm/Dialogs/BusyIndicatorDialog.d.ts.map +1 -1
  163. package/dist/esm/Dialogs/BusyIndicatorDialog.js +2 -2
  164. package/dist/esm/Dialogs/BusyIndicatorDialog.js.map +1 -1
  165. package/dist/esm/Dialogs/Dialog.d.ts +9 -7
  166. package/dist/esm/Dialogs/Dialog.d.ts.map +1 -1
  167. package/dist/esm/Dialogs/Dialog.js +45 -23
  168. package/dist/esm/Dialogs/Dialog.js.map +1 -1
  169. package/dist/esm/Display/Avatar.d.ts +11 -0
  170. package/dist/esm/Display/Avatar.d.ts.map +1 -0
  171. package/dist/esm/Display/Avatar.js +13 -0
  172. package/dist/esm/Display/Avatar.js.map +1 -0
  173. package/dist/esm/Display/Badge.d.ts +12 -0
  174. package/dist/esm/Display/Badge.d.ts.map +1 -0
  175. package/dist/esm/Display/Badge.js +11 -0
  176. package/dist/esm/Display/Badge.js.map +1 -0
  177. package/dist/esm/Display/Chip.d.ts +11 -0
  178. package/dist/esm/Display/Chip.d.ts.map +1 -0
  179. package/dist/esm/Display/Chip.js +11 -0
  180. package/dist/esm/Display/Chip.js.map +1 -0
  181. package/dist/esm/Display/ProgressBar.d.ts +8 -0
  182. package/dist/esm/Display/ProgressBar.d.ts.map +1 -0
  183. package/dist/esm/Display/ProgressBar.js +12 -0
  184. package/dist/esm/Display/ProgressBar.js.map +1 -0
  185. package/dist/esm/Display/Skeleton.d.ts +9 -0
  186. package/dist/esm/Display/Skeleton.d.ts.map +1 -0
  187. package/dist/esm/Display/Skeleton.js +18 -0
  188. package/dist/esm/Display/Skeleton.js.map +1 -0
  189. package/dist/esm/Display/Tag.d.ts +12 -0
  190. package/dist/esm/Display/Tag.d.ts.map +1 -0
  191. package/dist/esm/Display/Tag.js +12 -0
  192. package/dist/esm/Display/Tag.js.map +1 -0
  193. package/dist/esm/Display/index.d.ts +7 -0
  194. package/dist/esm/Display/index.d.ts.map +1 -0
  195. package/dist/esm/Display/index.js +10 -0
  196. package/dist/esm/Display/index.js.map +1 -0
  197. package/dist/esm/Dropdown/Dropdown.d.ts +33 -3
  198. package/dist/esm/Dropdown/Dropdown.d.ts.map +1 -1
  199. package/dist/esm/Dropdown/Dropdown.js +15 -18
  200. package/dist/esm/Dropdown/Dropdown.js.map +1 -1
  201. package/dist/esm/Filter/FilterPanel.d.ts +3 -2
  202. package/dist/esm/Filter/FilterPanel.d.ts.map +1 -1
  203. package/dist/esm/Filter/FilterPanel.js +4 -5
  204. package/dist/esm/Filter/FilterPanel.js.map +1 -1
  205. package/dist/esm/Notifications/Toaster.d.ts +9 -0
  206. package/dist/esm/Notifications/Toaster.d.ts.map +1 -0
  207. package/dist/esm/Notifications/Toaster.js +43 -0
  208. package/dist/esm/Notifications/Toaster.js.map +1 -0
  209. package/dist/esm/Notifications/index.d.ts +4 -0
  210. package/dist/esm/Notifications/index.d.ts.map +1 -0
  211. package/dist/{cjs/types → esm/Notifications}/index.js +3 -5
  212. package/dist/esm/Notifications/index.js.map +1 -0
  213. package/dist/esm/Notifications/toast.d.ts +3 -0
  214. package/dist/esm/Notifications/toast.d.ts.map +1 -0
  215. package/dist/esm/Notifications/toast.js +2 -0
  216. package/dist/esm/Notifications/toast.js.map +1 -0
  217. package/dist/esm/Notifications/toastCommandResult.d.ts +11 -0
  218. package/dist/esm/Notifications/toastCommandResult.d.ts.map +1 -0
  219. package/dist/esm/Notifications/toastCommandResult.js +59 -0
  220. package/dist/esm/Notifications/toastCommandResult.js.map +1 -0
  221. package/dist/esm/ObjectContentEditor/ObjectContentEditor.d.ts.map +1 -1
  222. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js +11 -15
  223. package/dist/esm/ObjectContentEditor/ObjectContentEditor.js.map +1 -1
  224. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts +2 -2
  225. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.d.ts.map +1 -1
  226. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js +3 -3
  227. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.js.map +1 -1
  228. package/dist/esm/PivotViewer/PivotViewer.d.ts +0 -1
  229. package/dist/esm/PivotViewer/PivotViewer.d.ts.map +1 -1
  230. package/dist/esm/PivotViewer/PivotViewer.js +0 -1
  231. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  232. package/dist/esm/PivotViewer/components/Spinner.d.ts +0 -1
  233. package/dist/esm/PivotViewer/components/Spinner.d.ts.map +1 -1
  234. package/dist/esm/PivotViewer/components/Spinner.js +2 -1
  235. package/dist/esm/PivotViewer/components/Spinner.js.map +1 -1
  236. package/dist/esm/SchemaEditor/NameCell.d.ts.map +1 -1
  237. package/dist/esm/SchemaEditor/NameCell.js +3 -2
  238. package/dist/esm/SchemaEditor/NameCell.js.map +1 -1
  239. package/dist/esm/SchemaEditor/SchemaEditor.d.ts +15 -1
  240. package/dist/esm/SchemaEditor/SchemaEditor.d.ts.map +1 -1
  241. package/dist/esm/SchemaEditor/SchemaEditor.js +45 -32
  242. package/dist/esm/SchemaEditor/SchemaEditor.js.map +1 -1
  243. package/dist/esm/SchemaEditor/TypeCell.d.ts +3 -1
  244. package/dist/esm/SchemaEditor/TypeCell.d.ts.map +1 -1
  245. package/dist/esm/SchemaEditor/TypeCell.js +7 -6
  246. package/dist/esm/SchemaEditor/TypeCell.js.map +1 -1
  247. package/dist/esm/SchemaEditor/index.js +1 -1
  248. package/dist/esm/TimeMachine/EventsView.d.ts +5 -4
  249. package/dist/esm/TimeMachine/EventsView.d.ts.map +1 -1
  250. package/dist/esm/TimeMachine/EventsView.js +3 -3
  251. package/dist/esm/TimeMachine/EventsView.js.map +1 -1
  252. package/dist/esm/TimeMachine/Properties.d.ts +0 -1
  253. package/dist/esm/TimeMachine/Properties.d.ts.map +1 -1
  254. package/dist/esm/TimeMachine/Properties.js +0 -1
  255. package/dist/esm/TimeMachine/Properties.js.map +1 -1
  256. package/dist/esm/TimeMachine/ReadModelView.d.ts +2 -0
  257. package/dist/esm/TimeMachine/ReadModelView.d.ts.map +1 -1
  258. package/dist/esm/TimeMachine/ReadModelView.js +3 -2
  259. package/dist/esm/TimeMachine/ReadModelView.js.map +1 -1
  260. package/dist/esm/TimeMachine/TimeMachine.d.ts +4 -1
  261. package/dist/esm/TimeMachine/TimeMachine.d.ts.map +1 -1
  262. package/dist/esm/TimeMachine/TimeMachine.js +5 -4
  263. package/dist/esm/TimeMachine/TimeMachine.js.map +1 -1
  264. package/dist/esm/TimeMachine/TimeMachineLabels.d.ts +12 -0
  265. package/dist/esm/TimeMachine/TimeMachineLabels.d.ts.map +1 -0
  266. package/dist/esm/TimeMachine/TimeMachineLabels.js +16 -0
  267. package/dist/esm/TimeMachine/TimeMachineLabels.js.map +1 -0
  268. package/dist/esm/TimeMachine/index.d.ts +2 -0
  269. package/dist/esm/TimeMachine/index.d.ts.map +1 -1
  270. package/dist/esm/TimeMachine/index.js +1 -0
  271. package/dist/esm/TimeMachine/index.js.map +1 -1
  272. package/dist/esm/Toolbar/Toolbar.d.ts +0 -1
  273. package/dist/esm/Toolbar/Toolbar.d.ts.map +1 -1
  274. package/dist/esm/Toolbar/Toolbar.js +0 -1
  275. package/dist/esm/Toolbar/Toolbar.js.map +1 -1
  276. package/dist/esm/index.d.ts +3 -1
  277. package/dist/esm/index.d.ts.map +1 -1
  278. package/dist/esm/index.js +22 -18
  279. package/dist/esm/index.js.map +1 -1
  280. package/dist/esm/styles.css +4686 -0
  281. package/dist/esm/theme.css +357 -0
  282. package/dist/esm/tokens.css +32 -12
  283. package/package.json +40 -26
  284. package/dist/cjs/CommandDialog/CommandDialog.js +0 -195
  285. package/dist/cjs/CommandDialog/CommandDialog.js.map +0 -1
  286. package/dist/cjs/CommandDialog/CommandStepper.css +0 -24
  287. package/dist/cjs/CommandDialog/CommandStepper.js +0 -238
  288. package/dist/cjs/CommandDialog/CommandStepper.js.map +0 -1
  289. package/dist/cjs/CommandDialog/StepperCommandDialog.js +0 -207
  290. package/dist/cjs/CommandDialog/StepperCommandDialog.js.map +0 -1
  291. package/dist/cjs/CommandDialog/applyBeforeExecute.js +0 -42
  292. package/dist/cjs/CommandDialog/applyBeforeExecute.js.map +0 -1
  293. package/dist/cjs/CommandDialog/index.js +0 -16
  294. package/dist/cjs/CommandDialog/index.js.map +0 -1
  295. package/dist/cjs/CommandDialog/stepChildren.js +0 -31
  296. package/dist/cjs/CommandDialog/stepChildren.js.map +0 -1
  297. package/dist/cjs/CommandForm/AutoCommandForm.js +0 -49
  298. package/dist/cjs/CommandForm/AutoCommandForm.js.map +0 -1
  299. package/dist/cjs/CommandForm/defaultFieldTypeProviders.js +0 -24
  300. package/dist/cjs/CommandForm/defaultFieldTypeProviders.js.map +0 -1
  301. package/dist/cjs/CommandForm/fieldTypeProviderRegistry.js +0 -36
  302. package/dist/cjs/CommandForm/fieldTypeProviderRegistry.js.map +0 -1
  303. package/dist/cjs/CommandForm/fields/CalendarField.js +0 -32
  304. package/dist/cjs/CommandForm/fields/CalendarField.js.map +0 -1
  305. package/dist/cjs/CommandForm/fields/CheckboxField.js +0 -22
  306. package/dist/cjs/CommandForm/fields/CheckboxField.js.map +0 -1
  307. package/dist/cjs/CommandForm/fields/ChipsField.js +0 -28
  308. package/dist/cjs/CommandForm/fields/ChipsField.js.map +0 -1
  309. package/dist/cjs/CommandForm/fields/ColorPickerField.js +0 -33
  310. package/dist/cjs/CommandForm/fields/ColorPickerField.js.map +0 -1
  311. package/dist/cjs/CommandForm/fields/DropdownField.js +0 -31
  312. package/dist/cjs/CommandForm/fields/DropdownField.js.map +0 -1
  313. package/dist/cjs/CommandForm/fields/InputTextField.js +0 -53
  314. package/dist/cjs/CommandForm/fields/InputTextField.js.map +0 -1
  315. package/dist/cjs/CommandForm/fields/MultiSelectField.js +0 -36
  316. package/dist/cjs/CommandForm/fields/MultiSelectField.js.map +0 -1
  317. package/dist/cjs/CommandForm/fields/NumberField.js +0 -23
  318. package/dist/cjs/CommandForm/fields/NumberField.js.map +0 -1
  319. package/dist/cjs/CommandForm/fields/RadioButtonField.js +0 -23
  320. package/dist/cjs/CommandForm/fields/RadioButtonField.js.map +0 -1
  321. package/dist/cjs/CommandForm/fields/RadioGroupField.js +0 -40
  322. package/dist/cjs/CommandForm/fields/RadioGroupField.js.map +0 -1
  323. package/dist/cjs/CommandForm/fields/SliderField.js +0 -22
  324. package/dist/cjs/CommandForm/fields/SliderField.js.map +0 -1
  325. package/dist/cjs/CommandForm/fields/TextAreaField.js +0 -24
  326. package/dist/cjs/CommandForm/fields/TextAreaField.js.map +0 -1
  327. package/dist/cjs/CommandForm/index.js +0 -37
  328. package/dist/cjs/CommandForm/index.js.map +0 -1
  329. package/dist/cjs/Common/CratisComponentsProvider.js +0 -44
  330. package/dist/cjs/Common/CratisComponentsProvider.js.map +0 -1
  331. package/dist/cjs/Common/ErrorBoundary.js +0 -58
  332. package/dist/cjs/Common/ErrorBoundary.js.map +0 -1
  333. package/dist/cjs/Common/FormElement.css +0 -26
  334. package/dist/cjs/Common/FormElement.js +0 -23
  335. package/dist/cjs/Common/FormElement.js.map +0 -1
  336. package/dist/cjs/Common/Icon.js +0 -33
  337. package/dist/cjs/Common/Icon.js.map +0 -1
  338. package/dist/cjs/Common/Page.js +0 -23
  339. package/dist/cjs/Common/Page.js.map +0 -1
  340. package/dist/cjs/Common/Tooltip.css +0 -10
  341. package/dist/cjs/Common/Tooltip.js +0 -21
  342. package/dist/cjs/Common/Tooltip.js.map +0 -1
  343. package/dist/cjs/Common/index.js +0 -23
  344. package/dist/cjs/Common/index.js.map +0 -1
  345. package/dist/cjs/Common/normalizeIconClass.js +0 -48
  346. package/dist/cjs/Common/normalizeIconClass.js.map +0 -1
  347. package/dist/cjs/DataPage/DataPage.js +0 -219
  348. package/dist/cjs/DataPage/DataPage.js.map +0 -1
  349. package/dist/cjs/DataPage/DataPageLayout.js +0 -34
  350. package/dist/cjs/DataPage/DataPageLayout.js.map +0 -1
  351. package/dist/cjs/DataPage/index.js +0 -12
  352. package/dist/cjs/DataPage/index.js.map +0 -1
  353. package/dist/cjs/DataTables/DataTableForObservableQuery.js +0 -133
  354. package/dist/cjs/DataTables/DataTableForObservableQuery.js.map +0 -1
  355. package/dist/cjs/DataTables/DataTableForQuery.js +0 -96
  356. package/dist/cjs/DataTables/DataTableForQuery.js.map +0 -1
  357. package/dist/cjs/DataTables/index.js +0 -11
  358. package/dist/cjs/DataTables/index.js.map +0 -1
  359. package/dist/cjs/Dialogs/BusyIndicatorDialog.js +0 -63
  360. package/dist/cjs/Dialogs/BusyIndicatorDialog.js.map +0 -1
  361. package/dist/cjs/Dialogs/ConfirmationDialog.js +0 -16
  362. package/dist/cjs/Dialogs/ConfirmationDialog.js.map +0 -1
  363. package/dist/cjs/Dialogs/Dialog.js +0 -203
  364. package/dist/cjs/Dialogs/Dialog.js.map +0 -1
  365. package/dist/cjs/Dialogs/DialogInitialFocus.js +0 -49
  366. package/dist/cjs/Dialogs/DialogInitialFocus.js.map +0 -1
  367. package/dist/cjs/Dialogs/index.js +0 -18
  368. package/dist/cjs/Dialogs/index.js.map +0 -1
  369. package/dist/cjs/Dropdown/Dropdown.js +0 -29
  370. package/dist/cjs/Dropdown/Dropdown.js.map +0 -1
  371. package/dist/cjs/Dropdown/index.js +0 -9
  372. package/dist/cjs/Dropdown/index.js.map +0 -1
  373. package/dist/cjs/Filter/FilterEditor.js +0 -28
  374. package/dist/cjs/Filter/FilterEditor.js.map +0 -1
  375. package/dist/cjs/Filter/FilterPanel.css +0 -459
  376. package/dist/cjs/Filter/FilterPanel.js +0 -109
  377. package/dist/cjs/Filter/FilterPanel.js.map +0 -1
  378. package/dist/cjs/Filter/RangeHistogramFilter.js +0 -121
  379. package/dist/cjs/Filter/RangeHistogramFilter.js.map +0 -1
  380. package/dist/cjs/Filter/index.js +0 -18
  381. package/dist/cjs/Filter/index.js.map +0 -1
  382. package/dist/cjs/Filter/useFilterState.js +0 -111
  383. package/dist/cjs/Filter/useFilterState.js.map +0 -1
  384. package/dist/cjs/Filter/utils.js +0 -28
  385. package/dist/cjs/Filter/utils.js.map +0 -1
  386. package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js +0 -268
  387. package/dist/cjs/ObjectContentEditor/ObjectContentEditor.js.map +0 -1
  388. package/dist/cjs/ObjectContentEditor/index.js +0 -9
  389. package/dist/cjs/ObjectContentEditor/index.js.map +0 -1
  390. package/dist/cjs/ObjectContentEditor/objectHelpers.js +0 -25
  391. package/dist/cjs/ObjectContentEditor/objectHelpers.js.map +0 -1
  392. package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.css +0 -6
  393. package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js +0 -49
  394. package/dist/cjs/ObjectNavigationalBar/ObjectNavigationalBar.js.map +0 -1
  395. package/dist/cjs/ObjectNavigationalBar/breadcrumbHelpers.js +0 -21
  396. package/dist/cjs/ObjectNavigationalBar/breadcrumbHelpers.js.map +0 -1
  397. package/dist/cjs/ObjectNavigationalBar/index.js +0 -9
  398. package/dist/cjs/ObjectNavigationalBar/index.js.map +0 -1
  399. package/dist/cjs/PivotViewer/PivotViewer.css +0 -1323
  400. package/dist/cjs/PivotViewer/PivotViewer.js +0 -307
  401. package/dist/cjs/PivotViewer/PivotViewer.js.map +0 -1
  402. package/dist/cjs/PivotViewer/components/AxisLabels.js +0 -28
  403. package/dist/cjs/PivotViewer/components/AxisLabels.js.map +0 -1
  404. package/dist/cjs/PivotViewer/components/DetailPanel.js +0 -42
  405. package/dist/cjs/PivotViewer/components/DetailPanel.js.map +0 -1
  406. package/dist/cjs/PivotViewer/components/FilterPanel.js +0 -29
  407. package/dist/cjs/PivotViewer/components/FilterPanel.js.map +0 -1
  408. package/dist/cjs/PivotViewer/components/FilterPanelContainer.js +0 -11
  409. package/dist/cjs/PivotViewer/components/FilterPanelContainer.js.map +0 -1
  410. package/dist/cjs/PivotViewer/components/PivotCanvas.js +0 -558
  411. package/dist/cjs/PivotViewer/components/PivotCanvas.js.map +0 -1
  412. package/dist/cjs/PivotViewer/components/PivotViewerMain.js +0 -98
  413. package/dist/cjs/PivotViewer/components/PivotViewerMain.js.map +0 -1
  414. package/dist/cjs/PivotViewer/components/Spinner.css +0 -77
  415. package/dist/cjs/PivotViewer/components/Spinner.js +0 -11
  416. package/dist/cjs/PivotViewer/components/Spinner.js.map +0 -1
  417. package/dist/cjs/PivotViewer/components/Toolbar.js +0 -44
  418. package/dist/cjs/PivotViewer/components/Toolbar.js.map +0 -1
  419. package/dist/cjs/PivotViewer/components/ToolbarContainer.js +0 -11
  420. package/dist/cjs/PivotViewer/components/ToolbarContainer.js.map +0 -1
  421. package/dist/cjs/PivotViewer/components/pivot/animation.js +0 -90
  422. package/dist/cjs/PivotViewer/components/pivot/animation.js.map +0 -1
  423. package/dist/cjs/PivotViewer/components/pivot/colorResolver.js +0 -66
  424. package/dist/cjs/PivotViewer/components/pivot/colorResolver.js.map +0 -1
  425. package/dist/cjs/PivotViewer/components/pivot/constants.js +0 -22
  426. package/dist/cjs/PivotViewer/components/pivot/constants.js.map +0 -1
  427. package/dist/cjs/PivotViewer/components/pivot/groups.js +0 -166
  428. package/dist/cjs/PivotViewer/components/pivot/groups.js.map +0 -1
  429. package/dist/cjs/PivotViewer/components/pivot/sprites.js +0 -279
  430. package/dist/cjs/PivotViewer/components/pivot/sprites.js.map +0 -1
  431. package/dist/cjs/PivotViewer/components/pivot/visibility.js +0 -359
  432. package/dist/cjs/PivotViewer/components/pivot/visibility.js.map +0 -1
  433. package/dist/cjs/PivotViewer/constants.js +0 -16
  434. package/dist/cjs/PivotViewer/constants.js.map +0 -1
  435. package/dist/cjs/PivotViewer/engine/layout.js +0 -123
  436. package/dist/cjs/PivotViewer/engine/layout.js.map +0 -1
  437. package/dist/cjs/PivotViewer/engine/store.js +0 -365
  438. package/dist/cjs/PivotViewer/engine/store.js.map +0 -1
  439. package/dist/cjs/PivotViewer/hooks/useAnimationModeTracking.js +0 -45
  440. package/dist/cjs/PivotViewer/hooks/useAnimationModeTracking.js.map +0 -1
  441. package/dist/cjs/PivotViewer/hooks/useCardSelection.js +0 -74
  442. package/dist/cjs/PivotViewer/hooks/useCardSelection.js.map +0 -1
  443. package/dist/cjs/PivotViewer/hooks/useContainerDimensions.js +0 -41
  444. package/dist/cjs/PivotViewer/hooks/useContainerDimensions.js.map +0 -1
  445. package/dist/cjs/PivotViewer/hooks/useCurrentFilters.js +0 -58
  446. package/dist/cjs/PivotViewer/hooks/useCurrentFilters.js.map +0 -1
  447. package/dist/cjs/PivotViewer/hooks/useDetailPanelClose.js +0 -73
  448. package/dist/cjs/PivotViewer/hooks/useDetailPanelClose.js.map +0 -1
  449. package/dist/cjs/PivotViewer/hooks/useDimensionState.js +0 -45
  450. package/dist/cjs/PivotViewer/hooks/useDimensionState.js.map +0 -1
  451. package/dist/cjs/PivotViewer/hooks/useFieldExtractors.js +0 -52
  452. package/dist/cjs/PivotViewer/hooks/useFieldExtractors.js.map +0 -1
  453. package/dist/cjs/PivotViewer/hooks/useFilterOptions.js +0 -26
  454. package/dist/cjs/PivotViewer/hooks/useFilterOptions.js.map +0 -1
  455. package/dist/cjs/PivotViewer/hooks/useFilterState.js +0 -101
  456. package/dist/cjs/PivotViewer/hooks/useFilterState.js.map +0 -1
  457. package/dist/cjs/PivotViewer/hooks/usePanning.js +0 -138
  458. package/dist/cjs/PivotViewer/hooks/usePanning.js.map +0 -1
  459. package/dist/cjs/PivotViewer/hooks/usePivotEngine.js +0 -229
  460. package/dist/cjs/PivotViewer/hooks/usePivotEngine.js.map +0 -1
  461. package/dist/cjs/PivotViewer/hooks/useScrollSync.js +0 -27
  462. package/dist/cjs/PivotViewer/hooks/useScrollSync.js.map +0 -1
  463. package/dist/cjs/PivotViewer/hooks/useViewModeScrollHandling.js +0 -52
  464. package/dist/cjs/PivotViewer/hooks/useViewModeScrollHandling.js.map +0 -1
  465. package/dist/cjs/PivotViewer/hooks/useWheelZoom.js +0 -106
  466. package/dist/cjs/PivotViewer/hooks/useWheelZoom.js.map +0 -1
  467. package/dist/cjs/PivotViewer/hooks/useZoomState.js +0 -37
  468. package/dist/cjs/PivotViewer/hooks/useZoomState.js.map +0 -1
  469. package/dist/cjs/PivotViewer/index.js +0 -13
  470. package/dist/cjs/PivotViewer/index.js.map +0 -1
  471. package/dist/cjs/PivotViewer/types.js +0 -33
  472. package/dist/cjs/PivotViewer/types.js.map +0 -1
  473. package/dist/cjs/PivotViewer/utils/animations.js +0 -169
  474. package/dist/cjs/PivotViewer/utils/animations.js.map +0 -1
  475. package/dist/cjs/PivotViewer/utils/cardPosition.js +0 -82
  476. package/dist/cjs/PivotViewer/utils/cardPosition.js.map +0 -1
  477. package/dist/cjs/PivotViewer/utils/constants.js +0 -19
  478. package/dist/cjs/PivotViewer/utils/constants.js.map +0 -1
  479. package/dist/cjs/PivotViewer/utils/idResolution.js +0 -50
  480. package/dist/cjs/PivotViewer/utils/idResolution.js.map +0 -1
  481. package/dist/cjs/PivotViewer/utils/selection.js +0 -188
  482. package/dist/cjs/PivotViewer/utils/selection.js.map +0 -1
  483. package/dist/cjs/PivotViewer/utils/utils.js +0 -153
  484. package/dist/cjs/PivotViewer/utils/utils.js.map +0 -1
  485. package/dist/cjs/SchemaEditor/NameCell.js +0 -38
  486. package/dist/cjs/SchemaEditor/NameCell.js.map +0 -1
  487. package/dist/cjs/SchemaEditor/SchemaEditor.js +0 -333
  488. package/dist/cjs/SchemaEditor/SchemaEditor.js.map +0 -1
  489. package/dist/cjs/SchemaEditor/SchemaEditor.module.css +0 -15
  490. package/dist/cjs/SchemaEditor/TypeCell.js +0 -102
  491. package/dist/cjs/SchemaEditor/TypeCell.js.map +0 -1
  492. package/dist/cjs/SchemaEditor/index.js +0 -11
  493. package/dist/cjs/SchemaEditor/index.js.map +0 -1
  494. package/dist/cjs/SchemaEditor/schemaHelpers.js +0 -41
  495. package/dist/cjs/SchemaEditor/schemaHelpers.js.map +0 -1
  496. package/dist/cjs/TimeMachine/EventsView.css +0 -213
  497. package/dist/cjs/TimeMachine/EventsView.js +0 -70
  498. package/dist/cjs/TimeMachine/EventsView.js.map +0 -1
  499. package/dist/cjs/TimeMachine/Properties.css +0 -57
  500. package/dist/cjs/TimeMachine/Properties.js +0 -34
  501. package/dist/cjs/TimeMachine/Properties.js.map +0 -1
  502. package/dist/cjs/TimeMachine/ReadModelView.js +0 -51
  503. package/dist/cjs/TimeMachine/ReadModelView.js.map +0 -1
  504. package/dist/cjs/TimeMachine/TimeMachine.css +0 -587
  505. package/dist/cjs/TimeMachine/TimeMachine.js +0 -110
  506. package/dist/cjs/TimeMachine/TimeMachine.js.map +0 -1
  507. package/dist/cjs/TimeMachine/index.js +0 -15
  508. package/dist/cjs/TimeMachine/index.js.map +0 -1
  509. package/dist/cjs/TimeMachine/propertiesHelpers.js +0 -16
  510. package/dist/cjs/TimeMachine/propertiesHelpers.js.map +0 -1
  511. package/dist/cjs/Toolbar/Toolbar.css +0 -357
  512. package/dist/cjs/Toolbar/Toolbar.js +0 -15
  513. package/dist/cjs/Toolbar/Toolbar.js.map +0 -1
  514. package/dist/cjs/Toolbar/ToolbarButton.js +0 -42
  515. package/dist/cjs/Toolbar/ToolbarButton.js.map +0 -1
  516. package/dist/cjs/Toolbar/ToolbarContext.js +0 -14
  517. package/dist/cjs/Toolbar/ToolbarContext.js.map +0 -1
  518. package/dist/cjs/Toolbar/ToolbarDragContext.js +0 -24
  519. package/dist/cjs/Toolbar/ToolbarDragContext.js.map +0 -1
  520. package/dist/cjs/Toolbar/ToolbarFanOutItem.js +0 -75
  521. package/dist/cjs/Toolbar/ToolbarFanOutItem.js.map +0 -1
  522. package/dist/cjs/Toolbar/ToolbarFolder.js +0 -55
  523. package/dist/cjs/Toolbar/ToolbarFolder.js.map +0 -1
  524. package/dist/cjs/Toolbar/ToolbarFolderContext.js +0 -20
  525. package/dist/cjs/Toolbar/ToolbarFolderContext.js.map +0 -1
  526. package/dist/cjs/Toolbar/ToolbarGroup.js +0 -107
  527. package/dist/cjs/Toolbar/ToolbarGroup.js.map +0 -1
  528. package/dist/cjs/Toolbar/ToolbarLayout.js +0 -119
  529. package/dist/cjs/Toolbar/ToolbarLayout.js.map +0 -1
  530. package/dist/cjs/Toolbar/ToolbarSection.js +0 -127
  531. package/dist/cjs/Toolbar/ToolbarSection.js.map +0 -1
  532. package/dist/cjs/Toolbar/ToolbarSeparator.js +0 -14
  533. package/dist/cjs/Toolbar/ToolbarSeparator.js.map +0 -1
  534. package/dist/cjs/Toolbar/ToolbarSlot.js +0 -125
  535. package/dist/cjs/Toolbar/ToolbarSlot.js.map +0 -1
  536. package/dist/cjs/Toolbar/index.js +0 -29
  537. package/dist/cjs/Toolbar/index.js.map +0 -1
  538. package/dist/cjs/index.js +0 -41
  539. package/dist/cjs/index.js.map +0 -1
  540. package/dist/cjs/package.json +0 -3
  541. package/dist/cjs/tailwind-utilities.css +0 -1159
  542. package/dist/cjs/tokens.css +0 -83
  543. package/dist/cjs/types/TypeFormat.js +0 -22
  544. package/dist/cjs/types/TypeFormat.js.map +0 -1
  545. package/dist/cjs/types/index.js.map +0 -1
  546. package/dist/cjs/useOverlayZIndex.js +0 -65
  547. package/dist/cjs/useOverlayZIndex.js.map +0 -1
  548. package/dist/esm/CommandDialog/CommandStepper.css +0 -24
  549. package/dist/esm/Common/FormElement.css +0 -26
  550. package/dist/esm/Common/Tooltip.css +0 -10
  551. package/dist/esm/Filter/FilterPanel.css +0 -459
  552. package/dist/esm/ObjectNavigationalBar/ObjectNavigationalBar.css +0 -6
  553. package/dist/esm/PivotViewer/PivotViewer.css +0 -1323
  554. package/dist/esm/PivotViewer/components/Spinner.css +0 -77
  555. package/dist/esm/SchemaEditor/SchemaEditor.module.css +0 -15
  556. package/dist/esm/TimeMachine/EventsView.css +0 -213
  557. package/dist/esm/TimeMachine/Properties.css +0 -57
  558. package/dist/esm/TimeMachine/TimeMachine.css +0 -587
  559. package/dist/esm/Toolbar/Toolbar.css +0 -357
  560. package/dist/esm/tailwind-utilities.css +0 -1159
  561. package/dist/esm/tsconfig.tsbuildinfo +0 -1
  562. package/dist/esm/useOverlayZIndex.d.ts +0 -3
  563. package/dist/esm/useOverlayZIndex.d.ts.map +0 -1
  564. package/dist/esm/useOverlayZIndex.js +0 -62
  565. package/dist/esm/useOverlayZIndex.js.map +0 -1
  566. package/dist/esm/vite.config.d.ts +0 -3
  567. package/dist/esm/vite.config.d.ts.map +0 -1
  568. package/dist/esm/vite.config.js +0 -77
  569. package/dist/esm/vite.config.js.map +0 -1
  570. package/dist/esm/vitest.setup.d.ts +0 -2
  571. package/dist/esm/vitest.setup.d.ts.map +0 -1
  572. package/dist/esm/vitest.setup.js +0 -6
  573. package/dist/esm/vitest.setup.js.map +0 -1
@@ -0,0 +1,4686 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties;
3
+ @layer theme, base, components, utilities;
4
+ @layer theme {
5
+ :root, :host {
6
+ --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue",
7
+ "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
8
+ "Segoe UI Symbol", "Noto Color Emoji";
9
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
10
+ "Courier New", monospace;
11
+ --color-red-100: oklch(93.6% 0.032 17.717);
12
+ --color-green-100: oklch(96.2% 0.044 156.743);
13
+ --color-sky-100: oklch(95.1% 0.026 236.824);
14
+ --color-sky-400: oklch(74.6% 0.16 232.661);
15
+ --color-sky-500: oklch(68.5% 0.169 237.323);
16
+ --color-sky-600: oklch(58.8% 0.158 241.966);
17
+ --color-sky-700: oklch(50% 0.134 242.749);
18
+ --color-sky-800: oklch(44.3% 0.11 240.79);
19
+ --color-blue-600: oklch(54.6% 0.245 262.881);
20
+ --color-pink-500: oklch(65.6% 0.241 354.308);
21
+ --color-pink-600: oklch(59.2% 0.249 0.584);
22
+ --color-slate-50: oklch(98.4% 0.003 247.858);
23
+ --color-slate-100: oklch(96.8% 0.007 247.896);
24
+ --color-slate-300: oklch(86.9% 0.022 252.894);
25
+ --color-slate-400: oklch(70.4% 0.04 256.788);
26
+ --color-slate-500: oklch(55.4% 0.046 257.417);
27
+ --color-slate-700: oklch(37.2% 0.044 257.287);
28
+ --color-slate-800: oklch(27.9% 0.041 260.031);
29
+ --color-slate-900: oklch(20.8% 0.042 265.755);
30
+ --color-slate-950: oklch(12.9% 0.042 264.695);
31
+ --color-gray-200: oklch(92.8% 0.006 264.531);
32
+ --color-gray-500: oklch(55.1% 0.027 264.364);
33
+ --color-gray-600: oklch(44.6% 0.03 256.802);
34
+ --color-white: #fff;
35
+ --spacing: 0.25rem;
36
+ --text-xs: 0.75rem;
37
+ --text-xs--line-height: calc(1 / 0.75);
38
+ --text-sm: 0.875rem;
39
+ --text-sm--line-height: calc(1.25 / 0.875);
40
+ --text-base: 1rem;
41
+ --text-base--line-height: calc(1.5 / 1);
42
+ --text-lg: 1.125rem;
43
+ --text-lg--line-height: calc(1.75 / 1.125);
44
+ --text-xl: 1.25rem;
45
+ --text-xl--line-height: calc(1.75 / 1.25);
46
+ --text-2xl: 1.5rem;
47
+ --text-2xl--line-height: calc(2 / 1.5);
48
+ --text-3xl: 1.875rem;
49
+ --text-3xl--line-height: calc(2.25 / 1.875);
50
+ --font-weight-medium: 500;
51
+ --font-weight-semibold: 600;
52
+ --font-weight-bold: 700;
53
+ --tracking-wider: 0.05em;
54
+ --radius-md: 0.375rem;
55
+ --radius-lg: 0.5rem;
56
+ --radius-xl: 0.75rem;
57
+ --radius-2xl: 1rem;
58
+ --radius-3xl: 1.5rem;
59
+ --blur-sm: 8px;
60
+ --default-transition-duration: 150ms;
61
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
62
+ --default-font-family: var(--font-sans);
63
+ --default-mono-font-family: var(--font-mono);
64
+ }
65
+ }
66
+ @layer base {
67
+ *, ::after, ::before, ::backdrop, ::file-selector-button {
68
+ box-sizing: border-box;
69
+ margin: 0;
70
+ padding: 0;
71
+ border: 0 solid;
72
+ }
73
+ html, :host {
74
+ line-height: 1.5;
75
+ -webkit-text-size-adjust: 100%;
76
+ -moz-tab-size: 4;
77
+ -o-tab-size: 4;
78
+ tab-size: 4;
79
+ font-family: var(--default-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
80
+ font-feature-settings: var(--default-font-feature-settings, normal);
81
+ font-variation-settings: var(--default-font-variation-settings, normal);
82
+ -webkit-tap-highlight-color: transparent;
83
+ }
84
+ hr {
85
+ height: 0;
86
+ color: inherit;
87
+ border-top-width: 1px;
88
+ }
89
+ abbr:where([title]) {
90
+ -webkit-text-decoration: underline dotted;
91
+ text-decoration: underline dotted;
92
+ }
93
+ h1, h2, h3, h4, h5, h6 {
94
+ font-size: inherit;
95
+ font-weight: inherit;
96
+ }
97
+ a {
98
+ color: inherit;
99
+ -webkit-text-decoration: inherit;
100
+ text-decoration: inherit;
101
+ }
102
+ b, strong {
103
+ font-weight: bolder;
104
+ }
105
+ code, kbd, samp, pre {
106
+ font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
107
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
108
+ font-variation-settings: var(--default-mono-font-variation-settings, normal);
109
+ font-size: 1em;
110
+ }
111
+ small {
112
+ font-size: 80%;
113
+ }
114
+ sub, sup {
115
+ font-size: 75%;
116
+ line-height: 0;
117
+ position: relative;
118
+ vertical-align: baseline;
119
+ }
120
+ sub {
121
+ bottom: -0.25em;
122
+ }
123
+ sup {
124
+ top: -0.5em;
125
+ }
126
+ table {
127
+ text-indent: 0;
128
+ border-color: inherit;
129
+ border-collapse: collapse;
130
+ }
131
+ :-moz-focusring:where(:not(iframe)) {
132
+ outline: auto;
133
+ }
134
+ progress {
135
+ vertical-align: baseline;
136
+ }
137
+ summary {
138
+ display: list-item;
139
+ }
140
+ ol, ul, menu {
141
+ list-style: none;
142
+ }
143
+ img, svg, video, canvas, audio, iframe, embed, object {
144
+ display: block;
145
+ vertical-align: middle;
146
+ }
147
+ img, video {
148
+ max-width: 100%;
149
+ height: auto;
150
+ }
151
+ button, input, select, optgroup, textarea, ::file-selector-button {
152
+ font: inherit;
153
+ font-feature-settings: inherit;
154
+ font-variation-settings: inherit;
155
+ letter-spacing: inherit;
156
+ color: inherit;
157
+ border-radius: 0;
158
+ background-color: transparent;
159
+ opacity: 1;
160
+ }
161
+ :where(select:is([multiple], [size])) optgroup {
162
+ font-weight: bolder;
163
+ }
164
+ :where(select:is([multiple], [size])) optgroup option {
165
+ padding-inline-start: 20px;
166
+ }
167
+ ::file-selector-button {
168
+ margin-inline-end: 4px;
169
+ }
170
+ ::-moz-placeholder {
171
+ opacity: 1;
172
+ }
173
+ ::placeholder {
174
+ opacity: 1;
175
+ }
176
+ @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {
177
+ ::-moz-placeholder {
178
+ color: currentcolor;
179
+ @supports (color: color-mix(in lab, red, red)) {
180
+ color: color-mix(in oklab, currentcolor 50%, transparent);
181
+ }
182
+ }
183
+ ::placeholder {
184
+ color: currentcolor;
185
+ @supports (color: color-mix(in lab, red, red)) {
186
+ color: color-mix(in oklab, currentcolor 50%, transparent);
187
+ }
188
+ }
189
+ }
190
+ textarea {
191
+ resize: vertical;
192
+ }
193
+ ::-webkit-search-decoration {
194
+ -webkit-appearance: none;
195
+ }
196
+ ::-webkit-date-and-time-value {
197
+ min-height: 1lh;
198
+ text-align: inherit;
199
+ }
200
+ ::-webkit-datetime-edit {
201
+ display: inline-flex;
202
+ }
203
+ ::-webkit-datetime-edit-fields-wrapper {
204
+ padding: 0;
205
+ }
206
+ ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
207
+ padding-block: 0;
208
+ }
209
+ ::-webkit-calendar-picker-indicator {
210
+ line-height: 1;
211
+ }
212
+ :-moz-ui-invalid {
213
+ box-shadow: none;
214
+ }
215
+ button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {
216
+ -webkit-appearance: button;
217
+ -moz-appearance: button;
218
+ appearance: button;
219
+ }
220
+ ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
221
+ height: auto;
222
+ }
223
+ [hidden]:where(:not([hidden="until-found"])) {
224
+ display: none !important;
225
+ }
226
+ }
227
+ @layer utilities {
228
+ .collapse {
229
+ visibility: collapse;
230
+ }
231
+ .visible {
232
+ visibility: visible;
233
+ }
234
+ .absolute {
235
+ position: absolute;
236
+ }
237
+ .fixed {
238
+ position: fixed;
239
+ }
240
+ .relative {
241
+ position: relative;
242
+ }
243
+ .static {
244
+ position: static;
245
+ }
246
+ .sticky {
247
+ position: sticky;
248
+ }
249
+ .isolate {
250
+ isolation: isolate;
251
+ }
252
+ .\!container {
253
+ width: 100% !important;
254
+ @media (width >= 40rem) {
255
+ max-width: 40rem !important;
256
+ }
257
+ @media (width >= 48rem) {
258
+ max-width: 48rem !important;
259
+ }
260
+ @media (width >= 64rem) {
261
+ max-width: 64rem !important;
262
+ }
263
+ @media (width >= 80rem) {
264
+ max-width: 80rem !important;
265
+ }
266
+ @media (width >= 96rem) {
267
+ max-width: 96rem !important;
268
+ }
269
+ }
270
+ .container {
271
+ width: 100%;
272
+ @media (width >= 40rem) {
273
+ max-width: 40rem;
274
+ }
275
+ @media (width >= 48rem) {
276
+ max-width: 48rem;
277
+ }
278
+ @media (width >= 64rem) {
279
+ max-width: 64rem;
280
+ }
281
+ @media (width >= 80rem) {
282
+ max-width: 80rem;
283
+ }
284
+ @media (width >= 96rem) {
285
+ max-width: 96rem;
286
+ }
287
+ }
288
+ .m-0 {
289
+ margin: 0px;
290
+ }
291
+ .m-3 {
292
+ margin: calc(var(--spacing) * 3);
293
+ }
294
+ .mx-2 {
295
+ margin-inline: calc(var(--spacing) * 2);
296
+ }
297
+ .mt-1 {
298
+ margin-top: var(--spacing);
299
+ }
300
+ .mt-2 {
301
+ margin-top: calc(var(--spacing) * 2);
302
+ }
303
+ .mt-3 {
304
+ margin-top: calc(var(--spacing) * 3);
305
+ }
306
+ .mt-4 {
307
+ margin-top: calc(var(--spacing) * 4);
308
+ }
309
+ .mr-2 {
310
+ margin-right: calc(var(--spacing) * 2);
311
+ }
312
+ .mb-0 {
313
+ margin-bottom: 0px;
314
+ }
315
+ .mb-2 {
316
+ margin-bottom: calc(var(--spacing) * 2);
317
+ }
318
+ .mb-3 {
319
+ margin-bottom: calc(var(--spacing) * 3);
320
+ }
321
+ .mb-4 {
322
+ margin-bottom: calc(var(--spacing) * 4);
323
+ }
324
+ .ml-2 {
325
+ margin-left: calc(var(--spacing) * 2);
326
+ }
327
+ .ml-3 {
328
+ margin-left: calc(var(--spacing) * 3);
329
+ }
330
+ .block {
331
+ display: block;
332
+ }
333
+ .contents {
334
+ display: contents;
335
+ }
336
+ .flex {
337
+ display: flex;
338
+ }
339
+ .grid {
340
+ display: grid;
341
+ }
342
+ .hidden {
343
+ display: none;
344
+ }
345
+ .inline {
346
+ display: inline;
347
+ }
348
+ .inline-flex {
349
+ display: inline-flex;
350
+ }
351
+ .table {
352
+ display: table;
353
+ }
354
+ .h-4 {
355
+ height: calc(var(--spacing) * 4);
356
+ }
357
+ .h-10 {
358
+ height: calc(var(--spacing) * 10);
359
+ }
360
+ .h-full {
361
+ height: 100%;
362
+ }
363
+ .w-4 {
364
+ width: calc(var(--spacing) * 4);
365
+ }
366
+ .w-10 {
367
+ width: calc(var(--spacing) * 10);
368
+ }
369
+ .w-full {
370
+ width: 100%;
371
+ }
372
+ .min-w-\[4rem\] {
373
+ min-width: 4rem;
374
+ }
375
+ .min-w-full {
376
+ min-width: 100%;
377
+ }
378
+ .flex-1 {
379
+ flex: 1;
380
+ }
381
+ .flex-shrink-0 {
382
+ flex-shrink: 0;
383
+ }
384
+ .shrink {
385
+ flex-shrink: 1;
386
+ }
387
+ .shrink-0 {
388
+ flex-shrink: 0;
389
+ }
390
+ .flex-grow {
391
+ flex-grow: 1;
392
+ }
393
+ .transform {
394
+ transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
395
+ }
396
+ .cursor-pointer {
397
+ cursor: pointer;
398
+ }
399
+ .resize {
400
+ resize: both;
401
+ }
402
+ .resize-y {
403
+ resize: vertical;
404
+ }
405
+ .flex-col {
406
+ flex-direction: column;
407
+ }
408
+ .flex-row {
409
+ flex-direction: row;
410
+ }
411
+ .flex-wrap {
412
+ flex-wrap: wrap;
413
+ }
414
+ .items-center {
415
+ align-items: center;
416
+ }
417
+ .items-start {
418
+ align-items: flex-start;
419
+ }
420
+ .justify-between {
421
+ justify-content: space-between;
422
+ }
423
+ .justify-center {
424
+ justify-content: center;
425
+ }
426
+ .justify-end {
427
+ justify-content: flex-end;
428
+ }
429
+ .justify-start {
430
+ justify-content: flex-start;
431
+ }
432
+ .gap-1 {
433
+ gap: var(--spacing);
434
+ }
435
+ .gap-2 {
436
+ gap: calc(var(--spacing) * 2);
437
+ }
438
+ .gap-3 {
439
+ gap: calc(var(--spacing) * 3);
440
+ }
441
+ .gap-4 {
442
+ gap: calc(var(--spacing) * 4);
443
+ }
444
+ .gap-6 {
445
+ gap: calc(var(--spacing) * 6);
446
+ }
447
+ .gap-8 {
448
+ gap: calc(var(--spacing) * 8);
449
+ }
450
+ :where(.space-y-2 > :not(:last-child)) {
451
+ --tw-space-y-reverse: 0;
452
+ margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
453
+ margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
454
+ }
455
+ :where(.divide-y > :not(:last-child)) {
456
+ --tw-divide-y-reverse: 0;
457
+ border-bottom-style: var(--tw-border-style);
458
+ border-top-style: var(--tw-border-style);
459
+ border-top-width: calc(1px * var(--tw-divide-y-reverse));
460
+ border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
461
+ }
462
+ :where(.divide-slate-700 > :not(:last-child)) {
463
+ border-color: var(--color-slate-700);
464
+ }
465
+ :where(.divide-slate-800 > :not(:last-child)) {
466
+ border-color: var(--color-slate-800);
467
+ }
468
+ .truncate {
469
+ overflow: hidden;
470
+ text-overflow: ellipsis;
471
+ white-space: nowrap;
472
+ }
473
+ .overflow-hidden {
474
+ overflow: hidden;
475
+ }
476
+ .rounded {
477
+ border-radius: 0.25rem;
478
+ }
479
+ .rounded-2xl {
480
+ border-radius: var(--radius-2xl);
481
+ }
482
+ .rounded-3xl {
483
+ border-radius: var(--radius-3xl);
484
+ }
485
+ .rounded-lg {
486
+ border-radius: var(--radius-lg);
487
+ }
488
+ .rounded-md {
489
+ border-radius: var(--radius-md);
490
+ }
491
+ .rounded-none {
492
+ border-radius: 0;
493
+ }
494
+ .rounded-xl {
495
+ border-radius: var(--radius-xl);
496
+ }
497
+ .border {
498
+ border-style: var(--tw-border-style);
499
+ border-width: 1px;
500
+ }
501
+ .border-2 {
502
+ border-style: var(--tw-border-style);
503
+ border-width: 2px;
504
+ }
505
+ .border-t {
506
+ border-top-style: var(--tw-border-style);
507
+ border-top-width: 1px;
508
+ }
509
+ .border-b {
510
+ border-bottom-style: var(--tw-border-style);
511
+ border-bottom-width: 1px;
512
+ }
513
+ .border-dashed {
514
+ --tw-border-style: dashed;
515
+ border-style: dashed;
516
+ }
517
+ .border-pink-500 {
518
+ border-color: var(--color-pink-500);
519
+ }
520
+ .border-slate-500 {
521
+ border-color: var(--color-slate-500);
522
+ }
523
+ .border-slate-700 {
524
+ border-color: var(--color-slate-700);
525
+ }
526
+ .bg-blue-600 {
527
+ background-color: var(--color-blue-600);
528
+ }
529
+ .bg-gray-600 {
530
+ background-color: var(--color-gray-600);
531
+ }
532
+ .bg-green-100 {
533
+ background-color: var(--color-green-100);
534
+ }
535
+ .bg-pink-600 {
536
+ background-color: var(--color-pink-600);
537
+ }
538
+ .bg-red-100 {
539
+ background-color: var(--color-red-100);
540
+ }
541
+ .bg-sky-700 {
542
+ background-color: var(--color-sky-700);
543
+ }
544
+ .bg-slate-800 {
545
+ background-color: var(--color-slate-800);
546
+ }
547
+ .bg-slate-900 {
548
+ background-color: var(--color-slate-900);
549
+ }
550
+ .bg-slate-950\/70 {
551
+ background-color: color-mix(in srgb, oklch(12.9% 0.042 264.695) 70%, transparent);
552
+ @supports (color: color-mix(in lab, red, red)) {
553
+ background-color: color-mix(in oklab, var(--color-slate-950) 70%, transparent);
554
+ }
555
+ }
556
+ .p-1 {
557
+ padding: var(--spacing);
558
+ }
559
+ .p-2 {
560
+ padding: calc(var(--spacing) * 2);
561
+ }
562
+ .p-3 {
563
+ padding: calc(var(--spacing) * 3);
564
+ }
565
+ .p-4 {
566
+ padding: calc(var(--spacing) * 4);
567
+ }
568
+ .p-5 {
569
+ padding: calc(var(--spacing) * 5);
570
+ }
571
+ .px-3 {
572
+ padding-inline: calc(var(--spacing) * 3);
573
+ }
574
+ .px-4 {
575
+ padding-inline: calc(var(--spacing) * 4);
576
+ }
577
+ .px-5 {
578
+ padding-inline: calc(var(--spacing) * 5);
579
+ }
580
+ .py-1 {
581
+ padding-block: var(--spacing);
582
+ }
583
+ .py-2 {
584
+ padding-block: calc(var(--spacing) * 2);
585
+ }
586
+ .py-3 {
587
+ padding-block: calc(var(--spacing) * 3);
588
+ }
589
+ .py-4 {
590
+ padding-block: calc(var(--spacing) * 4);
591
+ }
592
+ .pt-6 {
593
+ padding-top: calc(var(--spacing) * 6);
594
+ }
595
+ .text-center {
596
+ text-align: center;
597
+ }
598
+ .text-left {
599
+ text-align: left;
600
+ }
601
+ .text-2xl {
602
+ font-size: var(--text-2xl);
603
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
604
+ }
605
+ .text-3xl {
606
+ font-size: var(--text-3xl);
607
+ line-height: var(--tw-leading, var(--text-3xl--line-height));
608
+ }
609
+ .text-base {
610
+ font-size: var(--text-base);
611
+ line-height: var(--tw-leading, var(--text-base--line-height));
612
+ }
613
+ .text-lg {
614
+ font-size: var(--text-lg);
615
+ line-height: var(--tw-leading, var(--text-lg--line-height));
616
+ }
617
+ .text-sm {
618
+ font-size: var(--text-sm);
619
+ line-height: var(--tw-leading, var(--text-sm--line-height));
620
+ }
621
+ .text-xl {
622
+ font-size: var(--text-xl);
623
+ line-height: var(--tw-leading, var(--text-xl--line-height));
624
+ }
625
+ .text-xs {
626
+ font-size: var(--text-xs);
627
+ line-height: var(--tw-leading, var(--text-xs--line-height));
628
+ }
629
+ .font-bold {
630
+ --tw-font-weight: var(--font-weight-bold);
631
+ font-weight: var(--font-weight-bold);
632
+ }
633
+ .font-medium {
634
+ --tw-font-weight: var(--font-weight-medium);
635
+ font-weight: var(--font-weight-medium);
636
+ }
637
+ .font-semibold {
638
+ --tw-font-weight: var(--font-weight-semibold);
639
+ font-weight: var(--font-weight-semibold);
640
+ }
641
+ .tracking-wider {
642
+ --tw-tracking: var(--tracking-wider);
643
+ letter-spacing: var(--tracking-wider);
644
+ }
645
+ .whitespace-nowrap {
646
+ white-space: nowrap;
647
+ }
648
+ .text-gray-200 {
649
+ color: var(--color-gray-200);
650
+ }
651
+ .text-slate-50 {
652
+ color: var(--color-slate-50);
653
+ }
654
+ .text-slate-100 {
655
+ color: var(--color-slate-100);
656
+ }
657
+ .text-slate-300 {
658
+ color: var(--color-slate-300);
659
+ }
660
+ .text-slate-400 {
661
+ color: var(--color-slate-400);
662
+ }
663
+ .text-white {
664
+ color: var(--color-white);
665
+ }
666
+ .capitalize {
667
+ text-transform: capitalize;
668
+ }
669
+ .lowercase {
670
+ text-transform: lowercase;
671
+ }
672
+ .uppercase {
673
+ text-transform: uppercase;
674
+ }
675
+ .italic {
676
+ font-style: italic;
677
+ }
678
+ .underline {
679
+ text-decoration-line: underline;
680
+ }
681
+ .shadow-2xl {
682
+ --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
683
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
684
+ }
685
+ .shadow-xl {
686
+ --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
687
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
688
+ }
689
+ .blur {
690
+ --tw-blur: blur(8px);
691
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
692
+ }
693
+ .filter {
694
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
695
+ }
696
+ .backdrop-blur-sm {
697
+ --tw-backdrop-blur: blur(var(--blur-sm));
698
+ backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
699
+ }
700
+ .transition {
701
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
702
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
703
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
704
+ }
705
+ .transition-colors {
706
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
707
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
708
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
709
+ }
710
+ .placeholder\:text-slate-400::-moz-placeholder {
711
+ color: var(--color-slate-400);
712
+ }
713
+ .placeholder\:text-slate-400::placeholder {
714
+ color: var(--color-slate-400);
715
+ }
716
+ @media (hover: hover) {
717
+ .hover\:border-slate-500:hover {
718
+ border-color: var(--color-slate-500);
719
+ }
720
+ .hover\:bg-gray-500:hover {
721
+ background-color: var(--color-gray-500);
722
+ }
723
+ .hover\:bg-sky-600:hover {
724
+ background-color: var(--color-sky-600);
725
+ }
726
+ .hover\:bg-slate-700:hover {
727
+ background-color: var(--color-slate-700);
728
+ }
729
+ .hover\:bg-slate-800:hover {
730
+ background-color: var(--color-slate-800);
731
+ }
732
+ .hover\:bg-slate-800\/60:hover {
733
+ background-color: color-mix(in srgb, oklch(27.9% 0.041 260.031) 60%, transparent);
734
+ }
735
+ @supports (color: color-mix(in lab, red, red)) {
736
+ .hover\:bg-slate-800\/60:hover {
737
+ background-color: color-mix(in oklab, var(--color-slate-800) 60%, transparent);
738
+ }
739
+ }
740
+ }
741
+ .focus\:border-sky-400:focus {
742
+ border-color: var(--color-sky-400);
743
+ }
744
+ .focus\:outline-none:focus {
745
+ --tw-outline-style: none;
746
+ outline-style: none;
747
+ }
748
+ .focus-visible\:ring-2:focus-visible {
749
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
750
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
751
+ }
752
+ .focus-visible\:ring-sky-400:focus-visible {
753
+ --tw-ring-color: var(--color-sky-400);
754
+ }
755
+ .active\:bg-sky-800:active {
756
+ background-color: var(--color-sky-800);
757
+ }
758
+ .disabled\:cursor-not-allowed:disabled {
759
+ cursor: not-allowed;
760
+ }
761
+ .disabled\:opacity-50:disabled {
762
+ opacity: 50%;
763
+ }
764
+ .data-\[p-highlight\=true\]\:border-sky-500[data-p-highlight="true"] {
765
+ border-color: var(--color-sky-500);
766
+ }
767
+ .data-\[p-highlight\=true\]\:bg-sky-500[data-p-highlight="true"] {
768
+ background-color: var(--color-sky-500);
769
+ }
770
+ .data-\[p-highlight\=true\]\:bg-sky-500\/10[data-p-highlight="true"] {
771
+ background-color: color-mix(in srgb, oklch(68.5% 0.169 237.323) 10%, transparent);
772
+ @supports (color: color-mix(in lab, red, red)) {
773
+ background-color: color-mix(in oklab, var(--color-sky-500) 10%, transparent);
774
+ }
775
+ }
776
+ .data-\[p-highlight\=true\]\:text-sky-100[data-p-highlight="true"] {
777
+ color: var(--color-sky-100);
778
+ }
779
+ .data-\[p-highlight\=true\]\:text-white[data-p-highlight="true"] {
780
+ color: var(--color-white);
781
+ }
782
+ @media (width >= 48rem) {
783
+ .md\:flex-row {
784
+ flex-direction: row;
785
+ }
786
+ }
787
+ }
788
+ :root {
789
+ --cratis-surface-0: var(--p-surface-0, var(--surface-0));
790
+ --cratis-surface-100: var(--p-surface-100, var(--surface-100));
791
+ --cratis-surface-ground: var(--p-content-background, var(--surface-ground));
792
+ --cratis-surface-section: var(--p-content-hover-background, var(--surface-section));
793
+ --cratis-surface-card: var(--p-content-background, var(--surface-card));
794
+ --cratis-surface-overlay: var(--p-overlay-modal-background, var(--surface-overlay));
795
+ --cratis-surface-hover: var(--p-content-hover-background, var(--surface-hover));
796
+ --cratis-surface-border: var(--p-content-border-color, var(--surface-border));
797
+ --cratis-text-color: var(--p-text-color, var(--text-color));
798
+ --cratis-text-color-secondary: var(--p-text-muted-color, var(--text-color-secondary));
799
+ --cratis-primary-color: var(--p-primary-color, var(--primary-color));
800
+ --cratis-primary-color-text: var(--p-primary-contrast-color, var(--primary-color-text));
801
+ --cratis-primary-300: var(--p-primary-300, var(--primary-300));
802
+ --cratis-primary-400: var(--p-primary-400, var(--primary-400));
803
+ --cratis-primary-500: var(--p-primary-500, var(--primary-500));
804
+ --cratis-primary-600: var(--p-primary-600, var(--primary-600));
805
+ --cratis-highlight-bg: var(--p-highlight-background, var(--highlight-bg));
806
+ --cratis-highlight-text-color: var(--p-highlight-color, var(--highlight-text-color));
807
+ --cratis-green-500: var(--p-green-500, var(--green-500));
808
+ --cratis-orange-500: var(--p-orange-500, var(--orange-500));
809
+ --cratis-red-500: var(--p-red-500, var(--red-500));
810
+ --cratis-border-radius: var(--p-content-border-radius, var(--border-radius));
811
+ --cratis-focus-ring: var(--p-focus-ring-shadow, var(--focus-ring));
812
+ --cratis-maskbg: var(--p-mask-background, var(--maskbg));
813
+ }
814
+ @property --tw-rotate-x {
815
+ syntax: "*";
816
+ inherits: false;
817
+ }
818
+ @property --tw-rotate-y {
819
+ syntax: "*";
820
+ inherits: false;
821
+ }
822
+ @property --tw-rotate-z {
823
+ syntax: "*";
824
+ inherits: false;
825
+ }
826
+ @property --tw-skew-x {
827
+ syntax: "*";
828
+ inherits: false;
829
+ }
830
+ @property --tw-skew-y {
831
+ syntax: "*";
832
+ inherits: false;
833
+ }
834
+ @property --tw-space-y-reverse {
835
+ syntax: "*";
836
+ inherits: false;
837
+ initial-value: 0;
838
+ }
839
+ @property --tw-divide-y-reverse {
840
+ syntax: "*";
841
+ inherits: false;
842
+ initial-value: 0;
843
+ }
844
+ @property --tw-border-style {
845
+ syntax: "*";
846
+ inherits: false;
847
+ initial-value: solid;
848
+ }
849
+ @property --tw-font-weight {
850
+ syntax: "*";
851
+ inherits: false;
852
+ }
853
+ @property --tw-tracking {
854
+ syntax: "*";
855
+ inherits: false;
856
+ }
857
+ @property --tw-shadow {
858
+ syntax: "*";
859
+ inherits: false;
860
+ initial-value: 0 0 #0000;
861
+ }
862
+ @property --tw-shadow-color {
863
+ syntax: "*";
864
+ inherits: false;
865
+ }
866
+ @property --tw-shadow-alpha {
867
+ syntax: "<percentage>";
868
+ inherits: false;
869
+ initial-value: 100%;
870
+ }
871
+ @property --tw-inset-shadow {
872
+ syntax: "*";
873
+ inherits: false;
874
+ initial-value: 0 0 #0000;
875
+ }
876
+ @property --tw-inset-shadow-color {
877
+ syntax: "*";
878
+ inherits: false;
879
+ }
880
+ @property --tw-inset-shadow-alpha {
881
+ syntax: "<percentage>";
882
+ inherits: false;
883
+ initial-value: 100%;
884
+ }
885
+ @property --tw-ring-color {
886
+ syntax: "*";
887
+ inherits: false;
888
+ }
889
+ @property --tw-ring-shadow {
890
+ syntax: "*";
891
+ inherits: false;
892
+ initial-value: 0 0 #0000;
893
+ }
894
+ @property --tw-inset-ring-color {
895
+ syntax: "*";
896
+ inherits: false;
897
+ }
898
+ @property --tw-inset-ring-shadow {
899
+ syntax: "*";
900
+ inherits: false;
901
+ initial-value: 0 0 #0000;
902
+ }
903
+ @property --tw-ring-inset {
904
+ syntax: "*";
905
+ inherits: false;
906
+ }
907
+ @property --tw-ring-offset-width {
908
+ syntax: "<length>";
909
+ inherits: false;
910
+ initial-value: 0px;
911
+ }
912
+ @property --tw-ring-offset-color {
913
+ syntax: "*";
914
+ inherits: false;
915
+ initial-value: #fff;
916
+ }
917
+ @property --tw-ring-offset-shadow {
918
+ syntax: "*";
919
+ inherits: false;
920
+ initial-value: 0 0 #0000;
921
+ }
922
+ @property --tw-blur {
923
+ syntax: "*";
924
+ inherits: false;
925
+ }
926
+ @property --tw-brightness {
927
+ syntax: "*";
928
+ inherits: false;
929
+ }
930
+ @property --tw-contrast {
931
+ syntax: "*";
932
+ inherits: false;
933
+ }
934
+ @property --tw-grayscale {
935
+ syntax: "*";
936
+ inherits: false;
937
+ }
938
+ @property --tw-hue-rotate {
939
+ syntax: "*";
940
+ inherits: false;
941
+ }
942
+ @property --tw-invert {
943
+ syntax: "*";
944
+ inherits: false;
945
+ }
946
+ @property --tw-opacity {
947
+ syntax: "*";
948
+ inherits: false;
949
+ }
950
+ @property --tw-saturate {
951
+ syntax: "*";
952
+ inherits: false;
953
+ }
954
+ @property --tw-sepia {
955
+ syntax: "*";
956
+ inherits: false;
957
+ }
958
+ @property --tw-drop-shadow {
959
+ syntax: "*";
960
+ inherits: false;
961
+ }
962
+ @property --tw-drop-shadow-color {
963
+ syntax: "*";
964
+ inherits: false;
965
+ }
966
+ @property --tw-drop-shadow-alpha {
967
+ syntax: "<percentage>";
968
+ inherits: false;
969
+ initial-value: 100%;
970
+ }
971
+ @property --tw-drop-shadow-size {
972
+ syntax: "*";
973
+ inherits: false;
974
+ }
975
+ @property --tw-backdrop-blur {
976
+ syntax: "*";
977
+ inherits: false;
978
+ }
979
+ @property --tw-backdrop-brightness {
980
+ syntax: "*";
981
+ inherits: false;
982
+ }
983
+ @property --tw-backdrop-contrast {
984
+ syntax: "*";
985
+ inherits: false;
986
+ }
987
+ @property --tw-backdrop-grayscale {
988
+ syntax: "*";
989
+ inherits: false;
990
+ }
991
+ @property --tw-backdrop-hue-rotate {
992
+ syntax: "*";
993
+ inherits: false;
994
+ }
995
+ @property --tw-backdrop-invert {
996
+ syntax: "*";
997
+ inherits: false;
998
+ }
999
+ @property --tw-backdrop-opacity {
1000
+ syntax: "*";
1001
+ inherits: false;
1002
+ }
1003
+ @property --tw-backdrop-saturate {
1004
+ syntax: "*";
1005
+ inherits: false;
1006
+ }
1007
+ @property --tw-backdrop-sepia {
1008
+ syntax: "*";
1009
+ inherits: false;
1010
+ }
1011
+ @layer properties {
1012
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
1013
+ *, ::before, ::after, ::backdrop {
1014
+ --tw-rotate-x: initial;
1015
+ --tw-rotate-y: initial;
1016
+ --tw-rotate-z: initial;
1017
+ --tw-skew-x: initial;
1018
+ --tw-skew-y: initial;
1019
+ --tw-space-y-reverse: 0;
1020
+ --tw-divide-y-reverse: 0;
1021
+ --tw-border-style: solid;
1022
+ --tw-font-weight: initial;
1023
+ --tw-tracking: initial;
1024
+ --tw-shadow: 0 0 #0000;
1025
+ --tw-shadow-color: initial;
1026
+ --tw-shadow-alpha: 100%;
1027
+ --tw-inset-shadow: 0 0 #0000;
1028
+ --tw-inset-shadow-color: initial;
1029
+ --tw-inset-shadow-alpha: 100%;
1030
+ --tw-ring-color: initial;
1031
+ --tw-ring-shadow: 0 0 #0000;
1032
+ --tw-inset-ring-color: initial;
1033
+ --tw-inset-ring-shadow: 0 0 #0000;
1034
+ --tw-ring-inset: initial;
1035
+ --tw-ring-offset-width: 0px;
1036
+ --tw-ring-offset-color: #fff;
1037
+ --tw-ring-offset-shadow: 0 0 #0000;
1038
+ --tw-blur: initial;
1039
+ --tw-brightness: initial;
1040
+ --tw-contrast: initial;
1041
+ --tw-grayscale: initial;
1042
+ --tw-hue-rotate: initial;
1043
+ --tw-invert: initial;
1044
+ --tw-opacity: initial;
1045
+ --tw-saturate: initial;
1046
+ --tw-sepia: initial;
1047
+ --tw-drop-shadow: initial;
1048
+ --tw-drop-shadow-color: initial;
1049
+ --tw-drop-shadow-alpha: 100%;
1050
+ --tw-drop-shadow-size: initial;
1051
+ --tw-backdrop-blur: initial;
1052
+ --tw-backdrop-brightness: initial;
1053
+ --tw-backdrop-contrast: initial;
1054
+ --tw-backdrop-grayscale: initial;
1055
+ --tw-backdrop-hue-rotate: initial;
1056
+ --tw-backdrop-invert: initial;
1057
+ --tw-backdrop-opacity: initial;
1058
+ --tw-backdrop-saturate: initial;
1059
+ --tw-backdrop-sepia: initial;
1060
+ }
1061
+ }
1062
+ }
1063
+
1064
+ /* Copyright (c) Cratis. All rights reserved. */
1065
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
1066
+
1067
+ /*
1068
+ * The manifest for `@cratis/components/styles` — every stylesheet the components need.
1069
+ *
1070
+ * Why a manifest rather than a `.css` import inside each component: a CSS import sitting in the
1071
+ * JavaScript module graph is what makes the published ESM unloadable by Node
1072
+ * (Cratis/Components#118 — `ERR_UNKNOWN_FILE_EXTENSION` on every subpath that reaches one, and no
1073
+ * node-environment consumer can render a `Dialog` in a spec). The components therefore import no
1074
+ * CSS at all, and every rule arrives through this one entry point instead.
1075
+ *
1076
+ * The build flattens these `@import`s into `dist/esm/styles.css`, with the compiled Tailwind
1077
+ * utilities prepended. Storybook and Vite dev resolve them directly.
1078
+ *
1079
+ * Adding a component stylesheet? Add its `@import` here. The build fails if a `.css` file under
1080
+ * `Source/` is not reachable from this manifest, so the two cannot drift apart silently.
1081
+ *
1082
+ * Consumers import this alongside the token layer:
1083
+ *
1084
+ * import '@cratis/components/tokens'; // the --cratis-* seam (always)
1085
+ * import '@cratis/components/styles'; // component rules (always)
1086
+ * import '@cratis/components/theme'; // optional license-free baseline look
1087
+ */
1088
+
1089
+ /* Third-party: Allotment lays its split view out entirely from this stylesheet, so a `DataPage`
1090
+ with a details pane only sides its panes — and only keeps its paginator in frame — once these
1091
+ rules are present. Vendored in here rather than imported from `DataPage.tsx` for the same
1092
+ reason as everything else in this file. */
1093
+ /* ── allotment/dist/style.css ─────────────────────────────────────── */
1094
+ :root {
1095
+ --separator-border: rgba(128, 128, 128, 0.35);
1096
+ --sash-hover-transition-duration: 0.1s;
1097
+ }
1098
+
1099
+ .allotment-module_splitView__L-yRc {
1100
+ height: 100%;
1101
+ overflow: hidden;
1102
+ position: relative;
1103
+ width: 100%;
1104
+ }
1105
+
1106
+ .allotment-module_splitView__L-yRc > .allotment-module_sashContainer__fzwJF {
1107
+ height: 100%;
1108
+ pointer-events: none;
1109
+ position: absolute;
1110
+ width: 100%;
1111
+ }
1112
+
1113
+ .allotment-module_splitView__L-yRc > .allotment-module_sashContainer__fzwJF > .allotment-module_sash__QA-2t {
1114
+ pointer-events: auto;
1115
+ }
1116
+
1117
+ .allotment-module_splitView__L-yRc > .allotment-module_splitViewContainer__rQnVa {
1118
+ height: 100%;
1119
+ position: relative;
1120
+ white-space: nowrap;
1121
+ width: 100%;
1122
+ }
1123
+
1124
+ .allotment-module_splitView__L-yRc > .allotment-module_splitViewContainer__rQnVa > .allotment-module_splitViewView__MGZ6O {
1125
+ overflow: hidden;
1126
+ position: absolute;
1127
+ white-space: initial;
1128
+ }
1129
+
1130
+ .allotment-module_splitView__L-yRc.allotment-module_vertical__WSwwa > .allotment-module_splitViewContainer__rQnVa > .allotment-module_splitViewView__MGZ6O {
1131
+ width: 100%;
1132
+ }
1133
+
1134
+ .allotment-module_splitView__L-yRc.allotment-module_horizontal__7doS8 > .allotment-module_splitViewContainer__rQnVa > .allotment-module_splitViewView__MGZ6O {
1135
+ height: 100%;
1136
+ }
1137
+
1138
+ .allotment-module_splitView__L-yRc.allotment-module_separatorBorder__x-rDS
1139
+ > .allotment-module_splitViewContainer__rQnVa
1140
+ > .allotment-module_splitViewView__MGZ6O:not(:first-child)::before {
1141
+ background-color: var(--separator-border);
1142
+ content: " ";
1143
+ left: 0;
1144
+ pointer-events: none;
1145
+ position: absolute;
1146
+ top: 0;
1147
+ z-index: 5;
1148
+ }
1149
+
1150
+ .allotment-module_splitView__L-yRc.allotment-module_separatorBorder__x-rDS.allotment-module_vertical__WSwwa
1151
+ > .allotment-module_splitViewContainer__rQnVa
1152
+ > .allotment-module_splitViewView__MGZ6O:not(:first-child)::before {
1153
+ height: 1px;
1154
+ width: 100%;
1155
+ }
1156
+
1157
+ .allotment-module_splitView__L-yRc.allotment-module_separatorBorder__x-rDS.allotment-module_horizontal__7doS8
1158
+ > .allotment-module_splitViewContainer__rQnVa
1159
+ > .allotment-module_splitViewView__MGZ6O:not(:first-child)::before {
1160
+ height: 100%;
1161
+ width: 1px;
1162
+ }
1163
+
1164
+ :root {
1165
+ --focus-border: #007fd4;
1166
+ --sash-size: 8px;
1167
+ --sash-hover-size: 4px;
1168
+ }
1169
+
1170
+ .sash-module_sash__K-9lB {
1171
+ position: absolute;
1172
+ z-index: 35;
1173
+ touch-action: none;
1174
+ pointer-events: auto;
1175
+ text-align: initial;
1176
+ }
1177
+
1178
+ .sash-module_sash__K-9lB.sash-module_disabled__Hm-wx {
1179
+ pointer-events: none;
1180
+ }
1181
+
1182
+ .sash-module_sash__K-9lB.sash-module_mac__Jf6OJ.sash-module_vertical__pB-rs {
1183
+ cursor: col-resize;
1184
+ }
1185
+
1186
+ .sash-module_sash__K-9lB.sash-module_vertical__pB-rs.sash-module_minimum__-UKxp {
1187
+ cursor: e-resize;
1188
+ }
1189
+
1190
+ .sash-module_sash__K-9lB.sash-module_vertical__pB-rs.sash-module_maximum__TCWxD {
1191
+ cursor: w-resize;
1192
+ }
1193
+
1194
+ .sash-module_sash__K-9lB.sash-module_mac__Jf6OJ.sash-module_horizontal__kFbiw {
1195
+ cursor: row-resize;
1196
+ }
1197
+
1198
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw.sash-module_minimum__-UKxp {
1199
+ cursor: s-resize;
1200
+ }
1201
+
1202
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw.sash-module_maximum__TCWxD {
1203
+ cursor: n-resize;
1204
+ }
1205
+
1206
+ .sash-module_sash__K-9lB.sash-module_disabled__Hm-wx {
1207
+ cursor: default !important;
1208
+ pointer-events: none !important;
1209
+ }
1210
+
1211
+ .sash-module_sash__K-9lB.sash-module_vertical__pB-rs {
1212
+ cursor: ew-resize;
1213
+ top: 0;
1214
+ width: var(--sash-size);
1215
+ height: 100%;
1216
+ }
1217
+
1218
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw {
1219
+ cursor: ns-resize;
1220
+ left: 0;
1221
+ width: 100%;
1222
+ height: var(--sash-size);
1223
+ }
1224
+
1225
+ .sash-module_sash__K-9lB:not(.sash-module_disabled__Hm-wx) > .sash-module_orthogonal-drag-handle__Yii2- {
1226
+ content: " ";
1227
+ height: calc(var(--sash-size) * 2);
1228
+ width: calc(var(--sash-size) * 2);
1229
+ z-index: 100;
1230
+ display: block;
1231
+ cursor: all-scroll;
1232
+ position: absolute;
1233
+ }
1234
+
1235
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw.sash-module_orthogonal-edge-north__f7Noe:not(.sash-module_disabled__Hm-wx)
1236
+ > .sash-module_orthogonal-drag-handle__Yii2-.sash-module_start__uZEDk,
1237
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw.sash-module_orthogonal-edge-south__6ZrFC:not(.sash-module_disabled__Hm-wx)
1238
+ > .sash-module_orthogonal-drag-handle__Yii2-.sash-module_end__0TP-R {
1239
+ cursor: nwse-resize;
1240
+ }
1241
+
1242
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw.sash-module_orthogonal-edge-north__f7Noe:not(.sash-module_disabled__Hm-wx)
1243
+ > .sash-module_orthogonal-drag-handle__Yii2-.sash-module_end__0TP-R,
1244
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw.sash-module_orthogonal-edge-south__6ZrFC:not(.sash-module_disabled__Hm-wx)
1245
+ > .sash-module_orthogonal-drag-handle__Yii2-.sash-module_start__uZEDk {
1246
+ cursor: nesw-resize;
1247
+ }
1248
+
1249
+ .sash-module_sash__K-9lB.sash-module_vertical__pB-rs > .sash-module_orthogonal-drag-handle__Yii2-.sash-module_start__uZEDk {
1250
+ left: calc(var(--sash-size) * -0.5);
1251
+ top: calc(var(--sash-size) * -1);
1252
+ }
1253
+
1254
+ .sash-module_sash__K-9lB.sash-module_vertical__pB-rs > .sash-module_orthogonal-drag-handle__Yii2-.sash-module_end__0TP-R {
1255
+ left: calc(var(--sash-size) * -0.5);
1256
+ bottom: calc(var(--sash-size) * -1);
1257
+ }
1258
+
1259
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw > .sash-module_orthogonal-drag-handle__Yii2-.sash-module_start__uZEDk {
1260
+ top: calc(var(--sash-size) * -0.5);
1261
+ left: calc(var(--sash-size) * -1);
1262
+ }
1263
+
1264
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw > .sash-module_orthogonal-drag-handle__Yii2-.sash-module_end__0TP-R {
1265
+ top: calc(var(--sash-size) * -0.5);
1266
+ right: calc(var(--sash-size) * -1);
1267
+ }
1268
+
1269
+ .sash-module_sash__K-9lB:before {
1270
+ content: "";
1271
+ pointer-events: none;
1272
+ position: absolute;
1273
+ width: 100%;
1274
+ height: 100%;
1275
+ transition: background-color var(--sash-hover-transition-duration) ease-out;
1276
+ background: transparent;
1277
+ }
1278
+
1279
+ .sash-module_sash__K-9lB.sash-module_vertical__pB-rs:before {
1280
+ width: var(--sash-hover-size);
1281
+ left: calc(50% - (var(--sash-hover-size) / 2));
1282
+ }
1283
+
1284
+ .sash-module_sash__K-9lB.sash-module_horizontal__kFbiw:before {
1285
+ height: var(--sash-hover-size);
1286
+ top: calc(50% - (var(--sash-hover-size) / 2));
1287
+ }
1288
+
1289
+ .sash-module_sash__K-9lB.sash-module_hover__80W6I:before,
1290
+ .sash-module_sash__K-9lB.sash-module_active__bJspD:before {
1291
+ background: var(--focus-border);
1292
+ }
1293
+
1294
+
1295
+ /* ── ./CommandDialog/CommandStepper.css ─────────────────────────────────────── */
1296
+ /* Copyright (c) Cratis. All rights reserved. */
1297
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
1298
+
1299
+ /* Make stepper and its panels fill available width */
1300
+ .cratis-command-stepper {
1301
+ display: flex;
1302
+ flex-direction: column;
1303
+ gap: 0.75rem;
1304
+ width: 100%;
1305
+ }
1306
+
1307
+ /* PrimeReact 11 stepper parts carry data-scope/data-part attributes rather
1308
+ than the v10 .p-stepper* class names, so key structural rules off those. */
1309
+ .cratis-command-stepper [data-scope="stepper"][data-part="root"] {
1310
+ width: 100%;
1311
+ }
1312
+
1313
+ .cratis-command-stepper [data-scope="stepper"][data-part="panel"] {
1314
+ width: 100%;
1315
+ box-sizing: border-box;
1316
+ }
1317
+
1318
+ /* Dim the header of steps that are not currently active */
1319
+ .cratis-command-stepper [data-scope="stepper"][data-part="step"]:not([data-active]) [data-part="header"] {
1320
+ opacity: 0.5;
1321
+ }
1322
+
1323
+ /* Horizontal (default): the step list flows left-to-right. */
1324
+ .cratis-command-stepper--horizontal [data-scope="stepper"][data-part="list"] {
1325
+ display: flex;
1326
+ flex-direction: row;
1327
+ align-items: center;
1328
+ }
1329
+
1330
+ /* Vertical: the step list is a stacked column beside the panels. */
1331
+ .cratis-command-stepper--vertical [data-scope="stepper"][data-part="root"] {
1332
+ display: flex;
1333
+ flex-direction: row;
1334
+ align-items: flex-start;
1335
+ gap: 1.5rem;
1336
+ }
1337
+
1338
+ .cratis-command-stepper--vertical [data-scope="stepper"][data-part="list"] {
1339
+ display: flex;
1340
+ flex-direction: column;
1341
+ align-items: flex-start;
1342
+ gap: 0.25rem;
1343
+ }
1344
+
1345
+ .cratis-command-stepper--vertical [data-scope="stepper"][data-part="step"] {
1346
+ display: flex;
1347
+ flex-direction: column;
1348
+ align-items: flex-start;
1349
+ }
1350
+
1351
+ .cratis-command-stepper--vertical [data-scope="stepper"][data-part="separator"] {
1352
+ width: 2px;
1353
+ min-height: 1.25rem;
1354
+ margin-left: 0.9rem;
1355
+ }
1356
+
1357
+ .cratis-command-stepper--vertical [data-scope="stepper"][data-part="panels"] {
1358
+ flex: 1;
1359
+ min-width: 0;
1360
+ }
1361
+
1362
+ /* ── ./Common/ActionMenubar.css ─────────────────────────────────────── */
1363
+ /* Copyright (c) Cratis. All rights reserved. */
1364
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
1365
+
1366
+ .cratis-action-menubar {
1367
+ display: flex;
1368
+ align-items: center;
1369
+ gap: 0.25rem;
1370
+ flex-wrap: wrap;
1371
+ }
1372
+
1373
+ /* ── ./Common/FormElement.css ─────────────────────────────────────── */
1374
+ /* Copyright (c) Cratis. All rights reserved. */
1375
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
1376
+
1377
+ .cratis-form-element {
1378
+ display: flex;
1379
+ flex: 1 1 auto;
1380
+ align-items: stretch;
1381
+ }
1382
+
1383
+ .cratis-form-element__addon {
1384
+ display: inline-flex;
1385
+ align-items: center;
1386
+ justify-content: center;
1387
+ padding: 0 0.75rem;
1388
+ color: var(--cratis-text-color-secondary);
1389
+ background: var(--cratis-surface-100);
1390
+ border: 1px solid var(--cratis-surface-border);
1391
+ border-right: 0;
1392
+ border-top-left-radius: var(--cratis-border-radius);
1393
+ border-bottom-left-radius: var(--cratis-border-radius);
1394
+ }
1395
+
1396
+ .cratis-form-element > *:not(.cratis-form-element__addon) {
1397
+ flex: 1 1 auto;
1398
+ min-width: 0;
1399
+ }
1400
+
1401
+ /* ── ./Common/Tooltip.css ─────────────────────────────────────── */
1402
+ /* Copyright (c) Cratis. All rights reserved. */
1403
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
1404
+
1405
+ /* ── Tooltip trigger ─────────────────────────────────────────────────────── */
1406
+ .cratis-tooltip-trigger {
1407
+ display: inline-flex;
1408
+ }
1409
+
1410
+ /* ── Tooltip bubble ──────────────────────────────────────────────────────── */
1411
+ .cratis-tooltip-popup {
1412
+ background: var(--cratis-surface-100);
1413
+ color: var(--cratis-text-color);
1414
+ border: 1px solid var(--cratis-surface-border);
1415
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
1416
+ border-radius: 0.25rem;
1417
+ padding: 0.25rem 0.5rem;
1418
+ font-size: 0.75rem;
1419
+ font-family: system-ui, sans-serif;
1420
+ max-width: 24rem;
1421
+ z-index: 1100;
1422
+ }
1423
+
1424
+ /* ── ./DataTables/ColumnFilterMenu.css ─────────────────────────────────────── */
1425
+ /* Copyright (c) Cratis. All rights reserved. */
1426
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
1427
+
1428
+ .cratis-filter-trigger {
1429
+ display: inline-flex;
1430
+ align-items: center;
1431
+ justify-content: center;
1432
+ padding: 0.25rem;
1433
+ border: none;
1434
+ background: transparent;
1435
+ color: var(--cratis-text-color-secondary);
1436
+ cursor: pointer;
1437
+ border-radius: 0.25rem;
1438
+ }
1439
+
1440
+ .cratis-filter-trigger:hover {
1441
+ background: var(--cratis-surface-hover);
1442
+ color: var(--cratis-text-color);
1443
+ }
1444
+
1445
+ .cratis-filter-trigger--active {
1446
+ color: var(--cratis-primary-color);
1447
+ }
1448
+
1449
+ .cratis-filter-menu {
1450
+ display: flex;
1451
+ flex-direction: column;
1452
+ gap: 0.5rem;
1453
+ min-width: 14rem;
1454
+ padding: 0.5rem;
1455
+ background: var(--cratis-surface-overlay);
1456
+ border: 1px solid var(--cratis-surface-border);
1457
+ border-radius: 0.375rem;
1458
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
1459
+ }
1460
+
1461
+ .cratis-filter-menu-actions {
1462
+ display: flex;
1463
+ justify-content: space-between;
1464
+ gap: 0.5rem;
1465
+ }
1466
+
1467
+ /* ── ./DataTables/DataTableCore.css ─────────────────────────────────────── */
1468
+ /* Copyright (c) Cratis. All rights reserved. */
1469
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
1470
+
1471
+ .cratis-datatable-header-cell {
1472
+ display: flex;
1473
+ align-items: center;
1474
+ gap: 0.25rem;
1475
+ }
1476
+
1477
+ .cratis-datatable-search {
1478
+ padding: 0.5rem;
1479
+ border-bottom: 1px solid var(--cratis-surface-border);
1480
+ }
1481
+
1482
+ /* ── ./DataTables/TablePaginator.css ─────────────────────────────────────── */
1483
+ /* Copyright (c) Cratis. All rights reserved. */
1484
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
1485
+
1486
+ .cratis-table-paginator {
1487
+ display: flex;
1488
+ align-items: center;
1489
+ justify-content: center;
1490
+ gap: 0.25rem;
1491
+ padding: 0.25rem;
1492
+ }
1493
+
1494
+ .cratis-table-paginator-info {
1495
+ font-size: 0.875rem;
1496
+ color: var(--cratis-text-color-secondary);
1497
+ padding: 0 0.5rem;
1498
+ }
1499
+
1500
+ .cratis-table-paginator-range {
1501
+ font-size: 0.8125rem;
1502
+ color: var(--cratis-text-color-secondary);
1503
+ margin-right: auto;
1504
+ padding: 0 0.5rem;
1505
+ }
1506
+
1507
+ /* ── ./Filter/FilterPanel.css ─────────────────────────────────────── */
1508
+ /* -----------------------------------------------------------------------
1509
+ * Standalone FilterPanel styles.
1510
+ *
1511
+ * These styles are shared by the standalone FilterPanel component and the
1512
+ * PivotViewer which embeds it. All class names use the .pv-filter-* prefix
1513
+ * so they can coexist with PivotViewer's other .pv-* rules.
1514
+ * ----------------------------------------------------------------------- */
1515
+
1516
+ .pv-filter-panel {
1517
+ position: fixed;
1518
+ width: min(280px, calc(100% - 2rem));
1519
+ max-height: calc(100vh - 6.5rem);
1520
+ background: linear-gradient(180deg, var(--cratis-surface-card), var(--cratis-surface-ground));
1521
+ border: 1px solid var(--cratis-surface-border);
1522
+ border-radius: 1rem;
1523
+ box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3);
1524
+ backdrop-filter: blur(14px);
1525
+ overflow: hidden;
1526
+ z-index: 12;
1527
+ display: flex;
1528
+ flex-direction: column;
1529
+ }
1530
+
1531
+ .pv-filter-panel.dragging {
1532
+ cursor: grabbing;
1533
+ user-select: none;
1534
+ }
1535
+
1536
+ .pv-filter-panel.minimized {
1537
+ max-height: none;
1538
+ }
1539
+
1540
+ .pv-filter-panel-header {
1541
+ display: flex;
1542
+ align-items: center;
1543
+ gap: 0.5rem;
1544
+ padding: 0.75rem 1rem;
1545
+ cursor: grab;
1546
+ background: var(--cratis-surface-section);
1547
+ border-bottom: 1px solid var(--cratis-surface-border);
1548
+ flex-shrink: 0;
1549
+ }
1550
+
1551
+ .pv-filter-panel.dragging .pv-filter-panel-header {
1552
+ cursor: grabbing;
1553
+ }
1554
+
1555
+ .pv-filter-panel-header h2 {
1556
+ margin: 0;
1557
+ font-size: 0.85rem;
1558
+ letter-spacing: 0.04em;
1559
+ text-transform: uppercase;
1560
+ color: var(--cratis-text-color);
1561
+ flex: 1;
1562
+ pointer-events: none;
1563
+ }
1564
+
1565
+ .pv-minimize-btn,
1566
+ .pv-close-btn {
1567
+ appearance: none;
1568
+ border: none;
1569
+ border-radius: 0.4rem;
1570
+ width: 1.5rem;
1571
+ height: 1.5rem;
1572
+ display: flex;
1573
+ align-items: center;
1574
+ justify-content: center;
1575
+ background: var(--cratis-highlight-bg);
1576
+ color: var(--cratis-text-color);
1577
+ font-size: 1rem;
1578
+ font-weight: 500;
1579
+ cursor: pointer;
1580
+ transition: background 120ms ease;
1581
+ }
1582
+
1583
+ .pv-minimize-btn:hover,
1584
+ .pv-close-btn:hover {
1585
+ background: var(--cratis-surface-hover);
1586
+ }
1587
+
1588
+ .pv-close-btn {
1589
+ font-size: 1.2rem;
1590
+ }
1591
+
1592
+ .pv-filter-panel-content {
1593
+ overflow: hidden;
1594
+ max-height: 0;
1595
+ opacity: 0;
1596
+ padding: 0 1.25rem;
1597
+ transition: max-height 150ms ease-out, opacity 100ms ease-out, padding 150ms ease-out;
1598
+ }
1599
+
1600
+ .pv-filter-panel-content.expanded {
1601
+ overflow-y: auto;
1602
+ flex: 1;
1603
+ max-height: 600px;
1604
+ opacity: 1;
1605
+ padding: 1rem 1.25rem 1.25rem;
1606
+ }
1607
+
1608
+ .pv-search {
1609
+ padding-bottom: 1rem;
1610
+ }
1611
+
1612
+ .pv-search input {
1613
+ width: 100%;
1614
+ padding: 0.65rem 0.85rem;
1615
+ border-radius: 0.75rem;
1616
+ border: 1px solid var(--cratis-surface-border);
1617
+ background: var(--cratis-surface-ground);
1618
+ color: inherit;
1619
+ font-size: 0.95rem;
1620
+ box-shadow: inset 0 1px 0 var(--cratis-surface-border);
1621
+ }
1622
+
1623
+ .pv-search input:focus {
1624
+ outline: none;
1625
+ border-color: var(--cratis-primary-color);
1626
+ box-shadow: var(--cratis-focus-ring);
1627
+ }
1628
+
1629
+ .pv-filter-group-search {
1630
+ padding: 0 0 0.5rem 0;
1631
+ }
1632
+
1633
+ .pv-filter-group-search input {
1634
+ width: 100%;
1635
+ padding: 0.4rem 0.6rem;
1636
+ border-radius: 0.5rem;
1637
+ border: 1px solid var(--cratis-surface-border);
1638
+ background: var(--cratis-surface-ground);
1639
+ color: inherit;
1640
+ font-size: 0.85rem;
1641
+ }
1642
+
1643
+ .pv-filter-group-search input:focus {
1644
+ outline: none;
1645
+ border-color: var(--cratis-primary-color);
1646
+ box-shadow: var(--cratis-focus-ring);
1647
+ }
1648
+
1649
+ .pv-filter-groups {
1650
+ display: flex;
1651
+ flex-direction: column;
1652
+ gap: 0.85rem;
1653
+ }
1654
+
1655
+ .pv-filter {
1656
+ background: var(--cratis-surface-overlay);
1657
+ border: 1px solid var(--cratis-surface-border);
1658
+ border-radius: 0.85rem;
1659
+ padding: 0.75rem 0.85rem;
1660
+ transition: border-color 180ms ease, box-shadow 180ms ease;
1661
+ }
1662
+
1663
+ .pv-filter.expanded {
1664
+ border-color: var(--cratis-primary-color);
1665
+ box-shadow: 0 15px 38px rgba(0, 0, 0, 0.3);
1666
+ }
1667
+
1668
+ .pv-filter-trigger {
1669
+ display: flex;
1670
+ width: 100%;
1671
+ align-items: center;
1672
+ justify-content: space-between;
1673
+ background: none;
1674
+ border: none;
1675
+ color: inherit;
1676
+ padding: 0;
1677
+ cursor: pointer;
1678
+ font-size: 0.82rem;
1679
+ font-weight: 600;
1680
+ text-transform: uppercase;
1681
+ letter-spacing: 0.05em;
1682
+ }
1683
+
1684
+ .pv-filter-label {
1685
+ display: flex;
1686
+ align-items: center;
1687
+ gap: 0.4rem;
1688
+ }
1689
+
1690
+ .pv-filter-trigger-meta {
1691
+ display: inline-flex;
1692
+ align-items: center;
1693
+ gap: 0.5rem;
1694
+ }
1695
+
1696
+ .pv-filter-count {
1697
+ display: inline-flex;
1698
+ align-items: center;
1699
+ justify-content: center;
1700
+ min-width: 1.5rem;
1701
+ padding: 0.15rem 0.45rem;
1702
+ border-radius: 999px;
1703
+ background: var(--cratis-highlight-bg);
1704
+ color: var(--cratis-text-color);
1705
+ font-size: 0.7rem;
1706
+ }
1707
+
1708
+ .pv-filter-clear-header {
1709
+ appearance: none;
1710
+ border: none;
1711
+ width: 1.5rem;
1712
+ height: 1.5rem;
1713
+ border-radius: 50%;
1714
+ background: var(--cratis-highlight-bg);
1715
+ color: var(--cratis-text-color);
1716
+ font-size: 1.2rem;
1717
+ line-height: 1;
1718
+ display: flex;
1719
+ align-items: center;
1720
+ justify-content: center;
1721
+ cursor: pointer;
1722
+ transition: background 160ms ease, transform 120ms ease;
1723
+ padding: 0;
1724
+ }
1725
+
1726
+ .pv-filter-clear-header:hover {
1727
+ background: var(--cratis-surface-hover);
1728
+ transform: scale(1.1);
1729
+ }
1730
+
1731
+ .pv-filter-clear-header:active {
1732
+ transform: scale(0.95);
1733
+ }
1734
+
1735
+ .pv-filter-chevron {
1736
+ width: 0.65rem;
1737
+ height: 0.65rem;
1738
+ border-right: 2px solid var(--cratis-text-color);
1739
+ border-bottom: 2px solid var(--cratis-text-color);
1740
+ transform: rotate(45deg);
1741
+ transition: transform 180ms ease;
1742
+ }
1743
+
1744
+ .pv-filter.expanded .pv-filter-chevron {
1745
+ transform: rotate(225deg);
1746
+ }
1747
+
1748
+ .pv-filter-content {
1749
+ overflow: hidden;
1750
+ max-height: 0;
1751
+ opacity: 0;
1752
+ margin-top: 0;
1753
+ padding-top: 0;
1754
+ border-top: 1px solid transparent;
1755
+ transition: max-height 120ms ease-out, opacity 80ms ease-out, margin-top 120ms ease-out, padding-top 120ms ease-out, border-color 120ms ease-out;
1756
+ }
1757
+
1758
+ .pv-filter-content.expanded {
1759
+ max-height: 350px;
1760
+ opacity: 1;
1761
+ margin-top: 0.75rem;
1762
+ padding-top: 0.75rem;
1763
+ border-top-color: var(--cratis-surface-border);
1764
+ overflow-y: auto;
1765
+ }
1766
+
1767
+ .pv-filter-content ul {
1768
+ list-style: none;
1769
+ margin: 0;
1770
+ padding: 0;
1771
+ display: grid;
1772
+ gap: 0.45rem;
1773
+ }
1774
+
1775
+ .pv-filter-content li label {
1776
+ display: grid;
1777
+ grid-template-columns: auto 1fr auto;
1778
+ gap: 0.6rem;
1779
+ align-items: center;
1780
+ padding: 0.45rem 0.5rem;
1781
+ border-radius: 0.55rem;
1782
+ border: 1px solid transparent;
1783
+ cursor: pointer;
1784
+ transition: background 160ms ease, border-color 160ms ease;
1785
+ }
1786
+
1787
+ .pv-filter-content li label:hover {
1788
+ background: var(--cratis-surface-hover);
1789
+ }
1790
+
1791
+ .pv-filter-content input[type='checkbox'],
1792
+ .pv-filter-content input[type='radio'] {
1793
+ accent-color: var(--cratis-primary-color);
1794
+ }
1795
+
1796
+ .pv-filter-content li label span {
1797
+ font-size: 0.85rem;
1798
+ }
1799
+
1800
+ .pv-filter-clear {
1801
+ margin-top: 0.75rem;
1802
+ appearance: none;
1803
+ border: none;
1804
+ border-radius: 0.55rem;
1805
+ padding: 0.4rem 0.75rem;
1806
+ background: var(--cratis-highlight-bg);
1807
+ color: var(--cratis-text-color);
1808
+ font-size: 0.72rem;
1809
+ text-transform: uppercase;
1810
+ letter-spacing: 0.08em;
1811
+ cursor: pointer;
1812
+ }
1813
+
1814
+ .pv-option-count {
1815
+ font-feature-settings: "tnum";
1816
+ font-variant-numeric: tabular-nums;
1817
+ color: var(--cratis-text-color-secondary);
1818
+ font-size: 0.75rem;
1819
+ }
1820
+
1821
+ /* Filter Dropdown (anchor-positioned panel) */
1822
+ .pv-filter-dropdown {
1823
+ position: fixed;
1824
+ width: min(320px, calc(100vw - 2rem));
1825
+ max-height: calc(100vh - 8rem);
1826
+ background: linear-gradient(180deg, var(--cratis-surface-card), var(--cratis-surface-ground));
1827
+ border: 1px solid var(--cratis-surface-border);
1828
+ border-radius: 0.85rem;
1829
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.4);
1830
+ backdrop-filter: blur(16px);
1831
+ overflow: hidden;
1832
+ z-index: 1000;
1833
+ display: flex;
1834
+ flex-direction: column;
1835
+ will-change: opacity, transform;
1836
+ contain: layout;
1837
+ }
1838
+
1839
+ .pv-filter-dropdown-content {
1840
+ padding: 1rem;
1841
+ overflow-y: auto;
1842
+ flex: 1;
1843
+ }
1844
+
1845
+ /* Range Histogram Filter */
1846
+ .pv-range-histogram {
1847
+ padding: 0.5rem 0;
1848
+ }
1849
+
1850
+ .pv-histogram-bars {
1851
+ display: flex;
1852
+ align-items: flex-end;
1853
+ gap: 2px;
1854
+ height: 80px;
1855
+ padding: 0 2px;
1856
+ margin-bottom: 0.5rem;
1857
+ }
1858
+
1859
+ .pv-histogram-bar {
1860
+ flex: 1;
1861
+ min-width: 8px;
1862
+ background: var(--cratis-highlight-bg);
1863
+ border: none;
1864
+ border-radius: 2px 2px 0 0;
1865
+ cursor: pointer;
1866
+ transition: background 160ms ease, transform 120ms ease;
1867
+ padding: 0;
1868
+ }
1869
+
1870
+ .pv-histogram-bar:hover {
1871
+ background: var(--cratis-surface-hover);
1872
+ transform: scaleY(1.02);
1873
+ }
1874
+
1875
+ .pv-histogram-bar.in-range {
1876
+ background: var(--cratis-primary-color);
1877
+ }
1878
+
1879
+ .pv-histogram-bar.partial {
1880
+ background: var(--cratis-highlight-bg);
1881
+ }
1882
+
1883
+ .pv-range-slider {
1884
+ position: relative;
1885
+ height: 24px;
1886
+ margin: 0.5rem 0;
1887
+ }
1888
+
1889
+ .pv-range-track {
1890
+ position: absolute;
1891
+ top: 50%;
1892
+ left: 0;
1893
+ right: 0;
1894
+ height: 4px;
1895
+ background: var(--cratis-surface-border);
1896
+ border-radius: 2px;
1897
+ transform: translateY(-50%);
1898
+ }
1899
+
1900
+ .pv-range-selection {
1901
+ position: absolute;
1902
+ top: 50%;
1903
+ height: 4px;
1904
+ background: var(--cratis-primary-color);
1905
+ border-radius: 2px;
1906
+ transform: translateY(-50%);
1907
+ cursor: grab;
1908
+ }
1909
+
1910
+ .pv-range-selection:active {
1911
+ cursor: grabbing;
1912
+ }
1913
+
1914
+ .pv-range-handle {
1915
+ position: absolute;
1916
+ top: 50%;
1917
+ width: 16px;
1918
+ height: 16px;
1919
+ background: var(--cratis-primary-color);
1920
+ border: 2px solid var(--cratis-text-color);
1921
+ border-radius: 50%;
1922
+ transform: translate(-50%, -50%);
1923
+ cursor: ew-resize;
1924
+ transition: transform 120ms ease, box-shadow 120ms ease;
1925
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
1926
+ }
1927
+
1928
+ .pv-range-handle:hover {
1929
+ transform: translate(-50%, -50%) scale(1.15);
1930
+ box-shadow: 0 4px 12px var(--cratis-primary-color);
1931
+ }
1932
+
1933
+ .pv-range-labels {
1934
+ display: flex;
1935
+ justify-content: space-between;
1936
+ font-size: 0.75rem;
1937
+ color: var(--cratis-text-color-secondary);
1938
+ font-variant-numeric: tabular-nums;
1939
+ }
1940
+
1941
+ .pv-range-clear {
1942
+ margin-top: 0.75rem;
1943
+ appearance: none;
1944
+ border: none;
1945
+ border-radius: 0.55rem;
1946
+ padding: 0.4rem 0.75rem;
1947
+ background: var(--cratis-highlight-bg);
1948
+ color: var(--cratis-text-color);
1949
+ font-size: 0.72rem;
1950
+ text-transform: uppercase;
1951
+ letter-spacing: 0.08em;
1952
+ cursor: pointer;
1953
+ width: 100%;
1954
+ }
1955
+
1956
+ .pv-range-clear:hover {
1957
+ background: var(--cratis-surface-hover);
1958
+ }
1959
+
1960
+ @media (max-width: 900px) {
1961
+ .pv-filter-panel {
1962
+ width: calc(100% - 2.5rem);
1963
+ left: 1.25rem;
1964
+ right: 1.25rem;
1965
+ }
1966
+ }
1967
+
1968
+ /* ── ./Notifications/Toaster.css ─────────────────────────────────────── */
1969
+ /* Copyright (c) Cratis. All rights reserved. */
1970
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
1971
+
1972
+ /* Baseline toast card — a notification needs a visible surface even before a
1973
+ theme preset is applied, so this ships a token-based default that a preset or
1974
+ `pt` can still override. */
1975
+ .cratis-toast {
1976
+ display: flex;
1977
+ align-items: flex-start;
1978
+ gap: 0.625rem;
1979
+ min-width: 18rem;
1980
+ max-width: 26rem;
1981
+ padding: 0.75rem 1rem;
1982
+ background: var(--cratis-surface-overlay);
1983
+ color: var(--cratis-text-color);
1984
+ border: 1px solid var(--cratis-surface-border);
1985
+ border-left: 4px solid var(--cratis-surface-border);
1986
+ border-radius: 0.5rem;
1987
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
1988
+ }
1989
+
1990
+ .cratis-toast [data-part="content"] {
1991
+ flex: 1;
1992
+ min-width: 0;
1993
+ display: flex;
1994
+ flex-direction: column;
1995
+ gap: 0.125rem;
1996
+ }
1997
+
1998
+ .cratis-toast [data-part="title"] {
1999
+ font-weight: 600;
2000
+ }
2001
+
2002
+ .cratis-toast [data-part="description"] {
2003
+ font-size: 0.875rem;
2004
+ color: var(--cratis-text-color-secondary);
2005
+ white-space: pre-line;
2006
+ }
2007
+
2008
+ .cratis-toast [data-part="close"] {
2009
+ border: none;
2010
+ background: transparent;
2011
+ color: var(--cratis-text-color-secondary);
2012
+ cursor: pointer;
2013
+ padding: 0.125rem;
2014
+ border-radius: 0.25rem;
2015
+ }
2016
+
2017
+ .cratis-toast [data-part="close"]:hover {
2018
+ color: var(--cratis-text-color);
2019
+ }
2020
+
2021
+ .cratis-toast[data-severity="success"] { border-left-color: var(--cratis-green-500); }
2022
+ .cratis-toast[data-severity="info"] { border-left-color: var(--cratis-primary-color); }
2023
+ .cratis-toast[data-severity="warn"] { border-left-color: var(--cratis-yellow-500, #eab308); }
2024
+ .cratis-toast[data-severity="error"] { border-left-color: var(--cratis-red-500); }
2025
+
2026
+ .cratis-toast[data-severity="success"] [data-part="icon"] { color: var(--cratis-green-500); }
2027
+ .cratis-toast[data-severity="info"] [data-part="icon"] { color: var(--cratis-primary-color); }
2028
+ .cratis-toast[data-severity="warn"] [data-part="icon"] { color: var(--cratis-yellow-500, #eab308); }
2029
+ .cratis-toast[data-severity="error"] [data-part="icon"] { color: var(--cratis-red-500); }
2030
+
2031
+ /* ── ./ObjectNavigationalBar/ObjectNavigationalBar.css ─────────────────────────────────────── */
2032
+ /* Copyright (c) Cratis. All rights reserved. */
2033
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
2034
+
2035
+ .cratis-object-navigational-bar {
2036
+ border-bottom: 1px solid var(--cratis-surface-border);
2037
+ }
2038
+
2039
+ /* ── ./PivotViewer/PivotViewer.css ─────────────────────────────────────── */
2040
+ .pivot-viewer {
2041
+ color-scheme: dark;
2042
+ position: relative;
2043
+ /* CRITICAL: Don't set explicit height - let parent control it via container constraints */
2044
+ display: flex;
2045
+ flex-direction: column;
2046
+ min-height: 0; /* allow children to size without forcing overflow */
2047
+ max-height: 100%; /* respect parent height if set */
2048
+ width: 100%;
2049
+ /* Keep root neutral; move visual background to the viewport so it never exceeds the container */
2050
+ background: var(--cratis-surface-ground);
2051
+ color: var(--cratis-text-color);
2052
+ overflow: hidden;
2053
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
2054
+ /* Ensure we shrink within flex parent */
2055
+ flex: 1 1 0%;
2056
+ }
2057
+
2058
+ .pv-filter-panel {
2059
+ position: fixed;
2060
+ width: min(280px, calc(100% - 2rem));
2061
+ max-height: calc(100vh - 6.5rem);
2062
+ background: linear-gradient(180deg, var(--cratis-surface-card), var(--cratis-surface-ground));
2063
+ border: 1px solid var(--cratis-surface-border);
2064
+ border-radius: 1rem;
2065
+ box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3);
2066
+ backdrop-filter: blur(14px);
2067
+ overflow: hidden;
2068
+ z-index: 12;
2069
+ display: flex;
2070
+ flex-direction: column;
2071
+ }
2072
+
2073
+ .pv-filter-panel.dragging {
2074
+ cursor: grabbing;
2075
+ user-select: none;
2076
+ }
2077
+
2078
+ .pv-filter-panel.minimized {
2079
+ max-height: none;
2080
+ }
2081
+
2082
+ .pv-filter-panel-header {
2083
+ display: flex;
2084
+ align-items: center;
2085
+ gap: 0.5rem;
2086
+ padding: 0.75rem 1rem;
2087
+ cursor: grab;
2088
+ background: var(--cratis-surface-section);
2089
+ border-bottom: 1px solid var(--cratis-surface-border);
2090
+ flex-shrink: 0;
2091
+ }
2092
+
2093
+ .pv-filter-panel.dragging .pv-filter-panel-header {
2094
+ cursor: grabbing;
2095
+ }
2096
+
2097
+ .pv-filter-panel-header h2 {
2098
+ margin: 0;
2099
+ font-size: 0.85rem;
2100
+ letter-spacing: 0.04em;
2101
+ text-transform: uppercase;
2102
+ color: var(--cratis-text-color);
2103
+ flex: 1;
2104
+ pointer-events: none;
2105
+ }
2106
+
2107
+ .pv-minimize-btn,
2108
+ .pv-close-btn {
2109
+ appearance: none;
2110
+ border: none;
2111
+ border-radius: 0.4rem;
2112
+ width: 1.5rem;
2113
+ height: 1.5rem;
2114
+ display: flex;
2115
+ align-items: center;
2116
+ justify-content: center;
2117
+ background: var(--cratis-highlight-bg);
2118
+ color: var(--cratis-text-color);
2119
+ font-size: 1rem;
2120
+ font-weight: 500;
2121
+ cursor: pointer;
2122
+ transition: background 120ms ease;
2123
+ }
2124
+
2125
+ .pv-minimize-btn:hover,
2126
+ .pv-close-btn:hover {
2127
+ background: var(--cratis-surface-hover);
2128
+ }
2129
+
2130
+ .pv-close-btn {
2131
+ font-size: 1.2rem;
2132
+ }
2133
+
2134
+ .pv-filter-panel-content {
2135
+ overflow: hidden;
2136
+ max-height: 0;
2137
+ opacity: 0;
2138
+ padding: 0 1.25rem;
2139
+ transition: max-height 150ms ease-out, opacity 100ms ease-out, padding 150ms ease-out;
2140
+ }
2141
+
2142
+ .pv-filter-panel-content.expanded {
2143
+ overflow-y: auto;
2144
+ flex: 1;
2145
+ max-height: 600px;
2146
+ opacity: 1;
2147
+ padding: 1rem 1.25rem 1.25rem;
2148
+ }
2149
+
2150
+ .pv-search {
2151
+ padding-bottom: 1rem;
2152
+ }
2153
+
2154
+ .pv-search input {
2155
+ width: 100%;
2156
+ padding: 0.65rem 0.85rem;
2157
+ border-radius: 0.75rem;
2158
+ border: 1px solid var(--cratis-surface-border);
2159
+ background: var(--cratis-surface-ground);
2160
+ color: inherit;
2161
+ font-size: 0.95rem;
2162
+ box-shadow: inset 0 1px 0 var(--cratis-surface-border);
2163
+ }
2164
+
2165
+ .pv-search input:focus {
2166
+ outline: none;
2167
+ border-color: var(--cratis-primary-color);
2168
+ box-shadow: var(--cratis-focus-ring);
2169
+ }
2170
+
2171
+
2172
+ .pv-filter-groups {
2173
+ display: flex;
2174
+ flex-direction: column;
2175
+ gap: 0.85rem;
2176
+ }
2177
+
2178
+ .pv-filter {
2179
+ background: var(--cratis-surface-overlay);
2180
+ border: 1px solid var(--cratis-surface-border);
2181
+ border-radius: 0.85rem;
2182
+ padding: 0.75rem 0.85rem;
2183
+ transition: border-color 180ms ease, box-shadow 180ms ease;
2184
+ }
2185
+
2186
+ .pv-filter.expanded {
2187
+ border-color: var(--cratis-primary-color);
2188
+ box-shadow: 0 15px 38px rgba(0, 0, 0, 0.3);
2189
+ }
2190
+
2191
+ .pv-filter-trigger {
2192
+ display: flex;
2193
+ width: 100%;
2194
+ align-items: center;
2195
+ justify-content: space-between;
2196
+ background: none;
2197
+ border: none;
2198
+ color: inherit;
2199
+ padding: 0;
2200
+ cursor: pointer;
2201
+ font-size: 0.82rem;
2202
+ font-weight: 600;
2203
+ text-transform: uppercase;
2204
+ letter-spacing: 0.05em;
2205
+ }
2206
+
2207
+ .pv-filter-label {
2208
+ display: flex;
2209
+ align-items: center;
2210
+ gap: 0.4rem;
2211
+ }
2212
+
2213
+ .pv-filter-trigger-meta {
2214
+ display: inline-flex;
2215
+ align-items: center;
2216
+ gap: 0.5rem;
2217
+ }
2218
+
2219
+ .pv-filter-count {
2220
+ display: inline-flex;
2221
+ align-items: center;
2222
+ justify-content: center;
2223
+ min-width: 1.5rem;
2224
+ padding: 0.15rem 0.45rem;
2225
+ border-radius: 999px;
2226
+ background: var(--cratis-highlight-bg);
2227
+ color: var(--cratis-text-color);
2228
+ font-size: 0.7rem;
2229
+ }
2230
+
2231
+ .pv-filter-chevron {
2232
+ width: 0.65rem;
2233
+ height: 0.65rem;
2234
+ border-right: 2px solid var(--cratis-text-color);
2235
+ border-bottom: 2px solid var(--cratis-text-color);
2236
+ transform: rotate(45deg);
2237
+ transition: transform 180ms ease;
2238
+ }
2239
+
2240
+ .pv-filter.expanded .pv-filter-chevron {
2241
+ transform: rotate(225deg);
2242
+ }
2243
+
2244
+ .pv-filter-content {
2245
+ overflow: hidden;
2246
+ max-height: 0;
2247
+ opacity: 0;
2248
+ margin-top: 0;
2249
+ padding-top: 0;
2250
+ border-top: 1px solid transparent;
2251
+ transition: max-height 120ms ease-out, opacity 80ms ease-out, margin-top 120ms ease-out, padding-top 120ms ease-out, border-color 120ms ease-out;
2252
+ }
2253
+
2254
+ .pv-filter-content.expanded {
2255
+ max-height: 350px;
2256
+ opacity: 1;
2257
+ margin-top: 0.75rem;
2258
+ padding-top: 0.75rem;
2259
+ border-top-color: var(--cratis-surface-border);
2260
+ overflow-y: auto;
2261
+ }
2262
+
2263
+ .pv-filter-content ul {
2264
+ list-style: none;
2265
+ margin: 0;
2266
+ padding: 0;
2267
+ display: grid;
2268
+ gap: 0.45rem;
2269
+ }
2270
+
2271
+ .pv-filter-content li label {
2272
+ display: grid;
2273
+ grid-template-columns: auto 1fr auto;
2274
+ gap: 0.6rem;
2275
+ align-items: center;
2276
+ padding: 0.45rem 0.5rem;
2277
+ border-radius: 0.55rem;
2278
+ border: 1px solid transparent;
2279
+ cursor: pointer;
2280
+ transition: background 160ms ease, border-color 160ms ease;
2281
+ }
2282
+
2283
+ .pv-filter-content li label:hover {
2284
+ background: var(--cratis-surface-hover);
2285
+ }
2286
+
2287
+ .pv-filter-content input[type='checkbox'],
2288
+ .pv-filter-content input[type='radio'] {
2289
+ accent-color: var(--cratis-primary-color);
2290
+ }
2291
+
2292
+ .pv-filter-content li label span {
2293
+ font-size: 0.85rem;
2294
+ }
2295
+
2296
+ .pv-filter-clear {
2297
+ margin-top: 0.75rem;
2298
+ appearance: none;
2299
+ border: none;
2300
+ border-radius: 0.55rem;
2301
+ padding: 0.4rem 0.75rem;
2302
+ background: var(--cratis-highlight-bg);
2303
+ color: var(--cratis-text-color);
2304
+ font-size: 0.72rem;
2305
+ text-transform: uppercase;
2306
+ letter-spacing: 0.08em;
2307
+ cursor: pointer;
2308
+ }
2309
+
2310
+ .pv-option-count {
2311
+ font-feature-settings: "tnum";
2312
+ font-variant-numeric: tabular-nums;
2313
+ color: var(--cratis-text-color-secondary);
2314
+ font-size: 0.75rem;
2315
+ }
2316
+
2317
+ .pv-main {
2318
+ position: relative;
2319
+ display: flex;
2320
+ flex-direction: column;
2321
+ min-height: 0;
2322
+ flex: 1 1 auto; /* grow within pivot-viewer */
2323
+ height: auto;
2324
+ padding-left: 0;
2325
+ overflow: hidden;
2326
+ }
2327
+
2328
+ .pv-toolbar {
2329
+ display: flex;
2330
+ justify-content: space-between;
2331
+ align-items: center;
2332
+ padding: 0.75rem 1.75rem;
2333
+ border-bottom: 1px solid var(--cratis-surface-border);
2334
+ background: var(--cratis-surface-section);
2335
+ backdrop-filter: blur(12px);
2336
+ position: sticky;
2337
+ top: 0;
2338
+ z-index: 15;
2339
+ flex-shrink: 0;
2340
+ min-height: 3.5rem;
2341
+ height: 3.5rem;
2342
+ overflow: visible;
2343
+ }
2344
+
2345
+ .pv-toolbar-left,
2346
+ .pv-toolbar-right {
2347
+ display: inline-flex;
2348
+ align-items: center;
2349
+ gap: 0.75rem;
2350
+ flex-shrink: 0;
2351
+ }
2352
+
2353
+ .pv-toolbar-right {
2354
+ gap: 1rem;
2355
+ }
2356
+
2357
+ .pv-toolbar h1 {
2358
+ margin: 0;
2359
+ font-size: 1.1rem;
2360
+ letter-spacing: -0.01em;
2361
+ white-space: nowrap;
2362
+ }
2363
+
2364
+ .pv-count {
2365
+ margin-left: 1rem;
2366
+ display: inline-flex;
2367
+ align-items: center;
2368
+ gap: 0.35rem;
2369
+ padding: 0.3rem 0.65rem;
2370
+ border-radius: 999px;
2371
+ background: var(--cratis-highlight-bg);
2372
+ font-size: 0.8rem;
2373
+ color: var(--cratis-text-color);
2374
+ }
2375
+
2376
+ .pv-filter-button {
2377
+ appearance: none;
2378
+ border: none;
2379
+ border-radius: 999px;
2380
+ padding: 0.45rem 1rem;
2381
+ background: var(--cratis-highlight-bg);
2382
+ color: var(--cratis-text-color);
2383
+ font-size: 0.8rem;
2384
+ letter-spacing: 0.08em;
2385
+ text-transform: uppercase;
2386
+ cursor: pointer;
2387
+ transition: background 180ms ease, box-shadow 180ms ease;
2388
+ }
2389
+
2390
+ .pv-filter-button.active,
2391
+ .pv-filter-button:hover {
2392
+ background: var(--cratis-surface-hover);
2393
+ box-shadow: var(--cratis-focus-ring);
2394
+ }
2395
+
2396
+ /* Filter Icon Button */
2397
+ .pv-filter-icon-button {
2398
+ position: relative;
2399
+ appearance: none;
2400
+ border: none;
2401
+ border-radius: 0.5rem;
2402
+ width: 2.25rem;
2403
+ height: 2.25rem;
2404
+ display: flex;
2405
+ align-items: center;
2406
+ justify-content: center;
2407
+ background: var(--cratis-highlight-bg);
2408
+ color: var(--cratis-text-color);
2409
+ cursor: pointer;
2410
+ transition: background 180ms ease, box-shadow 180ms ease;
2411
+ }
2412
+
2413
+ .pv-filter-icon-button:hover {
2414
+ background: var(--cratis-surface-hover);
2415
+ }
2416
+
2417
+ .pv-filter-icon-button.active {
2418
+ background: var(--cratis-surface-hover);
2419
+ box-shadow: var(--cratis-focus-ring);
2420
+ }
2421
+
2422
+ .pv-filter-badge {
2423
+ position: absolute;
2424
+ top: -4px;
2425
+ right: -4px;
2426
+ min-width: 1.1rem;
2427
+ height: 1.1rem;
2428
+ display: flex;
2429
+ align-items: center;
2430
+ justify-content: center;
2431
+ border-radius: 999px;
2432
+ background: var(--cratis-primary-color);
2433
+ color: var(--cratis-primary-color-text);
2434
+ font-size: 0.65rem;
2435
+ font-weight: 600;
2436
+ padding: 0 0.25rem;
2437
+ }
2438
+
2439
+ /* Filter Dropdown */
2440
+ .pv-filter-dropdown {
2441
+ position: fixed;
2442
+ width: min(320px, calc(100vw - 2rem));
2443
+ max-height: calc(100vh - 8rem);
2444
+ background: linear-gradient(180deg, var(--cratis-surface-card), var(--cratis-surface-ground));
2445
+ border: 1px solid var(--cratis-surface-border);
2446
+ border-radius: 0.85rem;
2447
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.4);
2448
+ backdrop-filter: blur(16px);
2449
+ overflow: hidden;
2450
+ z-index: 1000;
2451
+ display: flex;
2452
+ flex-direction: column;
2453
+ will-change: opacity, transform;
2454
+ contain: layout;
2455
+ }
2456
+
2457
+ .pv-filter-dropdown-content {
2458
+ padding: 1rem;
2459
+ overflow-y: auto;
2460
+ flex: 1;
2461
+ }
2462
+
2463
+ .pv-view-toggle {
2464
+ display: inline-flex;
2465
+ align-items: center;
2466
+ border-radius: 999px;
2467
+ background: var(--cratis-surface-section);
2468
+ border: 1px solid var(--cratis-surface-border);
2469
+ padding: 0.2rem;
2470
+ gap: 0.2rem;
2471
+ }
2472
+
2473
+ .pv-view-toggle button {
2474
+ appearance: none;
2475
+ border: none;
2476
+ border-radius: 999px;
2477
+ padding: 0.35rem 0.9rem;
2478
+ color: var(--cratis-text-color-secondary);
2479
+ background: transparent;
2480
+ font-size: 0.75rem;
2481
+ letter-spacing: 0.06em;
2482
+ text-transform: uppercase;
2483
+ cursor: pointer;
2484
+ transition: color 160ms ease, background 160ms ease, box-shadow 160ms ease;
2485
+ }
2486
+
2487
+ .pv-view-toggle button.active {
2488
+ background: var(--cratis-primary-color);
2489
+ color: var(--cratis-primary-color-text);
2490
+ }
2491
+
2492
+ .pv-zoom-controls {
2493
+ display: inline-flex;
2494
+ align-items: center;
2495
+ gap: 0.5rem;
2496
+ background: var(--cratis-surface-section);
2497
+ border: 1px solid var(--cratis-surface-border);
2498
+ border-radius: 0.6rem;
2499
+ padding: 0.25rem 0.5rem;
2500
+ }
2501
+
2502
+ .pv-zoom-controls button {
2503
+ appearance: none;
2504
+ border: none;
2505
+ background: transparent;
2506
+ color: var(--cratis-text-color);
2507
+ font-size: 1.1rem;
2508
+ width: 1.75rem;
2509
+ height: 1.75rem;
2510
+ border-radius: 0.4rem;
2511
+ cursor: pointer;
2512
+ display: flex;
2513
+ align-items: center;
2514
+ justify-content: center;
2515
+ transition: background 120ms ease, color 120ms ease;
2516
+ }
2517
+
2518
+ .pv-zoom-controls button:hover {
2519
+ background: var(--cratis-surface-hover);
2520
+ color: var(--cratis-text-color);
2521
+ }
2522
+
2523
+ .pv-zoom-controls button:disabled {
2524
+ opacity: 0.4;
2525
+ cursor: not-allowed;
2526
+ }
2527
+
2528
+ .pv-zoom-slider {
2529
+ width: 80px;
2530
+ height: 4px;
2531
+ appearance: none;
2532
+ background: var(--cratis-surface-border);
2533
+ border-radius: 2px;
2534
+ cursor: pointer;
2535
+ }
2536
+
2537
+ .pv-zoom-slider::-webkit-slider-thumb {
2538
+ appearance: none;
2539
+ width: 14px;
2540
+ height: 14px;
2541
+ background: var(--cratis-primary-color);
2542
+ border: 2px solid var(--cratis-text-color);
2543
+ border-radius: 50%;
2544
+ cursor: pointer;
2545
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
2546
+ transition: transform 120ms ease;
2547
+ }
2548
+
2549
+ .pv-zoom-slider::-webkit-slider-thumb:hover {
2550
+ transform: scale(1.15);
2551
+ }
2552
+
2553
+ .pv-zoom-slider::-moz-range-thumb {
2554
+ width: 14px;
2555
+ height: 14px;
2556
+ background: var(--cratis-primary-color);
2557
+ border: 2px solid var(--cratis-text-color);
2558
+ border-radius: 50%;
2559
+ cursor: pointer;
2560
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
2561
+ }
2562
+
2563
+ .pv-zoom-controls span {
2564
+ font-size: 0.75rem;
2565
+ color: var(--cratis-text-color-secondary);
2566
+ min-width: 3rem;
2567
+ text-align: center;
2568
+ font-variant-numeric: tabular-nums;
2569
+ cursor: pointer;
2570
+ padding: 0.25rem 0.5rem;
2571
+ border-radius: 0.4rem;
2572
+ transition: background 120ms ease;
2573
+ }
2574
+
2575
+ .pv-zoom-controls span:hover {
2576
+ background: var(--cratis-surface-hover);
2577
+ }
2578
+
2579
+ .pv-zoom-level-input {
2580
+ width: 3rem;
2581
+ font-size: 0.75rem;
2582
+ text-align: center;
2583
+ background: var(--cratis-surface-ground);
2584
+ border: 1px solid var(--cratis-primary-color);
2585
+ border-radius: 0.4rem;
2586
+ color: var(--cratis-text-color);
2587
+ padding: 0.25rem 0.5rem;
2588
+ font-variant-numeric: tabular-nums;
2589
+ outline: none;
2590
+ }
2591
+
2592
+ .pv-zoom-reset {
2593
+ display: flex;
2594
+ align-items: center;
2595
+ justify-content: center;
2596
+ }
2597
+
2598
+ .pv-dimension-select {
2599
+ display: inline-flex;
2600
+ align-items: center;
2601
+ gap: 0.6rem;
2602
+ font-size: 0.9rem;
2603
+ color: var(--cratis-text-color-secondary);
2604
+ }
2605
+
2606
+ .pv-dimension-select select {
2607
+ background: var(--cratis-surface-ground);
2608
+ border: 1px solid var(--cratis-surface-border);
2609
+ border-radius: 0.6rem;
2610
+ color: inherit;
2611
+ font-size: 0.9rem;
2612
+ padding: 0.4rem 0.6rem;
2613
+ }
2614
+
2615
+ .pv-groups {
2616
+ position: relative;
2617
+ flex: 1;
2618
+ padding: 1.5rem 1.5rem 0;
2619
+ display: flex;
2620
+ align-items: flex-end;
2621
+ gap: 0.25rem;
2622
+ overflow: auto;
2623
+ scroll-behavior: smooth;
2624
+ cursor: grab;
2625
+ user-select: none;
2626
+ touch-action: pan-x pan-y;
2627
+ /* Hide scrollbars */
2628
+ scrollbar-width: none; /* Firefox */
2629
+ -ms-overflow-style: none; /* IE and Edge */
2630
+ }
2631
+
2632
+ .pv-groups::-webkit-scrollbar {
2633
+ display: none; /* Chrome, Safari, Opera */
2634
+ }
2635
+
2636
+ .pv-groups.pv-panning {
2637
+ cursor: grabbing;
2638
+ scroll-behavior: auto;
2639
+ }
2640
+
2641
+ .pv-groups:active {
2642
+ cursor: grabbing;
2643
+ }
2644
+
2645
+ /* Groups wrapper for grouped mode with axis labels */
2646
+ .pv-groups-wrapper {
2647
+ display: flex;
2648
+ flex-direction: column;
2649
+ flex: 1;
2650
+ min-height: 0;
2651
+ overflow: hidden;
2652
+ background: transparent;
2653
+ }
2654
+
2655
+ /* Visual background belongs to the scrollable viewport area so it respects container bounds */
2656
+ .pv-viewport {
2657
+ background: radial-gradient(circle at 25% 20%, var(--cratis-primary-500), var(--cratis-surface-ground));
2658
+ }
2659
+
2660
+ .pv-groups-grouped {
2661
+ flex: 1;
2662
+ padding-bottom: 0;
2663
+ }
2664
+
2665
+ .pv-group {
2666
+ display: flex;
2667
+ flex-direction: column;
2668
+ align-items: stretch;
2669
+ background: transparent;
2670
+ border-radius: 0;
2671
+ border: none;
2672
+ padding: 0;
2673
+ box-shadow: none;
2674
+ flex: 0 0 auto;
2675
+ transition: background 180ms ease;
2676
+ }
2677
+
2678
+ /* Grouped mode groups need to align cards to bottom and extend full height */
2679
+ .pv-group-grouped {
2680
+ justify-content: flex-end;
2681
+ position: relative;
2682
+ min-height: 100%; /* Ensure full height for hover */
2683
+ width: var(--column-width); /* Fixed width even when empty */
2684
+ }
2685
+
2686
+ /* Zebra striping for grouped mode - every other group gets a lighter background */
2687
+ .pv-group-grouped:nth-child(even)::before {
2688
+ background: rgba(255, 255, 255, 0.03);
2689
+ }
2690
+
2691
+ /* Full-height hover highlight that extends to the top */
2692
+ .pv-group-grouped::before {
2693
+ content: '';
2694
+ position: absolute;
2695
+ inset: 0;
2696
+ top: -100vh; /* Extend way above to ensure it reaches the top */
2697
+ background: transparent;
2698
+ transition: background 180ms ease;
2699
+ pointer-events: none;
2700
+ z-index: 0;
2701
+ }
2702
+
2703
+ .pv-group-grouped:hover::before,
2704
+ .pv-group-grouped.highlighted::before {
2705
+ background: var(--cratis-surface-hover);
2706
+ }
2707
+
2708
+ /* Zebra striping hover state - combine with stripe background */
2709
+ .pv-group-grouped:nth-child(even):hover::before,
2710
+ .pv-group-grouped:nth-child(even).highlighted::before {
2711
+ background: var(--cratis-surface-hover);
2712
+ }
2713
+
2714
+ .pv-group:hover {
2715
+ background: transparent;
2716
+ }
2717
+
2718
+ .pv-group.highlighted {
2719
+ background: transparent;
2720
+ }
2721
+
2722
+ .pv-group header {
2723
+ display: none;
2724
+ }
2725
+
2726
+ .pv-group header h2 {
2727
+ margin: 0;
2728
+ font-size: 1rem;
2729
+ letter-spacing: 0.01em;
2730
+ }
2731
+
2732
+ .pv-group header span {
2733
+ font-size: 0.75rem;
2734
+ color: var(--cratis-text-color-secondary);
2735
+ background: var(--cratis-highlight-bg);
2736
+ padding: 0.15rem 0.5rem;
2737
+ border-radius: 999px;
2738
+ }
2739
+
2740
+ .pv-cards {
2741
+ display: grid;
2742
+ gap: calc(4px * var(--zoom-scale, 1));
2743
+ width: var(--column-width, auto);
2744
+ }
2745
+
2746
+ .pv-cards-grouped {
2747
+ /* Grid fills left-to-right with fixed columns */
2748
+ grid-template-columns: repeat(var(--cards-per-row, 5), 1fr);
2749
+ grid-auto-flow: row;
2750
+ width: var(--column-width);
2751
+ }
2752
+
2753
+ .pv-cards-grouped .pv-card {
2754
+ transform: none;
2755
+ }
2756
+
2757
+ /* Empty placeholder cells in grouped grid */
2758
+ .pv-card-placeholder {
2759
+ visibility: hidden;
2760
+ width: var(--card-width);
2761
+ height: var(--card-height);
2762
+ }
2763
+
2764
+ /* Axis labels at bottom of grouped view */
2765
+ .pv-axis-labels {
2766
+ display: flex;
2767
+ align-items: stretch;
2768
+ background: var(--cratis-surface-section);
2769
+ border-top: 1px solid var(--cratis-surface-border);
2770
+ padding: 0.5rem 0; /* padding-left set dynamically from JS; no right padding to prevent skew */
2771
+ gap: 0; /* No extra gap to avoid skew */
2772
+ overflow-x: hidden; /* Disable independent scroll - synced via JS */
2773
+ flex-shrink: 0;
2774
+ }
2775
+
2776
+ .pv-axis-label {
2777
+ display: flex;
2778
+ flex-direction: column;
2779
+ align-items: center;
2780
+ justify-content: center;
2781
+ padding: 0.5rem 0;
2782
+ text-align: center;
2783
+ cursor: pointer;
2784
+ /* Note: opacity transition added later in the file for filter effects */
2785
+ transition: background 180ms ease, border-color 180ms ease;
2786
+ flex: 0 0 auto;
2787
+ border-radius: 0.5rem;
2788
+ border: 2px solid transparent;
2789
+ background: transparent;
2790
+ color: inherit;
2791
+ font: inherit;
2792
+ }
2793
+
2794
+ /* Zebra striping for axis labels - match the grouped columns */
2795
+ .pv-axis-label:nth-child(even) {
2796
+ background: rgba(255, 255, 255, 0.03);
2797
+ }
2798
+
2799
+ .pv-axis-label:hover,
2800
+ .pv-axis-label.highlighted {
2801
+ background: var(--cratis-surface-hover);
2802
+ }
2803
+
2804
+ /* Zebra striping hover/highlight for even labels */
2805
+ .pv-axis-label:nth-child(even):hover,
2806
+ .pv-axis-label:nth-child(even).highlighted {
2807
+ background: var(--cratis-surface-hover);
2808
+ }
2809
+
2810
+ .pv-axis-label.selected {
2811
+ border-color: var(--cratis-primary-color);
2812
+ background: var(--cratis-highlight-bg);
2813
+ }
2814
+
2815
+ .pv-axis-label:focus-visible {
2816
+ outline: none;
2817
+ border-color: var(--cratis-primary-color);
2818
+ box-shadow: var(--cratis-focus-ring);
2819
+ }
2820
+
2821
+ .pv-axis-label-text {
2822
+ font-size: 0.75rem;
2823
+ color: var(--cratis-text-color);
2824
+ font-weight: 500;
2825
+ white-space: nowrap;
2826
+ overflow: hidden;
2827
+ text-overflow: ellipsis;
2828
+ max-width: 100%;
2829
+ }
2830
+
2831
+ .pv-axis-label-count {
2832
+ font-size: 0.65rem;
2833
+ color: var(--cratis-text-color-secondary);
2834
+ margin-top: 0.15rem;
2835
+ font-variant-numeric: tabular-nums;
2836
+ }
2837
+
2838
+ /* Fade and collapse axis labels when switching views */
2839
+ .pivot-viewer .pv-axis-labels {
2840
+ transition: opacity 600ms ease, max-height 600ms ease, padding 600ms ease, border-color 600ms ease;
2841
+ overflow: hidden;
2842
+ }
2843
+ .pivot-viewer .pv-axis-labels.hidden {
2844
+ opacity: 0;
2845
+ max-height: 0;
2846
+ padding-top: 0;
2847
+ padding-bottom: 0;
2848
+ border-top-color: transparent;
2849
+ pointer-events: none;
2850
+ }
2851
+ .pivot-viewer .pv-axis-labels.visible {
2852
+ opacity: 1;
2853
+ max-height: 80px;
2854
+ pointer-events: auto;
2855
+ }
2856
+
2857
+ /* Fade individual axis labels when filtering groups */
2858
+ .pv-axis-label {
2859
+ transition: opacity 600ms ease, background 180ms ease, border-color 180ms ease;
2860
+ }
2861
+
2862
+ .pv-axis-label.filtered-out {
2863
+ opacity: 0.3;
2864
+ }
2865
+
2866
+ .pv-groups.pv-groups-collection {
2867
+ display: flex;
2868
+ flex-wrap: wrap;
2869
+ align-items: flex-start;
2870
+ align-content: flex-start;
2871
+ padding: 1.5rem;
2872
+ gap: calc(8px * var(--zoom-scale, 1));
2873
+ overflow: auto;
2874
+ }
2875
+
2876
+ /* Pause flex reflow during zoom animation for smoother effect */
2877
+ .pv-groups.pv-zooming {
2878
+ pointer-events: none;
2879
+ }
2880
+
2881
+ /* CRITICAL: Freeze collection layout during zoom - prevent any reflow */
2882
+ .pv-groups.pv-groups-collection.pv-zooming {
2883
+ /* Lock the gap to prevent layout shifts */
2884
+ gap: 8px !important;
2885
+ }
2886
+
2887
+ .pv-groups.pv-groups-collection.pv-zooming .pv-card {
2888
+ /* Prevent cards from resizing/reflowing during zoom */
2889
+ flex-shrink: 0 !important;
2890
+ flex-grow: 0 !important;
2891
+ }
2892
+
2893
+ .pv-groups.pv-groups-collection > div,
2894
+ .pv-groups.pv-groups-collection > section {
2895
+ width: auto;
2896
+ }
2897
+
2898
+ .pv-group-collection {
2899
+ display: contents;
2900
+ background: transparent;
2901
+ border: none;
2902
+ padding: 0;
2903
+ box-shadow: none;
2904
+ }
2905
+
2906
+ .pv-group-collection .pv-cards {
2907
+ display: contents;
2908
+ }
2909
+
2910
+ .pv-cards-collection {
2911
+ display: contents;
2912
+ }
2913
+
2914
+ .pv-cards-collection .pv-card {
2915
+ background: linear-gradient(180deg, var(--cratis-surface-card), var(--cratis-surface-ground));
2916
+ }
2917
+
2918
+ .pv-card {
2919
+ border: none;
2920
+ text-align: left;
2921
+ padding: 0;
2922
+ background: linear-gradient(180deg, var(--cratis-surface-card), var(--cratis-surface-ground));
2923
+ border-radius: 0.85rem;
2924
+ cursor: pointer;
2925
+ color: inherit;
2926
+ border: 1px solid transparent;
2927
+ transition: border-color 160ms ease;
2928
+ }
2929
+
2930
+ .pv-card:focus-visible {
2931
+ outline: none;
2932
+ border-color: var(--cratis-primary-color);
2933
+ box-shadow: var(--cratis-focus-ring);
2934
+ }
2935
+
2936
+ .pv-card.selected {
2937
+ border-color: var(--cratis-primary-color);
2938
+ box-shadow: var(--cratis-focus-ring), 0 8px 20px rgba(0, 0, 0, 0.2);
2939
+ }
2940
+
2941
+ .pv-card-body {
2942
+ padding: calc(0.85rem * var(--zoom-scale, 1)) calc(0.95rem * var(--zoom-scale, 1));
2943
+ font-size: calc(1rem * var(--zoom-scale, 1));
2944
+ overflow: hidden;
2945
+ }
2946
+
2947
+ .pv-card-title {
2948
+ font-size: calc(0.95rem * var(--zoom-scale, 1));
2949
+ font-weight: 600;
2950
+ margin-bottom: calc(0.65rem * var(--zoom-scale, 1));
2951
+ line-height: 1.2;
2952
+ overflow: hidden;
2953
+ text-overflow: ellipsis;
2954
+ white-space: nowrap;
2955
+ }
2956
+
2957
+ .pv-card-row {
2958
+ display: grid;
2959
+ grid-template-columns: minmax(0, 0.9fr) minmax(0, 1fr);
2960
+ gap: calc(0.5rem * var(--zoom-scale, 1));
2961
+ font-size: calc(0.8rem * var(--zoom-scale, 1));
2962
+ color: var(--cratis-text-color);
2963
+ margin-bottom: calc(0.35rem * var(--zoom-scale, 1));
2964
+ line-height: 1.3;
2965
+ }
2966
+
2967
+ .pv-card-row dt {
2968
+ margin: 0;
2969
+ color: var(--cratis-text-color-secondary);
2970
+ font-weight: 500;
2971
+ overflow: hidden;
2972
+ text-overflow: ellipsis;
2973
+ white-space: nowrap;
2974
+ }
2975
+
2976
+ .pv-card-row dd {
2977
+ margin: 0;
2978
+ overflow: hidden;
2979
+ text-overflow: ellipsis;
2980
+ white-space: nowrap;
2981
+ }
2982
+
2983
+ .pv-card-more {
2984
+ margin-top: calc(0.4rem * var(--zoom-scale, 1));
2985
+ color: var(--cratis-text-color-secondary);
2986
+ text-align: right;
2987
+ font-size: calc(0.9rem * var(--zoom-scale, 1));
2988
+ }
2989
+
2990
+ .pv-empty {
2991
+ width: 100%;
2992
+ text-align: center;
2993
+ padding: 3rem;
2994
+ color: var(--cratis-text-color-secondary);
2995
+ font-size: 1.05rem;
2996
+ }
2997
+
2998
+ /* Slide-in detail panel from the right */
2999
+ .pv-detail-panel {
3000
+ position: absolute;
3001
+ top: 0;
3002
+ right: 0;
3003
+ bottom: 0;
3004
+ width: 380px;
3005
+ background: var(--cratis-surface-overlay);
3006
+ border-left: 1px solid var(--cratis-surface-border);
3007
+ display: flex;
3008
+ flex-direction: column;
3009
+ z-index: 14;
3010
+ box-shadow: -8px 0 32px rgba(0, 0, 0, 0.3);
3011
+ }
3012
+
3013
+ .pv-detail-panel header {
3014
+ display: flex;
3015
+ align-items: center;
3016
+ justify-content: space-between;
3017
+ padding: 1rem 1.25rem;
3018
+ border-bottom: 1px solid var(--cratis-surface-border);
3019
+ flex-shrink: 0;
3020
+ }
3021
+
3022
+ .pv-detail-panel header h2 {
3023
+ margin: 0;
3024
+ font-size: 1.1rem;
3025
+ color: var(--cratis-text-color);
3026
+ }
3027
+
3028
+ .pv-detail-panel header p {
3029
+ margin: 0.25rem 0 0;
3030
+ font-size: 0.8rem;
3031
+ color: var(--cratis-text-color-secondary);
3032
+ }
3033
+
3034
+ .pv-detail-panel header button {
3035
+ appearance: none;
3036
+ border: none;
3037
+ background: var(--cratis-surface-hover);
3038
+ color: var(--cratis-text-color);
3039
+ width: 32px;
3040
+ height: 32px;
3041
+ border-radius: 8px;
3042
+ font-size: 1.3rem;
3043
+ cursor: pointer;
3044
+ display: flex;
3045
+ align-items: center;
3046
+ justify-content: center;
3047
+ transition: background 120ms ease;
3048
+ }
3049
+
3050
+ .pv-detail-panel header button:hover {
3051
+ background: var(--cratis-highlight-bg);
3052
+ }
3053
+
3054
+ .pv-detail-panel-content {
3055
+ flex: 1;
3056
+ overflow-y: auto;
3057
+ padding: 1rem 1.25rem 1.5rem;
3058
+ }
3059
+
3060
+ .pv-detail-panel section h3 {
3061
+ margin: 0 0 0.6rem;
3062
+ font-size: 0.85rem;
3063
+ text-transform: uppercase;
3064
+ letter-spacing: 0.06em;
3065
+ color: var(--cratis-text-color-secondary);
3066
+ }
3067
+
3068
+ .pv-detail-panel section + section {
3069
+ margin-top: 1.25rem;
3070
+ }
3071
+
3072
+ .pv-detail-panel dl {
3073
+ display: grid;
3074
+ gap: 0.4rem;
3075
+ }
3076
+
3077
+ .pv-detail-panel dl > div {
3078
+ background: var(--cratis-surface-section);
3079
+ border-radius: 0.6rem;
3080
+ padding: 0.5rem 0.7rem;
3081
+ }
3082
+
3083
+ .pv-detail-panel dt {
3084
+ margin: 0;
3085
+ font-size: 0.7rem;
3086
+ text-transform: uppercase;
3087
+ letter-spacing: 0.08em;
3088
+ color: var(--cratis-text-color-secondary);
3089
+ }
3090
+
3091
+ .pv-detail-panel dd {
3092
+ margin: 0.15rem 0 0;
3093
+ font-size: 0.85rem;
3094
+ color: var(--cratis-text-color);
3095
+ white-space: pre-wrap;
3096
+ word-break: break-word;
3097
+ }
3098
+
3099
+ .pv-detail-panel .pv-detail-meta dl {
3100
+ grid-template-columns: 1fr 1fr;
3101
+ }
3102
+
3103
+ .pv-detail-panel .pv-detail-causation .pv-pill-row {
3104
+ display: flex;
3105
+ flex-wrap: wrap;
3106
+ gap: 0.4rem;
3107
+ }
3108
+
3109
+ /* Legacy overlay styles - hidden */
3110
+ .pv-detail-overlay {
3111
+ display: none;
3112
+ position: fixed;
3113
+ inset: 0;
3114
+ background: var(--cratis-maskbg);
3115
+ backdrop-filter: blur(6px);
3116
+ display: flex;
3117
+ align-items: flex-end;
3118
+ justify-content: center;
3119
+ padding: 2rem;
3120
+ z-index: 20;
3121
+ }
3122
+
3123
+ .pv-detail {
3124
+ width: min(720px, 100%);
3125
+ background: var(--cratis-surface-overlay);
3126
+ border: 1px solid var(--cratis-surface-border);
3127
+ border-radius: 1.25rem;
3128
+ padding: 1.75rem;
3129
+ max-height: min(80vh, 640px);
3130
+ overflow-y: auto;
3131
+ color: var(--cratis-text-color);
3132
+ }
3133
+
3134
+ .pv-detail header {
3135
+ display: flex;
3136
+ align-items: center;
3137
+ justify-content: space-between;
3138
+ margin-bottom: 1.25rem;
3139
+ }
3140
+
3141
+ .pv-detail header h2 {
3142
+ margin: 0;
3143
+ font-size: 1.3rem;
3144
+ }
3145
+
3146
+ .pv-detail header p {
3147
+ margin: 0;
3148
+ font-size: 0.9rem;
3149
+ color: var(--cratis-text-color-secondary);
3150
+ }
3151
+
3152
+ .pv-detail header button {
3153
+ appearance: none;
3154
+ border: none;
3155
+ border-radius: 0.75rem;
3156
+ padding: 0.5rem 1rem;
3157
+ background: var(--cratis-highlight-bg);
3158
+ color: inherit;
3159
+ cursor: pointer;
3160
+ }
3161
+
3162
+ .pv-detail section h3 {
3163
+ margin-top: 0;
3164
+ font-size: 1rem;
3165
+ margin-bottom: 0.75rem;
3166
+ }
3167
+
3168
+ .pv-detail section + section {
3169
+ margin-top: 1.25rem;
3170
+ }
3171
+
3172
+ .pv-detail dl {
3173
+ display: grid;
3174
+ gap: 0.5rem;
3175
+ }
3176
+
3177
+ .pv-detail dl > div {
3178
+ background: var(--cratis-surface-section);
3179
+ border-radius: 0.75rem;
3180
+ padding: 0.55rem 0.75rem;
3181
+ }
3182
+
3183
+ .pv-detail dt {
3184
+ margin: 0;
3185
+ font-size: 0.75rem;
3186
+ text-transform: uppercase;
3187
+ letter-spacing: 0.08em;
3188
+ color: var(--cratis-text-color-secondary);
3189
+ }
3190
+
3191
+ .pv-detail dd {
3192
+ margin: 0.2rem 0 0;
3193
+ font-size: 0.9rem;
3194
+ color: var(--cratis-text-color);
3195
+ white-space: pre-wrap;
3196
+ word-break: break-word;
3197
+ }
3198
+
3199
+ .pv-detail-meta dl {
3200
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
3201
+ }
3202
+
3203
+ .pv-detail-causation .pv-pill-row {
3204
+ display: flex;
3205
+ flex-wrap: wrap;
3206
+ gap: 0.5rem;
3207
+ }
3208
+
3209
+ .pv-pill {
3210
+ display: inline-flex;
3211
+ align-items: center;
3212
+ gap: 0.35rem;
3213
+ padding: 0.35rem 0.65rem;
3214
+ border-radius: 999px;
3215
+ background: var(--cratis-highlight-bg);
3216
+ color: var(--cratis-text-color);
3217
+ font-size: 0.8rem;
3218
+ border: 1px solid var(--cratis-surface-border);
3219
+ }
3220
+
3221
+ /* Range Histogram Filter */
3222
+ .pv-range-histogram {
3223
+ padding: 0.5rem 0;
3224
+ }
3225
+
3226
+ .pv-histogram-bars {
3227
+ display: flex;
3228
+ align-items: flex-end;
3229
+ gap: 2px;
3230
+ height: 80px;
3231
+ padding: 0 2px;
3232
+ margin-bottom: 0.5rem;
3233
+ }
3234
+
3235
+ .pv-histogram-bar {
3236
+ flex: 1;
3237
+ min-width: 8px;
3238
+ background: var(--cratis-highlight-bg);
3239
+ border: none;
3240
+ border-radius: 2px 2px 0 0;
3241
+ cursor: pointer;
3242
+ transition: background 160ms ease, transform 120ms ease;
3243
+ padding: 0;
3244
+ }
3245
+
3246
+ .pv-histogram-bar:hover {
3247
+ background: var(--cratis-surface-hover);
3248
+ transform: scaleY(1.02);
3249
+ }
3250
+
3251
+ .pv-histogram-bar.in-range {
3252
+ background: var(--cratis-primary-color);
3253
+ }
3254
+
3255
+ .pv-histogram-bar.partial {
3256
+ background: var(--cratis-highlight-bg);
3257
+ }
3258
+
3259
+ .pv-range-slider {
3260
+ position: relative;
3261
+ height: 24px;
3262
+ margin: 0.5rem 0;
3263
+ }
3264
+
3265
+ .pv-range-track {
3266
+ position: absolute;
3267
+ top: 50%;
3268
+ left: 0;
3269
+ right: 0;
3270
+ height: 4px;
3271
+ background: var(--cratis-surface-border);
3272
+ border-radius: 2px;
3273
+ transform: translateY(-50%);
3274
+ }
3275
+
3276
+ .pv-range-selection {
3277
+ position: absolute;
3278
+ top: 50%;
3279
+ height: 4px;
3280
+ background: var(--cratis-primary-color);
3281
+ border-radius: 2px;
3282
+ transform: translateY(-50%);
3283
+ cursor: grab;
3284
+ }
3285
+
3286
+ .pv-range-selection:active {
3287
+ cursor: grabbing;
3288
+ }
3289
+
3290
+ .pv-range-handle {
3291
+ position: absolute;
3292
+ top: 50%;
3293
+ width: 16px;
3294
+ height: 16px;
3295
+ background: var(--cratis-primary-color);
3296
+ border: 2px solid var(--cratis-text-color);
3297
+ border-radius: 50%;
3298
+ transform: translate(-50%, -50%);
3299
+ cursor: ew-resize;
3300
+ transition: transform 120ms ease, box-shadow 120ms ease;
3301
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
3302
+ }
3303
+
3304
+ .pv-range-handle:hover {
3305
+ transform: translate(-50%, -50%) scale(1.15);
3306
+ box-shadow: 0 4px 12px var(--cratis-primary-color);
3307
+ }
3308
+
3309
+ .pv-range-labels {
3310
+ display: flex;
3311
+ justify-content: space-between;
3312
+ font-size: 0.75rem;
3313
+ color: var(--cratis-text-color-secondary);
3314
+ font-variant-numeric: tabular-nums;
3315
+ }
3316
+
3317
+ .pv-range-clear {
3318
+ margin-top: 0.75rem;
3319
+ appearance: none;
3320
+ border: none;
3321
+ border-radius: 0.55rem;
3322
+ padding: 0.4rem 0.75rem;
3323
+ background: var(--cratis-highlight-bg);
3324
+ color: var(--cratis-text-color);
3325
+ font-size: 0.72rem;
3326
+ text-transform: uppercase;
3327
+ letter-spacing: 0.08em;
3328
+ cursor: pointer;
3329
+ width: 100%;
3330
+ }
3331
+
3332
+ .pv-range-clear:hover {
3333
+ background: var(--cratis-surface-hover);
3334
+ }
3335
+
3336
+ @media (max-width: 900px) {
3337
+ .pv-filter-panel {
3338
+ width: calc(100% - 2.5rem);
3339
+ left: 1.25rem;
3340
+ right: 1.25rem;
3341
+ top: 1.25rem;
3342
+ max-height: calc(100vh - 2.5rem);
3343
+ }
3344
+
3345
+ .pv-toolbar {
3346
+ flex-wrap: wrap;
3347
+ gap: 1rem;
3348
+ }
3349
+
3350
+ .pv-toolbar-right {
3351
+ flex-wrap: wrap;
3352
+ gap: 1rem;
3353
+ }
3354
+
3355
+ .pv-view-toggle {
3356
+ order: -1;
3357
+ }
3358
+
3359
+ .pv-groups {
3360
+ padding: 1.5rem;
3361
+ }
3362
+ }
3363
+
3364
+ /* ── ./PivotViewer/components/Spinner.css ─────────────────────────────────────── */
3365
+ /* Loading Spinner */
3366
+ .pv-loading {
3367
+ display: flex;
3368
+ align-items: center;
3369
+ justify-content: center;
3370
+ flex: 1;
3371
+ min-height: 400px;
3372
+ }
3373
+
3374
+ .pv-spinner {
3375
+ width: 80px;
3376
+ height: 80px;
3377
+ position: relative;
3378
+ }
3379
+
3380
+ .pv-spinner-ring {
3381
+ position: absolute;
3382
+ inset: 0;
3383
+ border-radius: 50%;
3384
+ border: 4px solid transparent;
3385
+ }
3386
+
3387
+ .pv-spinner-ring:nth-child(1) {
3388
+ border-top-color: var(--cratis-primary-300);
3389
+ animation: spinner-rotate 1.5s linear infinite;
3390
+ }
3391
+
3392
+ .pv-spinner-ring:nth-child(2) {
3393
+ border-right-color: var(--cratis-primary-400);
3394
+ animation: spinner-rotate 1.5s linear infinite;
3395
+ animation-delay: -0.1875s;
3396
+ }
3397
+
3398
+ .pv-spinner-ring:nth-child(3) {
3399
+ border-bottom-color: var(--cratis-primary-500);
3400
+ animation: spinner-rotate 1.5s linear infinite;
3401
+ animation-delay: -0.375s;
3402
+ }
3403
+
3404
+ .pv-spinner-ring:nth-child(4) {
3405
+ border-left-color: var(--cratis-primary-600);
3406
+ animation: spinner-rotate 1.5s linear infinite;
3407
+ animation-delay: -0.5625s;
3408
+ }
3409
+
3410
+ .pv-spinner-ring:nth-child(5) {
3411
+ border-top-color: var(--cratis-primary-400);
3412
+ animation: spinner-rotate 1.5s linear infinite reverse;
3413
+ animation-delay: -0.75s;
3414
+ }
3415
+
3416
+ .pv-spinner-ring:nth-child(6) {
3417
+ border-right-color: var(--cratis-primary-500);
3418
+ animation: spinner-rotate 1.5s linear infinite reverse;
3419
+ animation-delay: -0.9375s;
3420
+ }
3421
+
3422
+ .pv-spinner-ring:nth-child(7) {
3423
+ border-bottom-color: var(--cratis-primary-300);
3424
+ animation: spinner-rotate 1.5s linear infinite reverse;
3425
+ animation-delay: -1.125s;
3426
+ }
3427
+
3428
+ .pv-spinner-ring:nth-child(8) {
3429
+ border-left-color: var(--cratis-primary-600);
3430
+ animation: spinner-rotate 1.5s linear infinite reverse;
3431
+ animation-delay: -1.3125s;
3432
+ }
3433
+
3434
+ @keyframes spinner-rotate {
3435
+ 0% {
3436
+ transform: rotate(0deg);
3437
+ }
3438
+ 100% {
3439
+ transform: rotate(360deg);
3440
+ }
3441
+ }
3442
+
3443
+ /* ── ./SchemaEditor/SchemaEditor.css ─────────────────────────────────────── */
3444
+ /* Copyright (c) Cratis. All rights reserved. */
3445
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
3446
+
3447
+ /* Was a CSS Module (`SchemaEditor.module.css`). A CSS Module is a *value* import in the JavaScript
3448
+ graph, so Node could not load the SchemaEditor subpath at all (Cratis/Components#118) and no
3449
+ bundler-free consumer could either. Rewritten as plain, explicitly prefixed class names that ship
3450
+ through `@cratis/components/styles` like every other component stylesheet. */
3451
+
3452
+ .cratis-schema-editor-navigable-row {
3453
+ cursor: pointer;
3454
+ transition: background-color 0.15s;
3455
+ }
3456
+
3457
+ .cratis-schema-editor-navigable-row:hover {
3458
+ background-color: var(--cratis-surface-hover) !important;
3459
+ }
3460
+
3461
+ .cratis-schema-editor-bottom-border {
3462
+ border-bottom: 1px solid var(--cratis-surface-border);
3463
+ }
3464
+
3465
+ /* ── ./TimeMachine/EventsView.css ─────────────────────────────────────── */
3466
+ /* Events View Container */
3467
+ .events-view-container {
3468
+ position: absolute;
3469
+ inset: 0;
3470
+ padding: 5rem 2rem 2rem;
3471
+ overflow-y: auto;
3472
+ background: transparent;
3473
+ z-index: 1;
3474
+ }
3475
+
3476
+ /* Timeline customization */
3477
+ .events-view-timeline {
3478
+ max-width: 1200px;
3479
+ margin: 0 auto;
3480
+ padding: 2.5rem 0 3rem;
3481
+ }
3482
+
3483
+ .events-view-timeline .p-timeline {
3484
+ display: flex;
3485
+ flex-direction: column;
3486
+ }
3487
+
3488
+ .events-view-scroll-button {
3489
+ position: relative;
3490
+ margin-right: 0.5rem;
3491
+ width: 44px;
3492
+ height: 44px;
3493
+ border-radius: 50%;
3494
+ border: 1px solid var(--tm-border-subtle);
3495
+ background: var(--tm-dark-surface);
3496
+ color: var(--tm-text);
3497
+ display: flex;
3498
+ align-items: center;
3499
+ justify-content: center;
3500
+ backdrop-filter: blur(8px);
3501
+ box-shadow: 0 6px 18px rgba(0, 0, 0, 0.3);
3502
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
3503
+ z-index: 5;
3504
+ pointer-events: auto;
3505
+ }
3506
+
3507
+ .events-view-scroll-button:hover {
3508
+ transform: translateY(-2px);
3509
+ box-shadow: 0 10px 24px rgba(0, 0, 0, 0.4);
3510
+ }
3511
+
3512
+ .events-view-scroll-button:active {
3513
+ transform: translateY(0);
3514
+ }
3515
+
3516
+ .events-view-scroll-button--top {
3517
+ top: auto;
3518
+ }
3519
+
3520
+ .events-view-scroll-button--bottom {
3521
+ bottom: auto;
3522
+ }
3523
+
3524
+ .events-view-scroll-button-wrapper {
3525
+ position: sticky;
3526
+ display: flex;
3527
+ justify-content: flex-end;
3528
+ padding-right: 0.5rem;
3529
+ pointer-events: none;
3530
+ z-index: 5;
3531
+ height: 0;
3532
+ overflow: visible;
3533
+ }
3534
+
3535
+ .events-view-scroll-button-wrapper--top {
3536
+ top: 4.5rem;
3537
+ }
3538
+
3539
+ .events-view-scroll-button-wrapper--bottom {
3540
+ bottom: 2.5rem;
3541
+ }
3542
+
3543
+ /* Event Card */
3544
+ .events-view-event-card {
3545
+ background: var(--tm-surface);
3546
+ border: 1px solid var(--tm-border);
3547
+ border-radius: 12px;
3548
+ padding: 1.5rem;
3549
+ backdrop-filter: blur(10px);
3550
+ transition: all 0.3s ease;
3551
+ max-width: 380px;
3552
+ }
3553
+
3554
+ .events-view-event-card:hover {
3555
+ background: var(--tm-surface-hover);
3556
+ border-color: var(--tm-accent-border);
3557
+ transform: translateY(-2px);
3558
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
3559
+ }
3560
+
3561
+ /* Event Header */
3562
+ .events-view-event-header {
3563
+ margin-bottom: 1rem;
3564
+ padding-bottom: 1rem;
3565
+ border-bottom: 1px solid var(--tm-border);
3566
+ }
3567
+
3568
+ .events-view-event-name {
3569
+ font-size: 1.25rem;
3570
+ font-weight: 600;
3571
+ color: var(--tm-text);
3572
+ margin: 0 0 0.5rem 0;
3573
+ font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif;
3574
+ }
3575
+
3576
+ .events-view-event-timestamp {
3577
+ font-size: 0.875rem;
3578
+ color: var(--tm-text-muted);
3579
+ font-family: -apple-system, BlinkMacSystemFont, 'SF Mono', monospace;
3580
+ }
3581
+
3582
+ .events-view-event-header--right {
3583
+ text-align: right;
3584
+ }
3585
+
3586
+ .events-view-event-name--right,
3587
+ .events-view-event-timestamp--right {
3588
+ text-align: right;
3589
+ }
3590
+
3591
+ /* Event Properties */
3592
+ .events-view-event-properties {
3593
+ margin-top: 1rem;
3594
+ }
3595
+
3596
+ /* Custom Marker */
3597
+ .events-view-marker {
3598
+ display: flex;
3599
+ align-items: center;
3600
+ justify-content: center;
3601
+ width: 2.5rem;
3602
+ height: 2.5rem;
3603
+ background: linear-gradient(135deg, var(--tm-accent-bg), rgba(100, 150, 255, 0.1));
3604
+ border: 2px solid var(--tm-accent-border);
3605
+ border-radius: 50%;
3606
+ position: relative;
3607
+ backdrop-filter: blur(5px);
3608
+ transition: all 0.3s ease;
3609
+ }
3610
+
3611
+ .events-view-marker:hover {
3612
+ background: linear-gradient(135deg, var(--tm-accent-bg-hover), var(--tm-accent-bg));
3613
+ border-color: var(--tm-accent-border-hover);
3614
+ transform: scale(1.1);
3615
+ }
3616
+
3617
+ .events-view-marker-dot {
3618
+ width: 0.75rem;
3619
+ height: 0.75rem;
3620
+ background: var(--tm-accent);
3621
+ border-radius: 50%;
3622
+ box-shadow: 0 0 10px var(--tm-accent-glow);
3623
+ }
3624
+
3625
+ /* PrimeReact Timeline connector styling */
3626
+ .events-view-timeline .p-timeline-event-connector {
3627
+ background: linear-gradient(to bottom, var(--tm-accent-border), var(--tm-accent-bg));
3628
+ }
3629
+
3630
+ .events-view-timeline .p-timeline-event:last-child .p-timeline-event-connector {
3631
+ visibility: hidden;
3632
+ }
3633
+
3634
+ /* Remove default padding from PrimeReact timeline content areas */
3635
+ .events-view-timeline .p-timeline-event-opposite,
3636
+ .events-view-timeline .p-timeline-event-content {
3637
+ padding: 0 1.5rem;
3638
+ display: flex;
3639
+ align-items: center;
3640
+ }
3641
+
3642
+ /* Ensure cards hug the timeline on both sides */
3643
+ .events-view-timeline .p-timeline-event:nth-child(odd) .p-timeline-event-content {
3644
+ justify-content: flex-start;
3645
+ }
3646
+
3647
+ .events-view-timeline .p-timeline-event:nth-child(even) .p-timeline-event-content {
3648
+ justify-content: flex-end;
3649
+ }
3650
+
3651
+ .events-view-timeline .p-timeline-event:nth-child(odd) .p-timeline-event-opposite {
3652
+ justify-content: flex-end;
3653
+ }
3654
+
3655
+ .events-view-timeline .p-timeline-event:nth-child(even) .p-timeline-event-opposite {
3656
+ justify-content: flex-start;
3657
+ }
3658
+
3659
+ .events-view-event-card--left,
3660
+ .events-view-event-card--right {
3661
+ max-width: 380px;
3662
+ }
3663
+
3664
+ /* Right-align content in left-side cards */
3665
+ .events-view-timeline .p-timeline-event-opposite .events-view-event-card {
3666
+ text-align: right;
3667
+ }
3668
+
3669
+ .events-view-timeline .p-timeline-event-opposite .events-view-event-card table {
3670
+ margin-left: auto;
3671
+ direction: rtl;
3672
+ }
3673
+
3674
+ .events-view-timeline .p-timeline-event-opposite .events-view-event-card table td {
3675
+ direction: ltr;
3676
+ text-align: right;
3677
+ }
3678
+
3679
+
3680
+ /* ── ./TimeMachine/Properties.css ─────────────────────────────────────── */
3681
+ /* Copyright (c) Cratis. All rights reserved. */
3682
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
3683
+
3684
+ .tm-properties-table {
3685
+ width: 100%;
3686
+ border-collapse: collapse;
3687
+ font-family: -apple-system, BlinkMacSystemFont, 'SF Mono', monospace;
3688
+ font-size: 13px;
3689
+ }
3690
+
3691
+ .tm-properties-row {
3692
+ border-bottom: 1px solid var(--tm-border, rgba(255, 255, 255, 0.1));
3693
+ }
3694
+
3695
+ .tm-properties-label {
3696
+ padding: 8px 12px;
3697
+ color: var(--tm-text-muted, rgba(255, 255, 255, 0.6));
3698
+ font-weight: 500;
3699
+ width: 40%;
3700
+ }
3701
+
3702
+ .tm-properties-label--right {
3703
+ text-align: right;
3704
+ }
3705
+
3706
+ .tm-properties-value {
3707
+ padding: 8px 12px;
3708
+ color: var(--tm-text, rgba(255, 255, 255, 0.9));
3709
+ }
3710
+
3711
+ .tm-properties-value--right {
3712
+ text-align: right;
3713
+ }
3714
+
3715
+ .tm-properties-null {
3716
+ color: var(--tm-text-faint, rgba(255, 255, 255, 0.4));
3717
+ }
3718
+
3719
+ .tm-properties-boolean-true {
3720
+ color: #4ade80;
3721
+ }
3722
+
3723
+ .tm-properties-boolean-false {
3724
+ color: #f87171;
3725
+ }
3726
+
3727
+ .tm-properties-number {
3728
+ color: #fbbf24;
3729
+ }
3730
+
3731
+ .tm-properties-date {
3732
+ color: #60a5fa;
3733
+ }
3734
+
3735
+ .tm-properties-complex {
3736
+ color: var(--tm-text-dim, rgba(255, 255, 255, 0.7));
3737
+ }
3738
+
3739
+ /* ── ./TimeMachine/TimeMachine.css ─────────────────────────────────────── */
3740
+ /* Time Machine Container */
3741
+ .time-machine {
3742
+ /* Color tokens — intentional dark space theme. Override to customize. */
3743
+ --tm-bg-deep: #0a0a1a;
3744
+ --tm-bg-deepest: #000005;
3745
+ --tm-text: rgba(255, 255, 255, 0.9);
3746
+ --tm-text-muted: rgba(255, 255, 255, 0.6);
3747
+ --tm-text-dim: rgba(255, 255, 255, 0.7);
3748
+ --tm-text-faint: rgba(255, 255, 255, 0.4);
3749
+ --tm-surface: rgba(255, 255, 255, 0.05);
3750
+ --tm-surface-hover: rgba(255, 255, 255, 0.08);
3751
+ --tm-surface-active: rgba(255, 255, 255, 0.1);
3752
+ --tm-border: rgba(255, 255, 255, 0.1);
3753
+ --tm-border-subtle: rgba(255, 255, 255, 0.15);
3754
+ --tm-accent: rgba(100, 150, 255, 1);
3755
+ --tm-accent-bg: rgba(100, 150, 255, 0.2);
3756
+ --tm-accent-bg-hover: rgba(100, 150, 255, 0.4);
3757
+ --tm-accent-border: rgba(100, 150, 255, 0.3);
3758
+ --tm-accent-border-hover: rgba(100, 150, 255, 0.8);
3759
+ --tm-accent-glow: rgba(100, 150, 255, 0.3);
3760
+ --tm-dark-surface: rgba(15, 23, 42, 0.75);
3761
+
3762
+ position: relative;
3763
+ width: 100%;
3764
+ height: 100vh;
3765
+ overflow: hidden;
3766
+ background: radial-gradient(ellipse at center, var(--tm-bg-deep) 0%, var(--tm-bg-deepest) 100%);
3767
+ font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif;
3768
+ }
3769
+
3770
+ /* View Switcher */
3771
+ .view-switcher {
3772
+ position: absolute;
3773
+ top: 20px;
3774
+ left: 50%;
3775
+ transform: translateX(-50%);
3776
+ display: flex;
3777
+ gap: 8px;
3778
+ background: var(--tm-surface);
3779
+ padding: 6px;
3780
+ border-radius: 12px;
3781
+ backdrop-filter: blur(10px);
3782
+ border: 1px solid var(--tm-border);
3783
+ z-index: 100;
3784
+ }
3785
+
3786
+ .view-button {
3787
+ width: 48px;
3788
+ height: 48px;
3789
+ border: none;
3790
+ border-radius: 8px;
3791
+ background: transparent;
3792
+ color: var(--tm-text-muted);
3793
+ font-size: 20px;
3794
+ cursor: pointer;
3795
+ display: flex;
3796
+ align-items: center;
3797
+ justify-content: center;
3798
+ transition: all 0.2s ease;
3799
+ }
3800
+
3801
+ .view-button:hover {
3802
+ background: var(--tm-surface-active);
3803
+ color: var(--tm-text);
3804
+ }
3805
+
3806
+ .view-button.active {
3807
+ background: var(--tm-accent-bg);
3808
+ color: var(--tm-accent);
3809
+ box-shadow: 0 0 15px var(--tm-accent-glow);
3810
+ }
3811
+
3812
+ .view-button i {
3813
+ font-size: 20px;
3814
+ }
3815
+
3816
+
3817
+ /* Starfield Background */
3818
+ .time-machine-background {
3819
+ position: absolute;
3820
+ inset: 0;
3821
+ overflow: hidden;
3822
+ z-index: 0;
3823
+ perspective: 500px;
3824
+ perspective-origin: 50% 50%;
3825
+ }
3826
+
3827
+ .stars {
3828
+ position: absolute;
3829
+ top: 50%;
3830
+ left: 50%;
3831
+ width: 2px;
3832
+ height: 2px;
3833
+ background: transparent;
3834
+ transform-style: preserve-3d;
3835
+ animation: starfield 16s linear infinite;
3836
+ box-shadow:
3837
+ /* Layer 1 - close stars */
3838
+ 24vw -15vh 0 0px rgba(255,255,255,0.9),
3839
+ -32vw 28vh 0 0px rgba(255,255,255,0.8),
3840
+ 45vw 35vh 0 0px rgba(255,255,255,0.7),
3841
+ -18vw -40vh 0 0px rgba(255,255,255,0.9),
3842
+ 38vw -25vh 0 0px rgba(255,255,255,0.8),
3843
+ -42vw 15vh 0 0px rgba(255,255,255,0.7),
3844
+ 12vw 42vh 0 0px rgba(255,255,255,0.9),
3845
+ -28vw -18vh 0 0px rgba(255,255,255,0.8),
3846
+ 48vw 8vh 0 0px rgba(255,255,255,0.7),
3847
+ -15vw 38vh 0 0px rgba(255,255,255,0.9),
3848
+ 32vw -42vh 0 0px rgba(255,255,255,0.8),
3849
+ -45vw -8vh 0 0px rgba(255,255,255,0.7),
3850
+ 8vw -35vh 0 0px rgba(255,255,255,0.9),
3851
+ -38vw 42vh 0 0px rgba(255,255,255,0.8),
3852
+ 42vw 18vh 0 0px rgba(255,255,255,0.7),
3853
+ -8vw -28vh 0 0px rgba(255,255,255,0.9),
3854
+ 28vw 45vh 0 0px rgba(255,255,255,0.8),
3855
+ -48vw 25vh 0 0px rgba(255,255,255,0.7),
3856
+ 15vw -8vh 0 0px rgba(255,255,255,0.9),
3857
+ -22vw 12vh 0 0px rgba(255,255,255,0.8);
3858
+ }
3859
+
3860
+ .stars-2 {
3861
+ animation: starfield 16s linear infinite;
3862
+ animation-delay: -5.33s;
3863
+ box-shadow:
3864
+ /* Layer 2 - medium stars */
3865
+ -12vw 22vh 0 0px rgba(255,255,255,0.9),
3866
+ 35vw -32vh 0 0px rgba(255,255,255,0.8),
3867
+ -40vw -15vh 0 0px rgba(255,255,255,0.7),
3868
+ 22vw 40vh 0 0px rgba(255,255,255,0.9),
3869
+ -25vw -35vh 0 0px rgba(255,255,255,0.8),
3870
+ 40vw 12vh 0 0px rgba(255,255,255,0.7),
3871
+ -35vw 32vh 0 0px rgba(255,255,255,0.9),
3872
+ 18vw -22vh 0 0px rgba(255,255,255,0.8),
3873
+ -10vw 45vh 0 0px rgba(255,255,255,0.7),
3874
+ 45vw -10vh 0 0px rgba(255,255,255,0.9),
3875
+ -30vw -42vh 0 0px rgba(255,255,255,0.8),
3876
+ 5vw 30vh 0 0px rgba(255,255,255,0.7),
3877
+ -45vw 5vh 0 0px rgba(255,255,255,0.9),
3878
+ 30vw 22vh 0 0px rgba(255,255,255,0.8),
3879
+ -20vw -12vh 0 0px rgba(255,255,255,0.7),
3880
+ 48vw -38vh 0 0px rgba(255,255,255,0.9),
3881
+ -5vw 18vh 0 0px rgba(255,255,255,0.8),
3882
+ 25vw -45vh 0 0px rgba(255,255,255,0.7),
3883
+ -48vw 38vh 0 0px rgba(255,255,255,0.9),
3884
+ 10vw -5vh 0 0px rgba(255,255,255,0.8);
3885
+ }
3886
+
3887
+ .stars-3 {
3888
+ animation: starfield 16s linear infinite;
3889
+ animation-delay: -10.66s;
3890
+ box-shadow:
3891
+ /* Layer 3 - far stars */
3892
+ 18vw -28vh 0 0px rgba(255,255,255,0.9),
3893
+ -28vw 35vh 0 0px rgba(255,255,255,0.8),
3894
+ 42vw 25vh 0 0px rgba(255,255,255,0.7),
3895
+ -15vw -45vh 0 0px rgba(255,255,255,0.9),
3896
+ 35vw -18vh 0 0px rgba(255,255,255,0.8),
3897
+ -42vw 8vh 0 0px rgba(255,255,255,0.7),
3898
+ 8vw 48vh 0 0px rgba(255,255,255,0.9),
3899
+ -35vw -25vh 0 0px rgba(255,255,255,0.8),
3900
+ 48vw -5vh 0 0px rgba(255,255,255,0.7),
3901
+ -8vw 28vh 0 0px rgba(255,255,255,0.9),
3902
+ 25vw -48vh 0 0px rgba(255,255,255,0.8),
3903
+ -48vw -18vh 0 0px rgba(255,255,255,0.7),
3904
+ 5vw -38vh 0 0px rgba(255,255,255,0.9),
3905
+ -25vw 48vh 0 0px rgba(255,255,255,0.8),
3906
+ 38vw 5vh 0 0px rgba(255,255,255,0.7),
3907
+ -18vw -32vh 0 0px rgba(255,255,255,0.9),
3908
+ 32vw 38vh 0 0px rgba(255,255,255,0.8),
3909
+ -38vw 18vh 0 0px rgba(255,255,255,0.7),
3910
+ 12vw -15vh 0 0px rgba(255,255,255,0.9),
3911
+ -32vw 5vh 0 0px rgba(255,255,255,0.8);
3912
+ }
3913
+
3914
+ @keyframes starfield {
3915
+ 0% {
3916
+ transform: translateZ(-600px);
3917
+ opacity: 0;
3918
+ }
3919
+ 5% {
3920
+ opacity: 1;
3921
+ }
3922
+ 90% {
3923
+ opacity: 1;
3924
+ }
3925
+ 100% {
3926
+ transform: translateZ(500px);
3927
+ opacity: 0;
3928
+ }
3929
+ }
3930
+
3931
+ /* Viewport for 3D Windows */
3932
+ .time-machine-viewport {
3933
+ position: absolute;
3934
+ inset: 0;
3935
+ display: flex;
3936
+ align-items: center;
3937
+ justify-content: center;
3938
+ perspective: 1200px;
3939
+ perspective-origin: center 25%;
3940
+ z-index: 1;
3941
+ box-sizing: border-box;
3942
+ }
3943
+
3944
+ .windows-container {
3945
+ position: relative;
3946
+ width: 60%;
3947
+ max-width: 700px;
3948
+ height: 55%;
3949
+ max-height: 500px;
3950
+ transform-style: preserve-3d;
3951
+ }
3952
+
3953
+ /* Individual Version Window */
3954
+ .version-window {
3955
+ position: absolute;
3956
+ inset: 0;
3957
+ background: transparent;
3958
+ overflow: visible;
3959
+ cursor: pointer;
3960
+ transform:
3961
+ translateZ(calc(var(--z-offset) * 1px))
3962
+ translateY(calc(var(--depth) * -35px))
3963
+ scale(var(--scale));
3964
+ opacity: var(--opacity);
3965
+ transition:
3966
+ transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94),
3967
+ opacity 0.4s ease;
3968
+ transform-style: preserve-3d;
3969
+ will-change: transform, opacity;
3970
+ perspective: 1500px;
3971
+ }
3972
+
3973
+ .version-window-inner {
3974
+ position: absolute;
3975
+ inset: 0;
3976
+ border-radius: 12px;
3977
+ transform-style: preserve-3d;
3978
+ transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
3979
+ box-shadow:
3980
+ 0 0 0 1px rgba(255, 255, 255, 0.1),
3981
+ 0 20px 60px rgba(0, 0, 0, 0.5),
3982
+ 0 0 40px rgba(100, 100, 255, 0.1);
3983
+ }
3984
+
3985
+ .version-window.flipped .version-window-inner {
3986
+ transform: rotateY(180deg);
3987
+ }
3988
+
3989
+ .version-window-face {
3990
+ position: absolute;
3991
+ inset: 0;
3992
+ display: flex;
3993
+ flex-direction: column;
3994
+ border-radius: inherit;
3995
+ background: linear-gradient(180deg, #3a3a4a 0%, #2a2a3a 2%, #1e1e28 100%);
3996
+ backface-visibility: hidden;
3997
+ overflow: hidden;
3998
+ pointer-events: auto;
3999
+ }
4000
+
4001
+ .version-window-face--back {
4002
+ transform: rotateY(180deg);
4003
+ background: linear-gradient(180deg, #262638 0%, #1b1b27 100%);
4004
+ }
4005
+
4006
+ .version-window.flipped .version-window-face--front {
4007
+ pointer-events: none;
4008
+ }
4009
+
4010
+ .version-window:not(.flipped) .version-window-face--back {
4011
+ pointer-events: none;
4012
+ }
4013
+
4014
+ .version-window.active .version-window-inner {
4015
+ box-shadow:
4016
+ 0 0 0 2px rgba(100, 150, 255, 0.5),
4017
+ 0 20px 60px rgba(0, 0, 0, 0.5),
4018
+ 0 0 60px rgba(100, 150, 255, 0.2);
4019
+ }
4020
+
4021
+ .version-window:hover:not(.active) .version-window-inner {
4022
+ box-shadow:
4023
+ 0 0 0 1px rgba(255, 255, 255, 0.2),
4024
+ 0 25px 70px rgba(0, 0, 0, 0.6),
4025
+ 0 0 50px rgba(100, 100, 255, 0.15);
4026
+ }
4027
+
4028
+ /* Window Chrome (Title Bar) */
4029
+ .window-chrome {
4030
+ display: grid;
4031
+ grid-template-columns: auto 1fr auto;
4032
+ align-items: center;
4033
+ height: 36px;
4034
+ padding: 0 12px;
4035
+ background: linear-gradient(180deg, #4a4a5a 0%, #3a3a4a 100%);
4036
+ border-bottom: 1px solid rgba(0, 0, 0, 0.3);
4037
+ gap: 12px;
4038
+ }
4039
+
4040
+ .window-controls {
4041
+ display: flex;
4042
+ gap: 8px;
4043
+ }
4044
+
4045
+ .control {
4046
+ width: 12px;
4047
+ height: 12px;
4048
+ border-radius: 50%;
4049
+ background: #666;
4050
+ }
4051
+
4052
+ .control.close {
4053
+ background: #ff5f57;
4054
+ }
4055
+
4056
+ .control.minimize {
4057
+ background: #ffbd2e;
4058
+ }
4059
+
4060
+ .control.maximize {
4061
+ background: #28ca41;
4062
+ }
4063
+
4064
+ .window-title {
4065
+ text-align: center;
4066
+ font-size: 13px;
4067
+ font-weight: 500;
4068
+ color: rgba(255, 255, 255, 0.85);
4069
+ margin: 0;
4070
+ }
4071
+
4072
+ .window-actions {
4073
+ display: flex;
4074
+ align-items: center;
4075
+ justify-content: flex-end;
4076
+ }
4077
+
4078
+ .window-flip-button {
4079
+ display: flex;
4080
+ align-items: center;
4081
+ justify-content: center;
4082
+ width: 28px;
4083
+ height: 28px;
4084
+ border-radius: 6px;
4085
+ border: 1px solid var(--tm-border-subtle);
4086
+ background: linear-gradient(180deg, rgba(120, 130, 220, 0.25) 0%, rgba(60, 70, 140, 0.25) 100%);
4087
+ color: var(--tm-text);
4088
+ cursor: pointer;
4089
+ transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
4090
+ }
4091
+
4092
+ .window-flip-button:hover {
4093
+ transform: translateY(-1px);
4094
+ box-shadow: 0 8px 18px rgba(0, 0, 0, 0.35);
4095
+ border-color: rgba(120, 160, 255, 0.4);
4096
+ }
4097
+
4098
+ .window-flip-button:active {
4099
+ transform: translateY(0);
4100
+ }
4101
+
4102
+ .window-flip-button:focus-visible {
4103
+ outline: 2px solid rgba(120, 160, 255, 0.85);
4104
+ outline-offset: 2px;
4105
+ }
4106
+
4107
+ .window-flip-button i {
4108
+ font-size: 14px;
4109
+ }
4110
+
4111
+ .window-chrome--back {
4112
+ background: linear-gradient(180deg, #35354a 0%, #2b2b3c 100%);
4113
+ }
4114
+
4115
+ /* Window Content */
4116
+ .window-content {
4117
+ height: calc(100% - 36px);
4118
+ padding: 20px;
4119
+ overflow: auto;
4120
+ background: linear-gradient(180deg, #1e1e28 0%, #16161e 100%);
4121
+ color: #e0e0e0;
4122
+ }
4123
+
4124
+ .window-content--events {
4125
+ display: flex;
4126
+ flex-direction: column;
4127
+ gap: 1.5rem;
4128
+ }
4129
+
4130
+ .snapshot-event-list {
4131
+ display: flex;
4132
+ flex-direction: column;
4133
+ gap: 1.25rem;
4134
+ }
4135
+
4136
+ .snapshot-event {
4137
+ background: var(--tm-surface);
4138
+ border: 1px solid var(--tm-border);
4139
+ border-radius: 10px;
4140
+ padding: 1rem 1.25rem;
4141
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
4142
+ }
4143
+
4144
+ .snapshot-event-header {
4145
+ display: flex;
4146
+ align-items: baseline;
4147
+ justify-content: space-between;
4148
+ gap: 0.75rem;
4149
+ margin-bottom: 0.75rem;
4150
+ }
4151
+
4152
+ .snapshot-event-name {
4153
+ font-size: 1rem;
4154
+ font-weight: 600;
4155
+ color: #ffffff;
4156
+ }
4157
+
4158
+ .snapshot-event-timestamp {
4159
+ font-size: 0.75rem;
4160
+ color: var(--tm-text-muted);
4161
+ font-family: -apple-system, BlinkMacSystemFont, 'SF Mono', monospace;
4162
+ }
4163
+
4164
+ /* Timeline */
4165
+ .timeline {
4166
+ position: absolute;
4167
+ right: 20px;
4168
+ top: 50%;
4169
+ transform: translateY(-50%);
4170
+ display: flex;
4171
+ flex-direction: column;
4172
+ justify-content: center;
4173
+ z-index: 10;
4174
+ }
4175
+
4176
+ .timeline-track {
4177
+ display: flex;
4178
+ flex-direction: column;
4179
+ gap: 2px;
4180
+ padding: 20px 0;
4181
+ }
4182
+
4183
+ .timeline-track::-webkit-scrollbar {
4184
+ display: none;
4185
+ }
4186
+
4187
+ /* Timeline Entry */
4188
+ .timeline-entry {
4189
+ display: flex;
4190
+ align-items: center;
4191
+ justify-content: flex-end;
4192
+ gap: 10px;
4193
+ padding: 4px 0;
4194
+ cursor: pointer;
4195
+ transform-origin: right center;
4196
+ transform: scale(var(--magnification, 1));
4197
+ transition: transform 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94);
4198
+ }
4199
+
4200
+ .timeline-tick {
4201
+ width: calc(20px * var(--magnification, 1));
4202
+ height: calc(2px * var(--magnification, 1));
4203
+ background: var(--tm-text-faint);
4204
+ border-radius: 1px;
4205
+ transition:
4206
+ width 0.15s ease,
4207
+ height 0.15s ease,
4208
+ background 0.15s ease;
4209
+ }
4210
+
4211
+ .timeline-entry.selected .timeline-tick {
4212
+ background: #6a9fff;
4213
+ box-shadow: 0 0 8px rgba(106, 159, 255, 0.6);
4214
+ }
4215
+
4216
+ .timeline-entry.hovered .timeline-tick {
4217
+ background: var(--tm-text);
4218
+ box-shadow: 0 0 6px var(--tm-surface-active);
4219
+ }
4220
+
4221
+ .timeline-label {
4222
+ display: flex;
4223
+ flex-direction: column;
4224
+ align-items: flex-end;
4225
+ opacity: 0;
4226
+ transform: translateX(10px);
4227
+ transition:
4228
+ opacity 0.2s ease,
4229
+ transform 0.2s ease;
4230
+ pointer-events: none;
4231
+ white-space: nowrap;
4232
+ }
4233
+
4234
+ .timeline-entry.hovered .timeline-label,
4235
+ .timeline-entry.selected .timeline-label {
4236
+ opacity: 1;
4237
+ transform: translateX(0);
4238
+ }
4239
+
4240
+ .timeline-date {
4241
+ font-size: 11px;
4242
+ font-weight: 600;
4243
+ color: #fff;
4244
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
4245
+ }
4246
+
4247
+ .timeline-time {
4248
+ font-size: 10px;
4249
+ color: var(--tm-text-dim);
4250
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
4251
+ }
4252
+
4253
+ /* Navigation Controls */
4254
+ .navigation-controls {
4255
+ position: absolute;
4256
+ bottom: 30px;
4257
+ left: 50%;
4258
+ transform: translateX(-50%);
4259
+ display: flex;
4260
+ gap: 20px;
4261
+ z-index: 10;
4262
+ }
4263
+
4264
+ .nav-button {
4265
+ width: 60px;
4266
+ height: 60px;
4267
+ border: none;
4268
+ border-radius: 50%;
4269
+ background: linear-gradient(180deg, rgba(100, 100, 130, 0.8) 0%, rgba(60, 60, 90, 0.8) 100%);
4270
+ color: white;
4271
+ font-size: 28px;
4272
+ font-weight: 300;
4273
+ cursor: pointer;
4274
+ display: flex;
4275
+ align-items: center;
4276
+ justify-content: center;
4277
+ line-height: 1;
4278
+ padding: 0;
4279
+ box-shadow:
4280
+ 0 4px 20px rgba(0, 0, 0, 0.4),
4281
+ inset 0 1px 0 rgba(255, 255, 255, 0.2);
4282
+ transition:
4283
+ transform 0.2s ease,
4284
+ box-shadow 0.2s ease,
4285
+ opacity 0.2s ease;
4286
+ backdrop-filter: blur(10px);
4287
+ }
4288
+
4289
+ .nav-button:hover:not(:disabled) {
4290
+ transform: scale(1.1);
4291
+ box-shadow:
4292
+ 0 6px 25px rgba(0, 0, 0, 0.5),
4293
+ inset 0 1px 0 rgba(255, 255, 255, 0.3),
4294
+ 0 0 20px rgba(100, 150, 255, 0.3);
4295
+ }
4296
+
4297
+ .nav-button:active:not(:disabled) {
4298
+ transform: scale(0.95);
4299
+ }
4300
+
4301
+ .nav-button:disabled {
4302
+ opacity: 0.3;
4303
+ cursor: not-allowed;
4304
+ }
4305
+
4306
+ /* Responsive adjustments */
4307
+ @media (max-width: 768px) {
4308
+ .time-machine-viewport {
4309
+ width: calc(100% - 120px);
4310
+ }
4311
+
4312
+ .timeline {
4313
+ width: 100px;
4314
+ }
4315
+
4316
+ .windows-container {
4317
+ width: 85%;
4318
+ height: 60%;
4319
+ }
4320
+
4321
+ .nav-button {
4322
+ width: 50px;
4323
+ height: 50px;
4324
+ font-size: 24px;
4325
+ }
4326
+ }
4327
+
4328
+ /* ── ./Toolbar/Toolbar.css ─────────────────────────────────────── */
4329
+ /* Copyright (c) Cratis. All rights reserved. */
4330
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
4331
+
4332
+ /* ── Toolbar container ───────────────────────────────────────────────────── */
4333
+ .toolbar {
4334
+ background: var(--cratis-surface-card);
4335
+ border: 1px solid var(--cratis-surface-border);
4336
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
4337
+ }
4338
+
4339
+ /* ── Toolbar button ──────────────────────────────────────────────────────── */
4340
+ .toolbar-button {
4341
+ color: var(--cratis-text-color-secondary);
4342
+ background: transparent;
4343
+ border: none;
4344
+ transition: background 0.15s, color 0.15s;
4345
+ }
4346
+
4347
+ .toolbar-button:hover {
4348
+ background: var(--cratis-surface-100);
4349
+ color: var(--cratis-text-color);
4350
+ }
4351
+
4352
+ .toolbar-button--active {
4353
+ background: var(--cratis-primary-color);
4354
+ color: var(--cratis-primary-color-text);
4355
+ }
4356
+
4357
+ .toolbar-button--active:hover {
4358
+ background: var(--cratis-primary-color);
4359
+ color: var(--cratis-primary-color-text);
4360
+ }
4361
+
4362
+ .toolbar-button--draggable {
4363
+ cursor: grab;
4364
+ }
4365
+
4366
+ .toolbar-button--draggable:active {
4367
+ cursor: grabbing;
4368
+ }
4369
+
4370
+ .toolbar-button__text {
4371
+ font-size: 0.875rem;
4372
+ font-weight: 600;
4373
+ line-height: 1;
4374
+ white-space: nowrap;
4375
+ }
4376
+
4377
+ /* ── Toolbar project name label ──────────────────────────────────────────── */
4378
+ .toolbar-project-name {
4379
+ padding: 0 8px;
4380
+ font-size: 0.875rem;
4381
+ font-weight: 500;
4382
+ color: var(--cratis-text-color);
4383
+ white-space: nowrap;
4384
+ }
4385
+
4386
+ /* ── Toolbar section (context switching) ────────────────────────────────── */
4387
+
4388
+ /*
4389
+ * The section is a fixed-size container that transitions smoothly between
4390
+ * the dimensions required by each context.
4391
+ * Overflow stays visible in the settled state so absolutely-positioned
4392
+ * children (e.g. fan-out panels) can extend beyond the section's bounds.
4393
+ * During a context resize transition, a temporary modifier clips incoming
4394
+ * content so buttons do not float outside the current toolbar bounds.
4395
+ */
4396
+ .toolbar-section {
4397
+ position: relative;
4398
+ transition:
4399
+ width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
4400
+ height 0.35s cubic-bezier(0.4, 0, 0.2, 1);
4401
+ }
4402
+
4403
+ .toolbar-section--transitioning {
4404
+ overflow: hidden;
4405
+ }
4406
+
4407
+ /*
4408
+ * Every context is absolutely stacked at the top-left of the section.
4409
+ * Only the active one is visible; the others fade out and lose pointer events.
4410
+ */
4411
+ .toolbar-context {
4412
+ position: absolute;
4413
+ top: 0;
4414
+ left: 0;
4415
+ transition: opacity 0.2s ease;
4416
+ }
4417
+
4418
+ .toolbar-context--active {
4419
+ opacity: 1;
4420
+ pointer-events: auto;
4421
+ }
4422
+
4423
+ .toolbar-context--inactive {
4424
+ opacity: 0;
4425
+ pointer-events: none;
4426
+ }
4427
+
4428
+ /* ── Toolbar separator ───────────────────────────────────────────────────── */
4429
+
4430
+ .toolbar-separator {
4431
+ background: var(--cratis-surface-border);
4432
+ flex-shrink: 0;
4433
+ align-self: stretch;
4434
+ }
4435
+
4436
+ /* Separator inside a vertical toolbar — renders as a horizontal rule */
4437
+ .toolbar-separator--in-vertical {
4438
+ height: 1px;
4439
+ margin: 0.125rem 0.25rem;
4440
+ }
4441
+
4442
+ /* Separator inside a horizontal toolbar — renders as a vertical rule */
4443
+ .toolbar-separator--in-horizontal {
4444
+ width: 1px;
4445
+ margin: 0.25rem 0.125rem;
4446
+ }
4447
+
4448
+ /* ── Toolbar fan-out item ────────────────────────────────────────────────── */
4449
+
4450
+ /*
4451
+ * The wrapper provides the positioning context for the absolutely-placed panel.
4452
+ */
4453
+ .toolbar-fanout-item {
4454
+ position: relative;
4455
+ }
4456
+
4457
+ /*
4458
+ * The fan-out panel is a floating pill that mirrors the Toolbar container style.
4459
+ * When collapsed, it's hidden. When expanded, it appears elevated at the same
4460
+ * position as the trigger button, with the trigger button as the first item.
4461
+ * Vertically centered with where the collapsed button would be.
4462
+ */
4463
+ .toolbar-fanout-panel {
4464
+ position: absolute;
4465
+ top: 50%;
4466
+ left: calc(-0.5rem - 1px);
4467
+ transform: translateY(-50%);
4468
+ display: inline-flex;
4469
+ flex-direction: row;
4470
+ align-items: center;
4471
+ gap: 0.25rem;
4472
+ padding: 0.5rem;
4473
+ background: var(--cratis-surface-card);
4474
+ border: 1px solid var(--cratis-surface-border);
4475
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
4476
+ border-radius: 1rem;
4477
+ white-space: nowrap;
4478
+ z-index: 10;
4479
+ pointer-events: none;
4480
+ opacity: 0;
4481
+ clip-path: inset(0 100% 0 0 round 1rem);
4482
+ transition:
4483
+ clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1),
4484
+ opacity 0.2s ease;
4485
+ }
4486
+
4487
+ /* Panel fans out to the left — reveal animates right → left */
4488
+ .toolbar-fanout-panel--left {
4489
+ left: auto;
4490
+ right: calc(-0.5rem - 1px);
4491
+ clip-path: inset(0 0 0 100% round 1rem);
4492
+ }
4493
+
4494
+ .toolbar-fanout-panel--up {
4495
+ top: auto;
4496
+ right: auto;
4497
+ bottom: calc(100% + 0.5rem);
4498
+ left: 50%;
4499
+ transform: translateX(-50%);
4500
+ clip-path: inset(100% 0 0 0 round 1rem);
4501
+ }
4502
+
4503
+ .toolbar-fanout-panel--down {
4504
+ top: calc(100% + 0.5rem);
4505
+ right: auto;
4506
+ left: 50%;
4507
+ transform: translateX(-50%);
4508
+ clip-path: inset(0 0 100% 0 round 1rem);
4509
+ }
4510
+
4511
+ /* Expanded state — fully visible, pointer events restored */
4512
+ .toolbar-fanout-panel--visible {
4513
+ clip-path: inset(0 0 0 0 round 1rem);
4514
+ opacity: 1;
4515
+ pointer-events: auto;
4516
+ }
4517
+
4518
+ /*
4519
+ * Reveal complete. The clip-path did its job — the wipe cannot run without it,
4520
+ * because `clip-path: none` is a discrete value that snaps instead of
4521
+ * interpolating. But clip-path also clips every descendant, so leaving a zero
4522
+ * inset in place slices off the hover tooltips of the outermost buttons, which
4523
+ * paint outside the panel by design.
4524
+ *
4525
+ * ToolbarFanOutItem therefore adds this class once the reveal transition ends,
4526
+ * and takes it off again (restoring an interpolable inset) before the close
4527
+ * transition starts — so both wipes keep their exact timing and a settled panel
4528
+ * clips nothing.
4529
+ */
4530
+ .toolbar-fanout-panel--settled {
4531
+ clip-path: none;
4532
+ }
4533
+
4534
+ /* ── Toolbar folder ──────────────────────────────────────────────────────── */
4535
+
4536
+ .toolbar-folder-item {
4537
+ position: relative;
4538
+ }
4539
+
4540
+ /*
4541
+ * Folder panel is a floating grid that grows naturally with item count.
4542
+ * The trigger stays in place while the panel animates in/out.
4543
+ */
4544
+ .toolbar-folder-panel {
4545
+ position: absolute;
4546
+ top: 50%;
4547
+ left: calc(100% + 0.75rem);
4548
+ transform: translateY(-50%) scale(0.92);
4549
+ transform-origin: left center;
4550
+ display: grid;
4551
+ grid-auto-rows: minmax(2.5rem, auto);
4552
+ gap: 0.25rem;
4553
+ padding: 0.5rem;
4554
+ background: var(--cratis-surface-card);
4555
+ border: 1px solid var(--cratis-surface-border);
4556
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
4557
+ border-radius: 1rem;
4558
+ z-index: 10;
4559
+ pointer-events: none;
4560
+ opacity: 0;
4561
+ clip-path: inset(0 100% 0 0 round 1rem);
4562
+ transition:
4563
+ clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1),
4564
+ transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
4565
+ opacity 0.2s ease;
4566
+ }
4567
+
4568
+ .toolbar-folder-panel--left {
4569
+ left: auto;
4570
+ right: calc(100% + 0.75rem);
4571
+ transform-origin: right center;
4572
+ clip-path: inset(0 0 0 100% round 1rem);
4573
+ }
4574
+
4575
+ .toolbar-folder-panel--visible {
4576
+ clip-path: none;
4577
+ transform: translateY(-50%) scale(1);
4578
+ opacity: 1;
4579
+ pointer-events: auto;
4580
+ }
4581
+
4582
+ /* List-mode folder panel — vertical stack instead of a grid */
4583
+ .toolbar-folder-panel--list {
4584
+ display: flex;
4585
+ flex-direction: column;
4586
+ min-width: 10rem;
4587
+ }
4588
+
4589
+ /* ── Toolbar button — list mode ──────────────────────────────────────────── */
4590
+
4591
+ /*
4592
+ * Inside a list-mode folder the button fills the available width and renders
4593
+ * its icon and title label side by side, left-aligned.
4594
+ */
4595
+ .toolbar-button--list {
4596
+ width: 100%;
4597
+ justify-content: flex-start;
4598
+ }
4599
+
4600
+ .toolbar-button__label {
4601
+ font-size: 0.875rem;
4602
+ font-weight: 500;
4603
+ color: inherit;
4604
+ white-space: nowrap;
4605
+ }
4606
+
4607
+ /* ── Toolbar group ───────────────────────────────────────────────────────── */
4608
+
4609
+ /*
4610
+ * When a Toolbar contains ToolbarGroup children it becomes a transparent
4611
+ * layout wrapper — each group renders as its own pill.
4612
+ */
4613
+ .toolbar:has(.toolbar-group) {
4614
+ background: transparent;
4615
+ border: none;
4616
+ box-shadow: none;
4617
+ padding: 0;
4618
+ gap: 0.5rem;
4619
+ }
4620
+
4621
+ /*
4622
+ * Each ToolbarGroup is a self-contained pill that matches the visual style
4623
+ * of a standalone Toolbar.
4624
+ */
4625
+ .toolbar-group {
4626
+ background: var(--cratis-surface-card);
4627
+ border: 1px solid var(--cratis-surface-border);
4628
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
4629
+ }
4630
+
4631
+
4632
+ /* ── Toolbar slot transition (ToolbarGroup slot content) ─────────────────── */
4633
+
4634
+ /*
4635
+ * Size-morphing container for slot content inside a ToolbarGroup or ToolbarLayout.
4636
+ * Mirrors the .toolbar-section transition parameters for visual consistency —
4637
+ * the container resizes smoothly while content cross-fades.
4638
+ * Overflow stays visible in the settled state so absolutely-positioned children
4639
+ * (fan-out and folder panels, and the hover tooltips inside them) can escape the
4640
+ * section's bounds; it is only clipped while outgoing content is fading out, so
4641
+ * that content does not bleed past the container mid-transition.
4642
+ */
4643
+ .toolbar-slot-section {
4644
+ position: relative;
4645
+ transition:
4646
+ width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
4647
+ height 0.35s cubic-bezier(0.4, 0, 0.2, 1);
4648
+ }
4649
+
4650
+ .toolbar-slot-section--transitioning {
4651
+ overflow: hidden;
4652
+ }
4653
+
4654
+ @keyframes toolbar-slot-fade-in {
4655
+ from { opacity: 0; }
4656
+ to { opacity: 1; }
4657
+ }
4658
+
4659
+ @keyframes toolbar-slot-fade-out {
4660
+ from { opacity: 1; }
4661
+ to { opacity: 0; }
4662
+ }
4663
+
4664
+ /*
4665
+ * Incoming slot content — fades in on mount.
4666
+ * Duration matches the toolbar-context opacity transition (0.2s ease).
4667
+ */
4668
+ .toolbar-slot-incoming {
4669
+ position: absolute;
4670
+ top: 0;
4671
+ left: 0;
4672
+ animation: toolbar-slot-fade-in 0.2s ease forwards;
4673
+ }
4674
+
4675
+ /*
4676
+ * Outgoing slot content — fades out, then React unmounts it after
4677
+ * the animation completes.
4678
+ */
4679
+ .toolbar-slot-outgoing {
4680
+ position: absolute;
4681
+ top: 0;
4682
+ left: 0;
4683
+ animation: toolbar-slot-fade-out 0.2s ease forwards;
4684
+ pointer-events: none;
4685
+ }
4686
+