cursedbelt 1.0.0 → 2.5.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 (537) hide show
  1. package/dist/client/index.js +1 -1
  2. package/dist/core/category/index.d.ts.map +1 -1
  3. package/dist/core/category/index.js +2 -1
  4. package/dist/core/category/index.js.map +1 -1
  5. package/dist/core/category/types.js +1 -1
  6. package/dist/core/category/types.js.map +1 -1
  7. package/dist/core/file-tree/fileTreeModel.d.ts +49 -0
  8. package/dist/core/file-tree/fileTreeModel.d.ts.map +1 -1
  9. package/dist/core/file-tree/fileTreeModel.js +84 -0
  10. package/dist/core/file-tree/fileTreeModel.js.map +1 -1
  11. package/dist/core/layout/index.js +1 -1
  12. package/dist/core/layout/index.js.map +1 -1
  13. package/dist/core/media/index.js +1 -1
  14. package/dist/core/media/index.js.map +1 -1
  15. package/dist/core/media/types.js +1 -1
  16. package/dist/core/media/types.js.map +1 -1
  17. package/dist/core/media/uploadLimits.js +1 -1
  18. package/dist/core/media/uploadLimits.js.map +1 -1
  19. package/dist/core/sharing/model.d.ts +1 -1
  20. package/dist/ctgr/index.js +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/react/activity-bar/ActivityBar.d.ts +17 -0
  24. package/dist/react/activity-bar/ActivityBar.d.ts.map +1 -1
  25. package/dist/react/activity-bar/ActivityBar.js.map +1 -1
  26. package/dist/react/analytics/index.d.ts +1 -1
  27. package/dist/react/analytics/index.js +1 -1
  28. package/dist/react/chat/MessageComposer.d.ts.map +1 -1
  29. package/dist/react/chat/MessageComposer.js +5 -4
  30. package/dist/react/chat/MessageComposer.js.map +1 -1
  31. package/dist/react/components/Button.d.ts.map +1 -1
  32. package/dist/react/components/Button.js +3 -2
  33. package/dist/react/components/Button.js.map +1 -1
  34. package/dist/react/components/Checkbox.d.ts +19 -3
  35. package/dist/react/components/Checkbox.d.ts.map +1 -1
  36. package/dist/react/components/Checkbox.js +29 -12
  37. package/dist/react/components/Checkbox.js.map +1 -1
  38. package/dist/react/components/CodeArea.d.ts.map +1 -1
  39. package/dist/react/components/CodeArea.js +2 -1
  40. package/dist/react/components/CodeArea.js.map +1 -1
  41. package/dist/react/components/Collapsible.d.ts.map +1 -1
  42. package/dist/react/components/Collapsible.js +2 -1
  43. package/dist/react/components/Collapsible.js.map +1 -1
  44. package/dist/react/components/ComboboxField.d.ts.map +1 -1
  45. package/dist/react/components/ComboboxField.js +3 -2
  46. package/dist/react/components/ComboboxField.js.map +1 -1
  47. package/dist/react/components/CopyButton.d.ts.map +1 -1
  48. package/dist/react/components/CopyButton.js +2 -1
  49. package/dist/react/components/CopyButton.js.map +1 -1
  50. package/dist/react/components/DataTable/ColumnChecklist.d.ts.map +1 -1
  51. package/dist/react/components/DataTable/ColumnChecklist.js +2 -1
  52. package/dist/react/components/DataTable/ColumnChecklist.js.map +1 -1
  53. package/dist/react/components/DataTable/Pagination.d.ts.map +1 -1
  54. package/dist/react/components/DataTable/Pagination.js +2 -1
  55. package/dist/react/components/DataTable/Pagination.js.map +1 -1
  56. package/dist/react/components/DataTable/SortHeader.d.ts.map +1 -1
  57. package/dist/react/components/DataTable/SortHeader.js +2 -1
  58. package/dist/react/components/DataTable/SortHeader.js.map +1 -1
  59. package/dist/react/components/DataTable/TableFilterBuilder.d.ts +61 -0
  60. package/dist/react/components/DataTable/TableFilterBuilder.d.ts.map +1 -0
  61. package/dist/react/components/DataTable/{FilterBuilder.js → TableFilterBuilder.js} +26 -3
  62. package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -0
  63. package/dist/react/components/DataTable/Toolbar.d.ts +1 -1
  64. package/dist/react/components/DataTable/Toolbar.js +3 -3
  65. package/dist/react/components/DataTable/Toolbar.js.map +1 -1
  66. package/dist/react/components/DataTable/cells/LinkCell.d.ts.map +1 -1
  67. package/dist/react/components/DataTable/cells/LinkCell.js +2 -1
  68. package/dist/react/components/DataTable/cells/LinkCell.js.map +1 -1
  69. package/dist/react/components/DataTable/index.d.ts +1 -1
  70. package/dist/react/components/DataTable/index.d.ts.map +1 -1
  71. package/dist/react/components/DataTable/index.js +4 -1
  72. package/dist/react/components/DataTable/index.js.map +1 -1
  73. package/dist/react/components/DragHandle.d.ts.map +1 -1
  74. package/dist/react/components/DragHandle.js +2 -1
  75. package/dist/react/components/DragHandle.js.map +1 -1
  76. package/dist/react/components/EmojiField.d.ts.map +1 -1
  77. package/dist/react/components/EmojiField.js +2 -1
  78. package/dist/react/components/EmojiField.js.map +1 -1
  79. package/dist/react/components/EventTimeline.d.ts +3 -2
  80. package/dist/react/components/EventTimeline.d.ts.map +1 -1
  81. package/dist/react/components/EventTimeline.js +3 -2
  82. package/dist/react/components/EventTimeline.js.map +1 -1
  83. package/dist/react/components/IconButton.d.ts +1 -1
  84. package/dist/react/components/IconButton.js +1 -1
  85. package/dist/react/components/InfoHint.d.ts.map +1 -1
  86. package/dist/react/components/InfoHint.js +5 -4
  87. package/dist/react/components/InfoHint.js.map +1 -1
  88. package/dist/react/components/InheritBadge.js +1 -1
  89. package/dist/react/components/InheritBadge.js.map +1 -1
  90. package/dist/react/components/InlineEditableText.d.ts.map +1 -1
  91. package/dist/react/components/InlineEditableText.js +2 -1
  92. package/dist/react/components/InlineEditableText.js.map +1 -1
  93. package/dist/react/components/MeterList.d.ts.map +1 -1
  94. package/dist/react/components/MeterList.js +2 -1
  95. package/dist/react/components/MeterList.js.map +1 -1
  96. package/dist/react/components/PathText.d.ts +2 -2
  97. package/dist/react/components/PathText.d.ts.map +1 -1
  98. package/dist/react/components/PathText.js +2 -1
  99. package/dist/react/components/PathText.js.map +1 -1
  100. package/dist/react/components/RatingField.d.ts.map +1 -1
  101. package/dist/react/components/RatingField.js +2 -1
  102. package/dist/react/components/RatingField.js.map +1 -1
  103. package/dist/react/components/SecretInput.js +3 -2
  104. package/dist/react/components/SecretInput.js.map +1 -1
  105. package/dist/react/components/SegmentedControl.d.ts.map +1 -1
  106. package/dist/react/components/SegmentedControl.js +2 -1
  107. package/dist/react/components/SegmentedControl.js.map +1 -1
  108. package/dist/react/components/StarRating.d.ts.map +1 -1
  109. package/dist/react/components/StarRating.js +9 -5
  110. package/dist/react/components/StarRating.js.map +1 -1
  111. package/dist/react/components/StatStrip.d.ts.map +1 -1
  112. package/dist/react/components/StatStrip.js +2 -1
  113. package/dist/react/components/StatStrip.js.map +1 -1
  114. package/dist/react/components/StatTile.d.ts.map +1 -1
  115. package/dist/react/components/StatTile.js +3 -2
  116. package/dist/react/components/StatTile.js.map +1 -1
  117. package/dist/react/components/Tabs.d.ts.map +1 -1
  118. package/dist/react/components/Tabs.js +2 -1
  119. package/dist/react/components/Tabs.js.map +1 -1
  120. package/dist/react/components/TruncatedText.d.ts +2 -1
  121. package/dist/react/components/TruncatedText.d.ts.map +1 -1
  122. package/dist/react/components/TruncatedText.js +2 -1
  123. package/dist/react/components/TruncatedText.js.map +1 -1
  124. package/dist/react/components/calendar/MonthGrid.d.ts.map +1 -1
  125. package/dist/react/components/calendar/MonthGrid.js +2 -1
  126. package/dist/react/components/calendar/MonthGrid.js.map +1 -1
  127. package/dist/react/components/calendar/WeekView.d.ts.map +1 -1
  128. package/dist/react/components/calendar/WeekView.js +2 -1
  129. package/dist/react/components/calendar/WeekView.js.map +1 -1
  130. package/dist/react/components/revealOnHover.d.ts.map +1 -1
  131. package/dist/react/components/revealOnHover.js +2 -1
  132. package/dist/react/components/revealOnHover.js.map +1 -1
  133. package/dist/react/file-tree/FileTree.d.ts +50 -1
  134. package/dist/react/file-tree/FileTree.d.ts.map +1 -1
  135. package/dist/react/file-tree/FileTree.js +234 -6
  136. package/dist/react/file-tree/FileTree.js.map +1 -1
  137. package/dist/react/file-tree/fileTree.css +52 -0
  138. package/dist/react/filter-rail/FilterRail.d.ts.map +1 -1
  139. package/dist/react/filter-rail/FilterRail.js +5 -4
  140. package/dist/react/filter-rail/FilterRail.js.map +1 -1
  141. package/dist/react/folder-tree/FolderTreeRail.d.ts.map +1 -1
  142. package/dist/react/folder-tree/FolderTreeRail.js +2 -1
  143. package/dist/react/folder-tree/FolderTreeRail.js.map +1 -1
  144. package/dist/react/index.d.ts +5 -1
  145. package/dist/react/index.d.ts.map +1 -1
  146. package/dist/react/index.js +5 -1
  147. package/dist/react/index.js.map +1 -1
  148. package/dist/react/layoutEngine/index.js +1 -1
  149. package/dist/react/layoutEngine/index.js.map +1 -1
  150. package/dist/react/lib/field.d.ts.map +1 -1
  151. package/dist/react/lib/field.js +3 -2
  152. package/dist/react/lib/field.js.map +1 -1
  153. package/dist/react/lib/floatingStyles.d.ts.map +1 -1
  154. package/dist/react/lib/floatingStyles.js +2 -1
  155. package/dist/react/lib/floatingStyles.js.map +1 -1
  156. package/dist/react/lib/tapTarget.d.ts +96 -0
  157. package/dist/react/lib/tapTarget.d.ts.map +1 -0
  158. package/dist/react/lib/tapTarget.js +96 -0
  159. package/dist/react/lib/tapTarget.js.map +1 -0
  160. package/dist/react/media/VideoTrimmer.d.ts +1 -1
  161. package/dist/react/media/VideoTrimmer.js +1 -1
  162. package/dist/react/media/denseGallery.css +3 -3
  163. package/dist/react/media/ffmpegWasm.js +2 -2
  164. package/dist/react/media/ffmpegWasm.js.map +1 -1
  165. package/dist/react/media/videoPlayer.css +42 -0
  166. package/dist/react/namespace/NamespaceTargetCapsule.d.ts +2 -2
  167. package/dist/react/namespace/NamespaceTargetCapsule.d.ts.map +1 -1
  168. package/dist/react/nav/BreadcrumbTrail.d.ts.map +1 -1
  169. package/dist/react/nav/BreadcrumbTrail.js +4 -3
  170. package/dist/react/nav/BreadcrumbTrail.js.map +1 -1
  171. package/dist/react/nav/HubTileGrid.d.ts.map +1 -1
  172. package/dist/react/nav/HubTileGrid.js +2 -1
  173. package/dist/react/nav/HubTileGrid.js.map +1 -1
  174. package/dist/react/nav/SideNav.d.ts.map +1 -1
  175. package/dist/react/nav/SideNav.js +4 -3
  176. package/dist/react/nav/SideNav.js.map +1 -1
  177. package/dist/react/nav/SideNavCustomize.d.ts.map +1 -1
  178. package/dist/react/nav/SideNavCustomize.js +2 -1
  179. package/dist/react/nav/SideNavCustomize.js.map +1 -1
  180. package/dist/react/palette/CommandPalette.d.ts.map +1 -1
  181. package/dist/react/palette/CommandPalette.js +3 -2
  182. package/dist/react/palette/CommandPalette.js.map +1 -1
  183. package/dist/server/drivers/pooledControlStores.pg.test.js +1 -0
  184. package/dist/server/drivers/pooledControlStores.pg.test.js.map +1 -1
  185. package/dist/server/drivers/pooledIdentityStore.pg.test.js +1 -0
  186. package/dist/server/drivers/pooledIdentityStore.pg.test.js.map +1 -1
  187. package/dist/server/drivers/retentionPolicy.pg.test.js +1 -0
  188. package/dist/server/drivers/retentionPolicy.pg.test.js.map +1 -1
  189. package/dist/server/guard/argon2Binding.d.ts +1 -1
  190. package/dist/server/guard/argon2Binding.js +1 -1
  191. package/dist/server/incidents/store.d.ts +3 -3
  192. package/dist/server/index.js +1 -1
  193. package/dist/server/index.js.map +1 -1
  194. package/dist/server/master-lock/masterLock.d.ts +1 -1
  195. package/dist/server/media-bun/index.js +1 -1
  196. package/dist/server/media-bun/index.js.map +1 -1
  197. package/dist/server/paths/appDataHome.d.ts +20 -0
  198. package/dist/server/paths/appDataHome.d.ts.map +1 -0
  199. package/dist/server/paths/appDataHome.js +69 -0
  200. package/dist/server/paths/appDataHome.js.map +1 -0
  201. package/dist/server/retention/archive.d.ts +3 -4
  202. package/dist/server/retention/archive.d.ts.map +1 -1
  203. package/dist/server/retention/archive.js +20 -15
  204. package/dist/server/retention/archive.js.map +1 -1
  205. package/dist/server/retention/index.d.ts +1 -1
  206. package/dist/server/retention/index.js +1 -1
  207. package/dist/server/retention/policy.d.ts +2 -2
  208. package/dist/server/retention/policy.d.ts.map +1 -1
  209. package/dist/server/retention/policy.js +1 -1
  210. package/dist/server/retention/store.d.ts.map +1 -1
  211. package/dist/server/retention/store.js +27 -20
  212. package/dist/server/retention/store.js.map +1 -1
  213. package/dist/server/runtime/localHost.d.ts +10 -5
  214. package/dist/server/runtime/localHost.d.ts.map +1 -1
  215. package/dist/server/runtime/localHost.js +12 -8
  216. package/dist/server/runtime/localHost.js.map +1 -1
  217. package/dist/server/runtime/meterRollup.pg.test.js +1 -0
  218. package/dist/server/runtime/meterRollup.pg.test.js.map +1 -1
  219. package/dist/server/runtime/recipe.d.ts +4 -4
  220. package/dist/server/runtime/retentionJob.pg.test.js +1 -0
  221. package/dist/server/runtime/retentionJob.pg.test.js.map +1 -1
  222. package/dist/server/search/pgSearchProvider.pg.test.js +1 -0
  223. package/dist/server/search/pgSearchProvider.pg.test.js.map +1 -1
  224. package/dist/shared/errors.d.ts +1 -1
  225. package/dist/shared/errors.js +1 -1
  226. package/dist/styles-static.css +413 -0
  227. package/dist/styles-utilities.css +5074 -0
  228. package/dist/styles.css +49 -0
  229. package/package.json +30 -168
  230. package/scripts/generateStaticStyles.ts +122 -0
  231. package/scripts/generateUtilityStyles.ts +215 -0
  232. package/scripts/publicSurface.ts +455 -0
  233. package/scripts/testTmpRoot.ts +34 -5
  234. package/src/client/index.ts +1 -1
  235. package/src/core/category/index.ts +2 -1
  236. package/src/core/category/types.ts +1 -1
  237. package/src/core/file-tree/fileTreeModel.spec.ts +134 -0
  238. package/src/core/file-tree/fileTreeModel.ts +104 -0
  239. package/src/core/layout/index.ts +1 -1
  240. package/src/core/media/index.ts +1 -1
  241. package/src/core/media/types.ts +1 -1
  242. package/src/core/media/uploadLimits.ts +1 -1
  243. package/src/core/sharing/model.ts +1 -1
  244. package/src/ctgr/index.ts +1 -1
  245. package/src/declaredDepsAreImported.spec.ts +87 -0
  246. package/src/demoFixture.spec.ts +133 -0
  247. package/src/index.ts +1 -1
  248. package/src/lockfileIsTracked.spec.ts +50 -0
  249. package/src/namedSubpathsResolve.spec.ts +119 -0
  250. package/src/publicSurface.spec.ts +72 -0
  251. package/src/react/activity-bar/ActivityBar.tsx +17 -0
  252. package/src/react/analytics/index.ts +1 -1
  253. package/src/react/chat/MessageComposer.tsx +5 -4
  254. package/src/react/components/Button.tsx +3 -2
  255. package/src/react/components/Checkbox.spec.tsx +51 -0
  256. package/src/react/components/Checkbox.tsx +68 -26
  257. package/src/react/components/CodeArea.tsx +2 -1
  258. package/src/react/components/CodeChip.spec.tsx +2 -2
  259. package/src/react/components/Collapsible.tsx +2 -1
  260. package/src/react/components/ComboboxField.tsx +3 -2
  261. package/src/react/components/CopyButton.tsx +2 -1
  262. package/src/react/components/CopyableText.spec.tsx +1 -1
  263. package/src/react/components/DataTable/ColumnChecklist.tsx +2 -1
  264. package/src/react/components/DataTable/Pagination.tsx +2 -1
  265. package/src/react/components/DataTable/SortHeader.tsx +2 -1
  266. package/src/react/components/DataTable/{FilterBuilder.tsx → TableFilterBuilder.tsx} +33 -5
  267. package/src/react/components/DataTable/Toolbar.tsx +3 -3
  268. package/src/react/components/DataTable/cells/LinkCell.tsx +2 -1
  269. package/src/react/components/DataTable/index.ts +8 -1
  270. package/src/react/components/DragHandle.tsx +2 -1
  271. package/src/react/components/EmojiField.tsx +2 -1
  272. package/src/react/components/EventTimeline.tsx +3 -2
  273. package/src/react/components/FileLocation.spec.tsx +1 -1
  274. package/src/react/components/IconButton.tsx +1 -1
  275. package/src/react/components/InfoHint.tsx +5 -4
  276. package/src/react/components/InheritBadge.tsx +1 -1
  277. package/src/react/components/InlineEditableText.tsx +2 -1
  278. package/src/react/components/MeterList.tsx +2 -1
  279. package/src/react/components/PathText.tsx +4 -3
  280. package/src/react/components/RatingField.tsx +2 -1
  281. package/src/react/components/SecretInput.tsx +3 -3
  282. package/src/react/components/SegmentedControl.tsx +2 -2
  283. package/src/react/components/StarRating.spec.tsx +2 -2
  284. package/src/react/components/StarRating.tsx +9 -5
  285. package/src/react/components/StatStrip.tsx +2 -1
  286. package/src/react/components/StatTile.tsx +3 -3
  287. package/src/react/components/Tabs.spec.tsx +3 -2
  288. package/src/react/components/Tabs.tsx +2 -1
  289. package/src/react/components/TruncatedText.tsx +2 -1
  290. package/src/react/components/calendar/MonthGrid.spec.tsx +2 -1
  291. package/src/react/components/calendar/MonthGrid.tsx +2 -1
  292. package/src/react/components/calendar/WeekView.tsx +2 -1
  293. package/src/react/components/revealOnHover.ts +3 -2
  294. package/src/react/file-tree/FileTree.spec.tsx +248 -0
  295. package/src/react/file-tree/FileTree.tsx +304 -4
  296. package/src/react/file-tree/fileTree.css +52 -0
  297. package/src/react/file-tree/fileTreeGeometry.fixture.json +151 -0
  298. package/src/react/file-tree/fileTreeGeometry.spec.ts +33 -52
  299. package/src/react/filter-rail/FilterRail.spec.tsx +2 -1
  300. package/src/react/filter-rail/FilterRail.tsx +5 -4
  301. package/src/react/folder-tree/FolderTreeRail.tsx +2 -1
  302. package/src/react/index.ts +13 -3
  303. package/src/react/layoutEngine/index.ts +1 -1
  304. package/src/react/layoutEngine/types.ts +1 -1
  305. package/src/react/lib/field.ts +4 -2
  306. package/src/react/lib/floatingStyles.spec.ts +2 -1
  307. package/src/react/lib/floatingStyles.ts +3 -1
  308. package/src/react/lib/tapTarget.ts +100 -0
  309. package/src/react/media/MaskPainter.tsx +2 -2
  310. package/src/react/media/VideoTrimmer.tsx +1 -1
  311. package/src/react/media/denseGallery.css +3 -3
  312. package/src/react/media/ffmpegWasm.ts +2 -2
  313. package/src/react/media/videoPlayer.css +42 -0
  314. package/src/react/namespace/NamespaceTargetCapsule.tsx +2 -2
  315. package/src/react/nav/BreadcrumbTrail.tsx +4 -3
  316. package/src/react/nav/HubTileGrid.tsx +2 -1
  317. package/src/react/nav/SideNav.tsx +4 -3
  318. package/src/react/nav/SideNavCustomize.tsx +2 -1
  319. package/src/react/palette/CommandPalette.tsx +3 -2
  320. package/src/server/ctgr.ts +1 -1
  321. package/src/server/drivers/pooledControlStores.pg.test.ts +1 -0
  322. package/src/server/drivers/pooledIdentityStore.pg.test.ts +1 -0
  323. package/src/server/drivers/retentionPolicy.pg.test.ts +1 -0
  324. package/src/server/guard/argon2Binding.ts +1 -1
  325. package/src/server/incidents/store.ts +3 -3
  326. package/src/server/index.ts +1 -1
  327. package/src/server/master-lock/masterLock.spec.ts +18 -2
  328. package/src/server/master-lock/masterLock.ts +1 -1
  329. package/src/server/media-bun/image.spec.ts +1 -0
  330. package/src/server/media-bun/index.ts +1 -1
  331. package/src/server/media-bun/video.spec.ts +1 -0
  332. package/src/server/paths/appDataHome.spec.ts +87 -0
  333. package/src/server/paths/appDataHome.ts +84 -0
  334. package/src/server/retention/archive.spec.ts +26 -4
  335. package/src/server/retention/archive.ts +20 -15
  336. package/src/server/retention/index.ts +1 -1
  337. package/src/server/retention/policy.ts +2 -2
  338. package/src/server/retention/store.spec.ts +38 -10
  339. package/src/server/retention/store.ts +26 -19
  340. package/src/server/runtime/localHost.spec.ts +22 -3
  341. package/src/server/runtime/localHost.ts +12 -9
  342. package/src/server/runtime/meterRollup.pg.test.ts +1 -0
  343. package/src/server/runtime/recipe.ts +4 -4
  344. package/src/server/runtime/retentionJob.pg.test.ts +1 -0
  345. package/src/server/search/pgSearchProvider.pg.test.ts +1 -0
  346. package/src/server/storage/binaryServerProcessing.integration.spec.ts +6 -2
  347. package/src/server/storage/chunked.integration.spec.ts +5 -2
  348. package/src/server/storage/fileUploadClient-chunked.integration.spec.ts +5 -2
  349. package/src/server/storage/files/adapter.photo.display.spec.ts +1 -0
  350. package/src/server/storage/imageThumbnail.spec.ts +1 -0
  351. package/src/server/storage/transcode.integration.spec.ts +5 -2
  352. package/src/server/storage/videoProcessor.posterOnly.spec.ts +1 -0
  353. package/src/shared/errors.ts +1 -1
  354. package/src/skippedTestsAreAnswered.spec.ts +215 -0
  355. package/src/styles-static.css +413 -0
  356. package/src/styles-utilities.css +5074 -0
  357. package/src/styles.css +49 -0
  358. package/src/stylesStaticMatches.spec.ts +134 -0
  359. package/src/stylesUtilitiesMatches.spec.ts +314 -0
  360. package/src/tapTargetStylesheet.spec.ts +150 -0
  361. package/src/testTmpRoot.spec.ts +102 -0
  362. package/dist/core/duplicates/index.d.ts +0 -116
  363. package/dist/core/duplicates/index.d.ts.map +0 -1
  364. package/dist/core/duplicates/index.js +0 -178
  365. package/dist/core/duplicates/index.js.map +0 -1
  366. package/dist/core/namespace/helpers.d.ts +0 -14
  367. package/dist/core/namespace/helpers.d.ts.map +0 -1
  368. package/dist/core/namespace/helpers.js +0 -29
  369. package/dist/core/namespace/helpers.js.map +0 -1
  370. package/dist/core/namespace/index.d.ts +0 -4
  371. package/dist/core/namespace/index.d.ts.map +0 -1
  372. package/dist/core/namespace/index.js +0 -6
  373. package/dist/core/namespace/index.js.map +0 -1
  374. package/dist/core/namespace/memoryStore.d.ts +0 -19
  375. package/dist/core/namespace/memoryStore.d.ts.map +0 -1
  376. package/dist/core/namespace/memoryStore.js +0 -70
  377. package/dist/core/namespace/memoryStore.js.map +0 -1
  378. package/dist/core/namespace/types.d.ts +0 -44
  379. package/dist/core/namespace/types.d.ts.map +0 -1
  380. package/dist/core/namespace/types.js +0 -8
  381. package/dist/core/namespace/types.js.map +0 -1
  382. package/dist/game/core/DisposeRegistry.d.ts +0 -42
  383. package/dist/game/core/DisposeRegistry.d.ts.map +0 -1
  384. package/dist/game/core/DisposeRegistry.js +0 -67
  385. package/dist/game/core/DisposeRegistry.js.map +0 -1
  386. package/dist/game/core/drawBudget.d.ts +0 -26
  387. package/dist/game/core/drawBudget.d.ts.map +0 -1
  388. package/dist/game/core/drawBudget.js +0 -55
  389. package/dist/game/core/drawBudget.js.map +0 -1
  390. package/dist/game/core/fixedTimestep.d.ts +0 -38
  391. package/dist/game/core/fixedTimestep.d.ts.map +0 -1
  392. package/dist/game/core/fixedTimestep.js +0 -47
  393. package/dist/game/core/fixedTimestep.js.map +0 -1
  394. package/dist/game/core/index.d.ts +0 -9
  395. package/dist/game/core/index.d.ts.map +0 -1
  396. package/dist/game/core/index.js +0 -8
  397. package/dist/game/core/index.js.map +0 -1
  398. package/dist/game/core/inputCollector.d.ts +0 -82
  399. package/dist/game/core/inputCollector.d.ts.map +0 -1
  400. package/dist/game/core/inputCollector.js +0 -176
  401. package/dist/game/core/inputCollector.js.map +0 -1
  402. package/dist/game/core/resizeCanvas.d.ts +0 -19
  403. package/dist/game/core/resizeCanvas.d.ts.map +0 -1
  404. package/dist/game/core/resizeCanvas.js +0 -29
  405. package/dist/game/core/resizeCanvas.js.map +0 -1
  406. package/dist/game/react/index.d.ts +0 -3
  407. package/dist/game/react/index.d.ts.map +0 -1
  408. package/dist/game/react/index.js +0 -5
  409. package/dist/game/react/index.js.map +0 -1
  410. package/dist/game/react/useGameEngine.d.ts +0 -64
  411. package/dist/game/react/useGameEngine.d.ts.map +0 -1
  412. package/dist/game/react/useGameEngine.js +0 -78
  413. package/dist/game/react/useGameEngine.js.map +0 -1
  414. package/dist/react/canvas/CanvasNavHUD.d.ts +0 -64
  415. package/dist/react/canvas/CanvasNavHUD.d.ts.map +0 -1
  416. package/dist/react/canvas/CanvasNavHUD.js +0 -58
  417. package/dist/react/canvas/CanvasNavHUD.js.map +0 -1
  418. package/dist/react/canvas/fitLabel.d.ts +0 -53
  419. package/dist/react/canvas/fitLabel.d.ts.map +0 -1
  420. package/dist/react/canvas/fitLabel.js +0 -104
  421. package/dist/react/canvas/fitLabel.js.map +0 -1
  422. package/dist/react/canvas/index.d.ts +0 -4
  423. package/dist/react/canvas/index.d.ts.map +0 -1
  424. package/dist/react/canvas/index.js +0 -4
  425. package/dist/react/canvas/index.js.map +0 -1
  426. package/dist/react/canvas/lod.d.ts +0 -40
  427. package/dist/react/canvas/lod.d.ts.map +0 -1
  428. package/dist/react/canvas/lod.js +0 -37
  429. package/dist/react/canvas/lod.js.map +0 -1
  430. package/dist/react/components/DataTable/FilterBuilder.d.ts +0 -38
  431. package/dist/react/components/DataTable/FilterBuilder.d.ts.map +0 -1
  432. package/dist/react/components/DataTable/FilterBuilder.js.map +0 -1
  433. package/dist/react/seo/HeadProvider.d.ts +0 -14
  434. package/dist/react/seo/HeadProvider.d.ts.map +0 -1
  435. package/dist/react/seo/HeadProvider.js +0 -44
  436. package/dist/react/seo/HeadProvider.js.map +0 -1
  437. package/dist/react/seo/applyHeadToDocument.d.ts +0 -3
  438. package/dist/react/seo/applyHeadToDocument.d.ts.map +0 -1
  439. package/dist/react/seo/applyHeadToDocument.js +0 -66
  440. package/dist/react/seo/applyHeadToDocument.js.map +0 -1
  441. package/dist/react/seo/index.d.ts +0 -3
  442. package/dist/react/seo/index.d.ts.map +0 -1
  443. package/dist/react/seo/index.js +0 -7
  444. package/dist/react/seo/index.js.map +0 -1
  445. package/dist/react/timeline/ClipView.d.ts +0 -29
  446. package/dist/react/timeline/ClipView.d.ts.map +0 -1
  447. package/dist/react/timeline/ClipView.js +0 -53
  448. package/dist/react/timeline/ClipView.js.map +0 -1
  449. package/dist/react/timeline/Playhead.d.ts +0 -16
  450. package/dist/react/timeline/Playhead.d.ts.map +0 -1
  451. package/dist/react/timeline/Playhead.js +0 -26
  452. package/dist/react/timeline/Playhead.js.map +0 -1
  453. package/dist/react/timeline/TimeRuler.d.ts +0 -21
  454. package/dist/react/timeline/TimeRuler.d.ts.map +0 -1
  455. package/dist/react/timeline/TimeRuler.js +0 -31
  456. package/dist/react/timeline/TimeRuler.js.map +0 -1
  457. package/dist/react/timeline/TimelineSurface.d.ts +0 -29
  458. package/dist/react/timeline/TimelineSurface.d.ts.map +0 -1
  459. package/dist/react/timeline/TimelineSurface.js +0 -56
  460. package/dist/react/timeline/TimelineSurface.js.map +0 -1
  461. package/dist/react/timeline/TrackLane.d.ts +0 -31
  462. package/dist/react/timeline/TrackLane.d.ts.map +0 -1
  463. package/dist/react/timeline/TrackLane.js +0 -32
  464. package/dist/react/timeline/TrackLane.js.map +0 -1
  465. package/dist/react/timeline/index.d.ts +0 -6
  466. package/dist/react/timeline/index.d.ts.map +0 -1
  467. package/dist/react/timeline/index.js +0 -12
  468. package/dist/react/timeline/index.js.map +0 -1
  469. package/dist/server/private-media/index.d.ts +0 -7
  470. package/dist/server/private-media/index.d.ts.map +0 -1
  471. package/dist/server/private-media/index.js +0 -13
  472. package/dist/server/private-media/index.js.map +0 -1
  473. package/dist/server/seo/index.d.ts +0 -3
  474. package/dist/server/seo/index.d.ts.map +0 -1
  475. package/dist/server/seo/index.js +0 -6
  476. package/dist/server/seo/index.js.map +0 -1
  477. package/dist/server/seo/mountSeoRoutes.d.ts +0 -9
  478. package/dist/server/seo/mountSeoRoutes.d.ts.map +0 -1
  479. package/dist/server/seo/mountSeoRoutes.js +0 -19
  480. package/dist/server/seo/mountSeoRoutes.js.map +0 -1
  481. package/dist/server/seo/serveHeadInjectedIndex.d.ts +0 -9
  482. package/dist/server/seo/serveHeadInjectedIndex.d.ts.map +0 -1
  483. package/dist/server/seo/serveHeadInjectedIndex.js +0 -20
  484. package/dist/server/seo/serveHeadInjectedIndex.js.map +0 -1
  485. package/dist/upload.d.ts +0 -148
  486. package/dist/upload.d.ts.map +0 -1
  487. package/dist/upload.js +0 -159
  488. package/dist/upload.js.map +0 -1
  489. package/dist/verify/runtime/index.d.ts +0 -16
  490. package/dist/verify/runtime/index.d.ts.map +0 -1
  491. package/dist/verify/runtime/index.js +0 -16
  492. package/dist/verify/runtime/index.js.map +0 -1
  493. package/scripts/demoCheck.ts +0 -42
  494. package/src/core/duplicates/index.spec.ts +0 -116
  495. package/src/core/duplicates/index.ts +0 -203
  496. package/src/core/namespace/helpers.ts +0 -31
  497. package/src/core/namespace/index.ts +0 -12
  498. package/src/core/namespace/memoryStore.ts +0 -77
  499. package/src/core/namespace/namespace.spec.ts +0 -117
  500. package/src/core/namespace/types.ts +0 -53
  501. package/src/game/core/DisposeRegistry.spec.ts +0 -53
  502. package/src/game/core/DisposeRegistry.ts +0 -70
  503. package/src/game/core/drawBudget.spec.ts +0 -51
  504. package/src/game/core/drawBudget.ts +0 -75
  505. package/src/game/core/fixedTimestep.spec.ts +0 -91
  506. package/src/game/core/fixedTimestep.ts +0 -79
  507. package/src/game/core/index.ts +0 -16
  508. package/src/game/core/inputCollector.spec.ts +0 -29
  509. package/src/game/core/inputCollector.ts +0 -245
  510. package/src/game/core/resizeCanvas.ts +0 -31
  511. package/src/game/react/index.ts +0 -10
  512. package/src/game/react/useGameEngine.ts +0 -125
  513. package/src/react/canvas/CanvasNavHUD.spec.tsx +0 -62
  514. package/src/react/canvas/CanvasNavHUD.tsx +0 -210
  515. package/src/react/canvas/fitLabel.spec.ts +0 -82
  516. package/src/react/canvas/fitLabel.ts +0 -150
  517. package/src/react/canvas/index.ts +0 -15
  518. package/src/react/canvas/lod.ts +0 -53
  519. package/src/react/seo/HeadProvider.tsx +0 -67
  520. package/src/react/seo/applyHeadToDocument.ts +0 -73
  521. package/src/react/seo/index.ts +0 -12
  522. package/src/react/seo/seo.spec.tsx +0 -101
  523. package/src/react/timeline/ClipView.tsx +0 -146
  524. package/src/react/timeline/Playhead.tsx +0 -63
  525. package/src/react/timeline/TimeRuler.tsx +0 -85
  526. package/src/react/timeline/TimelineSurface.tsx +0 -157
  527. package/src/react/timeline/TrackLane.tsx +0 -87
  528. package/src/react/timeline/index.ts +0 -12
  529. package/src/react/timeline/timeline.spec.tsx +0 -175
  530. package/src/server/private-media/index.ts +0 -45
  531. package/src/server/seo/index.ts +0 -8
  532. package/src/server/seo/mountSeoRoutes.ts +0 -37
  533. package/src/server/seo/seo.spec.ts +0 -128
  534. package/src/server/seo/serveHeadInjectedIndex.ts +0 -36
  535. package/src/upload.spec.ts +0 -300
  536. package/src/upload.ts +0 -288
  537. package/src/verify/runtime/index.ts +0 -64
@@ -0,0 +1,413 @@
1
+ /*
2
+ * cursedbelt component-class source registration.
3
+ * Consuming apps import (after `@import "tailwindcss";`):
4
+ * @import "cursedbelt/styles.css";
5
+ * @import "cursedbelt/theme.css";
6
+ * This `@source` makes Tailwind v4 scan cursedbelt's source files so the utility
7
+ * classes used by its components are generated in the app's stylesheet.
8
+ *
9
+ * ── Two ways in, and which one an app wants ──────────────────────────────────
10
+ * `@source "."` is the expensive half: it points Tailwind's JIT at cursedbelt's
11
+ * ENTIRE source tree, so the app emits the union of the whole design system
12
+ * whether it renders three components or eighty, and its own build walks 827
13
+ * files it does not own. Everything else in this file is CSS the components
14
+ * genuinely need and no app can do without.
15
+ *
16
+ * A CSS `@import` takes the whole file, so the split is two more subpaths:
17
+ *
18
+ * cursedbelt/styles.css this file — the real CSS + the `@source` scan
19
+ * cursedbelt/styles-static.css the same file MINUS the `@source` line
20
+ * cursedbelt/styles-utilities.css the utilities that `@source` line would have
21
+ * produced, precompiled at cursedbelt's build
22
+ *
23
+ * The second two are a PAIR and neither is usable alone — `styles-static.css` on
24
+ * its own gets the tooltip pointer-events fix, the Progress keyframes, the
25
+ * lightbox bridge, the ambient/glass layer and `tw-animate-css`, and emits none
26
+ * of cursedbelt's utility classes, i.e. an unstyled app:
27
+ *
28
+ * @import "tailwindcss";
29
+ * @import "cursedbelt/styles-static.css";
30
+ * @import "cursedbelt/styles-utilities.css";
31
+ * @import "cursedbelt/theme.css";
32
+ *
33
+ * 🔴 Do NOT hand-list cursedbelt's component files to get the utilities back.
34
+ * Tailwind v4 resolves every `@source` to a DIRECTORY and scans it recursively —
35
+ * a file path and a glob are both silently widened to their parent — and
36
+ * `VirtualList`/`VirtualCardGrid` live at the root of `src/react/`, so the finest
37
+ * grain an app can write is the whole design system. A relative `@source` reaching
38
+ * into this package's source tree is also a `file:` dependency wearing a
39
+ * stylesheet's clothes, and it buys nothing: it is the thing the previous
40
+ * generation's 29-line-per-app arrangement is remembered for, and those 29 lines
41
+ * were never file-level scoping either.
42
+ *
43
+ * The pair is not SMALLER than this file — measured, both routes emit the same
44
+ * rules within 54 bytes. What it buys is a build that scans nothing of another
45
+ * package's source tree, and a `styles-static.css` that finally has a correct
46
+ * use. The measurements, and what would actually shrink a consumer, are in the
47
+ * header of `scripts/generateUtilityStyles.ts`.
48
+ *
49
+ * 🔴 This header is in BOTH of the first two files, because one is generated from
50
+ * the other and a test holds them byte-identical apart from the `@source` line.
51
+ * Always edit `src/styles.css`; never `src/styles-static.css`, which
52
+ * `scripts/generateStaticStyles.ts` rewrites on every `bun run build` and
53
+ * `src/stylesStaticMatches.spec.ts` fails on when it is stale. Editing this file
54
+ * invalidates `src/styles-utilities.css` too — it is compiled against the static
55
+ * variant, `scripts/generateUtilityStyles.ts` rewrites it in the same build step,
56
+ * and `src/stylesUtilitiesMatches.spec.ts` is what fails when it is stale.
57
+ */
58
+
59
+ /* Animation utilities (animate-in/out, fade/zoom/slide-in-from-*) consumed by the
60
+ floating layer's FLOATING_ANIMATION and the modal/overlay family — the Tailwind v4
61
+ successor to tailwindcss-animate. Imported here so every consuming app inherits the
62
+ enter/exit motion with no per-app wiring. Lands after `@import "tailwindcss"` since
63
+ apps import this file after Tailwind. */
64
+ @import "tw-animate-css";
65
+
66
+ /*
67
+ * Typography utilities (task cbux-41) — theme-token-based replacements for the
68
+ * `uppercase tracking-wide text-muted-foreground text-xs` / `font-mono bg-…` clusters
69
+ * that were hand-rolled per call site. One class each, so a future restyle of "how a
70
+ * section header reads" or "how inline code reads" is a two-rule change here.
71
+ */
72
+
73
+ /* Category / section header label: small, bold, uppercase, wide tracking, muted.
74
+ Use for group headers, panel eyebrows, table section labels — anywhere a
75
+ "SECTION" style caption sits above real content. */
76
+ .cb-meta-label {
77
+ /* 🔴 12px, not the 11px this was until 2026-08-19 (unit 11). DESIGN.md §4 states a
78
+ FLOOR for secondary metadata and this class IS the fleet's section-label style, so
79
+ 11px here was the law being broken by the design system's own stylesheet — in a file
80
+ the `micro-typography-floor` lint did not scan, because the rule ran over `src/react`
81
+ only. It scans this file now too. */
82
+ font-size: 0.75rem; /* 12px */
83
+ font-weight: 700;
84
+ text-transform: uppercase;
85
+ letter-spacing: 0.06em;
86
+ color: var(--muted-foreground);
87
+ /* 🔴 NOT `user-select: none`, which this carried until 2026-08-23 (owner report:
88
+ *"I cannot highlight text on the card"* — the KPI tiles on orch's Insights board).
89
+ This class is the label of every stat tile, table section and panel eyebrow in the
90
+ fleet, i.e. the TOP-LEFT of a card and the natural place a drag-select starts.
91
+ Chrome refuses to begin a selection whose anchor is in an unselectable node, so one
92
+ declaration here made whole cards feel unselectable even though the value beside the
93
+ label never was. A label is content — it is what tells you what the number you are
94
+ copying MEANS — so it is selectable like everything else. Unselectable text belongs
95
+ on things that are gestures rather than content: a drag handle, a menu item, a
96
+ slider, a line-number gutter. */
97
+ }
98
+
99
+ /* Inline/block monospace "code" surface: mono font on the sunken-surface token
100
+ (never a hardcoded dark-slate box) — used for code snippets, IDs, hashes, and
101
+ other literal/technical values that want to read as data, not prose. */
102
+ .cb-code {
103
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
104
+ font-size: 0.75rem; /* 12px */
105
+ line-height: 1.5;
106
+ background-color: var(--surface-sunken);
107
+ color: var(--foreground);
108
+ border-radius: var(--radius-sm);
109
+ padding: 0.5rem 0.625rem;
110
+ }
111
+
112
+ /* Indeterminate sweep for the Progress bar (no `value`): the 1/3-width fill slides
113
+ across the track on loop. Registered as a Tailwind theme animation so the
114
+ `animate-progress-indeterminate` utility is generated in consuming apps. */
115
+ @theme {
116
+ --animate-progress-indeterminate: progress-indeterminate 1.2s ease-in-out infinite;
117
+ }
118
+ @keyframes progress-indeterminate {
119
+ from {
120
+ transform: translateX(-100%);
121
+ }
122
+ to {
123
+ transform: translateX(300%);
124
+ }
125
+ }
126
+
127
+ /*
128
+ * Media subsystem (task 19) theme bridge — map the design tokens onto the CSS custom
129
+ * properties of yet-another-react-lightbox so the lightbox reads as part of the app
130
+ * (and its backdrop tracks light/dark instead of staying a fixed black). The doubled
131
+ * `.yarl__root.yarl__root` selector outranks YARL's own `.yarl__root` defaults no
132
+ * matter the stylesheet load order. The lightbox is an always-dark overlay, so the
133
+ * controls stay light; only the surfaces + accents derive from tokens.
134
+ */
135
+ .yarl__root.yarl__root {
136
+ --yarl__color_backdrop: color-mix(in srgb, #000 90%, var(--background)); /* guardrails-ignore no-hardcoded-colors: third-party yarl lightbox library CSS custom properties require literal color values */
137
+ --yarl__color_button: rgb(255 255 255 / 0.78); /* guardrails-ignore no-hardcoded-colors: third-party yarl lightbox library CSS custom properties require literal color values */
138
+ --yarl__color_button_active: #ffffff; /* guardrails-ignore no-hardcoded-colors: third-party yarl lightbox library CSS custom properties require literal color values */
139
+ --yarl__color_button_disabled: rgb(255 255 255 / 0.35); /* guardrails-ignore no-hardcoded-colors: third-party yarl lightbox library CSS custom properties require literal color values */
140
+ --yarl__slide_icon_loading_color: var(--accent);
141
+ --yarl__slide_icon_error_color: var(--destructive);
142
+ --yarl__counter_color: rgb(255 255 255 / 0.75); /* guardrails-ignore no-hardcoded-colors: third-party yarl lightbox library CSS custom properties require literal color values */
143
+
144
+ /* Thumbnails strip → token surfaces + accent active border. */
145
+ --yarl__thumbnails_container_background_color: transparent;
146
+ --yarl__thumbnails_thumbnail_background: var(--card-overlay);
147
+ --yarl__thumbnails_thumbnail_border_color: var(--border-strong);
148
+ --yarl__thumbnails_thumbnail_active_border_color: var(--accent-solid);
149
+ --yarl__thumbnails_thumbnail_border_radius: var(--radius-md);
150
+ --yarl__thumbnails_thumbnail_icon_color: #ffffff; /* guardrails-ignore no-hardcoded-colors: third-party yarl lightbox library CSS custom properties require literal color values */
151
+
152
+ /* Captions → translucent token-tinted bar. */
153
+ --yarl__slide_captions_container_background: color-mix(
154
+ in srgb,
155
+ var(--background) 55%,
156
+ transparent
157
+ );
158
+ --yarl__slide_title_color: #ffffff; /* guardrails-ignore no-hardcoded-colors: third-party yarl lightbox library CSS custom properties require literal color values */
159
+ --yarl__slide_description_color: rgb(255 255 255 / 0.8); /* guardrails-ignore no-hardcoded-colors: third-party yarl lightbox library CSS custom properties require literal color values */
160
+ }
161
+
162
+ /*
163
+ * Tooltip bubbles are transient hints and must NEVER be pointer targets: a
164
+ * focus-opened tooltip (e.g. a discard prompt auto-focusing its safe default
165
+ * button) otherwise hovers over the adjacent control and eats the user's click.
166
+ * The Content element carries `pointer-events-none`, but Radix positions it inside
167
+ * a transparent `data-radix-popper-content-wrapper` div that hit-tests on its own,
168
+ * so the wrapper must be neutralized too — scoped via :has() to tooltip bubbles
169
+ * only (popovers/menus/selects share the same popper wrapper and stay interactive).
170
+ */
171
+ [data-radix-popper-content-wrapper]:has(> [data-cb-tooltip]) {
172
+ pointer-events: none;
173
+ }
174
+ /* !important: when a modal dialog disables body pointer events, Radix's
175
+ DismissableLayer re-enables the tooltip layer with an INLINE `pointer-events:
176
+ auto` — exactly the case (tooltip inside an open modal) this rule exists for. */
177
+ [data-cb-tooltip] {
178
+ pointer-events: none !important;
179
+ }
180
+
181
+ /*
182
+ * ══════════════════════════ The ambient / glass layer ══════════════════════════
183
+ *
184
+ * The decorative half of the design language, as three plain component classes so
185
+ * they cost nothing to adopt: a scoped stylesheet gets them through the static
186
+ * import, with no per-component `@source` line to remember (the silent failure
187
+ * mode `cursed-satellites/scripts/cssSources.test.ts` exists for).
188
+ *
189
+ * All three read TOKENS — `--ambient-1..3`, `--ambient-strength`, `--glass-*`,
190
+ * `--accent-gradient` (theme.css) — never literals, so an app re-brands its whole
191
+ * atmosphere by overriding variables and every surface follows. That is the point:
192
+ * this began life as `.cb-auth-aurora`, a one-off welded to the sign-in card and
193
+ * to the marketing palette, and could not be reused by anything. Nothing here
194
+ * knows the word "aurora"; the aurora theme is just the first caller.
195
+ */
196
+
197
+ /* ── AmbientBackdrop ─────────────────────────────────────────────────────────
198
+ The lit field a page floats on: a soft wash from the top plus three big blurred
199
+ color blobs, screen-blended so they ADD light rather than paint over content.
200
+ `isolation` on the host is what keeps `mix-blend-mode: screen` blending against
201
+ this stack instead of punching through to whatever is behind the app. */
202
+ .cb-ambient-host {
203
+ position: relative;
204
+ isolation: isolate;
205
+ }
206
+
207
+ .cb-ambient {
208
+ position: absolute;
209
+ inset: 0;
210
+ z-index: -1;
211
+ overflow: hidden;
212
+ pointer-events: none;
213
+ background: radial-gradient(
214
+ ellipse 120% 60% at 50% -10%,
215
+ color-mix(in srgb, var(--ambient-2) calc(var(--ambient-strength) * 100%), transparent),
216
+ transparent 60%
217
+ );
218
+ }
219
+
220
+ /* `position: fixed` variant — the backdrop stays put while the app scrolls, which
221
+ is what makes a long page feel like it sits IN a space rather than on a
222
+ repeating texture. Separate class rather than a prop-driven inline style so the
223
+ value stays in CSS with the rest of the layer. */
224
+ .cb-ambient--fixed {
225
+ position: fixed;
226
+ }
227
+
228
+ .cb-ambient__blob {
229
+ position: absolute;
230
+ border-radius: 999px;
231
+ /* The blur is what turns three circles into weather. Below ~60px they read as
232
+ circles; the compositor cost is flat in radius, so this is free. */
233
+ filter: blur(90px);
234
+ mix-blend-mode: screen;
235
+ will-change: transform;
236
+ }
237
+
238
+ /* Each blob's alpha is `--ambient-strength` scaled by its own weight, so a theme
239
+ (or the component's `intensity` prop) tunes the whole field with one number and
240
+ the three hues keep their relative balance. */
241
+ .cb-ambient__blob--a {
242
+ width: 60vw;
243
+ height: 60vw;
244
+ min-width: 460px;
245
+ min-height: 460px;
246
+ left: -16vw;
247
+ top: -20vw;
248
+ background: radial-gradient(
249
+ circle at 35% 35%,
250
+ color-mix(in srgb, var(--ambient-1) calc(var(--ambient-strength) * 200%), transparent),
251
+ transparent 62%
252
+ );
253
+ }
254
+ .cb-ambient__blob--b {
255
+ width: 52vw;
256
+ height: 52vw;
257
+ min-width: 420px;
258
+ min-height: 420px;
259
+ right: -18vw;
260
+ top: -12vw;
261
+ background: radial-gradient(
262
+ circle at 60% 40%,
263
+ color-mix(in srgb, var(--ambient-2) calc(var(--ambient-strength) * 215%), transparent),
264
+ transparent 64%
265
+ );
266
+ }
267
+ .cb-ambient__blob--c {
268
+ width: 42vw;
269
+ height: 42vw;
270
+ min-width: 360px;
271
+ min-height: 360px;
272
+ left: 28vw;
273
+ bottom: -22vw;
274
+ background: radial-gradient(
275
+ circle at 50% 50%,
276
+ color-mix(in srgb, var(--ambient-3) calc(var(--ambient-strength) * 100%), transparent),
277
+ transparent 62%
278
+ );
279
+ }
280
+
281
+ /* Drift only when the visitor hasn't asked for reduced motion. Minute-scale
282
+ periods, all mutually prime-ish, so the field never visibly loops. */
283
+ @media (prefers-reduced-motion: no-preference) {
284
+ .cb-ambient__blob--a {
285
+ animation: cb-ambient-drift-a 46s ease-in-out infinite alternate;
286
+ }
287
+ .cb-ambient__blob--b {
288
+ animation: cb-ambient-drift-b 58s ease-in-out infinite alternate;
289
+ }
290
+ .cb-ambient__blob--c {
291
+ animation: cb-ambient-drift-c 70s ease-in-out infinite alternate;
292
+ }
293
+ }
294
+ @keyframes cb-ambient-drift-a {
295
+ from { transform: translate3d(0, 0, 0) scale(1); }
296
+ to { transform: translate3d(6vw, 5vh, 0) scale(1.12); }
297
+ }
298
+ @keyframes cb-ambient-drift-b {
299
+ from { transform: translate3d(0, 0, 0) scale(1.08); }
300
+ to { transform: translate3d(-5vw, 6vh, 0) scale(0.96); }
301
+ }
302
+ @keyframes cb-ambient-drift-c {
303
+ from { transform: translate3d(0, 0, 0); }
304
+ to { transform: translate3d(8vw, -4vh, 0); }
305
+ }
306
+
307
+ /* Fine grain over the whole field. Big soft gradients BAND on 8-bit displays —
308
+ this is the standard dither, and it is an inline SVG so it costs no request. */
309
+ .cb-ambient__grain {
310
+ position: absolute;
311
+ inset: 0;
312
+ pointer-events: none;
313
+ opacity: 0.045;
314
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");
315
+ }
316
+
317
+ /* ── Glass ───────────────────────────────────────────────────────────────────
318
+ `Surface level="glass"`. A translucent fill, a 1px light edge and a backdrop
319
+ blur, so the ambient field reads THROUGH the panel. In the default LIGHT theme
320
+ the fill is a near-opaque white frost — glass over white is white — so a glass
321
+ Surface is never a legibility regression on an app that never opted into a
322
+ theme. `backdrop-filter` degrades to a plain translucent fill where it is
323
+ unsupported, which is the correct failure. */
324
+ .cb-glass {
325
+ background: var(--glass-bg);
326
+ border: 1px solid var(--glass-edge);
327
+ box-shadow: var(--glass-shadow);
328
+ backdrop-filter: blur(var(--glass-blur)) saturate(140%);
329
+ -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);
330
+ }
331
+
332
+ /* Chrome glass: the fill + blur ONLY — no edge, no shadow. For app chrome that owns
333
+ its own directional border (a header's `border-b`, a nav rail's `border-r`); the
334
+ full `.cb-glass` would draw a box around it. */
335
+ .cb-glass-chrome {
336
+ background: var(--glass-bg-strong);
337
+ backdrop-filter: blur(var(--glass-blur)) saturate(140%);
338
+ -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);
339
+ }
340
+
341
+ /* The heavier fill, for a surface that has to hold dense text (a sidebar, a
342
+ sticky header) where maximum see-through would cost legibility. */
343
+ .cb-glass-strong {
344
+ background: var(--glass-bg-strong);
345
+ border: 1px solid var(--glass-edge);
346
+ box-shadow: var(--glass-shadow);
347
+ backdrop-filter: blur(var(--glass-blur)) saturate(140%);
348
+ -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);
349
+ }
350
+
351
+ /* ── Brand gradient ──────────────────────────────────────────────────────────
352
+ Text in the accent ramp (a product wordmark, a hero headline). Deliberately NOT
353
+ offered for body copy: gradient text has no single contrast ratio to audit. */
354
+ .cb-gradient-text {
355
+ background: var(--accent-gradient);
356
+ -webkit-background-clip: text;
357
+ background-clip: text;
358
+ color: transparent;
359
+ }
360
+
361
+ /* A filled surface in the accent ramp — the "this is the one action" treatment.
362
+ The `.cb-gradient-fill` class carries its own white label because a gradient
363
+ has no token to derive an on-fill foreground from; every ramp this is used with
364
+ is saturated enough for white to clear AA (the same contract
365
+ `--accent-solid-foreground` makes for the flat solid). */
366
+ .cb-gradient-fill {
367
+ background: var(--accent-gradient);
368
+ color: #ffffff; /* guardrails-ignore no-hardcoded-colors: white label on the saturated accent gradient — the fill's own on-surface foreground, mode-independent by the same contract as --accent-solid-foreground */
369
+ border: 0;
370
+ transition:
371
+ filter var(--duration-fast, 120ms) ease,
372
+ box-shadow var(--duration-fast, 120ms) ease;
373
+ }
374
+ .cb-gradient-fill:hover:not(:disabled) {
375
+ background: var(--accent-gradient);
376
+ filter: brightness(1.08);
377
+ }
378
+
379
+ /*
380
+ * Aurora front door — the logged-out sign-in / register surface.
381
+ *
382
+ * Now just a THIN composition over the layer above: the aurora theme scope
383
+ * (`.cb-aurora` in theme.css) supplies the palette, `AmbientBackdrop` paints the
384
+ * field, `Surface level="glass"` is the card, `.cb-gradient-text` is the title.
385
+ * What remains here is the two things that are genuinely about this surface: it
386
+ * fills the viewport with the canvas color, and its submit button is the
387
+ * gradient action. Scoped under `.cb-auth-aurora` (AuthCard's `aurora` prop) so
388
+ * the product's own in-app chrome — including the EMBEDDED AuthCard in the
389
+ * account panel — is untouched.
390
+ */
391
+ .cb-auth-aurora {
392
+ position: relative;
393
+ isolation: isolate;
394
+ background-color: var(--background);
395
+ color: var(--foreground);
396
+ overflow: hidden;
397
+ }
398
+
399
+ /* Primary action carries the accent gradient instead of the flat solid.
400
+ Specificity (one class + the attribute-qualified element) clears Tailwind's
401
+ single-class `bg-accent-solid`. */
402
+ .cb-auth-aurora button[type="submit"] {
403
+ background: var(--accent-gradient);
404
+ color: #ffffff; /* guardrails-ignore no-hardcoded-colors: white label on the saturated accent gradient — the button's own on-fill foreground, mode-independent */
405
+ border: 0;
406
+ box-shadow: 0 8px 24px color-mix(in srgb, var(--ambient-1) 20%, transparent);
407
+ transition: filter var(--duration-fast, 120ms) ease, box-shadow var(--duration-fast, 120ms) ease;
408
+ }
409
+ .cb-auth-aurora button[type="submit"]:hover:not(:disabled) {
410
+ background: var(--accent-gradient);
411
+ filter: brightness(1.08);
412
+ box-shadow: 0 10px 28px color-mix(in srgb, var(--ambient-2) 30%, transparent);
413
+ }