@teseor/css 1.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 (298) hide show
  1. package/README.md +102 -0
  2. package/dist/compiled.css +4463 -0
  3. package/dist/index.css +4445 -0
  4. package/fonts/.gitkeep +9 -0
  5. package/package.json +38 -0
  6. package/src/00-config/layers/layers.scss +1 -0
  7. package/src/00-config/mixins/_border.scss +13 -0
  8. package/src/00-config/mixins/index.scss +1 -0
  9. package/src/00-config/tokens/_variables.scss +120 -0
  10. package/src/00-config/tokens/borders/index.scss +6 -0
  11. package/src/00-config/tokens/colors/colors.docs.json +168 -0
  12. package/src/00-config/tokens/colors/index.scss +25 -0
  13. package/src/00-config/tokens/grid/grid.docs.json +54 -0
  14. package/src/00-config/tokens/grid/index.scss +11 -0
  15. package/src/00-config/tokens/index.scss +15 -0
  16. package/src/00-config/tokens/input.scss +14 -0
  17. package/src/00-config/tokens/motion/index.scss +25 -0
  18. package/src/00-config/tokens/radius/index.scss +7 -0
  19. package/src/00-config/tokens/semantic/colors/index.scss +30 -0
  20. package/src/00-config/tokens/semantic/spacing/index.scss +10 -0
  21. package/src/00-config/tokens/shadows/index.scss +5 -0
  22. package/src/00-config/tokens/spacing/index.scss +15 -0
  23. package/src/00-config/tokens/spacing/spacing.docs.json +114 -0
  24. package/src/00-config/tokens/theming.docs.json +77 -0
  25. package/src/00-config/tokens/typography/index.scss +119 -0
  26. package/src/00-config/tokens/zindex/index.scss +14 -0
  27. package/src/01-reset/index.scss +1 -0
  28. package/src/01-reset/reset.scss +8 -0
  29. package/src/02-base/index.scss +2 -0
  30. package/src/02-base/root/root.scss +12 -0
  31. package/src/02-base/typography/typography.docs.json +94 -0
  32. package/src/02-base/typography/typography.scss +145 -0
  33. package/src/03-layout/app-shell/app-shell.api.json +26 -0
  34. package/src/03-layout/app-shell/app-shell.docs.json +119 -0
  35. package/src/03-layout/app-shell/index.scss +5 -0
  36. package/src/03-layout/box/box.api.json +15 -0
  37. package/src/03-layout/box/box.docs.json +57 -0
  38. package/src/03-layout/box/index.scss +34 -0
  39. package/src/03-layout/center/center.api.json +6 -0
  40. package/src/03-layout/center/center.docs.json +24 -0
  41. package/src/03-layout/center/index.scss +11 -0
  42. package/src/03-layout/cluster/cluster.api.json +10 -0
  43. package/src/03-layout/cluster/cluster.docs.json +129 -0
  44. package/src/03-layout/cluster/index.scss +18 -0
  45. package/src/03-layout/container/container.api.json +13 -0
  46. package/src/03-layout/container/index.scss +17 -0
  47. package/src/03-layout/flex/flex.api.json +15 -0
  48. package/src/03-layout/flex/flex.docs.json +56 -0
  49. package/src/03-layout/flex/index.scss +51 -0
  50. package/src/03-layout/grid/grid.api.json +10 -0
  51. package/src/03-layout/grid/grid.docs.json +116 -0
  52. package/src/03-layout/grid/index.scss +15 -0
  53. package/src/03-layout/index.scss +11 -0
  54. package/src/03-layout/main/index.scss +17 -0
  55. package/src/03-layout/main/main.api.json +13 -0
  56. package/src/03-layout/sidebar/index.scss +30 -0
  57. package/src/03-layout/sidebar/sidebar.api.json +13 -0
  58. package/src/03-layout/sidebar-nav/index.scss +209 -0
  59. package/src/03-layout/sidebar-nav/sidebar-nav-all.png +0 -0
  60. package/src/03-layout/sidebar-nav/sidebar-nav.api.json +115 -0
  61. package/src/03-layout/sidebar-nav/sidebar-nav.docs.json +100 -0
  62. package/src/03-layout/sidebar-nav/sidebar-nav.visual.spec.ts +14 -0
  63. package/src/03-layout/stack/index.scss +13 -0
  64. package/src/03-layout/stack/stack.api.json +10 -0
  65. package/src/03-layout/stack/stack.docs.json +131 -0
  66. package/src/04-components/accordion/accordion-visual.png +0 -0
  67. package/src/04-components/accordion/accordion.api.json +19 -0
  68. package/src/04-components/accordion/accordion.docs.json +51 -0
  69. package/src/04-components/accordion/accordion.visual.spec.ts +14 -0
  70. package/src/04-components/accordion/index.scss +78 -0
  71. package/src/04-components/alert/alert-visual.png +0 -0
  72. package/src/04-components/alert/alert.api.json +91 -0
  73. package/src/04-components/alert/alert.docs.json +79 -0
  74. package/src/04-components/alert/alert.visual.spec.ts +14 -0
  75. package/src/04-components/alert/index.scss +108 -0
  76. package/src/04-components/avatar/avatar-visual.png +0 -0
  77. package/src/04-components/avatar/avatar.api.json +70 -0
  78. package/src/04-components/avatar/avatar.docs.json +200 -0
  79. package/src/04-components/avatar/avatar.visual.spec.ts +14 -0
  80. package/src/04-components/avatar/index.scss +104 -0
  81. package/src/04-components/badge/badge-visual.png +0 -0
  82. package/src/04-components/badge/badge.api.json +86 -0
  83. package/src/04-components/badge/badge.docs.json +89 -0
  84. package/src/04-components/badge/badge.visual.spec.ts +14 -0
  85. package/src/04-components/badge/index.scss +64 -0
  86. package/src/04-components/breadcrumb/breadcrumb-visual.png +0 -0
  87. package/src/04-components/breadcrumb/breadcrumb.api.json +31 -0
  88. package/src/04-components/breadcrumb/breadcrumb.docs.json +59 -0
  89. package/src/04-components/breadcrumb/breadcrumb.visual.spec.ts +14 -0
  90. package/src/04-components/breadcrumb/index.scss +77 -0
  91. package/src/04-components/button/button-visual.png +0 -0
  92. package/src/04-components/button/button.api.json +138 -0
  93. package/src/04-components/button/button.docs.json +75 -0
  94. package/src/04-components/button/button.visual.spec.ts +14 -0
  95. package/src/04-components/button/index.scss +222 -0
  96. package/src/04-components/button-group/button-group-visual.png +0 -0
  97. package/src/04-components/button-group/button-group.api.json +11 -0
  98. package/src/04-components/button-group/button-group.docs.json +52 -0
  99. package/src/04-components/button-group/button-group.visual.spec.ts +14 -0
  100. package/src/04-components/button-group/index.scss +78 -0
  101. package/src/04-components/card/card-visual.png +0 -0
  102. package/src/04-components/card/card.api.json +53 -0
  103. package/src/04-components/card/card.docs.json +103 -0
  104. package/src/04-components/card/card.visual.spec.ts +14 -0
  105. package/src/04-components/card/index.scss +41 -0
  106. package/src/04-components/checkbox/checkbox-visual.png +0 -0
  107. package/src/04-components/checkbox/checkbox.api.json +50 -0
  108. package/src/04-components/checkbox/checkbox.docs.json +151 -0
  109. package/src/04-components/checkbox/checkbox.visual.spec.ts +14 -0
  110. package/src/04-components/checkbox/index.scss +104 -0
  111. package/src/04-components/code/code-visual.png +0 -0
  112. package/src/04-components/code/code.api.json +47 -0
  113. package/src/04-components/code/code.docs.json +84 -0
  114. package/src/04-components/code/code.visual.spec.ts +14 -0
  115. package/src/04-components/code/index.scss +64 -0
  116. package/src/04-components/data-list/data-list-visual.png +0 -0
  117. package/src/04-components/data-list/data-list.api.json +23 -0
  118. package/src/04-components/data-list/data-list.docs.json +79 -0
  119. package/src/04-components/data-list/data-list.visual.spec.ts +14 -0
  120. package/src/04-components/data-list/index.scss +98 -0
  121. package/src/04-components/dialog/dialog-visual.png +0 -0
  122. package/src/04-components/dialog/dialog.api.json +23 -0
  123. package/src/04-components/dialog/dialog.docs.json +58 -0
  124. package/src/04-components/dialog/dialog.visual.spec.ts +14 -0
  125. package/src/04-components/dialog/index.scss +74 -0
  126. package/src/04-components/disclosure/disclosure-visual.png +0 -0
  127. package/src/04-components/disclosure/disclosure.api.json +31 -0
  128. package/src/04-components/disclosure/disclosure.docs.json +73 -0
  129. package/src/04-components/disclosure/disclosure.visual.spec.ts +14 -0
  130. package/src/04-components/disclosure/index.scss +111 -0
  131. package/src/04-components/divider/divider-visual.png +0 -0
  132. package/src/04-components/divider/divider.api.json +30 -0
  133. package/src/04-components/divider/divider.docs.json +68 -0
  134. package/src/04-components/divider/divider.visual.spec.ts +14 -0
  135. package/src/04-components/divider/index.scss +115 -0
  136. package/src/04-components/drawer/drawer-visual.png +0 -0
  137. package/src/04-components/drawer/drawer.api.json +39 -0
  138. package/src/04-components/drawer/drawer.docs.json +78 -0
  139. package/src/04-components/drawer/drawer.visual.spec.ts +14 -0
  140. package/src/04-components/drawer/index.scss +251 -0
  141. package/src/04-components/field/field-visual.png +0 -0
  142. package/src/04-components/field/field.api.json +11 -0
  143. package/src/04-components/field/field.docs.json +59 -0
  144. package/src/04-components/field/field.visual.spec.ts +14 -0
  145. package/src/04-components/field/index.scss +44 -0
  146. package/src/04-components/form-error/form-error-visual.png +0 -0
  147. package/src/04-components/form-error/form-error.api.json +19 -0
  148. package/src/04-components/form-error/form-error.docs.json +40 -0
  149. package/src/04-components/form-error/form-error.visual.spec.ts +14 -0
  150. package/src/04-components/form-error/index.scss +31 -0
  151. package/src/04-components/form-helper/form-helper-visual.png +0 -0
  152. package/src/04-components/form-helper/form-helper.api.json +19 -0
  153. package/src/04-components/form-helper/form-helper.docs.json +31 -0
  154. package/src/04-components/form-helper/form-helper.visual.spec.ts +14 -0
  155. package/src/04-components/form-helper/index.scss +24 -0
  156. package/src/04-components/heading/heading-visual.png +0 -0
  157. package/src/04-components/heading/heading.api.json +83 -0
  158. package/src/04-components/heading/heading.docs.json +98 -0
  159. package/src/04-components/heading/heading.visual.spec.ts +14 -0
  160. package/src/04-components/heading/index.scss +61 -0
  161. package/src/04-components/icon/icon-visual.png +0 -0
  162. package/src/04-components/icon/icon.api.json +56 -0
  163. package/src/04-components/icon/icon.docs.json +155 -0
  164. package/src/04-components/icon/icon.visual.spec.ts +14 -0
  165. package/src/04-components/icon/index.scss +79 -0
  166. package/src/04-components/index.scss +41 -0
  167. package/src/04-components/input/index.scss +154 -0
  168. package/src/04-components/input/input-visual.png +0 -0
  169. package/src/04-components/input/input.api.json +85 -0
  170. package/src/04-components/input/input.docs.json +189 -0
  171. package/src/04-components/input/input.visual.spec.ts +14 -0
  172. package/src/04-components/label/index.scss +46 -0
  173. package/src/04-components/label/label-visual.png +0 -0
  174. package/src/04-components/label/label.api.json +27 -0
  175. package/src/04-components/label/label.docs.json +73 -0
  176. package/src/04-components/label/label.visual.spec.ts +14 -0
  177. package/src/04-components/link/index.scss +73 -0
  178. package/src/04-components/link/link-visual.png +0 -0
  179. package/src/04-components/link/link.api.json +39 -0
  180. package/src/04-components/link/link.docs.json +104 -0
  181. package/src/04-components/link/link.visual.spec.ts +14 -0
  182. package/src/04-components/menu/index.scss +145 -0
  183. package/src/04-components/menu/menu-visual.png +0 -0
  184. package/src/04-components/menu/menu.api.json +47 -0
  185. package/src/04-components/menu/menu.docs.json +81 -0
  186. package/src/04-components/menu/menu.visual.spec.ts +14 -0
  187. package/src/04-components/modal/index.scss +93 -0
  188. package/src/04-components/modal/modal-visual.png +0 -0
  189. package/src/04-components/modal/modal.api.json +43 -0
  190. package/src/04-components/modal/modal.docs.json +86 -0
  191. package/src/04-components/modal/modal.visual.spec.ts +14 -0
  192. package/src/04-components/overlay/index.scss +49 -0
  193. package/src/04-components/overlay/overlay-visual.png +0 -0
  194. package/src/04-components/overlay/overlay.api.json +23 -0
  195. package/src/04-components/overlay/overlay.docs.json +63 -0
  196. package/src/04-components/overlay/overlay.visual.spec.ts +14 -0
  197. package/src/04-components/pagination/index.scss +114 -0
  198. package/src/04-components/pagination/pagination-visual.png +0 -0
  199. package/src/04-components/pagination/pagination.api.json +39 -0
  200. package/src/04-components/pagination/pagination.docs.json +88 -0
  201. package/src/04-components/pagination/pagination.visual.spec.ts +14 -0
  202. package/src/04-components/popover/index.scss +114 -0
  203. package/src/04-components/popover/popover-visual.png +0 -0
  204. package/src/04-components/popover/popover.api.json +39 -0
  205. package/src/04-components/popover/popover.docs.json +70 -0
  206. package/src/04-components/popover/popover.visual.spec.ts +14 -0
  207. package/src/04-components/progress/index.scss +102 -0
  208. package/src/04-components/progress/progress-visual.png +0 -0
  209. package/src/04-components/progress/progress.api.json +23 -0
  210. package/src/04-components/progress/progress.docs.json +87 -0
  211. package/src/04-components/progress/progress.visual.spec.ts +14 -0
  212. package/src/04-components/radio/index.scss +96 -0
  213. package/src/04-components/radio/radio-visual.png +0 -0
  214. package/src/04-components/radio/radio.api.json +46 -0
  215. package/src/04-components/radio/radio.docs.json +159 -0
  216. package/src/04-components/radio/radio.visual.spec.ts +14 -0
  217. package/src/04-components/select/index.scss +113 -0
  218. package/src/04-components/select/select-visual.png +0 -0
  219. package/src/04-components/select/select.api.json +85 -0
  220. package/src/04-components/select/select.docs.json +162 -0
  221. package/src/04-components/select/select.visual.spec.ts +14 -0
  222. package/src/04-components/skeleton/index.scss +99 -0
  223. package/src/04-components/skeleton/skeleton-visual.png +0 -0
  224. package/src/04-components/skeleton/skeleton.api.json +19 -0
  225. package/src/04-components/skeleton/skeleton.docs.json +62 -0
  226. package/src/04-components/skeleton/skeleton.visual.spec.ts +14 -0
  227. package/src/04-components/spinner/index.scss +60 -0
  228. package/src/04-components/spinner/spinner-visual.png +0 -0
  229. package/src/04-components/spinner/spinner.api.json +63 -0
  230. package/src/04-components/spinner/spinner.docs.json +88 -0
  231. package/src/04-components/spinner/spinner.visual.spec.ts +15 -0
  232. package/src/04-components/status/index.scss +85 -0
  233. package/src/04-components/status/status-visual.png +0 -0
  234. package/src/04-components/status/status.api.json +19 -0
  235. package/src/04-components/status/status.docs.json +60 -0
  236. package/src/04-components/status/status.visual.spec.ts +14 -0
  237. package/src/04-components/table/index.scss +60 -0
  238. package/src/04-components/table/table-visual.png +0 -0
  239. package/src/04-components/table/table.api.json +27 -0
  240. package/src/04-components/table/table.docs.json +59 -0
  241. package/src/04-components/table/table.visual.spec.ts +14 -0
  242. package/src/04-components/tabs/index.scss +77 -0
  243. package/src/04-components/tabs/tabs-visual.png +0 -0
  244. package/src/04-components/tabs/tabs.api.json +31 -0
  245. package/src/04-components/tabs/tabs.docs.json +61 -0
  246. package/src/04-components/tabs/tabs.visual.spec.ts +14 -0
  247. package/src/04-components/tag/index.scss +98 -0
  248. package/src/04-components/tag/tag-visual.png +0 -0
  249. package/src/04-components/tag/tag.api.json +86 -0
  250. package/src/04-components/tag/tag.docs.json +108 -0
  251. package/src/04-components/tag/tag.visual.spec.ts +14 -0
  252. package/src/04-components/textarea/index.scss +124 -0
  253. package/src/04-components/textarea/textarea-visual.png +0 -0
  254. package/src/04-components/textarea/textarea.api.json +93 -0
  255. package/src/04-components/textarea/textarea.docs.json +191 -0
  256. package/src/04-components/textarea/textarea.visual.spec.ts +14 -0
  257. package/src/04-components/toast/index.scss +180 -0
  258. package/src/04-components/toast/toast-visual.png +0 -0
  259. package/src/04-components/toast/toast.api.json +43 -0
  260. package/src/04-components/toast/toast.docs.json +99 -0
  261. package/src/04-components/toast/toast.visual.spec.ts +14 -0
  262. package/src/04-components/toggle/index.scss +117 -0
  263. package/src/04-components/toggle/toggle-visual.png +0 -0
  264. package/src/04-components/toggle/toggle.api.json +43 -0
  265. package/src/04-components/toggle/toggle.docs.json +92 -0
  266. package/src/04-components/toggle/toggle.visual.spec.ts +14 -0
  267. package/src/04-components/tooltip/index.scss +102 -0
  268. package/src/04-components/tooltip/tooltip-visual.png +0 -0
  269. package/src/04-components/tooltip/tooltip.api.json +39 -0
  270. package/src/04-components/tooltip/tooltip.docs.json +63 -0
  271. package/src/04-components/tooltip/tooltip.visual.spec.ts +14 -0
  272. package/src/05-utilities/border/index.scss +21 -0
  273. package/src/05-utilities/display/display.api.json +6 -0
  274. package/src/05-utilities/display/display.docs.json +28 -0
  275. package/src/05-utilities/display/display.scss +195 -0
  276. package/src/05-utilities/index.scss +6 -0
  277. package/src/05-utilities/spacing/spacing.api.json +6 -0
  278. package/src/05-utilities/spacing/spacing.docs.json +43 -0
  279. package/src/05-utilities/spacing/spacing.scss +399 -0
  280. package/src/05-utilities/text/text.api.json +38 -0
  281. package/src/05-utilities/text/text.docs.json +132 -0
  282. package/src/05-utilities/text/text.scss +246 -0
  283. package/src/05-utilities/view-transition/index.scss +198 -0
  284. package/src/05-utilities/view-transition/view-transition.api.json +21 -0
  285. package/src/05-utilities/view-transition/view-transition.docs.json +63 -0
  286. package/src/05-utilities/visually-hidden/index.scss +38 -0
  287. package/src/05-utilities/visually-hidden/visually-hidden.api.json +8 -0
  288. package/src/05-utilities/visually-hidden/visually-hidden.docs.json +29 -0
  289. package/src/99-debug/grid-overlay.scss +79 -0
  290. package/src/99-debug/index.scss +1 -0
  291. package/src/index.scss +30 -0
  292. package/src/testing/api-types.ts +20 -0
  293. package/src/testing/grid-alignment.spec.ts +92 -0
  294. package/src/testing/html-generator.ts +151 -0
  295. package/src/testing/index.ts +15 -0
  296. package/src/testing/page-setup.ts +131 -0
  297. package/src/testing/rhythm.ts +146 -0
  298. package/src/testing/scaffold.ts +50 -0
package/dist/index.css ADDED
@@ -0,0 +1,4445 @@
1
+ @charset "UTF-8";
2
+ @import "https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;500;700&family=Noto+Sans+Mono:wght@400;500&display=swap";
3
+ @layer reset, tokens, base, primitives, components.styles, components.tokens, utilities, themes;
4
+ /**
5
+ * CSS Library - Main Entry Point
6
+ *
7
+ * Import order follows numbered folder structure for cascade control.
8
+ */
9
+ /* 00. Config: Layer definitions + Design tokens */
10
+ /* Fonts (Google Fonts CDN) */
11
+ :root {
12
+ --ui-hue-primary: 220;
13
+ --ui-hue-success: 142;
14
+ --ui-hue-warning: 38;
15
+ --ui-hue-danger: 0;
16
+ --ui-color-neutral-50: hsl(var(--ui-hue-primary) 10% 98%);
17
+ --ui-color-neutral-100: hsl(var(--ui-hue-primary) 10% 96%);
18
+ --ui-color-neutral-200: hsl(var(--ui-hue-primary) 10% 90%);
19
+ --ui-color-neutral-300: hsl(var(--ui-hue-primary) 10% 80%);
20
+ --ui-color-neutral-400: hsl(var(--ui-hue-primary) 10% 60%);
21
+ --ui-color-neutral-500: hsl(var(--ui-hue-primary) 10% 45%);
22
+ --ui-color-neutral-600: hsl(var(--ui-hue-primary) 10% 35%);
23
+ --ui-color-neutral-700: hsl(var(--ui-hue-primary) 10% 25%);
24
+ --ui-color-neutral-800: hsl(var(--ui-hue-primary) 10% 15%);
25
+ --ui-color-neutral-900: hsl(var(--ui-hue-primary) 10% 10%);
26
+ --ui-color-primary-light: hsl(var(--ui-hue-primary) 85% 65%);
27
+ --ui-color-primary: hsl(var(--ui-hue-primary) 85% 50%);
28
+ --ui-color-primary-dark: hsl(var(--ui-hue-primary) 85% 40%);
29
+ --ui-color-success: hsl(var(--ui-hue-success) 70% 45%);
30
+ --ui-color-warning: hsl(var(--ui-hue-warning) 90% 50%);
31
+ --ui-color-danger: hsl(var(--ui-hue-danger) 70% 50%);
32
+ }
33
+ :root {
34
+ --ui-space-px: calc(var(--ui-unit) * 0.125);
35
+ --ui-space-quarter: calc(var(--ui-unit) * 0.25);
36
+ --ui-space-half: calc(var(--ui-unit) * 0.5);
37
+ --ui-space-0: calc(var(--ui-unit) * 0.5);
38
+ --ui-space-1: var(--ui-unit);
39
+ --ui-space-2: calc(var(--ui-unit) * 2);
40
+ --ui-space-3: calc(var(--ui-unit) * 3);
41
+ --ui-space-4: calc(var(--ui-unit) * 4);
42
+ --ui-space-6: calc(var(--ui-unit) * 6);
43
+ --ui-space-8: calc(var(--ui-unit) * 8);
44
+ }
45
+ :root {
46
+ --ui-font-sans: "Noto Sans", system-ui, -apple-system, sans-serif;
47
+ --ui-font-mono: "Noto Sans Mono", ui-monospace, "Cascadia Code", monospace;
48
+ --ui-font-size-xs: 0.75rem;
49
+ --ui-font-size-sm: 0.875rem;
50
+ --ui-font-size-md: 1rem;
51
+ --ui-font-size-lg: 1.25rem;
52
+ --ui-font-size-xl: 1.5rem;
53
+ --ui-font-size-2xl: 1.75rem;
54
+ --ui-font-size-3xl: 2rem;
55
+ --ui-font-size-4xl: 2.5rem;
56
+ --ui-leading-tight-xs: var(--ui-row-1);
57
+ --ui-leading-tight-sm: var(--ui-row-1);
58
+ --ui-leading-tight-md: calc(var(--ui-unit) * 3);
59
+ --ui-leading-tight-lg: calc(var(--ui-unit) * 3);
60
+ --ui-leading-xs: var(--ui-row-1);
61
+ --ui-leading-sm: calc(var(--ui-unit) * 3);
62
+ --ui-leading-md: calc(var(--ui-unit) * 3);
63
+ --ui-leading-lg: var(--ui-row-2);
64
+ --ui-leading-xl: var(--ui-row-2);
65
+ --ui-leading-2xl: var(--ui-row-2);
66
+ --ui-leading-3xl: calc(var(--ui-unit) * 5);
67
+ --ui-leading-4xl: calc(var(--ui-unit) * 6);
68
+ --ui-weight-normal: 400;
69
+ --ui-weight-medium: 500;
70
+ --ui-weight-semibold: 600;
71
+ --ui-weight-bold: 700;
72
+ --ui-tracking-display: -0.02em;
73
+ --ui-tracking-body: 0;
74
+ --ui-tracking-caps: 0.08em;
75
+ --ui-heading-1-size: var(--ui-font-size-4xl);
76
+ --ui-heading-1-line-height: var(--ui-leading-4xl);
77
+ --ui-heading-1-weight: var(--ui-weight-bold);
78
+ --ui-heading-1-tracking: var(--ui-tracking-display);
79
+ --ui-heading-2-size: var(--ui-font-size-3xl);
80
+ --ui-heading-2-line-height: var(--ui-leading-3xl);
81
+ --ui-heading-2-weight: var(--ui-weight-bold);
82
+ --ui-heading-2-tracking: -0.01em;
83
+ --ui-heading-3-size: var(--ui-font-size-2xl);
84
+ --ui-heading-3-line-height: var(--ui-leading-2xl);
85
+ --ui-heading-3-weight: var(--ui-weight-semibold);
86
+ --ui-heading-3-tracking: var(--ui-tracking-body);
87
+ --ui-heading-4-size: var(--ui-font-size-xl);
88
+ --ui-heading-4-line-height: var(--ui-leading-xl);
89
+ --ui-heading-4-weight: var(--ui-weight-semibold);
90
+ --ui-heading-4-tracking: var(--ui-tracking-body);
91
+ --ui-heading-5-size: var(--ui-font-size-lg);
92
+ --ui-heading-5-line-height: var(--ui-leading-sm);
93
+ --ui-heading-5-weight: var(--ui-weight-medium);
94
+ --ui-heading-5-tracking: var(--ui-tracking-body);
95
+ --ui-body-size: var(--ui-font-size-md);
96
+ --ui-body-line-height: var(--ui-leading-md);
97
+ --ui-body-weight: var(--ui-weight-normal);
98
+ --ui-body-tracking: var(--ui-tracking-body);
99
+ --ui-body-sm-size: var(--ui-font-size-sm);
100
+ --ui-body-sm-line-height: var(--ui-leading-sm);
101
+ --ui-body-sm-weight: var(--ui-weight-normal);
102
+ --ui-body-sm-tracking: var(--ui-tracking-body);
103
+ --ui-caption-size: var(--ui-font-size-xs);
104
+ --ui-caption-line-height: var(--ui-leading-xs);
105
+ --ui-caption-weight: var(--ui-weight-normal);
106
+ --ui-caption-tracking: 0.01em;
107
+ --ui-lead-size: var(--ui-font-size-lg);
108
+ --ui-lead-line-height: var(--ui-leading-lg);
109
+ --ui-lead-weight: var(--ui-weight-normal);
110
+ --ui-lead-tracking: var(--ui-tracking-body);
111
+ --ui-eyebrow-size: var(--ui-font-size-xs);
112
+ --ui-eyebrow-line-height: var(--ui-leading-xs);
113
+ --ui-eyebrow-weight: var(--ui-weight-semibold);
114
+ --ui-eyebrow-tracking: var(--ui-tracking-caps);
115
+ }
116
+ :root {
117
+ --ui-unit: 8px; /* 8px */
118
+ --ui-row: calc(var(--ui-unit) * 2);
119
+ --ui-row-1: var(--ui-row);
120
+ --ui-row-2: calc(var(--ui-row) * 2);
121
+ --ui-row-3: calc(var(--ui-row) * 3);
122
+ --ui-row-4: calc(var(--ui-row) * 4);
123
+ --ui-row-5: calc(var(--ui-row) * 5);
124
+ --ui-row-6: calc(var(--ui-row) * 6);
125
+ }
126
+ :root {
127
+ --ui-radius-sm: calc(var(--ui-unit) * 0.5);
128
+ --ui-radius-md: var(--ui-unit);
129
+ --ui-radius-lg: calc(var(--ui-unit) * 2);
130
+ --ui-radius-full: 9999px;
131
+ }
132
+ :root {
133
+ --ui-border-width-sm: calc(var(--ui-unit) * 0.125);
134
+ --ui-border-width-md: calc(var(--ui-unit) * 0.25);
135
+ --ui-border-width-lg: calc(var(--ui-unit) * 0.5);
136
+ }
137
+ :root {
138
+ --ui-shadow-sm: 0 1px 2px hsl(var(--ui-hue-primary) 10% 20% / 0.05);
139
+ --ui-shadow-md: 0 4px 6px hsl(var(--ui-hue-primary) 10% 20% / 0.1);
140
+ --ui-shadow-lg: 0 10px 15px hsl(var(--ui-hue-primary) 10% 20% / 0.15);
141
+ }
142
+ @layer tokens {
143
+ :root {
144
+ --ui-z-base: 0;
145
+ --ui-z-sticky: 100;
146
+ --ui-z-dropdown: 200;
147
+ --ui-z-overlay: 300;
148
+ --ui-z-modal: 400;
149
+ --ui-z-popover: 500;
150
+ --ui-z-tooltip: 600;
151
+ --ui-z-toast: 700;
152
+ --ui-z-debug: 9999;
153
+ }
154
+ }
155
+ @layer tokens {
156
+ :root {
157
+ --ui-duration-instant: 50ms;
158
+ --ui-duration-fast: 100ms;
159
+ --ui-duration-base: 150ms;
160
+ --ui-duration-slow: 250ms;
161
+ --ui-duration-slower: 400ms;
162
+ --ui-ease-default: cubic-bezier(0.4, 0, 0.2, 1);
163
+ --ui-ease-in: cubic-bezier(0.4, 0, 1, 1);
164
+ --ui-ease-out: cubic-bezier(0, 0, 0.2, 1);
165
+ --ui-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
166
+ }
167
+ @media (prefers-reduced-motion: reduce) {
168
+ :root {
169
+ --ui-duration-instant: 0ms;
170
+ --ui-duration-fast: 0ms;
171
+ --ui-duration-base: 0ms;
172
+ --ui-duration-slow: 0ms;
173
+ --ui-duration-slower: 0ms;
174
+ }
175
+ }
176
+ }
177
+ :root {
178
+ --ui-color-text: var(--ui-color-neutral-900);
179
+ --ui-color-text-muted: var(--ui-color-neutral-500);
180
+ --ui-color-text-inverse: var(--ui-color-neutral-50);
181
+ --ui-color-bg: var(--ui-color-neutral-50);
182
+ --ui-color-bg-subtle: var(--ui-color-neutral-100);
183
+ --ui-color-bg-muted: var(--ui-color-neutral-200);
184
+ --ui-color-border: var(--ui-color-neutral-200);
185
+ --ui-color-border-strong: var(--ui-color-neutral-300);
186
+ --ui-color-interactive: var(--ui-color-primary);
187
+ --ui-color-interactive-hover: var(--ui-color-primary-dark);
188
+ --ui-color-focus: var(--ui-color-primary-light);
189
+ }
190
+ [data-theme=dark] {
191
+ --ui-color-text: var(--ui-color-neutral-100);
192
+ --ui-color-text-muted: var(--ui-color-neutral-400);
193
+ --ui-color-text-inverse: var(--ui-color-neutral-900);
194
+ --ui-color-bg: var(--ui-color-neutral-900);
195
+ --ui-color-bg-subtle: var(--ui-color-neutral-800);
196
+ --ui-color-bg-muted: var(--ui-color-neutral-700);
197
+ --ui-color-border: var(--ui-color-neutral-700);
198
+ --ui-color-border-strong: var(--ui-color-neutral-600);
199
+ }
200
+ :root {
201
+ --ui-spacing-xs: var(--ui-space-1);
202
+ --ui-spacing-sm: var(--ui-space-2);
203
+ --ui-spacing-md: var(--ui-space-4);
204
+ --ui-spacing-lg: var(--ui-space-6);
205
+ --ui-spacing-xl: var(--ui-space-8);
206
+ --ui-spacing-gutter: var(--ui-space-4);
207
+ --ui-spacing-section: var(--ui-space-8);
208
+ }
209
+ :root {
210
+ --ui-input-height: var(--ui-row-2);
211
+ --ui-input-padding-x: var(--ui-space-2);
212
+ --ui-input-padding-y: var(--ui-space-1);
213
+ --ui-input-radius: var(--ui-radius-md);
214
+ --ui-input-border-width: var(--ui-border-width-sm);
215
+ --ui-input-bg: var(--ui-color-bg);
216
+ --ui-input-border: var(--ui-color-border);
217
+ --ui-input-border-focus: var(--ui-color-interactive);
218
+ --ui-input-text: var(--ui-color-text);
219
+ --ui-input-placeholder: var(--ui-color-text-muted);
220
+ }
221
+ /* 01. Reset styles */
222
+ @layer reset {
223
+ *,
224
+ *::before,
225
+ *::after {
226
+ box-sizing: border-box;
227
+ margin: 0;
228
+ }
229
+ }
230
+ /* 02. Base styles (typography, etc.) */
231
+ @layer base {
232
+ .ui-root {
233
+ font-family: var(--ui-font-sans, Noto Sans, system-ui, -apple-system, sans-serif);
234
+ font-size: var(--ui-font-size-md, 1rem);
235
+ line-height: var(--ui-leading-md, calc(0.5rem * 3));
236
+ color: var(--ui-color-text, hsl(220, 10%, 10%));
237
+ background: var(--ui-color-bg, hsl(220, 10%, 98%));
238
+ }
239
+ }
240
+ @layer base {
241
+ h1 {
242
+ margin-block-end: var(--ui-space-4);
243
+ font-size: var(--ui-heading-1-size);
244
+ font-weight: var(--ui-heading-1-weight);
245
+ line-height: var(--ui-heading-1-line-height);
246
+ letter-spacing: var(--ui-heading-1-tracking);
247
+ }
248
+ h2 {
249
+ margin-block-end: var(--ui-space-3);
250
+ font-size: var(--ui-heading-2-size);
251
+ font-weight: var(--ui-heading-2-weight);
252
+ line-height: var(--ui-heading-2-line-height);
253
+ letter-spacing: var(--ui-heading-2-tracking);
254
+ }
255
+ h3 {
256
+ margin-block-end: var(--ui-space-2);
257
+ font-size: var(--ui-heading-3-size);
258
+ font-weight: var(--ui-heading-3-weight);
259
+ line-height: var(--ui-heading-3-line-height);
260
+ letter-spacing: var(--ui-heading-3-tracking);
261
+ }
262
+ h4 {
263
+ margin-block-end: var(--ui-space-2);
264
+ font-size: var(--ui-heading-4-size);
265
+ font-weight: var(--ui-heading-4-weight);
266
+ line-height: var(--ui-heading-4-line-height);
267
+ letter-spacing: var(--ui-heading-4-tracking);
268
+ }
269
+ h5,
270
+ h6 {
271
+ margin-block-end: var(--ui-space-1);
272
+ font-size: var(--ui-heading-5-size);
273
+ font-weight: var(--ui-heading-5-weight);
274
+ line-height: var(--ui-heading-5-line-height);
275
+ letter-spacing: var(--ui-heading-5-tracking);
276
+ }
277
+ p {
278
+ margin-block-end: var(--ui-space-2);
279
+ font-size: var(--ui-body-size);
280
+ line-height: var(--ui-body-line-height);
281
+ letter-spacing: var(--ui-body-tracking);
282
+ }
283
+ p:last-child {
284
+ margin-block-end: 0;
285
+ }
286
+ strong,
287
+ b {
288
+ font-weight: var(--ui-weight-bold);
289
+ line-height: 0;
290
+ }
291
+ small {
292
+ font-size: var(--ui-caption-size);
293
+ line-height: 0;
294
+ }
295
+ code {
296
+ padding: 0 var(--ui-space-1);
297
+ font-family: var(--ui-font-mono);
298
+ font-size: var(--ui-body-sm-size);
299
+ line-height: 0;
300
+ vertical-align: baseline;
301
+ background: var(--ui-color-bg-muted);
302
+ border-radius: var(--ui-radius-sm);
303
+ }
304
+ pre {
305
+ padding: var(--ui-space-2);
306
+ margin-block-end: var(--ui-space-2);
307
+ overflow-x: auto;
308
+ font-family: var(--ui-font-mono);
309
+ font-size: var(--ui-body-sm-size);
310
+ line-height: var(--ui-body-sm-line-height);
311
+ background: var(--ui-color-bg-muted);
312
+ border-radius: var(--ui-radius-md);
313
+ }
314
+ pre code {
315
+ padding: 0;
316
+ background: none;
317
+ }
318
+ @media (width < 45.625rem) {
319
+ h1 {
320
+ font-size: var(--ui-font-size-2xl);
321
+ line-height: var(--ui-leading-2xl);
322
+ }
323
+ h2 {
324
+ font-size: var(--ui-font-size-xl);
325
+ line-height: var(--ui-leading-xl);
326
+ }
327
+ h3 {
328
+ font-size: var(--ui-font-size-lg);
329
+ line-height: var(--ui-leading-sm);
330
+ }
331
+ h4 {
332
+ font-size: 1.125rem;
333
+ line-height: var(--ui-leading-sm);
334
+ }
335
+ }
336
+ @media (width > 67.5rem) {
337
+ h1 {
338
+ font-size: calc(var(--ui-unit) * 6);
339
+ line-height: calc(var(--ui-unit) * 7);
340
+ }
341
+ h2 {
342
+ font-size: var(--ui-font-size-4xl);
343
+ line-height: var(--ui-leading-4xl);
344
+ }
345
+ }
346
+ }
347
+ /* 03. Layout primitives */
348
+ @layer primitives {
349
+ .ui-box {
350
+ --ui-_padding: var(--ui-box-padding, 0);
351
+ --ui-_bg: var(--ui-box-bg, transparent);
352
+ --ui-_color: var(--ui-box-color, inherit);
353
+ --ui-_radius: var(--ui-box-radius, 0);
354
+ padding: var(--ui-_padding);
355
+ color: var(--ui-_color);
356
+ background: var(--ui-_bg);
357
+ border-radius: var(--ui-_radius);
358
+ }
359
+ .ui-box--p-1 {
360
+ --ui-_padding: var(--ui-space-1, 0.5rem);
361
+ }
362
+ .ui-box--p-2 {
363
+ --ui-_padding: var(--ui-space-2, 1rem);
364
+ }
365
+ .ui-box--p-3 {
366
+ --ui-_padding: var(--ui-space-3, 1.5rem);
367
+ }
368
+ .ui-box--p-4 {
369
+ --ui-_padding: var(--ui-space-4, 2rem);
370
+ }
371
+ .ui-box--bg-subtle {
372
+ --ui-_bg: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
373
+ }
374
+ .ui-box--bg-muted {
375
+ --ui-_bg: var(--ui-color-bg-muted, hsl(220, 10%, 90%));
376
+ }
377
+ .ui-box--rounded {
378
+ --ui-_radius: var(--ui-radius-md, 0.5rem);
379
+ }
380
+ .ui-box--rounded-lg {
381
+ --ui-_radius: var(--ui-radius-lg, 1rem);
382
+ }
383
+ }
384
+ @layer primitives {
385
+ .ui-stack {
386
+ display: flex;
387
+ flex-direction: column;
388
+ gap: var(--ui-stack-gap, var(--ui-space-2));
389
+ }
390
+ .ui-stack--xs {
391
+ --ui-stack-gap: var(--ui-space-1);
392
+ }
393
+ .ui-stack--sm {
394
+ --ui-stack-gap: var(--ui-space-2);
395
+ }
396
+ .ui-stack--md {
397
+ --ui-stack-gap: var(--ui-space-4);
398
+ }
399
+ .ui-stack--lg {
400
+ --ui-stack-gap: var(--ui-space-6);
401
+ }
402
+ .ui-stack--xl {
403
+ --ui-stack-gap: var(--ui-space-8);
404
+ }
405
+ }
406
+ @layer primitives {
407
+ .ui-cluster {
408
+ display: flex;
409
+ flex-wrap: wrap;
410
+ align-items: center;
411
+ gap: var(--ui-cluster-gap, var(--ui-space-2));
412
+ }
413
+ .ui-cluster--xs {
414
+ --ui-cluster-gap: var(--ui-space-1);
415
+ }
416
+ .ui-cluster--sm {
417
+ --ui-cluster-gap: var(--ui-space-2);
418
+ }
419
+ .ui-cluster--md {
420
+ --ui-cluster-gap: var(--ui-space-4);
421
+ }
422
+ .ui-cluster--lg {
423
+ --ui-cluster-gap: var(--ui-space-6);
424
+ }
425
+ .ui-cluster--start {
426
+ justify-content: flex-start;
427
+ }
428
+ .ui-cluster--center {
429
+ justify-content: center;
430
+ }
431
+ .ui-cluster--end {
432
+ justify-content: flex-end;
433
+ }
434
+ .ui-cluster--between {
435
+ justify-content: space-between;
436
+ }
437
+ }
438
+ @layer primitives {
439
+ .ui-flex {
440
+ --ui-_gap: var(--ui-flex-gap, var(--ui-space-2, 1rem));
441
+ --ui-_direction: var(--ui-flex-direction, row);
442
+ --ui-_wrap: var(--ui-flex-wrap, nowrap);
443
+ --ui-_align: var(--ui-flex-align, stretch);
444
+ --ui-_justify: var(--ui-flex-justify, flex-start);
445
+ display: flex;
446
+ flex-direction: var(--ui-_direction);
447
+ flex-wrap: var(--ui-_wrap);
448
+ align-items: var(--ui-_align);
449
+ justify-content: var(--ui-_justify);
450
+ gap: var(--ui-_gap);
451
+ }
452
+ .ui-flex--row {
453
+ --ui-_direction: row;
454
+ }
455
+ .ui-flex--col {
456
+ --ui-_direction: column;
457
+ }
458
+ .ui-flex--row-reverse {
459
+ --ui-_direction: row-reverse;
460
+ }
461
+ .ui-flex--col-reverse {
462
+ --ui-_direction: column-reverse;
463
+ }
464
+ .ui-flex--wrap {
465
+ --ui-_wrap: wrap;
466
+ }
467
+ .ui-flex--nowrap {
468
+ --ui-_wrap: nowrap;
469
+ }
470
+ .ui-flex--items-start {
471
+ --ui-_align: flex-start;
472
+ }
473
+ .ui-flex--items-center {
474
+ --ui-_align: center;
475
+ }
476
+ .ui-flex--items-end {
477
+ --ui-_align: flex-end;
478
+ }
479
+ .ui-flex--items-baseline {
480
+ --ui-_align: baseline;
481
+ }
482
+ .ui-flex--justify-start {
483
+ --ui-_justify: flex-start;
484
+ }
485
+ .ui-flex--justify-center {
486
+ --ui-_justify: center;
487
+ }
488
+ .ui-flex--justify-end {
489
+ --ui-_justify: flex-end;
490
+ }
491
+ .ui-flex--justify-between {
492
+ --ui-_justify: space-between;
493
+ }
494
+ .ui-flex--justify-around {
495
+ --ui-_justify: space-around;
496
+ }
497
+ .ui-flex--gap-0 {
498
+ --ui-_gap: 0;
499
+ }
500
+ .ui-flex--gap-1 {
501
+ --ui-_gap: var(--ui-space-1, 0.5rem);
502
+ }
503
+ .ui-flex--gap-2 {
504
+ --ui-_gap: var(--ui-space-2, 1rem);
505
+ }
506
+ .ui-flex--gap-3 {
507
+ --ui-_gap: var(--ui-space-3, 1.5rem);
508
+ }
509
+ .ui-flex--gap-4 {
510
+ --ui-_gap: var(--ui-space-4, 2rem);
511
+ }
512
+ }
513
+ @layer primitives {
514
+ .ui-center {
515
+ display: flex;
516
+ align-items: center;
517
+ justify-content: center;
518
+ }
519
+ .ui-center--column {
520
+ flex-direction: column;
521
+ }
522
+ }
523
+ @layer primitives {
524
+ .ui-grid {
525
+ display: grid;
526
+ gap: var(--ui-grid-gap, var(--ui-space-4));
527
+ grid-template-columns: repeat(var(--ui-grid-cols, 1), minmax(0, 1fr));
528
+ }
529
+ .ui-grid--2 {
530
+ --ui-grid-cols: 2;
531
+ }
532
+ .ui-grid--3 {
533
+ --ui-grid-cols: 3;
534
+ }
535
+ .ui-grid--4 {
536
+ --ui-grid-cols: 4;
537
+ }
538
+ .ui-grid--auto {
539
+ grid-template-columns: repeat(auto-fit, minmax(var(--ui-grid-min, 16rem), 1fr));
540
+ }
541
+ }
542
+ @layer primitives {
543
+ .ui-app-shell {
544
+ min-block-size: 100vh;
545
+ }
546
+ }
547
+ @layer primitives {
548
+ .ui-sidebar {
549
+ display: flex;
550
+ flex-direction: column;
551
+ position: fixed;
552
+ inset-block-start: 0;
553
+ inset-inline-start: 0;
554
+ z-index: var(--ui-z-sticky);
555
+ block-size: 100vh;
556
+ inline-size: var(--ui-sidebar-width, calc(var(--ui-unit) * 30));
557
+ overflow-y: auto;
558
+ background: var(--ui-color-bg-subtle);
559
+ box-shadow: inset calc(var(--ui-border-width-sm) * -1) 0 0 0 var(--ui-color-border);
560
+ }
561
+ /* Width modifiers */
562
+ .ui-sidebar--sm {
563
+ --ui-sidebar-width: calc(var(--ui-unit) * 24);
564
+ }
565
+ .ui-sidebar--md {
566
+ --ui-sidebar-width: calc(var(--ui-unit) * 30);
567
+ }
568
+ .ui-sidebar--lg {
569
+ --ui-sidebar-width: calc(var(--ui-unit) * 40);
570
+ }
571
+ /* Position modifier - sidebar on end (right in LTR) */
572
+ .ui-sidebar--end {
573
+ inset-inline-start: auto;
574
+ inset-inline-end: 0;
575
+ box-shadow: inset var(--ui-border-width-sm) 0 0 0 var(--ui-color-border);
576
+ }
577
+ }
578
+ @layer primitives {
579
+ .ui-sidebar-nav {
580
+ --ui-_width: var(--ui-sidebar-nav-width, calc(var(--ui-unit) * 30));
581
+ --ui-_bg: var(--ui-sidebar-nav-bg, var(--ui-color-bg-subtle));
582
+ --ui-_border-color: var(--ui-sidebar-nav-border-color, var(--ui-color-border));
583
+ --ui-_padding: var(--ui-sidebar-nav-padding, var(--ui-space-2));
584
+ display: flex;
585
+ flex-direction: column;
586
+ block-size: 100%;
587
+ inline-size: var(--ui-_width);
588
+ background: var(--ui-_bg);
589
+ }
590
+ .ui-sidebar-nav__header {
591
+ --ui-_padding: var(--ui-sidebar-nav-header-padding, var(--ui-space-2));
592
+ flex-shrink: 0;
593
+ padding: var(--ui-_padding);
594
+ box-shadow: inset 0 calc(var(--ui-border-width-sm) * -1) 0 0 var(--ui-_border-color);
595
+ }
596
+ .ui-sidebar-nav__content {
597
+ flex: 1;
598
+ padding: var(--ui-_padding);
599
+ overflow-y: auto;
600
+ }
601
+ .ui-sidebar-nav__footer {
602
+ --ui-_padding: var(--ui-sidebar-nav-footer-padding, var(--ui-space-2));
603
+ flex-shrink: 0;
604
+ padding: var(--ui-_padding);
605
+ box-shadow: inset 0 var(--ui-border-width-sm) 0 0 var(--ui-_border-color);
606
+ }
607
+ .ui-sidebar-nav__group {
608
+ margin-block-end: var(--ui-space-2);
609
+ }
610
+ .ui-sidebar-nav__group-label {
611
+ --ui-_font-size: var(--ui-sidebar-nav-group-label-size, var(--ui-size-xs));
612
+ --ui-_color: var(--ui-sidebar-nav-group-label-color, var(--ui-color-text-muted));
613
+ --ui-_weight: var(--ui-sidebar-nav-group-label-weight, var(--ui-weight-bold));
614
+ display: block;
615
+ padding: var(--ui-space-1) var(--ui-space-2);
616
+ margin: 0;
617
+ font-size: var(--ui-_font-size);
618
+ font-weight: var(--ui-_weight);
619
+ letter-spacing: 0.05em;
620
+ text-transform: uppercase;
621
+ color: var(--ui-_color);
622
+ }
623
+ .ui-sidebar-nav__group-items {
624
+ display: flex;
625
+ flex-direction: column;
626
+ gap: var(--ui-space-half);
627
+ padding: 0;
628
+ margin: 0;
629
+ list-style: none;
630
+ }
631
+ .ui-sidebar-nav__subgroup-label {
632
+ display: block;
633
+ padding: var(--ui-space-1) var(--ui-space-2);
634
+ margin: 0;
635
+ margin-block-start: var(--ui-space-1);
636
+ font-size: var(--ui-size-xs);
637
+ font-weight: var(--ui-weight-medium);
638
+ color: var(--ui-color-text-muted);
639
+ }
640
+ .ui-sidebar-nav__item {
641
+ --ui-_height: var(--ui-sidebar-nav-item-height, var(--ui-row-2));
642
+ --ui-_padding-inline: var(--ui-sidebar-nav-item-padding-inline, var(--ui-space-2));
643
+ --ui-_font-size: var(--ui-sidebar-nav-item-size, var(--ui-size-sm));
644
+ --ui-_color: var(--ui-sidebar-nav-item-color, var(--ui-color-text));
645
+ --ui-_bg: var(--ui-sidebar-nav-item-bg, transparent);
646
+ --ui-_radius: var(--ui-sidebar-nav-item-radius, var(--ui-radius-sm));
647
+ display: flex;
648
+ align-items: center;
649
+ gap: var(--ui-space-1);
650
+ min-block-size: var(--ui-_height);
651
+ padding-inline: var(--ui-_padding-inline);
652
+ font-size: var(--ui-_font-size);
653
+ font-weight: var(--ui-_weight, normal);
654
+ text-decoration: none;
655
+ color: var(--ui-_color);
656
+ background: var(--ui-_bg);
657
+ border-radius: var(--ui-_radius);
658
+ cursor: pointer;
659
+ transition: background var(--ui-duration-fast) var(--ui-easing-default), color var(--ui-duration-fast) var(--ui-easing-default);
660
+ }
661
+ .ui-sidebar-nav__item:hover {
662
+ --ui-_bg: var(--ui-sidebar-nav-item-hover-bg, var(--ui-color-bg-muted));
663
+ }
664
+ .ui-sidebar-nav__item:visited {
665
+ color: var(--ui-_color);
666
+ }
667
+ .ui-sidebar-nav__item:focus-visible {
668
+ outline: 2px solid var(--ui-color-focus);
669
+ outline-offset: -2px;
670
+ }
671
+ .ui-sidebar-nav__item--active {
672
+ --ui-_bg: var(--ui-sidebar-nav-item-active-bg, var(--ui-color-primary-subtle));
673
+ --ui-_color: var(--ui-sidebar-nav-item-active-color, var(--ui-color-primary));
674
+ --ui-_weight: var(--ui-sidebar-nav-item-active-weight, var(--ui-weight-medium));
675
+ }
676
+ .ui-sidebar-nav__item--nested {
677
+ --ui-_padding-inline-start: var(--ui-sidebar-nav-item-nested-indent, var(--ui-space-4));
678
+ padding-inline-start: var(--ui-_padding-inline-start);
679
+ }
680
+ .ui-sidebar-nav__item--disabled {
681
+ opacity: 0.5;
682
+ cursor: not-allowed;
683
+ pointer-events: none;
684
+ }
685
+ .ui-sidebar-nav__icon {
686
+ display: flex;
687
+ flex-shrink: 0;
688
+ align-items: center;
689
+ justify-content: center;
690
+ block-size: var(--ui-size-md);
691
+ inline-size: var(--ui-size-md);
692
+ }
693
+ .ui-sidebar-nav__label {
694
+ flex: 1;
695
+ min-inline-size: 0;
696
+ overflow: hidden;
697
+ text-overflow: ellipsis;
698
+ white-space: nowrap;
699
+ }
700
+ .ui-sidebar-nav__badge {
701
+ flex-shrink: 0;
702
+ margin-inline-start: auto;
703
+ }
704
+ .ui-sidebar-nav--collapsed {
705
+ --ui-_width: var(--ui-sidebar-nav-width-collapsed, var(--ui-row-3));
706
+ }
707
+ .ui-sidebar-nav--collapsed .sidebar-nav__label,
708
+ .ui-sidebar-nav--collapsed .sidebar-nav__badge,
709
+ .ui-sidebar-nav--collapsed .sidebar-nav__group-label,
710
+ .ui-sidebar-nav--collapsed .sidebar-nav__subgroup-label {
711
+ display: none;
712
+ }
713
+ .ui-sidebar-nav--collapsed .sidebar-nav__item {
714
+ justify-content: center;
715
+ padding-inline: var(--ui-space-1);
716
+ }
717
+ }
718
+ @layer primitives {
719
+ .ui-main {
720
+ margin-inline-start: var(--ui-sidebar-width, calc(var(--ui-unit) * 30));
721
+ }
722
+ /* When sidebar is on the end */
723
+ .ui-main--sidebar-end {
724
+ margin-inline-start: 0;
725
+ margin-inline-end: var(--ui-sidebar-width, calc(var(--ui-unit) * 30));
726
+ }
727
+ /* No sidebar */
728
+ .ui-main--full {
729
+ margin-inline-start: 0;
730
+ margin-inline-end: 0;
731
+ }
732
+ }
733
+ @layer primitives {
734
+ .ui-container {
735
+ max-inline-size: var(--ui-container-width, calc(var(--ui-unit) * 120));
736
+ padding-inline: var(--ui-space-4);
737
+ }
738
+ .ui-container--center {
739
+ margin-inline: auto;
740
+ }
741
+ /* Size modifiers */
742
+ .ui-container--sm {
743
+ --ui-container-width: calc(var(--ui-unit) * 80);
744
+ }
745
+ .ui-container--md {
746
+ --ui-container-width: calc(var(--ui-unit) * 100);
747
+ }
748
+ .ui-container--lg {
749
+ --ui-container-width: calc(var(--ui-unit) * 120);
750
+ }
751
+ .ui-container--xl {
752
+ --ui-container-width: calc(var(--ui-unit) * 160);
753
+ }
754
+ .ui-container--full {
755
+ max-inline-size: none;
756
+ }
757
+ }
758
+ /* 04. Components */
759
+ @layer components.tokens {
760
+ .ui-accordion {
761
+ --ui-_border-color: var(--ui-accordion-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
762
+ --ui-_border-width: var(--ui-accordion-border-width, 1px);
763
+ --ui-_radius: var(--ui-accordion-radius, var(--ui-radius-md, calc(0.5rem * 1)));
764
+ }
765
+ }
766
+ @layer components.styles {
767
+ .ui-accordion {
768
+ border-radius: var(--ui-_radius);
769
+ outline: var(--ui-_border-width) solid var(--ui-_border-color);
770
+ outline-offset: calc(var(--ui-_border-width) * -1);
771
+ }
772
+ .ui-accordion > .disclosure {
773
+ --ui-_border-width: 0;
774
+ border: none;
775
+ border-radius: 0;
776
+ }
777
+ .ui-accordion > .disclosure + .disclosure {
778
+ border-block-start: 1px solid var(--ui-_border-color);
779
+ }
780
+ .ui-accordion > .disclosure:first-child .disclosure__trigger {
781
+ border-start-start-radius: var(--ui-_radius);
782
+ border-start-end-radius: var(--ui-_radius);
783
+ }
784
+ .ui-accordion > .disclosure:last-child .disclosure__trigger {
785
+ border-end-start-radius: var(--ui-_radius);
786
+ border-end-end-radius: var(--ui-_radius);
787
+ }
788
+ .ui-accordion > .disclosure:last-child .disclosure__content {
789
+ border-end-start-radius: var(--ui-_radius);
790
+ border-end-end-radius: var(--ui-_radius);
791
+ }
792
+ .ui-accordion--borderless {
793
+ border: none;
794
+ }
795
+ .ui-accordion--borderless > .disclosure + .disclosure {
796
+ border-block-start: none;
797
+ }
798
+ .ui-accordion--separated {
799
+ display: flex;
800
+ flex-direction: column;
801
+ gap: calc(0.5rem * 1);
802
+ border: none;
803
+ }
804
+ .ui-accordion--separated > .disclosure {
805
+ border: 1px solid var(--ui-_border-color);
806
+ border-radius: var(--ui-_radius);
807
+ }
808
+ .ui-accordion--separated > .disclosure + .disclosure {
809
+ border-block-start: 1px solid var(--ui-_border-color);
810
+ }
811
+ }
812
+ @layer components.tokens {
813
+ .ui-alert {
814
+ --ui-_padding: var(--ui-alert-padding, var(--ui-space-2, 1rem));
815
+ --ui-_border-width: var(--ui-alert-border-width, var(--ui-border-width-sm, 0.0625rem));
816
+ --ui-_gap: var(--ui-alert-gap, var(--ui-space-1, 0.5rem));
817
+ --ui-_radius: var(--ui-alert-radius, var(--ui-radius-md, 0.5rem));
818
+ --ui-_bg: var(--ui-alert-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
819
+ --ui-_border-color: var(--ui-alert-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
820
+ --ui-_color: var(--ui-alert-color, var(--ui-color-text, hsl(220, 10%, 10%)));
821
+ --ui-_icon-color: var(--ui-alert-icon-color, currentcolor);
822
+ }
823
+ .ui-alert--info {
824
+ --ui-_bg: var(--ui-alert-info-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
825
+ --ui-_border-color: var(--ui-alert-info-border, var(--ui-color-primary, hsl(220, 85%, 50%)));
826
+ --ui-_icon-color: var(--ui-alert-info-icon, var(--ui-color-primary, hsl(220, 85%, 50%)));
827
+ }
828
+ .ui-alert--success {
829
+ --ui-_bg: var(--ui-alert-success-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
830
+ --ui-_border-color: var(--ui-alert-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
831
+ --ui-_icon-color: var(--ui-alert-success-icon, var(--ui-color-success, hsl(142, 70%, 45%)));
832
+ }
833
+ .ui-alert--warning {
834
+ --ui-_bg: var(--ui-alert-warning-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
835
+ --ui-_border-color: var(--ui-alert-warning-border, var(--ui-color-warning, hsl(38, 90%, 50%)));
836
+ --ui-_icon-color: var(--ui-alert-warning-icon, var(--ui-color-warning, hsl(38, 90%, 50%)));
837
+ }
838
+ .ui-alert--danger {
839
+ --ui-_bg: var(--ui-alert-danger-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
840
+ --ui-_border-color: var(--ui-alert-danger-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
841
+ --ui-_icon-color: var(--ui-alert-danger-icon, var(--ui-color-danger, hsl(0, 70%, 50%)));
842
+ }
843
+ }
844
+ @layer components.styles {
845
+ .ui-alert {
846
+ display: flex;
847
+ align-items: flex-start;
848
+ gap: var(--ui-_gap);
849
+ padding: calc(var(--ui-_padding) - var(--ui-_border-width));
850
+ padding-inline: var(--ui-_padding);
851
+ color: var(--ui-_color);
852
+ background: var(--ui-_bg);
853
+ border: var(--ui-_border-width) solid var(--ui-_border-color);
854
+ border-radius: var(--ui-_radius);
855
+ border-inline-start-width: calc(0.5rem * 0.5);
856
+ }
857
+ .ui-alert__icon {
858
+ flex-shrink: 0;
859
+ color: var(--ui-_icon-color);
860
+ }
861
+ .ui-alert__content {
862
+ flex: 1;
863
+ min-inline-size: 0;
864
+ }
865
+ .ui-alert__title {
866
+ margin: 0;
867
+ font-weight: var(--ui-weight-medium, 500);
868
+ line-height: var(--ui-row-1, 1rem);
869
+ }
870
+ .ui-alert__description {
871
+ margin: 0;
872
+ margin-block-start: calc(0.5rem * 1);
873
+ font-size: var(--ui-font-size-sm, 0.875rem);
874
+ line-height: var(--ui-row-1, 1rem);
875
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
876
+ }
877
+ .ui-alert__close {
878
+ flex-shrink: 0;
879
+ align-self: flex-start;
880
+ padding: 0;
881
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
882
+ background: none;
883
+ border: none;
884
+ cursor: pointer;
885
+ }
886
+ .ui-alert__close:hover {
887
+ color: var(--ui-color-text, hsl(220, 10%, 10%));
888
+ }
889
+ }
890
+ @layer components.tokens {
891
+ .ui-avatar {
892
+ --ui-_size: var(--ui-avatar-size, calc(0.5rem * 5));
893
+ --ui-_bg: var(--ui-avatar-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
894
+ --ui-_color: var(--ui-avatar-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
895
+ --ui-_font-size: var(--ui-avatar-font-size, var(--ui-font-size-sm, 0.875rem));
896
+ --ui-_radius: var(--ui-avatar-radius, 50%);
897
+ }
898
+ .ui-avatar--xs {
899
+ --ui-_size: var(--ui-avatar-size-xs, calc(0.5rem * 3));
900
+ --ui-_font-size: var(--ui-avatar-font-size-xs, var(--ui-font-size-xs, 0.75rem));
901
+ }
902
+ .ui-avatar--sm {
903
+ --ui-_size: var(--ui-avatar-size-sm, calc(0.5rem * 4));
904
+ --ui-_font-size: var(--ui-avatar-font-size-sm, var(--ui-font-size-xs, 0.75rem));
905
+ }
906
+ .ui-avatar--lg {
907
+ --ui-_size: var(--ui-avatar-size-lg, calc(0.5rem * 6));
908
+ --ui-_font-size: var(--ui-avatar-font-size-lg, var(--ui-font-size-md, 1rem));
909
+ }
910
+ .ui-avatar--xl {
911
+ --ui-_size: var(--ui-avatar-size-xl, calc(0.5rem * 8));
912
+ --ui-_font-size: var(--ui-avatar-font-size-xl, var(--ui-font-size-lg, 1.25rem));
913
+ }
914
+ .ui-avatar--square {
915
+ --ui-_radius: var(--ui-avatar-radius-square, var(--ui-radius-md, 0.5rem));
916
+ }
917
+ }
918
+ @layer components.styles {
919
+ .ui-avatar {
920
+ display: inline-flex;
921
+ flex-shrink: 0;
922
+ align-items: center;
923
+ justify-content: center;
924
+ position: relative;
925
+ block-size: var(--ui-_size);
926
+ inline-size: var(--ui-_size);
927
+ overflow: hidden;
928
+ font-size: var(--ui-_font-size);
929
+ font-weight: var(--ui-weight-medium, 500);
930
+ line-height: 1;
931
+ text-transform: uppercase;
932
+ color: var(--ui-_color);
933
+ background: var(--ui-_bg);
934
+ border-radius: var(--ui-_radius);
935
+ }
936
+ .ui-avatar__image {
937
+ position: absolute;
938
+ inset: 0;
939
+ block-size: 100%;
940
+ inline-size: 100%;
941
+ object-fit: cover;
942
+ border-radius: inherit;
943
+ }
944
+ .ui-avatar__fallback {
945
+ display: flex;
946
+ align-items: center;
947
+ justify-content: center;
948
+ block-size: 100%;
949
+ inline-size: 100%;
950
+ user-select: none;
951
+ }
952
+ .ui-avatar-group {
953
+ display: flex;
954
+ flex-direction: row-reverse;
955
+ justify-content: flex-end;
956
+ }
957
+ .ui-avatar-group > .avatar {
958
+ margin-inline-start: calc(var(--ui-_size) * -0.25);
959
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-color-bg, hsl(220, 10%, 98%));
960
+ }
961
+ .ui-avatar-group > .avatar:last-child {
962
+ margin-inline-start: 0;
963
+ }
964
+ }
965
+ @layer components.tokens {
966
+ .ui-badge {
967
+ --ui-_height: var(--ui-badge-height, calc(var(--ui-row, 1rem) * 1.25));
968
+ --ui-_padding-x: var(--ui-badge-padding-x, var(--ui-space-1, 0.5rem));
969
+ --ui-_font-size: var(--ui-badge-font-size, var(--ui-font-size-xs, 0.75rem));
970
+ --ui-_font-weight: var(--ui-badge-font-weight, var(--ui-weight-medium, 500));
971
+ --ui-_radius: var(--ui-badge-radius, var(--ui-radius-full, 9999px));
972
+ --ui-_bg: var(--ui-badge-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
973
+ --ui-_text: var(--ui-badge-text, var(--ui-color-text, hsl(220, 10%, 10%)));
974
+ }
975
+ .ui-badge--sm {
976
+ --ui-_height: var(--ui-badge-height-sm, var(--ui-row, 1rem));
977
+ --ui-_padding-x: var(--ui-badge-padding-x-sm, var(--ui-space-0, 0.25rem));
978
+ --ui-_font-size: var(--ui-badge-font-size-sm, calc(var(--ui-font-size-xs, 0.75rem) * 0.85));
979
+ }
980
+ .ui-badge--primary {
981
+ --ui-_bg: var(--ui-badge-primary-bg, var(--ui-color-primary, hsl(220, 85%, 50%)));
982
+ --ui-_text: var(--ui-badge-primary-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
983
+ }
984
+ .ui-badge--success {
985
+ --ui-_bg: var(--ui-badge-success-bg, var(--ui-color-success, hsl(142, 70%, 45%)));
986
+ --ui-_text: var(--ui-badge-success-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
987
+ }
988
+ .ui-badge--warning {
989
+ --ui-_bg: var(--ui-badge-warning-bg, var(--ui-color-warning, hsl(38, 90%, 50%)));
990
+ --ui-_text: var(--ui-badge-warning-text, var(--ui-color-text, hsl(220, 10%, 10%)));
991
+ }
992
+ .ui-badge--danger {
993
+ --ui-_bg: var(--ui-badge-danger-bg, var(--ui-color-danger, hsl(0, 70%, 50%)));
994
+ --ui-_text: var(--ui-badge-danger-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
995
+ }
996
+ }
997
+ @layer components.styles {
998
+ .ui-badge {
999
+ display: inline-flex;
1000
+ align-items: center;
1001
+ justify-content: center;
1002
+ block-size: var(--ui-_height);
1003
+ padding-inline: var(--ui-_padding-x);
1004
+ font-size: var(--ui-_font-size);
1005
+ font-weight: var(--ui-_font-weight);
1006
+ line-height: 1;
1007
+ white-space: nowrap;
1008
+ color: var(--ui-_text);
1009
+ background: var(--ui-_bg);
1010
+ border-radius: var(--ui-_radius);
1011
+ }
1012
+ }
1013
+ @layer components.tokens {
1014
+ .ui-breadcrumb {
1015
+ --ui-_height: var(--ui-breadcrumb-height, var(--ui-row-1, 1rem));
1016
+ --ui-_gap: var(--ui-breadcrumb-gap, calc(0.5rem * 1));
1017
+ --ui-_separator-color: var(--ui-breadcrumb-separator-color, var(--ui-color-text-muted));
1018
+ --ui-_link-color: var(--ui-breadcrumb-link-color, var(--ui-color-text-muted));
1019
+ --ui-_current-color: var(--ui-breadcrumb-current-color, var(--ui-color-text));
1020
+ }
1021
+ }
1022
+ @layer components.styles {
1023
+ .ui-breadcrumb {
1024
+ display: flex;
1025
+ flex-wrap: wrap;
1026
+ align-items: center;
1027
+ gap: var(--ui-_gap);
1028
+ block-size: var(--ui-_height);
1029
+ padding: 0;
1030
+ margin: 0;
1031
+ font-size: var(--ui-font-size-sm, 0.875rem);
1032
+ line-height: 1;
1033
+ list-style: none;
1034
+ }
1035
+ .ui-breadcrumb__item {
1036
+ display: flex;
1037
+ align-items: center;
1038
+ gap: var(--ui-_gap);
1039
+ block-size: var(--ui-_height);
1040
+ }
1041
+ .ui-breadcrumb__item:not(:last-child)::after {
1042
+ content: var(--ui-breadcrumb-separator, "/");
1043
+ color: var(--ui-_separator-color);
1044
+ }
1045
+ .ui-breadcrumb__link {
1046
+ text-decoration: none;
1047
+ color: var(--ui-_link-color);
1048
+ transition: color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
1049
+ }
1050
+ .ui-breadcrumb__link:hover {
1051
+ text-decoration: underline;
1052
+ color: var(--ui-color-primary);
1053
+ }
1054
+ .ui-breadcrumb__item:last-child .breadcrumb__link,
1055
+ .ui-breadcrumb__current {
1056
+ color: var(--ui-_current-color);
1057
+ pointer-events: none;
1058
+ }
1059
+ .ui-breadcrumb__item--hidden {
1060
+ display: none;
1061
+ }
1062
+ .ui-breadcrumb__ellipsis {
1063
+ color: var(--ui-_separator-color);
1064
+ }
1065
+ }
1066
+ @layer components.tokens {
1067
+ .ui-button {
1068
+ --ui-_height: var(--ui-button-height, var(--ui-row-2, 2rem));
1069
+ --ui-_padding-x: var(--ui-button-padding-x, var(--ui-space-2, 1rem));
1070
+ --ui-_font-size: var(--ui-button-font-size, var(--ui-font-size-sm, 0.875rem));
1071
+ --ui-_font-weight: var(--ui-button-font-weight, var(--ui-weight-medium, 500));
1072
+ --ui-_radius: var(--ui-button-radius, var(--ui-radius-md, 0.5rem));
1073
+ --ui-_bg: var(--ui-button-bg, var(--ui-color-primary, hsl(220, 85%, 50%)));
1074
+ --ui-_bg-hover: var(--ui-button-bg-hover, var(--ui-color-primary-dark, hsl(220, 85%, 40%)));
1075
+ --ui-_text: var(--ui-button-text, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1076
+ }
1077
+ .ui-button--sm {
1078
+ --ui-_height: var(--ui-button-height-sm, calc(var(--ui-row, 1rem) * 1.5));
1079
+ --ui-_font-size: var(--ui-button-font-size-sm, var(--ui-font-size-xs, 0.75rem));
1080
+ }
1081
+ .ui-button--lg {
1082
+ --ui-_height: var(--ui-button-height-lg, calc(var(--ui-row, 1rem) * 2.5));
1083
+ --ui-_padding-x: var(--ui-button-padding-x-lg, var(--ui-space-3, 1.5rem));
1084
+ --ui-_font-size: var(--ui-button-font-size-lg, var(--ui-font-size-md, 1rem));
1085
+ }
1086
+ .ui-button--secondary {
1087
+ --ui-_bg: var(--ui-button-secondary-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
1088
+ --ui-_bg-hover: var(--ui-button-secondary-bg-hover, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
1089
+ --ui-_text: var(--ui-button-secondary-text, var(--ui-color-text, hsl(220, 10%, 10%)));
1090
+ }
1091
+ .ui-button--ghost {
1092
+ --ui-_bg: var(--ui-button-ghost-bg, transparent);
1093
+ --ui-_bg-hover: var(--ui-button-ghost-bg-hover, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
1094
+ --ui-_text: var(--ui-button-ghost-text, var(--ui-color-primary, hsl(220, 85%, 50%)));
1095
+ }
1096
+ .ui-button--outline {
1097
+ --ui-_bg: var(--ui-button-outline-bg, transparent);
1098
+ --ui-_bg-hover: var(--ui-button-outline-bg-hover, var(--ui-color-primary, hsl(220, 85%, 50%)));
1099
+ --ui-_text: var(--ui-button-outline-text, var(--ui-color-primary, hsl(220, 85%, 50%)));
1100
+ --ui-_text-hover: var(--ui-button-outline-text-hover, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1101
+ --ui-_border: var(--ui-button-outline-border, var(--ui-border-width-sm, 0.0625rem) solid currentColor);
1102
+ }
1103
+ .ui-button--danger {
1104
+ --ui-_bg: var(--ui-button-danger-bg, var(--ui-color-danger, hsl(0, 70%, 50%)));
1105
+ --ui-_bg-hover: var(--ui-button-danger-bg-hover, hsl(0, 70%, 40%));
1106
+ }
1107
+ .ui-button--link {
1108
+ --ui-_bg: transparent;
1109
+ --ui-_bg-hover: transparent;
1110
+ --ui-_text: var(--ui-button-link-text, var(--ui-color-primary, hsl(220, 85%, 50%)));
1111
+ --ui-_text-hover: var(--ui-button-link-text-hover, var(--ui-color-primary-dark, hsl(220, 85%, 40%)));
1112
+ --ui-_height: auto;
1113
+ --ui-_padding-x: 0;
1114
+ --ui-_radius: 0;
1115
+ }
1116
+ .ui-button--icon {
1117
+ --ui-_padding-x: 0;
1118
+ }
1119
+ .ui-button--radius-none {
1120
+ --ui-_radius: 0;
1121
+ }
1122
+ .ui-button--radius-sm {
1123
+ --ui-_radius: var(--ui-radius-sm, 0.25rem);
1124
+ }
1125
+ .ui-button--radius-lg {
1126
+ --ui-_radius: var(--ui-radius-lg, 1rem);
1127
+ }
1128
+ .ui-button--radius-full {
1129
+ --ui-_radius: 624.9375rem;
1130
+ }
1131
+ }
1132
+ @layer components.styles {
1133
+ .ui-button {
1134
+ display: inline-flex;
1135
+ align-items: center;
1136
+ justify-content: center;
1137
+ gap: var(--ui-space-1, 0.5rem);
1138
+ block-size: var(--ui-_height);
1139
+ padding-inline: var(--ui-_padding-x);
1140
+ margin: 0;
1141
+ font-family: var(--ui-font-sans, Noto Sans, system-ui, -apple-system, sans-serif);
1142
+ font-size: var(--ui-_font-size);
1143
+ font-weight: var(--ui-_font-weight);
1144
+ line-height: 1;
1145
+ text-decoration: none;
1146
+ white-space: nowrap;
1147
+ color: var(--ui-_text);
1148
+ background: var(--ui-_bg);
1149
+ border: var(--ui-_border, none);
1150
+ border-radius: var(--ui-_radius);
1151
+ cursor: pointer;
1152
+ transition: background-color var(--ui-duration-base) var(--ui-ease-default), color var(--ui-duration-base) var(--ui-ease-default), transform var(--ui-duration-fast) var(--ui-ease-default);
1153
+ }
1154
+ .ui-button:hover, .ui-button--hover {
1155
+ color: var(--ui-_text-hover, var(--ui-_text));
1156
+ background: var(--ui-_bg-hover);
1157
+ }
1158
+ .ui-button:focus-visible, .ui-button--focus {
1159
+ outline: var(--ui-border-width-md, 0.125rem) solid var(--ui-color-focus, hsl(220, 85%, 65%));
1160
+ outline-offset: var(--ui-border-width-md, 0.125rem);
1161
+ }
1162
+ .ui-button:active, .ui-button--active {
1163
+ transform: scale(0.98);
1164
+ }
1165
+ .ui-button:disabled {
1166
+ opacity: 0.5;
1167
+ cursor: not-allowed;
1168
+ }
1169
+ .ui-button:disabled:hover {
1170
+ background: var(--ui-_bg);
1171
+ transform: none;
1172
+ }
1173
+ .ui-button--icon {
1174
+ inline-size: var(--ui-_height);
1175
+ }
1176
+ .ui-button--block {
1177
+ inline-size: 100%;
1178
+ }
1179
+ .ui-button--link {
1180
+ text-decoration: underline;
1181
+ text-underline-offset: var(--ui-space-quarter);
1182
+ }
1183
+ .ui-button--link:hover {
1184
+ text-decoration-thickness: var(--ui-space-quarter);
1185
+ }
1186
+ .ui-button__icon {
1187
+ flex-shrink: 0;
1188
+ block-size: 1em;
1189
+ inline-size: 1em;
1190
+ }
1191
+ .ui-button__icon--start {
1192
+ order: -1;
1193
+ }
1194
+ .ui-button__icon--end {
1195
+ order: 1;
1196
+ }
1197
+ .ui-button--loading {
1198
+ position: relative;
1199
+ opacity: 0.7;
1200
+ pointer-events: none;
1201
+ }
1202
+ .ui-button--loading::after {
1203
+ content: "";
1204
+ position: absolute;
1205
+ block-size: 1em;
1206
+ inline-size: 1em;
1207
+ border: 2px solid currentcolor;
1208
+ border-radius: 50%;
1209
+ animation: button-spin 0.6s linear infinite;
1210
+ border-inline-end-color: transparent;
1211
+ }
1212
+ @keyframes button-spin {
1213
+ to {
1214
+ transform: rotate(360deg);
1215
+ }
1216
+ }
1217
+ }
1218
+ @layer components.tokens {
1219
+ .ui-button-group {
1220
+ --ui-_radius: var(--ui-button-group-radius, var(--ui-radius-md, calc(0.5rem / 2)));
1221
+ }
1222
+ }
1223
+ @layer components.styles {
1224
+ .ui-button-group {
1225
+ display: inline-flex;
1226
+ }
1227
+ .ui-button-group > .button:not(:first-child, :last-child) {
1228
+ border-radius: 0;
1229
+ }
1230
+ .ui-button-group > .button:first-child:not(:last-child) {
1231
+ border-start-end-radius: 0;
1232
+ border-end-end-radius: 0;
1233
+ }
1234
+ .ui-button-group > .button:last-child:not(:first-child) {
1235
+ border-start-start-radius: 0;
1236
+ border-end-start-radius: 0;
1237
+ }
1238
+ .ui-button-group > .button + .button {
1239
+ margin-inline-start: calc(0.5rem / -8);
1240
+ }
1241
+ .ui-button-group > .button:focus-visible {
1242
+ z-index: 1;
1243
+ }
1244
+ .ui-button-group--vertical {
1245
+ flex-direction: column;
1246
+ }
1247
+ .ui-button-group--vertical > .button:not(:first-child, :last-child) {
1248
+ border-radius: 0;
1249
+ }
1250
+ .ui-button-group--vertical > .button:first-child:not(:last-child) {
1251
+ border-end-start-radius: 0;
1252
+ border-end-end-radius: 0;
1253
+ }
1254
+ .ui-button-group--vertical > .button:last-child:not(:first-child) {
1255
+ border-start-start-radius: 0;
1256
+ border-start-end-radius: 0;
1257
+ }
1258
+ .ui-button-group--vertical > .button + .button {
1259
+ margin-block-start: calc(0.5rem / -8);
1260
+ margin-inline-start: 0;
1261
+ }
1262
+ .ui-button-group--attached > .button {
1263
+ border-inline-end-width: 0;
1264
+ }
1265
+ .ui-button-group--attached > .button:last-child {
1266
+ border-inline-end-width: 1px;
1267
+ }
1268
+ .ui-button-group--attached > .button + .button {
1269
+ margin-inline-start: 0;
1270
+ }
1271
+ }
1272
+ @layer components.tokens {
1273
+ .ui-card {
1274
+ --ui-_padding: var(--ui-card-padding, var(--ui-space-4));
1275
+ --ui-_border-width: var(--ui-card-border-width, var(--ui-border-width-sm));
1276
+ --ui-_bg: var(--ui-card-bg, var(--ui-color-bg));
1277
+ --ui-_border-color: var(--ui-card-border-color, var(--ui-color-border));
1278
+ --ui-_radius: var(--ui-card-radius, var(--ui-radius-md));
1279
+ }
1280
+ .ui-card--subtle {
1281
+ --ui-_bg: var(--ui-card-bg-subtle, var(--ui-color-bg-subtle));
1282
+ }
1283
+ .ui-card--muted {
1284
+ --ui-_bg: var(--ui-card-bg-muted, var(--ui-color-bg-muted));
1285
+ }
1286
+ .ui-card--sm {
1287
+ --ui-_padding: var(--ui-card-padding-sm, var(--ui-space-2));
1288
+ }
1289
+ .ui-card--lg {
1290
+ --ui-_padding: var(--ui-card-padding-lg, var(--ui-space-6));
1291
+ }
1292
+ .ui-card--flush {
1293
+ --ui-_padding: 0;
1294
+ --ui-_border-width: 0;
1295
+ }
1296
+ }
1297
+ @layer components.styles {
1298
+ .ui-card {
1299
+ border: var(--ui-_border-width) solid var(--ui-_border-color);
1300
+ border-radius: var(--ui-_radius);
1301
+ background: var(--ui-_bg);
1302
+ padding: calc(var(--ui-_padding) - var(--ui-_border-width));
1303
+ line-height: var(--ui-row-1);
1304
+ }
1305
+ }
1306
+ @layer components.tokens {
1307
+ .ui-checkbox {
1308
+ --ui-_size: var(--ui-checkbox-size, calc(0.5rem * 2));
1309
+ --ui-_radius: var(--ui-checkbox-radius, var(--ui-radius-sm, 0.25rem));
1310
+ --ui-_bg: var(--ui-checkbox-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
1311
+ --ui-_bg-checked: var(--ui-checkbox-bg-checked, var(--ui-color-primary, hsl(220, 85%, 50%)));
1312
+ --ui-_border-color: var(--ui-checkbox-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
1313
+ --ui-_border-color-focus: var(--ui-checkbox-border-color-focus, var(--ui-color-primary, hsl(220, 85%, 50%)));
1314
+ --ui-_check-color: var(--ui-checkbox-check-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
1315
+ }
1316
+ .ui-checkbox--lg {
1317
+ --ui-_size: var(--ui-checkbox-size-lg, calc(0.5rem * 3));
1318
+ }
1319
+ .ui-checkbox--error {
1320
+ --ui-_border-color: var(--ui-checkbox-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
1321
+ --ui-_border-color-focus: var(--ui-checkbox-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
1322
+ }
1323
+ }
1324
+ @layer components.styles {
1325
+ .ui-checkbox {
1326
+ display: inline-flex;
1327
+ flex-shrink: 0;
1328
+ align-items: center;
1329
+ justify-content: center;
1330
+ block-size: var(--ui-_size);
1331
+ inline-size: var(--ui-_size);
1332
+ margin: 0;
1333
+ vertical-align: middle;
1334
+ background: var(--ui-_bg);
1335
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
1336
+ border-radius: var(--ui-_radius);
1337
+ cursor: pointer;
1338
+ appearance: none;
1339
+ transition: background-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
1340
+ }
1341
+ .ui-checkbox::before {
1342
+ content: "";
1343
+ block-size: 65%;
1344
+ inline-size: 65%;
1345
+ background-color: var(--ui-_check-color);
1346
+ opacity: 0;
1347
+ clip-path: polygon(20% 55%, 40% 75%, 80% 25%, 85% 30%, 40% 85%, 15% 60%);
1348
+ transition: opacity var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
1349
+ }
1350
+ .ui-checkbox:hover:not(:disabled) {
1351
+ border-color: var(--ui-_border-color-focus);
1352
+ }
1353
+ .ui-checkbox:focus-visible {
1354
+ border-color: var(--ui-_border-color-focus);
1355
+ outline: none;
1356
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, hsl(220, 85%, 65%));
1357
+ }
1358
+ .ui-checkbox:checked {
1359
+ background: var(--ui-_bg-checked);
1360
+ border-color: var(--ui-_bg-checked);
1361
+ }
1362
+ .ui-checkbox:checked::before {
1363
+ opacity: 1;
1364
+ }
1365
+ .ui-checkbox:indeterminate {
1366
+ background: var(--ui-_bg-checked);
1367
+ border-color: var(--ui-_bg-checked);
1368
+ }
1369
+ .ui-checkbox:indeterminate::before {
1370
+ opacity: 1;
1371
+ clip-path: polygon(15% 45%, 85% 45%, 85% 55%, 15% 55%);
1372
+ }
1373
+ .ui-checkbox:disabled {
1374
+ opacity: 0.5;
1375
+ cursor: not-allowed;
1376
+ }
1377
+ }
1378
+ @layer components.tokens {
1379
+ .ui-code {
1380
+ --ui-_font-size: var(--ui-code-font-size, var(--ui-font-size-sm, 0.875rem));
1381
+ --ui-_bg: var(--ui-code-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
1382
+ --ui-_padding-x: var(--ui-code-padding-x, var(--ui-space-1, 0.5rem));
1383
+ --ui-_padding-y: var(--ui-code-padding-y, var(--ui-space-0, 0.25rem));
1384
+ --ui-_radius: var(--ui-code-radius, var(--ui-radius-sm, 0.25rem));
1385
+ }
1386
+ .ui-code--sm {
1387
+ --ui-_font-size: var(--ui-font-size-xs, 0.75rem);
1388
+ }
1389
+ .ui-code-block {
1390
+ --ui-_font-size: var(--ui-code-font-size-block, var(--ui-font-size-sm, 0.875rem));
1391
+ --ui-_bg: var(--ui-code-bg-block, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
1392
+ --ui-_padding: var(--ui-code-padding-block, var(--ui-space-3, 1.5rem));
1393
+ --ui-_radius: var(--ui-code-radius-block, var(--ui-radius-md, 0.5rem));
1394
+ --ui-_border-color: var(--ui-code-border-color-block, var(--ui-color-border, hsl(220, 10%, 90%)));
1395
+ }
1396
+ }
1397
+ @layer components.styles {
1398
+ .ui-code {
1399
+ padding: var(--ui-_padding-y) var(--ui-_padding-x);
1400
+ font-family: var(--ui-font-mono, Noto Sans Mono, ui-monospace, Cascadia Code, monospace);
1401
+ font-size: var(--ui-_font-size);
1402
+ line-height: var(--ui-leading-tight-sm, 1rem);
1403
+ background: var(--ui-_bg);
1404
+ border-radius: var(--ui-_radius);
1405
+ }
1406
+ .ui-code-block {
1407
+ display: block;
1408
+ padding: calc(var(--ui-_padding) - var(--ui-border-width-sm, 0.0625rem));
1409
+ overflow-x: auto;
1410
+ font-family: var(--ui-font-mono, Noto Sans Mono, ui-monospace, Cascadia Code, monospace);
1411
+ font-size: var(--ui-_font-size);
1412
+ line-height: var(--ui-leading-tight-sm, 1rem);
1413
+ white-space: pre;
1414
+ background: var(--ui-_bg);
1415
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
1416
+ border-radius: var(--ui-_radius);
1417
+ }
1418
+ .ui-code-block code {
1419
+ padding: 0;
1420
+ font-size: inherit;
1421
+ background: none;
1422
+ }
1423
+ }
1424
+ @layer components.tokens {
1425
+ .ui-data-list {
1426
+ --ui-_gap: var(--ui-data-list-gap, calc(0.5rem * 2));
1427
+ --ui-_item-gap: var(--ui-data-list-item-gap, calc(0.5rem * 1));
1428
+ --ui-_label-color: var(--ui-data-list-label-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
1429
+ --ui-_value-color: var(--ui-data-list-value-color, var(--ui-color-text, hsl(220, 10%, 10%)));
1430
+ }
1431
+ }
1432
+ @layer components.styles {
1433
+ .ui-data-list {
1434
+ display: flex;
1435
+ flex-direction: column;
1436
+ gap: var(--ui-_gap);
1437
+ margin: 0;
1438
+ line-height: var(--ui-row-1, 1rem);
1439
+ }
1440
+ .ui-data-list__item {
1441
+ display: flex;
1442
+ flex-direction: column;
1443
+ gap: var(--ui-_item-gap);
1444
+ }
1445
+ .ui-data-list__label {
1446
+ font-size: var(--ui-font-size-sm, 0.875rem);
1447
+ font-weight: var(--ui-weight-medium, 500);
1448
+ line-height: var(--ui-row-1, 1rem);
1449
+ color: var(--ui-_label-color);
1450
+ }
1451
+ .ui-data-list__value {
1452
+ margin: 0;
1453
+ line-height: var(--ui-row-1, 1rem);
1454
+ color: var(--ui-_value-color);
1455
+ }
1456
+ .ui-data-list--horizontal .data-list__item {
1457
+ flex-direction: row;
1458
+ align-items: baseline;
1459
+ justify-content: space-between;
1460
+ gap: calc(0.5rem * 2);
1461
+ }
1462
+ .ui-data-list--horizontal .data-list__label {
1463
+ flex-shrink: 0;
1464
+ }
1465
+ .ui-data-list--horizontal .data-list__value {
1466
+ text-align: end;
1467
+ }
1468
+ .ui-data-list--divided .data-list__item {
1469
+ padding-block-end: var(--ui-_gap);
1470
+ border-block-end: 1px solid var(--ui-color-border, hsl(220, 10%, 90%));
1471
+ }
1472
+ .ui-data-list--divided .data-list__item:last-child {
1473
+ padding-block-end: 0;
1474
+ border-block-end: none;
1475
+ }
1476
+ .ui-data-list--striped .data-list__item:nth-child(odd) {
1477
+ padding: calc(0.5rem * 1);
1478
+ background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
1479
+ border-radius: var(--ui-radius-sm, 0.25rem);
1480
+ }
1481
+ .ui-data-list--sm {
1482
+ --ui-_gap: calc(0.5rem * 1);
1483
+ --ui-_item-gap: 0;
1484
+ font-size: var(--ui-font-size-sm, 0.875rem);
1485
+ }
1486
+ .ui-data-list--lg {
1487
+ --ui-_gap: calc(0.5rem * 3);
1488
+ --ui-_item-gap: calc(0.5rem * 1);
1489
+ font-size: var(--ui-font-size-lg, 1.25rem);
1490
+ }
1491
+ }
1492
+ @layer components.tokens {
1493
+ .ui-dialog {
1494
+ --ui-_header-padding: var(--ui-dialog-header-padding, calc(0.5rem * 2) calc(0.5rem * 3));
1495
+ --ui-_body-padding: var(--ui-dialog-body-padding, calc(0.5rem * 3));
1496
+ --ui-_footer-padding: var(--ui-dialog-footer-padding, calc(0.5rem * 2) calc(0.5rem * 3));
1497
+ --ui-_border-color: var(--ui-dialog-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
1498
+ }
1499
+ }
1500
+ @layer components.styles {
1501
+ .ui-dialog .modal__content {
1502
+ padding: 0;
1503
+ }
1504
+ .ui-dialog__header {
1505
+ display: flex;
1506
+ flex-shrink: 0;
1507
+ align-items: center;
1508
+ justify-content: space-between;
1509
+ gap: calc(0.5rem * 2);
1510
+ padding: var(--ui-_header-padding);
1511
+ border-block-end: 1px solid var(--ui-_border-color);
1512
+ }
1513
+ .ui-dialog__title {
1514
+ margin: 0;
1515
+ font-size: var(--ui-font-size-lg, 1.25rem);
1516
+ font-weight: var(--ui-weight-semibold, 600);
1517
+ line-height: calc(0.5rem * 3);
1518
+ }
1519
+ .ui-dialog__close {
1520
+ flex-shrink: 0;
1521
+ margin-inline-start: auto;
1522
+ }
1523
+ .ui-dialog__body {
1524
+ flex: 1 1 auto;
1525
+ padding: var(--ui-_body-padding);
1526
+ overflow-y: auto;
1527
+ }
1528
+ .ui-dialog__footer {
1529
+ display: flex;
1530
+ flex-shrink: 0;
1531
+ align-items: center;
1532
+ justify-content: flex-end;
1533
+ gap: calc(0.5rem * 1.5);
1534
+ padding: var(--ui-_footer-padding);
1535
+ border-block-start: 1px solid var(--ui-_border-color);
1536
+ }
1537
+ .ui-dialog--borderless .dialog__header {
1538
+ border-block-end: none;
1539
+ }
1540
+ .ui-dialog--borderless .dialog__footer {
1541
+ border-block-start: none;
1542
+ }
1543
+ }
1544
+ @layer components.tokens {
1545
+ .ui-disclosure {
1546
+ --ui-_border-color: var(--ui-disclosure-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
1547
+ --ui-_border-width: var(--ui-disclosure-border-width, 1px);
1548
+ --ui-_radius: var(--ui-disclosure-radius, var(--ui-radius-md, calc(0.5rem * 1)));
1549
+ --ui-_trigger-height: var(--ui-disclosure-trigger-height, var(--ui-row-3, calc(1rem * 3)));
1550
+ --ui-_padding-x: var(--ui-disclosure-padding-x, calc(0.5rem * 2));
1551
+ --ui-_padding-y: var(--ui-disclosure-padding-y, calc(0.5rem * 2));
1552
+ }
1553
+ }
1554
+ @layer components.styles {
1555
+ .ui-disclosure {
1556
+ box-sizing: border-box;
1557
+ border-radius: var(--ui-_radius);
1558
+ outline: var(--ui-_border-width) solid var(--ui-_border-color);
1559
+ outline-offset: calc(var(--ui-_border-width) * -1);
1560
+ }
1561
+ .ui-disclosure:not([open]) {
1562
+ block-size: var(--ui-_trigger-height);
1563
+ }
1564
+ .ui-disclosure__trigger {
1565
+ display: flex;
1566
+ align-items: center;
1567
+ justify-content: space-between;
1568
+ gap: calc(0.5rem * 2);
1569
+ block-size: var(--ui-_trigger-height);
1570
+ inline-size: 100%;
1571
+ padding-inline: var(--ui-_padding-x);
1572
+ font-weight: var(--ui-weight-medium, 500);
1573
+ line-height: 1;
1574
+ text-align: start;
1575
+ cursor: pointer;
1576
+ list-style: none;
1577
+ }
1578
+ .ui-disclosure__trigger::-webkit-details-marker {
1579
+ display: none;
1580
+ }
1581
+ .ui-disclosure__trigger::marker {
1582
+ display: none;
1583
+ }
1584
+ .ui-disclosure__trigger:hover {
1585
+ background: var(--ui-color-bg-subtle, rgba(0, 0, 0, 0.02));
1586
+ }
1587
+ .ui-disclosure__icon {
1588
+ flex-shrink: 0;
1589
+ transition: transform var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
1590
+ }
1591
+ .ui-disclosure[open] .disclosure__icon {
1592
+ transform: rotate(180deg);
1593
+ }
1594
+ .ui-disclosure__content {
1595
+ padding: 0 var(--ui-_padding-x) var(--ui-_padding-y);
1596
+ }
1597
+ .ui-disclosure--animate .disclosure__content {
1598
+ animation: disclosure-open var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
1599
+ }
1600
+ @keyframes disclosure-open {
1601
+ from {
1602
+ opacity: 0;
1603
+ transform: translateY(calc(0.5rem * -1));
1604
+ }
1605
+ to {
1606
+ opacity: 1;
1607
+ transform: translateY(0);
1608
+ }
1609
+ }
1610
+ .ui-disclosure--borderless {
1611
+ --ui-_border-width: 0;
1612
+ border: none;
1613
+ border-radius: 0;
1614
+ }
1615
+ .ui-disclosure--flush .disclosure__trigger {
1616
+ padding-inline: 0;
1617
+ }
1618
+ .ui-disclosure--flush .disclosure__content {
1619
+ padding-inline: 0;
1620
+ }
1621
+ }
1622
+ @layer components.tokens {
1623
+ .ui-divider {
1624
+ --ui-_color: var(--ui-divider-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
1625
+ --ui-_line-size: var(--ui-divider-line-size, 1px);
1626
+ --ui-_height: var(--ui-divider-height, 0.5rem);
1627
+ --ui-_gap: var(--ui-divider-gap, calc(0.5rem * 2));
1628
+ }
1629
+ }
1630
+ @layer components.styles {
1631
+ .ui-divider {
1632
+ display: flex;
1633
+ align-items: center;
1634
+ block-size: var(--ui-_height);
1635
+ margin: var(--ui-_gap) 0;
1636
+ font-size: var(--ui-font-size-sm, 0.875rem);
1637
+ line-height: 1;
1638
+ color: var(--ui-color-text-muted);
1639
+ }
1640
+ .ui-divider::before,
1641
+ .ui-divider::after {
1642
+ content: "";
1643
+ flex: 1;
1644
+ block-size: var(--ui-_line-size);
1645
+ background: var(--ui-_color);
1646
+ }
1647
+ .ui-divider:not(:empty) {
1648
+ --ui-_height: var(--ui-row-1, 1rem);
1649
+ }
1650
+ .ui-divider:not(:empty)::before {
1651
+ margin-inline-end: calc(0.5rem * 2);
1652
+ }
1653
+ .ui-divider:not(:empty)::after {
1654
+ margin-inline-start: calc(0.5rem * 2);
1655
+ }
1656
+ .ui-divider:empty::after {
1657
+ display: none;
1658
+ }
1659
+ .ui-divider--vertical {
1660
+ flex-direction: column;
1661
+ align-self: stretch;
1662
+ margin: 0 var(--ui-_gap);
1663
+ writing-mode: vertical-rl;
1664
+ }
1665
+ .ui-divider--vertical::before,
1666
+ .ui-divider--vertical::after {
1667
+ flex: 1;
1668
+ block-size: auto;
1669
+ inline-size: var(--ui-_size);
1670
+ }
1671
+ .ui-divider--start::before {
1672
+ display: none;
1673
+ }
1674
+ .ui-divider--start:not(:empty)::after {
1675
+ margin-inline-start: calc(0.5rem * 2);
1676
+ }
1677
+ .ui-divider--end::after {
1678
+ display: none;
1679
+ }
1680
+ .ui-divider--end:not(:empty)::before {
1681
+ margin-inline-end: calc(0.5rem * 2);
1682
+ }
1683
+ .ui-divider--dashed::before,
1684
+ .ui-divider--dashed::after {
1685
+ background: repeating-linear-gradient(90deg, var(--ui-_color) 0, var(--ui-_color) calc(0.5rem / 2), transparent calc(0.5rem / 2), transparent 0.5rem);
1686
+ }
1687
+ .ui-divider--vertical.divider--dashed::before,
1688
+ .ui-divider--vertical.divider--dashed::after {
1689
+ background: repeating-linear-gradient(180deg, var(--ui-_color) 0, var(--ui-_color) calc(0.5rem / 2), transparent calc(0.5rem / 2), transparent 0.5rem);
1690
+ }
1691
+ }
1692
+ @layer components.tokens {
1693
+ .ui-drawer {
1694
+ --ui-_size: var(--ui-drawer-size, calc(0.5rem * 40));
1695
+ --ui-_max-size: var(--ui-drawer-max-size, 90%);
1696
+ --ui-_bg: var(--ui-drawer-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
1697
+ --ui-_shadow: var(--ui-drawer-shadow, var(--ui-shadow-lg));
1698
+ --ui-_header-padding: var(--ui-drawer-header-padding, calc(0.5rem * 2) calc(0.5rem * 3));
1699
+ --ui-_body-padding: var(--ui-drawer-body-padding, calc(0.5rem * 3));
1700
+ --ui-_footer-padding: var(--ui-drawer-footer-padding, calc(0.5rem * 2) calc(0.5rem * 3));
1701
+ --ui-_border-color: var(--ui-drawer-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
1702
+ }
1703
+ .ui-drawer--sm {
1704
+ --ui-_size: calc(0.5rem * 30);
1705
+ }
1706
+ .ui-drawer--lg {
1707
+ --ui-_size: calc(0.5rem * 50);
1708
+ }
1709
+ .ui-drawer--full {
1710
+ --ui-_size: 100%;
1711
+ --ui-_max-size: 100%;
1712
+ }
1713
+ }
1714
+ @layer components.styles {
1715
+ .ui-drawer-overlay {
1716
+ position: fixed;
1717
+ inset: 0;
1718
+ z-index: var(--ui-z-drawer, 900);
1719
+ background: var(--ui-overlay-bg, rgba(0, 0, 0, 0.5));
1720
+ }
1721
+ .ui-drawer-overlay[data-state=open] {
1722
+ animation: drawer-overlay-in var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1723
+ }
1724
+ .ui-drawer-overlay[data-state=closed] {
1725
+ animation: drawer-overlay-out var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1726
+ }
1727
+ @keyframes drawer-overlay-in {
1728
+ from {
1729
+ opacity: 0;
1730
+ }
1731
+ }
1732
+ @keyframes drawer-overlay-out {
1733
+ to {
1734
+ opacity: 0;
1735
+ }
1736
+ }
1737
+ .ui-drawer {
1738
+ display: flex;
1739
+ flex-direction: column;
1740
+ position: fixed;
1741
+ z-index: var(--ui-z-drawer, 900);
1742
+ background: var(--ui-_bg);
1743
+ box-shadow: var(--ui-_shadow);
1744
+ }
1745
+ .ui-drawer--end {
1746
+ inset-block: 0;
1747
+ inset-inline-end: 0;
1748
+ inline-size: var(--ui-_size);
1749
+ max-inline-size: var(--ui-_max-size);
1750
+ box-shadow: calc(var(--ui-border-width-sm, 1px) * -1) 0 0 var(--ui-_border-color);
1751
+ }
1752
+ .ui-drawer--start {
1753
+ inset-block: 0;
1754
+ inset-inline-start: 0;
1755
+ inline-size: var(--ui-_size);
1756
+ max-inline-size: var(--ui-_max-size);
1757
+ box-shadow: var(--ui-border-width-sm, 1px) 0 0 var(--ui-_border-color);
1758
+ }
1759
+ .ui-drawer--top {
1760
+ inset-block-start: 0;
1761
+ inset-inline: 0;
1762
+ block-size: var(--ui-_size);
1763
+ max-block-size: var(--ui-_max-size);
1764
+ box-shadow: 0 var(--ui-border-width-sm, 1px) 0 var(--ui-_border-color);
1765
+ }
1766
+ .ui-drawer--bottom {
1767
+ inset-block-end: 0;
1768
+ inset-inline: 0;
1769
+ block-size: var(--ui-_size);
1770
+ max-block-size: var(--ui-_max-size);
1771
+ box-shadow: 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
1772
+ }
1773
+ .ui-drawer--end[data-state=open] {
1774
+ animation: drawer-slide-in-end var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1775
+ }
1776
+ .ui-drawer--end[data-state=closed] {
1777
+ animation: drawer-slide-out-end var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1778
+ }
1779
+ .ui-drawer--start[data-state=open] {
1780
+ animation: drawer-slide-in-start var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1781
+ }
1782
+ .ui-drawer--start[data-state=closed] {
1783
+ animation: drawer-slide-out-start var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1784
+ }
1785
+ .ui-drawer--top[data-state=open] {
1786
+ animation: drawer-slide-in-top var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1787
+ }
1788
+ .ui-drawer--top[data-state=closed] {
1789
+ animation: drawer-slide-out-top var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1790
+ }
1791
+ .ui-drawer--bottom[data-state=open] {
1792
+ animation: drawer-slide-in-bottom var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
1793
+ }
1794
+ .ui-drawer--bottom[data-state=closed] {
1795
+ animation: drawer-slide-out-bottom var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
1796
+ }
1797
+ @keyframes drawer-slide-in-end {
1798
+ from {
1799
+ transform: translateX(100%);
1800
+ }
1801
+ }
1802
+ @keyframes drawer-slide-out-end {
1803
+ to {
1804
+ transform: translateX(100%);
1805
+ }
1806
+ }
1807
+ @keyframes drawer-slide-in-start {
1808
+ from {
1809
+ transform: translateX(-100%);
1810
+ }
1811
+ }
1812
+ @keyframes drawer-slide-out-start {
1813
+ to {
1814
+ transform: translateX(-100%);
1815
+ }
1816
+ }
1817
+ @keyframes drawer-slide-in-top {
1818
+ from {
1819
+ transform: translateY(-100%);
1820
+ }
1821
+ }
1822
+ @keyframes drawer-slide-out-top {
1823
+ to {
1824
+ transform: translateY(-100%);
1825
+ }
1826
+ }
1827
+ @keyframes drawer-slide-in-bottom {
1828
+ from {
1829
+ transform: translateY(100%);
1830
+ }
1831
+ }
1832
+ @keyframes drawer-slide-out-bottom {
1833
+ to {
1834
+ transform: translateY(100%);
1835
+ }
1836
+ }
1837
+ .ui-drawer__header {
1838
+ display: flex;
1839
+ flex-shrink: 0;
1840
+ align-items: center;
1841
+ justify-content: space-between;
1842
+ gap: calc(0.5rem * 2);
1843
+ padding: var(--ui-_header-padding);
1844
+ box-shadow: inset 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
1845
+ }
1846
+ .ui-drawer__title {
1847
+ margin: 0;
1848
+ font-size: var(--ui-font-size-lg, 1.25rem);
1849
+ font-weight: var(--ui-weight-semibold, 600);
1850
+ line-height: var(--ui-row-1, 1rem);
1851
+ }
1852
+ .ui-drawer__description {
1853
+ margin: 0;
1854
+ font-size: var(--ui-font-size-sm, 0.875rem);
1855
+ line-height: var(--ui-row-1, 1rem);
1856
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
1857
+ }
1858
+ .ui-drawer__close {
1859
+ flex-shrink: 0;
1860
+ margin-inline-start: auto;
1861
+ }
1862
+ .ui-drawer__body {
1863
+ flex: 1 1 auto;
1864
+ padding: var(--ui-_body-padding);
1865
+ overflow-y: auto;
1866
+ line-height: var(--ui-row-1, 1rem);
1867
+ }
1868
+ .ui-drawer__footer {
1869
+ display: flex;
1870
+ flex-shrink: 0;
1871
+ align-items: center;
1872
+ justify-content: flex-end;
1873
+ gap: calc(0.5rem * 2);
1874
+ padding: var(--ui-_footer-padding);
1875
+ box-shadow: inset 0 var(--ui-border-width-sm, 1px) 0 var(--ui-_border-color);
1876
+ }
1877
+ }
1878
+ @layer components.tokens {
1879
+ .ui-field {
1880
+ --ui-_gap: var(--ui-field-gap, 0);
1881
+ }
1882
+ }
1883
+ @layer components.styles {
1884
+ .ui-field {
1885
+ display: flex;
1886
+ flex-direction: column;
1887
+ gap: var(--ui-_gap);
1888
+ }
1889
+ .ui-field__control {
1890
+ display: flex;
1891
+ flex-direction: column;
1892
+ }
1893
+ .ui-field--horizontal {
1894
+ flex-direction: row;
1895
+ flex-wrap: wrap;
1896
+ align-items: flex-start;
1897
+ }
1898
+ .ui-field--horizontal > .field__label {
1899
+ flex: 0 0 auto;
1900
+ min-inline-size: calc(0.5rem * 15);
1901
+ padding-block-start: calc(0.5rem * 1);
1902
+ }
1903
+ .ui-field--horizontal > .field__control {
1904
+ flex: 1 1 0;
1905
+ min-inline-size: calc(0.5rem * 20);
1906
+ }
1907
+ }
1908
+ @layer components.tokens {
1909
+ .ui-form-error {
1910
+ --ui-_color: var(--ui-form-error-color, var(--ui-color-danger));
1911
+ --ui-_size: var(--ui-form-error-size, var(--ui-font-size-sm, 0.875rem));
1912
+ --ui-_gap: var(--ui-form-error-gap, 0);
1913
+ }
1914
+ }
1915
+ @layer components.styles {
1916
+ .ui-form-error {
1917
+ display: flex;
1918
+ align-items: flex-start;
1919
+ gap: var(--ui-_gap);
1920
+ margin-block-start: var(--ui-_gap);
1921
+ font-size: var(--ui-_size);
1922
+ line-height: var(--ui-leading-tight-sm, var(--ui-row-1));
1923
+ color: var(--ui-_color);
1924
+ }
1925
+ .ui-form-error__icon {
1926
+ flex-shrink: 0;
1927
+ }
1928
+ }
1929
+ @layer components.tokens {
1930
+ .ui-form-helper {
1931
+ --ui-_color: var(--ui-form-helper-color, var(--ui-color-text-muted));
1932
+ --ui-_size: var(--ui-form-helper-size, var(--ui-font-size-sm, 0.875rem));
1933
+ --ui-_gap: var(--ui-form-helper-gap, 0);
1934
+ }
1935
+ }
1936
+ @layer components.styles {
1937
+ .ui-form-helper {
1938
+ display: block;
1939
+ margin-block-start: var(--ui-_gap);
1940
+ font-size: var(--ui-_size);
1941
+ line-height: var(--ui-leading-tight-sm, var(--ui-row-1));
1942
+ color: var(--ui-_color);
1943
+ }
1944
+ }
1945
+ @layer components.tokens {
1946
+ .ui-heading {
1947
+ --ui-_font-size: var(--ui-heading-font-size, var(--ui-font-size-xl, 1.5rem));
1948
+ --ui-_line-height: var(--ui-heading-line-height, var(--ui-leading-xl, 2rem));
1949
+ --ui-_weight: var(--ui-heading-weight, var(--ui-weight-bold, 700));
1950
+ --ui-_color: var(--ui-heading-color, var(--ui-color-text, hsl(220, 10%, 10%)));
1951
+ }
1952
+ .ui-heading--4xl {
1953
+ --ui-_font-size: var(--ui-heading-font-size-4xl, var(--ui-font-size-4xl, 2.5rem));
1954
+ --ui-_line-height: var(--ui-heading-line-height-4xl, var(--ui-leading-4xl, 3rem));
1955
+ }
1956
+ .ui-heading--3xl {
1957
+ --ui-_font-size: var(--ui-heading-font-size-3xl, var(--ui-font-size-3xl, 2rem));
1958
+ --ui-_line-height: var(--ui-heading-line-height-3xl, var(--ui-leading-3xl, 2.5rem));
1959
+ }
1960
+ .ui-heading--2xl {
1961
+ --ui-_font-size: var(--ui-heading-font-size-2xl, var(--ui-font-size-2xl, 1.75rem));
1962
+ --ui-_line-height: var(--ui-heading-line-height-2xl, var(--ui-leading-2xl, 2rem));
1963
+ }
1964
+ .ui-heading--xl {
1965
+ --ui-_font-size: var(--ui-heading-font-size-xl, var(--ui-font-size-xl, 1.5rem));
1966
+ --ui-_line-height: var(--ui-heading-line-height-xl, var(--ui-leading-xl, 2rem));
1967
+ }
1968
+ .ui-heading--lg {
1969
+ --ui-_font-size: var(--ui-heading-font-size-lg, var(--ui-font-size-lg, 1.25rem));
1970
+ --ui-_line-height: var(--ui-heading-line-height-lg, var(--ui-leading-lg, 2rem));
1971
+ }
1972
+ .ui-heading--md {
1973
+ --ui-_font-size: var(--ui-heading-font-size-md, var(--ui-font-size-md, 1rem));
1974
+ --ui-_line-height: var(--ui-heading-line-height-md, var(--ui-leading-tight-md, 1.5rem));
1975
+ }
1976
+ .ui-heading--sm {
1977
+ --ui-_font-size: var(--ui-heading-font-size-sm, var(--ui-font-size-sm, 0.875rem));
1978
+ --ui-_line-height: var(--ui-heading-line-height-sm, var(--ui-leading-tight-sm, 1rem));
1979
+ }
1980
+ }
1981
+ @layer components.styles {
1982
+ .ui-heading {
1983
+ margin: 0;
1984
+ font-size: var(--ui-_font-size);
1985
+ font-weight: var(--ui-_weight);
1986
+ line-height: var(--ui-_line-height);
1987
+ color: var(--ui-_color);
1988
+ }
1989
+ }
1990
+ @layer components.tokens {
1991
+ .ui-icon {
1992
+ --ui-_size: var(--ui-icon-size, 1em);
1993
+ --ui-_stroke: var(--ui-icon-stroke, 2);
1994
+ }
1995
+ .ui-icon--xs {
1996
+ --ui-_size: var(--ui-icon-size-xs, calc(0.5rem * 2));
1997
+ }
1998
+ .ui-icon--sm {
1999
+ --ui-_size: var(--ui-icon-size-sm, calc(0.5rem * 3));
2000
+ }
2001
+ .ui-icon--md {
2002
+ --ui-_size: var(--ui-icon-size-md, calc(0.5rem * 4));
2003
+ }
2004
+ .ui-icon--lg {
2005
+ --ui-_size: var(--ui-icon-size-lg, calc(0.5rem * 5));
2006
+ }
2007
+ .ui-icon--xl {
2008
+ --ui-_size: var(--ui-icon-size-xl, calc(0.5rem * 6));
2009
+ }
2010
+ .ui-icon--stroke-thin {
2011
+ --ui-_stroke: var(--ui-icon-stroke-thin, 1);
2012
+ }
2013
+ .ui-icon--stroke-thick {
2014
+ --ui-_stroke: var(--ui-icon-stroke-thick, 2.5);
2015
+ }
2016
+ }
2017
+ @layer components.styles {
2018
+ .ui-icon {
2019
+ display: inline-block;
2020
+ flex-shrink: 0;
2021
+ block-size: var(--ui-_size);
2022
+ inline-size: var(--ui-_size);
2023
+ vertical-align: middle;
2024
+ color: currentcolor;
2025
+ fill: none;
2026
+ stroke: currentcolor;
2027
+ stroke-width: var(--ui-_stroke);
2028
+ stroke-linecap: round;
2029
+ stroke-linejoin: round;
2030
+ }
2031
+ .ui-icon--filled {
2032
+ fill: currentcolor;
2033
+ stroke: none;
2034
+ }
2035
+ .ui-icon--spin {
2036
+ animation: icon-spin 1s linear infinite;
2037
+ }
2038
+ @keyframes icon-spin {
2039
+ to {
2040
+ transform: rotate(360deg);
2041
+ }
2042
+ }
2043
+ }
2044
+ @layer components.tokens {
2045
+ .ui-input {
2046
+ --ui-_height: var(--ui-input-height, var(--ui-row-2, 2rem));
2047
+ --ui-_padding-x: var(--ui-input-padding-x, var(--ui-space-1, 0.5rem));
2048
+ --ui-_font-size: var(--ui-input-font-size, var(--ui-font-size-sm, 0.875rem));
2049
+ --ui-_radius: var(--ui-input-radius, var(--ui-radius-md, 0.5rem));
2050
+ --ui-_bg: var(--ui-input-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2051
+ --ui-_border-color: var(--ui-input-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2052
+ --ui-_border-color-focus: var(--ui-input-border-color-focus, var(--ui-color-primary, hsl(220, 85%, 50%)));
2053
+ --ui-_text: var(--ui-input-text, var(--ui-color-text, hsl(220, 10%, 10%)));
2054
+ --ui-_placeholder: var(--ui-input-placeholder, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
2055
+ }
2056
+ .ui-input--sm {
2057
+ --ui-_height: var(--ui-input-height-sm, calc(1rem * 1.5));
2058
+ --ui-_font-size: var(--ui-input-font-size-sm, var(--ui-font-size-xs, 0.75rem));
2059
+ }
2060
+ .ui-input--lg {
2061
+ --ui-_height: var(--ui-input-height-lg, calc(1rem * 2.5));
2062
+ --ui-_padding-x: var(--ui-input-padding-x-lg, var(--ui-space-2, 1rem));
2063
+ --ui-_font-size: var(--ui-input-font-size-lg, var(--ui-font-size-md, 1rem));
2064
+ }
2065
+ .ui-input--filled {
2066
+ --ui-_bg: var(--ui-input-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2067
+ --ui-_border-color: transparent;
2068
+ }
2069
+ .ui-input--ghost {
2070
+ --ui-_bg: transparent;
2071
+ --ui-_border-color: transparent;
2072
+ }
2073
+ .ui-input--error {
2074
+ --ui-_border-color: var(--ui-input-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2075
+ --ui-_border-color-focus: var(--ui-input-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2076
+ }
2077
+ .ui-input--success {
2078
+ --ui-_border-color: var(--ui-input-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
2079
+ --ui-_border-color-focus: var(--ui-input-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
2080
+ }
2081
+ }
2082
+ @layer components.styles {
2083
+ .ui-input {
2084
+ display: inline-flex;
2085
+ align-items: center;
2086
+ block-size: var(--ui-_height);
2087
+ padding-inline: var(--ui-_padding-x);
2088
+ font-family: inherit;
2089
+ font-size: var(--ui-_font-size);
2090
+ line-height: 1;
2091
+ color: var(--ui-_text);
2092
+ background: var(--ui-_bg);
2093
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2094
+ border-radius: var(--ui-_radius);
2095
+ transition: border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2096
+ }
2097
+ .ui-input::placeholder {
2098
+ color: var(--ui-_placeholder);
2099
+ }
2100
+ .ui-input:hover:not(:disabled, :focus) {
2101
+ border-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
2102
+ }
2103
+ .ui-input:focus, .ui-input--focus {
2104
+ border-color: var(--ui-_border-color-focus);
2105
+ outline: none;
2106
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, hsl(220, 85%, 65%));
2107
+ }
2108
+ .ui-input:disabled, .ui-input--disabled {
2109
+ opacity: 0.5;
2110
+ cursor: not-allowed;
2111
+ }
2112
+ .ui-input:read-only {
2113
+ background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
2114
+ }
2115
+ .ui-input--block {
2116
+ inline-size: 100%;
2117
+ }
2118
+ .ui-input-group {
2119
+ display: inline-flex;
2120
+ align-items: stretch;
2121
+ position: relative;
2122
+ }
2123
+ .ui-input-group .input {
2124
+ flex: 1;
2125
+ }
2126
+ .ui-input-group--has-prefix .input {
2127
+ padding-inline-start: calc(var(--ui-_height) + var(--ui-space-half, 0.25rem));
2128
+ }
2129
+ .ui-input-group--has-suffix .input {
2130
+ padding-inline-end: calc(var(--ui-_height) + var(--ui-space-half, 0.25rem));
2131
+ }
2132
+ .ui-input-group__addon {
2133
+ display: flex;
2134
+ align-items: center;
2135
+ justify-content: center;
2136
+ position: absolute;
2137
+ inset-block: 0;
2138
+ inline-size: var(--ui-_height, 2rem);
2139
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2140
+ pointer-events: none;
2141
+ }
2142
+ .ui-input-group__addon--start {
2143
+ inset-inline-start: 0;
2144
+ }
2145
+ .ui-input-group__addon--end {
2146
+ inset-inline-end: 0;
2147
+ }
2148
+ .ui-input-group__addon--interactive {
2149
+ cursor: pointer;
2150
+ pointer-events: auto;
2151
+ }
2152
+ }
2153
+ @layer components.tokens {
2154
+ .ui-label {
2155
+ --ui-_font-size: var(--ui-label-font-size, var(--ui-font-size-sm, 0.875rem));
2156
+ --ui-_color: var(--ui-label-color, var(--ui-color-text, hsl(220, 10%, 10%)));
2157
+ --ui-_required-color: var(--ui-label-required-color, var(--ui-color-danger, hsl(0, 70%, 50%)));
2158
+ }
2159
+ .ui-label--lg {
2160
+ --ui-_font-size: var(--ui-label-font-size-lg, var(--ui-font-size-md, 1rem));
2161
+ }
2162
+ }
2163
+ @layer components.styles {
2164
+ .ui-label {
2165
+ display: inline-flex;
2166
+ align-items: baseline;
2167
+ gap: 0;
2168
+ font-size: var(--ui-_font-size);
2169
+ font-weight: var(--ui-weight-medium, 500);
2170
+ line-height: var(--ui-leading-tight-sm, var(--ui-row-1));
2171
+ color: var(--ui-_color);
2172
+ cursor: pointer;
2173
+ }
2174
+ .ui-label[aria-disabled=true] {
2175
+ opacity: 0.5;
2176
+ cursor: not-allowed;
2177
+ }
2178
+ .ui-label__required {
2179
+ color: var(--ui-_required-color);
2180
+ }
2181
+ .ui-label__optional {
2182
+ font-weight: var(--ui-weight-normal, 400);
2183
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2184
+ }
2185
+ }
2186
+ @layer components.tokens {
2187
+ .ui-link {
2188
+ --ui-_color: var(--ui-link-color, var(--ui-color-primary));
2189
+ --ui-_color-hover: var(--ui-link-color-hover, var(--ui-color-primary-hover, color-mix(in srgb, var(--ui-_color) 85%, black)));
2190
+ --ui-_color-visited: var(--ui-link-color-visited, var(--ui-_color));
2191
+ --ui-_decoration: var(--ui-link-decoration, underline);
2192
+ --ui-_decoration-hover: var(--ui-link-decoration-hover, underline);
2193
+ }
2194
+ .ui-link--muted {
2195
+ --ui-_color: var(--ui-link-color-muted, var(--ui-color-text-muted));
2196
+ --ui-_color-hover: var(--ui-link-color-muted-hover, var(--ui-color-text));
2197
+ }
2198
+ .ui-link--subtle {
2199
+ --ui-_decoration: none;
2200
+ --ui-_decoration-hover: underline;
2201
+ }
2202
+ }
2203
+ @layer components.styles {
2204
+ .ui-link {
2205
+ text-decoration: var(--ui-_decoration);
2206
+ color: var(--ui-_color);
2207
+ cursor: pointer;
2208
+ transition: color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2209
+ text-underline-offset: calc(0.5rem / 4);
2210
+ }
2211
+ .ui-link:hover {
2212
+ text-decoration: var(--ui-_decoration-hover);
2213
+ color: var(--ui-_color-hover);
2214
+ }
2215
+ .ui-link:focus-visible {
2216
+ border-radius: calc(0.5rem / 4);
2217
+ outline: 2px solid var(--ui-color-focus, var(--ui-color-primary));
2218
+ outline-offset: calc(0.5rem / 4);
2219
+ }
2220
+ .ui-link:visited {
2221
+ color: var(--ui-_color-visited);
2222
+ }
2223
+ .ui-link--disabled,
2224
+ .ui-link[aria-disabled=true] {
2225
+ color: var(--ui-color-text-muted);
2226
+ opacity: 0.6;
2227
+ cursor: not-allowed;
2228
+ pointer-events: none;
2229
+ }
2230
+ .ui-link--external::after {
2231
+ content: "↗";
2232
+ display: inline-block;
2233
+ margin-inline-start: calc(0.5rem / 4);
2234
+ font-size: 0.75em;
2235
+ }
2236
+ }
2237
+ @layer components.tokens {
2238
+ .ui-menu {
2239
+ --ui-_min-width: var(--ui-menu-min-width, calc(0.5rem * 16));
2240
+ --ui-_max-height: var(--ui-menu-max-height, calc(0.5rem * 40));
2241
+ --ui-_padding: var(--ui-menu-padding, calc(0.5rem * 1));
2242
+ --ui-_radius: var(--ui-menu-radius, var(--ui-radius-md, 0.5rem));
2243
+ --ui-_bg: var(--ui-menu-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2244
+ --ui-_border-color: var(--ui-menu-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
2245
+ --ui-_shadow: var(--ui-menu-shadow, var(--ui-shadow-lg));
2246
+ --ui-_item-padding: var(--ui-menu-item-padding, calc(0.5rem * 1) calc(0.5rem * 2));
2247
+ --ui-_item-radius: var(--ui-menu-item-radius, var(--ui-radius-sm, 0.25rem));
2248
+ --ui-_item-bg-hover: var(--ui-menu-item-bg-hover, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
2249
+ }
2250
+ }
2251
+ @layer components.styles {
2252
+ .ui-menu {
2253
+ min-inline-size: var(--ui-_min-width);
2254
+ max-block-size: var(--ui-_max-height);
2255
+ padding: var(--ui-_padding);
2256
+ overflow-y: auto;
2257
+ background: var(--ui-_bg);
2258
+ border-radius: var(--ui-_radius);
2259
+ outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2260
+ box-shadow: var(--ui-_shadow);
2261
+ outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
2262
+ }
2263
+ .ui-menu__group {
2264
+ padding: 0;
2265
+ margin: 0;
2266
+ list-style: none;
2267
+ }
2268
+ .ui-menu__label {
2269
+ padding: var(--ui-_item-padding);
2270
+ font-size: var(--ui-font-size-xs, 0.75rem);
2271
+ font-weight: var(--ui-weight-medium, 500);
2272
+ line-height: var(--ui-row-1, 1rem);
2273
+ letter-spacing: 0.05em;
2274
+ text-transform: uppercase;
2275
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2276
+ }
2277
+ .ui-menu__item {
2278
+ display: flex;
2279
+ align-items: center;
2280
+ gap: calc(0.5rem * 1);
2281
+ padding: var(--ui-_item-padding);
2282
+ font-size: var(--ui-font-size-sm, 0.875rem);
2283
+ line-height: var(--ui-row-1, 1rem);
2284
+ text-decoration: none;
2285
+ color: var(--ui-color-text, hsl(220, 10%, 10%));
2286
+ background: transparent;
2287
+ border: none;
2288
+ border-radius: var(--ui-_item-radius);
2289
+ cursor: pointer;
2290
+ transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2291
+ }
2292
+ .ui-menu__item:hover, .ui-menu__item:focus-visible {
2293
+ background: var(--ui-_item-bg-hover);
2294
+ outline: none;
2295
+ }
2296
+ .ui-menu__item--danger {
2297
+ color: var(--ui-color-danger, hsl(0, 70%, 50%));
2298
+ }
2299
+ .ui-menu__item--danger:hover, .ui-menu__item--danger:focus-visible {
2300
+ color: var(--ui-color-danger, hsl(0, 70%, 50%));
2301
+ }
2302
+ .ui-menu__item--disabled,
2303
+ .ui-menu__item[aria-disabled=true] {
2304
+ opacity: 0.5;
2305
+ pointer-events: none;
2306
+ }
2307
+ .ui-menu__item-icon {
2308
+ flex-shrink: 0;
2309
+ block-size: calc(0.5rem * 2);
2310
+ inline-size: calc(0.5rem * 2);
2311
+ }
2312
+ .ui-menu__item-shortcut {
2313
+ margin-inline-start: auto;
2314
+ font-size: var(--ui-font-size-xs, 0.75rem);
2315
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2316
+ }
2317
+ .ui-menu__separator {
2318
+ display: flex;
2319
+ align-items: center;
2320
+ block-size: calc(0.5rem * 2);
2321
+ margin: 0;
2322
+ }
2323
+ .ui-menu__separator::before {
2324
+ content: "";
2325
+ flex: 1;
2326
+ block-size: var(--ui-border-width-sm, 1px);
2327
+ background: var(--ui-color-border, hsl(220, 10%, 90%));
2328
+ }
2329
+ .ui-menu__item--check,
2330
+ .ui-menu__item--radio {
2331
+ position: relative;
2332
+ padding-inline-start: calc(0.5rem * 4);
2333
+ }
2334
+ .ui-menu__item-indicator {
2335
+ display: flex;
2336
+ align-items: center;
2337
+ justify-content: center;
2338
+ position: absolute;
2339
+ inset-inline-start: calc(0.5rem * 1);
2340
+ block-size: calc(0.5rem * 2);
2341
+ inline-size: calc(0.5rem * 2);
2342
+ }
2343
+ }
2344
+ @layer components.tokens {
2345
+ .ui-modal {
2346
+ --ui-_bg: var(--ui-modal-bg, var(--ui-color-bg, white));
2347
+ --ui-_radius: var(--ui-modal-radius, var(--ui-radius-lg, calc(0.5rem * 1.5)));
2348
+ --ui-_shadow: var(--ui-modal-shadow, 0 calc(0.5rem * 3) calc(0.5rem * 6) rgb(0 0 0 / 0.25));
2349
+ --ui-_padding: var(--ui-modal-padding, calc(0.5rem * 3));
2350
+ --ui-_max-width: var(--ui-modal-max-width, calc(0.5rem * 60));
2351
+ --ui-_max-height: var(--ui-modal-max-height, calc(100vh - 0.5rem * 8));
2352
+ --ui-_z: var(--ui-modal-z, var(--ui-z-modal, 400));
2353
+ }
2354
+ .ui-modal--sm {
2355
+ --ui-_max-width: var(--ui-modal-max-width-sm, calc(0.5rem * 40));
2356
+ }
2357
+ .ui-modal--lg {
2358
+ --ui-_max-width: var(--ui-modal-max-width-lg, calc(0.5rem * 80));
2359
+ }
2360
+ .ui-modal--full {
2361
+ --ui-_max-width: calc(100vw - 0.5rem * 4);
2362
+ --ui-_max-height: calc(100vh - 0.5rem * 4);
2363
+ --ui-_radius: 0;
2364
+ }
2365
+ }
2366
+ @layer components.styles {
2367
+ .ui-modal {
2368
+ display: flex;
2369
+ align-items: center;
2370
+ justify-content: center;
2371
+ position: fixed;
2372
+ inset: 0;
2373
+ z-index: var(--ui-_z);
2374
+ padding: calc(0.5rem * 2);
2375
+ }
2376
+ .ui-modal__content {
2377
+ display: flex;
2378
+ flex-direction: column;
2379
+ position: relative;
2380
+ inline-size: 100%;
2381
+ max-block-size: var(--ui-_max-height);
2382
+ max-inline-size: var(--ui-_max-width);
2383
+ padding: var(--ui-_padding);
2384
+ overflow: hidden;
2385
+ background: var(--ui-_bg);
2386
+ border-radius: var(--ui-_radius);
2387
+ box-shadow: var(--ui-_shadow);
2388
+ }
2389
+ .ui-modal__body {
2390
+ flex: 1 1 auto;
2391
+ overflow-y: auto;
2392
+ }
2393
+ .ui-modal--entering .modal__content,
2394
+ .ui-modal--visible .modal__content {
2395
+ opacity: 1;
2396
+ transform: scale(1);
2397
+ }
2398
+ .ui-modal--exiting .modal__content,
2399
+ .ui-modal--hidden .modal__content {
2400
+ opacity: 0;
2401
+ transform: scale(0.95);
2402
+ }
2403
+ .ui-modal--animate .modal__content {
2404
+ transition: opacity var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease), transform var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
2405
+ }
2406
+ .ui-modal--hidden {
2407
+ visibility: hidden;
2408
+ pointer-events: none;
2409
+ }
2410
+ }
2411
+ @layer components.tokens {
2412
+ .ui-overlay {
2413
+ --ui-_bg: var(--ui-overlay-bg, rgb(0 0 0 / 0.5));
2414
+ --ui-_z: var(--ui-overlay-z, var(--ui-z-overlay, 300));
2415
+ }
2416
+ .ui-overlay--light {
2417
+ --ui-_bg: var(--ui-overlay-bg-light, rgb(255 255 255 / 0.7));
2418
+ }
2419
+ .ui-overlay--blur {
2420
+ --ui-_bg: var(--ui-overlay-bg-blur, rgb(0 0 0 / 0.3));
2421
+ }
2422
+ }
2423
+ @layer components.styles {
2424
+ .ui-overlay {
2425
+ position: fixed;
2426
+ inset: 0;
2427
+ z-index: var(--ui-_z);
2428
+ background: var(--ui-_bg);
2429
+ }
2430
+ .ui-overlay--blur {
2431
+ backdrop-filter: blur(calc(0.5rem * 0.5));
2432
+ }
2433
+ .ui-overlay--entering,
2434
+ .ui-overlay--visible {
2435
+ opacity: 1;
2436
+ }
2437
+ .ui-overlay--exiting,
2438
+ .ui-overlay--hidden {
2439
+ opacity: 0;
2440
+ pointer-events: none;
2441
+ }
2442
+ .ui-overlay--animate {
2443
+ transition: opacity var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
2444
+ }
2445
+ }
2446
+ @layer components.tokens {
2447
+ .ui-pagination {
2448
+ --ui-_gap: var(--ui-pagination-gap, calc(0.5rem * 0.5));
2449
+ --ui-_item-size: var(--ui-pagination-item-size, calc(0.5rem * 4));
2450
+ --ui-_item-radius: var(--ui-pagination-item-radius, var(--ui-radius-sm, 0.25rem));
2451
+ --ui-_item-bg: var(--ui-pagination-item-bg, transparent);
2452
+ --ui-_item-bg-hover: var(--ui-pagination-item-bg-hover, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
2453
+ --ui-_item-bg-active: var(--ui-pagination-item-bg-active, var(--ui-color-primary));
2454
+ --ui-_item-color: var(--ui-pagination-item-color, var(--ui-color-text, hsl(220, 10%, 10%)));
2455
+ --ui-_item-color-active: var(--ui-pagination-item-color-active, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2456
+ }
2457
+ }
2458
+ @layer components.styles {
2459
+ .ui-pagination {
2460
+ display: flex;
2461
+ align-items: center;
2462
+ gap: var(--ui-_gap);
2463
+ }
2464
+ .ui-pagination__list {
2465
+ display: flex;
2466
+ align-items: center;
2467
+ gap: var(--ui-_gap);
2468
+ padding: 0;
2469
+ margin: 0;
2470
+ list-style: none;
2471
+ }
2472
+ .ui-pagination__item {
2473
+ display: flex;
2474
+ }
2475
+ .ui-pagination__link {
2476
+ display: inline-flex;
2477
+ align-items: center;
2478
+ justify-content: center;
2479
+ block-size: var(--ui-_item-size);
2480
+ min-inline-size: var(--ui-_item-size);
2481
+ padding-inline: calc(0.5rem * 1);
2482
+ font-size: var(--ui-font-size-sm, 0.875rem);
2483
+ text-decoration: none;
2484
+ color: var(--ui-_item-color);
2485
+ background: var(--ui-_item-bg);
2486
+ border-radius: var(--ui-_item-radius);
2487
+ transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease), color var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2488
+ }
2489
+ .ui-pagination__link:hover {
2490
+ background: var(--ui-_item-bg-hover);
2491
+ }
2492
+ .ui-pagination__link[aria-current=page],
2493
+ .ui-pagination__link--active {
2494
+ color: var(--ui-_item-color-active);
2495
+ background: var(--ui-_item-bg-active);
2496
+ pointer-events: none;
2497
+ }
2498
+ .ui-pagination__link[aria-disabled=true],
2499
+ .ui-pagination__link--disabled {
2500
+ opacity: 0.5;
2501
+ pointer-events: none;
2502
+ }
2503
+ .ui-pagination__prev,
2504
+ .ui-pagination__next {
2505
+ display: inline-flex;
2506
+ align-items: center;
2507
+ gap: calc(0.5rem * 0.5);
2508
+ padding-inline: calc(0.5rem * 1.5);
2509
+ }
2510
+ .ui-pagination__ellipsis {
2511
+ display: inline-flex;
2512
+ align-items: center;
2513
+ justify-content: center;
2514
+ block-size: var(--ui-_item-size);
2515
+ min-inline-size: var(--ui-_item-size);
2516
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2517
+ }
2518
+ .ui-pagination--sm {
2519
+ --ui-_item-size: calc(0.5rem * 3);
2520
+ --ui-_gap: calc(0.5rem * 0.25);
2521
+ }
2522
+ .ui-pagination--lg {
2523
+ --ui-_item-size: calc(0.5rem * 5);
2524
+ --ui-_gap: calc(0.5rem * 0.75);
2525
+ }
2526
+ }
2527
+ @layer components.tokens {
2528
+ .ui-popover {
2529
+ --ui-_bg: var(--ui-popover-bg, var(--ui-color-bg, white));
2530
+ --ui-_border-color: var(--ui-popover-border-color, var(--ui-color-border, rgb(0 0 0 / 0.1)));
2531
+ --ui-_radius: var(--ui-popover-radius, var(--ui-radius-md, calc(0.5rem * 1)));
2532
+ --ui-_shadow: var(--ui-popover-shadow, 0 calc(0.5rem / 2) calc(0.5rem * 2) rgb(0 0 0 / 0.15));
2533
+ --ui-_padding: var(--ui-popover-padding, calc(0.5rem * 2));
2534
+ --ui-_max-width: var(--ui-popover-max-width, calc(0.5rem * 40));
2535
+ --ui-_z: var(--ui-popover-z, var(--ui-z-popover, 500));
2536
+ --ui-_arrow-size: var(--ui-popover-arrow-size, calc(0.5rem));
2537
+ }
2538
+ }
2539
+ @layer components.styles {
2540
+ .ui-popover {
2541
+ position: absolute;
2542
+ z-index: var(--ui-_z);
2543
+ max-inline-size: var(--ui-_max-width);
2544
+ padding: var(--ui-_padding);
2545
+ line-height: var(--ui-row-1, 1rem);
2546
+ background: var(--ui-_bg);
2547
+ border-radius: var(--ui-_radius);
2548
+ outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2549
+ box-shadow: var(--ui-_shadow);
2550
+ outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
2551
+ }
2552
+ .ui-popover__header {
2553
+ padding-block-end: calc(0.5rem * 2);
2554
+ margin-block-end: calc(0.5rem * 2);
2555
+ box-shadow: inset 0 calc(var(--ui-border-width-sm, 1px) * -1) 0 var(--ui-_border-color);
2556
+ }
2557
+ .ui-popover__title {
2558
+ margin: 0;
2559
+ font-size: var(--ui-font-size-md, 1rem);
2560
+ font-weight: var(--ui-weight-semibold, 600);
2561
+ }
2562
+ .ui-popover--top::after {
2563
+ content: "";
2564
+ position: absolute;
2565
+ inset-block-start: 100%;
2566
+ inset-inline-start: 50%;
2567
+ border: var(--ui-_arrow-size) solid transparent;
2568
+ border-block-start-color: var(--ui-_bg);
2569
+ transform: translateX(-50%);
2570
+ }
2571
+ .ui-popover--top::before {
2572
+ content: "";
2573
+ position: absolute;
2574
+ inset-block-start: 100%;
2575
+ inset-inline-start: 50%;
2576
+ border: calc(var(--ui-_arrow-size) + 1px) solid transparent;
2577
+ border-block-start-color: var(--ui-_border-color);
2578
+ transform: translateX(-50%);
2579
+ }
2580
+ .ui-popover--bottom::after {
2581
+ content: "";
2582
+ position: absolute;
2583
+ inset-block-end: 100%;
2584
+ inset-inline-start: 50%;
2585
+ border: var(--ui-_arrow-size) solid transparent;
2586
+ border-block-end-color: var(--ui-_bg);
2587
+ transform: translateX(-50%);
2588
+ }
2589
+ .ui-popover--bottom::before {
2590
+ content: "";
2591
+ position: absolute;
2592
+ inset-block-end: 100%;
2593
+ inset-inline-start: 50%;
2594
+ border: calc(var(--ui-_arrow-size) + 1px) solid transparent;
2595
+ border-block-end-color: var(--ui-_border-color);
2596
+ transform: translateX(-50%);
2597
+ }
2598
+ .ui-popover--visible {
2599
+ opacity: 1;
2600
+ }
2601
+ .ui-popover--hidden {
2602
+ opacity: 0;
2603
+ pointer-events: none;
2604
+ }
2605
+ .ui-popover--animate {
2606
+ transition: opacity var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
2607
+ }
2608
+ }
2609
+ @layer components.tokens {
2610
+ .ui-progress {
2611
+ --ui-_height: var(--ui-progress-height, calc(0.5rem * 1));
2612
+ --ui-_bg: var(--ui-progress-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
2613
+ --ui-_fill: var(--ui-progress-fill, var(--ui-color-primary));
2614
+ --ui-_radius: var(--ui-progress-radius, var(--ui-radius-full, 9999px));
2615
+ }
2616
+ .ui-progress--sm {
2617
+ --ui-_height: calc(0.5rem * 1);
2618
+ }
2619
+ .ui-progress--lg {
2620
+ --ui-_height: calc(0.5rem * 2);
2621
+ }
2622
+ }
2623
+ @layer components.styles {
2624
+ .ui-progress {
2625
+ position: relative;
2626
+ block-size: var(--ui-_height);
2627
+ overflow: hidden;
2628
+ background: var(--ui-_bg);
2629
+ border-radius: var(--ui-_radius);
2630
+ }
2631
+ .ui-progress__bar {
2632
+ block-size: 100%;
2633
+ background: var(--ui-_fill);
2634
+ border-radius: var(--ui-_radius);
2635
+ transition: inline-size var(--ui-duration-normal, 200ms) var(--ui-ease-default, ease);
2636
+ }
2637
+ .ui-progress--indeterminate .progress__bar {
2638
+ inline-size: 30%;
2639
+ animation: progress-indeterminate 1.5s infinite ease-in-out;
2640
+ }
2641
+ @keyframes progress-indeterminate {
2642
+ 0% {
2643
+ transform: translateX(-100%);
2644
+ }
2645
+ 100% {
2646
+ transform: translateX(400%);
2647
+ }
2648
+ }
2649
+ .ui-progress--striped .progress__bar {
2650
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
2651
+ background-size: 0.5rem 0.5rem;
2652
+ }
2653
+ .ui-progress--animated .progress__bar {
2654
+ animation: progress-stripes 1s linear infinite;
2655
+ }
2656
+ @keyframes progress-stripes {
2657
+ from {
2658
+ background-position: 0.5rem 0;
2659
+ }
2660
+ to {
2661
+ background-position: 0 0;
2662
+ }
2663
+ }
2664
+ .ui-progress--success {
2665
+ --ui-_fill: var(--ui-color-success);
2666
+ }
2667
+ .ui-progress--warning {
2668
+ --ui-_fill: var(--ui-color-warning);
2669
+ }
2670
+ .ui-progress--danger {
2671
+ --ui-_fill: var(--ui-color-danger);
2672
+ }
2673
+ }
2674
+ @layer components.tokens {
2675
+ .ui-radio {
2676
+ --ui-_size: var(--ui-radio-size, calc(0.5rem * 2));
2677
+ --ui-_bg: var(--ui-radio-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2678
+ --ui-_bg-checked: var(--ui-radio-bg-checked, var(--ui-color-primary, hsl(220, 85%, 50%)));
2679
+ --ui-_border-color: var(--ui-radio-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2680
+ --ui-_border-color-focus: var(--ui-radio-border-color-focus, var(--ui-color-primary, hsl(220, 85%, 50%)));
2681
+ --ui-_dot-color: var(--ui-radio-dot-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
2682
+ }
2683
+ .ui-radio--lg {
2684
+ --ui-_size: var(--ui-radio-size-lg, calc(0.5rem * 3));
2685
+ }
2686
+ .ui-radio--error {
2687
+ --ui-_border-color: var(--ui-radio-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2688
+ --ui-_border-color-focus: var(--ui-radio-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2689
+ }
2690
+ }
2691
+ @layer components.styles {
2692
+ .ui-radio {
2693
+ display: inline-flex;
2694
+ flex-shrink: 0;
2695
+ align-items: center;
2696
+ justify-content: center;
2697
+ block-size: var(--ui-_size);
2698
+ inline-size: var(--ui-_size);
2699
+ margin: 0;
2700
+ vertical-align: middle;
2701
+ background: var(--ui-_bg);
2702
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2703
+ border-radius: 50%;
2704
+ cursor: pointer;
2705
+ appearance: none;
2706
+ transition: background-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2707
+ }
2708
+ .ui-radio::before {
2709
+ content: "";
2710
+ block-size: 50%;
2711
+ inline-size: 50%;
2712
+ background-color: var(--ui-_dot-color);
2713
+ border-radius: 50%;
2714
+ opacity: 0;
2715
+ transform: scale(0);
2716
+ transition: opacity var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), transform var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2717
+ }
2718
+ .ui-radio:hover:not(:disabled) {
2719
+ border-color: var(--ui-_border-color-focus);
2720
+ }
2721
+ .ui-radio:focus-visible {
2722
+ border-color: var(--ui-_border-color-focus);
2723
+ outline: none;
2724
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, hsl(220, 85%, 65%));
2725
+ }
2726
+ .ui-radio:checked {
2727
+ background: var(--ui-_bg-checked);
2728
+ border-color: var(--ui-_bg-checked);
2729
+ }
2730
+ .ui-radio:checked::before {
2731
+ opacity: 1;
2732
+ transform: scale(1);
2733
+ }
2734
+ .ui-radio:disabled {
2735
+ opacity: 0.5;
2736
+ cursor: not-allowed;
2737
+ }
2738
+ }
2739
+ @layer components.tokens {
2740
+ .ui-select {
2741
+ --ui-_height: var(--ui-select-height, var(--ui-row-2, 2rem));
2742
+ --ui-_padding-x: var(--ui-select-padding-x, var(--ui-space-1, 0.5rem));
2743
+ --ui-_font-size: var(--ui-select-font-size, var(--ui-font-size-sm, 0.875rem));
2744
+ --ui-_radius: var(--ui-select-radius, var(--ui-radius-md, 0.5rem));
2745
+ --ui-_bg: var(--ui-select-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
2746
+ --ui-_border-color: var(--ui-select-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
2747
+ --ui-_border-color-focus: var(--ui-select-border-color-focus, var(--ui-color-primary, hsl(220, 85%, 50%)));
2748
+ --ui-_text: var(--ui-select-text, var(--ui-color-text, hsl(220, 10%, 10%)));
2749
+ --ui-_icon-color: var(--ui-select-icon-color, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
2750
+ }
2751
+ .ui-select--sm {
2752
+ --ui-_height: var(--ui-select-height-sm, calc(1rem * 1.5));
2753
+ --ui-_font-size: var(--ui-select-font-size-sm, var(--ui-font-size-xs, 0.75rem));
2754
+ }
2755
+ .ui-select--lg {
2756
+ --ui-_height: var(--ui-select-height-lg, calc(1rem * 2.5));
2757
+ --ui-_padding-x: var(--ui-select-padding-x-lg, var(--ui-space-2, 1rem));
2758
+ --ui-_font-size: var(--ui-select-font-size-lg, var(--ui-font-size-md, 1rem));
2759
+ }
2760
+ .ui-select--filled {
2761
+ --ui-_bg: var(--ui-select-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
2762
+ --ui-_border-color: transparent;
2763
+ }
2764
+ .ui-select--ghost {
2765
+ --ui-_bg: transparent;
2766
+ --ui-_border-color: transparent;
2767
+ }
2768
+ .ui-select--error {
2769
+ --ui-_border-color: var(--ui-select-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2770
+ --ui-_border-color-focus: var(--ui-select-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
2771
+ }
2772
+ .ui-select--success {
2773
+ --ui-_border-color: var(--ui-select-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
2774
+ --ui-_border-color-focus: var(--ui-select-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
2775
+ }
2776
+ }
2777
+ @layer components.styles {
2778
+ .ui-select {
2779
+ display: inline-block;
2780
+ block-size: var(--ui-_height);
2781
+ padding-inline-start: var(--ui-_padding-x);
2782
+ padding-inline-end: calc(var(--ui-_height) - var(--ui-space-half, 0.25rem));
2783
+ font-family: inherit;
2784
+ font-size: var(--ui-_font-size);
2785
+ line-height: 1;
2786
+ color: var(--ui-_text);
2787
+ background-color: var(--ui-_bg);
2788
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
2789
+ border: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
2790
+ border-radius: var(--ui-_radius);
2791
+ cursor: pointer;
2792
+ appearance: none;
2793
+ transition: border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
2794
+ background-repeat: no-repeat;
2795
+ background-position: right var(--ui-space-half, 0.25rem) center;
2796
+ background-size: calc(var(--ui-_height) * 0.5);
2797
+ }
2798
+ .ui-select:hover:not(:disabled, :focus) {
2799
+ border-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
2800
+ }
2801
+ .ui-select:focus, .ui-select--focus {
2802
+ border-color: var(--ui-_border-color-focus);
2803
+ outline: none;
2804
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, hsl(220, 85%, 65%));
2805
+ }
2806
+ .ui-select:disabled, .ui-select--disabled {
2807
+ opacity: 0.5;
2808
+ cursor: not-allowed;
2809
+ }
2810
+ .ui-select--block {
2811
+ inline-size: 100%;
2812
+ }
2813
+ .ui-select:invalid, .ui-select--placeholder {
2814
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
2815
+ }
2816
+ }
2817
+ @layer components.tokens {
2818
+ .ui-skeleton {
2819
+ --ui-_bg: var(--ui-skeleton-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
2820
+ --ui-_shimmer: var(--ui-skeleton-shimmer, rgb(255 255 255 / 0.5));
2821
+ --ui-_radius: var(--ui-skeleton-radius, var(--ui-radius-sm, calc(0.5rem / 2)));
2822
+ }
2823
+ }
2824
+ @layer components.styles {
2825
+ .ui-skeleton {
2826
+ display: block;
2827
+ position: relative;
2828
+ overflow: hidden;
2829
+ background: var(--ui-_bg);
2830
+ border-radius: var(--ui-_radius);
2831
+ }
2832
+ .ui-skeleton::after {
2833
+ content: "";
2834
+ position: absolute;
2835
+ inset: 0;
2836
+ background: linear-gradient(90deg, transparent 0%, var(--ui-_shimmer) 50%, transparent 100%);
2837
+ animation: skeleton-shimmer 1.5s infinite;
2838
+ transform: translateX(-100%);
2839
+ }
2840
+ @keyframes skeleton-shimmer {
2841
+ 100% {
2842
+ transform: translateX(100%);
2843
+ }
2844
+ }
2845
+ .ui-skeleton--text {
2846
+ block-size: calc(0.5rem * 2);
2847
+ inline-size: 100%;
2848
+ }
2849
+ .ui-skeleton--heading {
2850
+ block-size: calc(0.5rem * 3);
2851
+ inline-size: 60%;
2852
+ }
2853
+ .ui-skeleton--circle {
2854
+ block-size: calc(0.5rem * 5);
2855
+ inline-size: calc(0.5rem * 5);
2856
+ border-radius: 50%;
2857
+ }
2858
+ .ui-skeleton--rect {
2859
+ block-size: calc(0.5rem * 20);
2860
+ inline-size: 100%;
2861
+ }
2862
+ .ui-skeleton--static::after {
2863
+ animation: none;
2864
+ }
2865
+ .ui-skeleton--pulse {
2866
+ animation: skeleton-pulse 1.5s infinite ease-in-out;
2867
+ }
2868
+ .ui-skeleton--pulse::after {
2869
+ display: none;
2870
+ }
2871
+ @keyframes skeleton-pulse {
2872
+ 0%, 100% {
2873
+ opacity: 1;
2874
+ }
2875
+ 50% {
2876
+ opacity: 0.5;
2877
+ }
2878
+ }
2879
+ }
2880
+ @layer components.tokens {
2881
+ .ui-spinner {
2882
+ --ui-_size: var(--ui-spinner-size, calc(var(--ui-unit) * 4));
2883
+ --ui-_border-width: var(--ui-spinner-border-width, var(--ui-border-width-md));
2884
+ --ui-_color: var(--ui-spinner-color, currentcolor);
2885
+ --ui-_track-color: var(--ui-spinner-track-color, transparent);
2886
+ --ui-_duration: var(--ui-spinner-duration, 750ms);
2887
+ }
2888
+ .ui-spinner--xs {
2889
+ --ui-_size: var(--ui-spinner-size-xs, calc(var(--ui-unit) * 2));
2890
+ --ui-_border-width: var(--ui-spinner-border-width-xs, var(--ui-border-width-sm));
2891
+ }
2892
+ .ui-spinner--sm {
2893
+ --ui-_size: var(--ui-spinner-size-sm, calc(var(--ui-unit) * 3));
2894
+ --ui-_border-width: var(--ui-spinner-border-width-sm, var(--ui-border-width-md));
2895
+ }
2896
+ .ui-spinner--lg {
2897
+ --ui-_size: var(--ui-spinner-size-lg, calc(var(--ui-unit) * 5));
2898
+ --ui-_border-width: var(--ui-spinner-border-width-lg, var(--ui-border-width-md));
2899
+ }
2900
+ .ui-spinner--xl {
2901
+ --ui-_size: var(--ui-spinner-size-xl, calc(var(--ui-unit) * 6));
2902
+ --ui-_border-width: var(--ui-spinner-border-width-xl, var(--ui-border-width-lg));
2903
+ }
2904
+ }
2905
+ @layer components.styles {
2906
+ .ui-spinner {
2907
+ display: inline-block;
2908
+ flex-shrink: 0;
2909
+ box-sizing: border-box;
2910
+ block-size: var(--ui-_size);
2911
+ inline-size: var(--ui-_size);
2912
+ vertical-align: middle;
2913
+ border: var(--ui-_border-width) solid var(--ui-_track-color);
2914
+ border-radius: 50%;
2915
+ border-block-start-color: var(--ui-_color);
2916
+ animation: spinner-rotate var(--ui-_duration) linear infinite;
2917
+ }
2918
+ @keyframes spinner-rotate {
2919
+ to {
2920
+ transform: rotate(360deg);
2921
+ }
2922
+ }
2923
+ }
2924
+ @layer components.tokens {
2925
+ .ui-status {
2926
+ --ui-_size: var(--ui-status-size, calc(0.5rem * 1));
2927
+ --ui-_color: var(--ui-status-color, var(--ui-color-text-muted));
2928
+ --ui-_gap: var(--ui-status-gap, calc(0.5rem * 1));
2929
+ }
2930
+ .ui-status--success {
2931
+ --ui-_color: var(--ui-color-success);
2932
+ }
2933
+ .ui-status--warning {
2934
+ --ui-_color: var(--ui-color-warning);
2935
+ }
2936
+ .ui-status--danger {
2937
+ --ui-_color: var(--ui-color-danger);
2938
+ }
2939
+ .ui-status--info {
2940
+ --ui-_color: var(--ui-color-primary);
2941
+ }
2942
+ }
2943
+ @layer components.styles {
2944
+ .ui-status {
2945
+ display: inline-flex;
2946
+ align-items: center;
2947
+ gap: var(--ui-_gap);
2948
+ }
2949
+ .ui-status__dot {
2950
+ flex-shrink: 0;
2951
+ block-size: var(--ui-_size);
2952
+ inline-size: var(--ui-_size);
2953
+ background: var(--ui-_color);
2954
+ border-radius: 50%;
2955
+ }
2956
+ .ui-status--pulse .status__dot {
2957
+ position: relative;
2958
+ }
2959
+ .ui-status--pulse .status__dot::before {
2960
+ content: "";
2961
+ position: absolute;
2962
+ inset: 0;
2963
+ background: var(--ui-_color);
2964
+ border-radius: 50%;
2965
+ animation: status-pulse 2s infinite;
2966
+ }
2967
+ @keyframes status-pulse {
2968
+ 0% {
2969
+ opacity: 1;
2970
+ transform: scale(1);
2971
+ }
2972
+ 100% {
2973
+ opacity: 0;
2974
+ transform: scale(2.5);
2975
+ }
2976
+ }
2977
+ .ui-status--sm {
2978
+ --ui-_size: calc(0.5rem * 0.75);
2979
+ --ui-_gap: calc(0.5rem * 0.75);
2980
+ }
2981
+ .ui-status--lg {
2982
+ --ui-_size: calc(0.5rem * 1.5);
2983
+ --ui-_gap: calc(0.5rem * 1.5);
2984
+ }
2985
+ }
2986
+ @layer components.tokens {
2987
+ .ui-table {
2988
+ --ui-_font-size: var(--ui-table-font-size, var(--ui-font-size-sm, 0.875rem));
2989
+ --ui-_border-color: var(--ui-table-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
2990
+ --ui-_header-bg: var(--ui-table-header-bg, var(--ui-color-bg-subtle, hsl(220, 10%, 96%)));
2991
+ --ui-_cell-padding-x: var(--ui-table-cell-padding-x, var(--ui-space-2, 1rem));
2992
+ --ui-_cell-padding-y: var(--ui-table-cell-padding-y, var(--ui-space-1, 0.5rem));
2993
+ }
2994
+ .ui-table--compact {
2995
+ --ui-_cell-padding-y: var(--ui-space-0, 0.25rem);
2996
+ --ui-_cell-padding-x: var(--ui-space-1, 0.5rem);
2997
+ --ui-_font-size: var(--ui-font-size-xs, 0.75rem);
2998
+ }
2999
+ }
3000
+ @layer components.styles {
3001
+ .ui-table {
3002
+ inline-size: 100%;
3003
+ font-size: var(--ui-_font-size);
3004
+ border-collapse: separate;
3005
+ border-spacing: 0;
3006
+ }
3007
+ .ui-table th,
3008
+ .ui-table td {
3009
+ padding-block-start: var(--ui-_cell-padding-y);
3010
+ padding-block-end: calc(var(--ui-_cell-padding-y) - var(--ui-border-width-sm, 0.0625rem));
3011
+ padding-inline: var(--ui-_cell-padding-x);
3012
+ line-height: calc(var(--ui-unit, 0.5rem) * 3);
3013
+ text-align: start;
3014
+ border-block-end: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
3015
+ }
3016
+ .ui-table th {
3017
+ font-weight: var(--ui-weight-medium, 500);
3018
+ background: var(--ui-_header-bg);
3019
+ }
3020
+ .ui-table--striped tbody tr:nth-child(odd) {
3021
+ background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
3022
+ }
3023
+ .ui-table--striped th {
3024
+ background: var(--ui-color-bg-muted, hsl(220, 10%, 90%));
3025
+ }
3026
+ }
3027
+ @layer components.tokens {
3028
+ .ui-tabs {
3029
+ --ui-_border-color: var(--ui-tabs-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
3030
+ --ui-_tab-padding-x: var(--ui-tabs-tab-padding-x, var(--ui-space-2, 1rem));
3031
+ --ui-_tab-padding-y: var(--ui-tabs-tab-padding-y, var(--ui-space-1, 0.5rem));
3032
+ --ui-_tab-bg: var(--ui-tabs-tab-bg, transparent);
3033
+ --ui-_tab-bg-active: var(--ui-tabs-tab-bg-active, var(--ui-color-bg, hsl(220, 10%, 98%)));
3034
+ --ui-_panel-padding: var(--ui-tabs-panel-padding, var(--ui-space-3, 1.5rem));
3035
+ }
3036
+ }
3037
+ @layer components.styles {
3038
+ .ui-tabs__list {
3039
+ display: flex;
3040
+ align-items: stretch;
3041
+ gap: var(--ui-space-1, 0.5rem);
3042
+ box-sizing: border-box;
3043
+ block-size: var(--ui-row-2, 2rem);
3044
+ box-shadow: inset 0 calc(var(--ui-border-width-sm, 0.0625rem) * -1) 0 var(--ui-_border-color);
3045
+ }
3046
+ .ui-tabs__tab {
3047
+ display: inline-flex;
3048
+ align-items: center;
3049
+ box-sizing: border-box;
3050
+ block-size: var(--ui-row-2, 2rem);
3051
+ padding-inline: var(--ui-_tab-padding-x);
3052
+ margin: 0;
3053
+ font-family: var(--ui-font-sans, Noto Sans, system-ui, -apple-system, sans-serif);
3054
+ font-size: var(--ui-font-size-sm, 0.875rem);
3055
+ font-weight: var(--ui-weight-medium, 500);
3056
+ line-height: 1;
3057
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
3058
+ background: var(--ui-_tab-bg);
3059
+ border: none;
3060
+ box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 transparent;
3061
+ cursor: pointer;
3062
+ transition: color var(--ui-duration-base) var(--ui-ease-default), box-shadow var(--ui-duration-base) var(--ui-ease-default);
3063
+ }
3064
+ .ui-tabs__tab:hover {
3065
+ color: var(--ui-color-text, hsl(220, 10%, 10%));
3066
+ }
3067
+ .ui-tabs__tab--active {
3068
+ color: var(--ui-color-primary, hsl(220, 85%, 50%));
3069
+ background: var(--ui-_tab-bg-active);
3070
+ box-shadow: inset 0 calc(var(--ui-border-width-md, 0.125rem) * -1) 0 var(--ui-color-primary, hsl(220, 85%, 50%));
3071
+ }
3072
+ .ui-tabs__panel {
3073
+ display: none;
3074
+ padding: var(--ui-_panel-padding);
3075
+ line-height: var(--ui-row-1, 1rem);
3076
+ }
3077
+ .ui-tabs__panel--active {
3078
+ display: block;
3079
+ }
3080
+ }
3081
+ @layer components.tokens {
3082
+ .ui-tag {
3083
+ --ui-_height: var(--ui-tag-height, calc(0.5rem * 3));
3084
+ --ui-_padding-x: var(--ui-tag-padding-x, var(--ui-space-1, 0.5rem));
3085
+ --ui-_gap: var(--ui-tag-gap, calc(0.5rem * 0.5));
3086
+ --ui-_radius: var(--ui-tag-radius, var(--ui-radius-full, 9999px));
3087
+ --ui-_font-size: var(--ui-tag-font-size, var(--ui-font-size-sm, 0.875rem));
3088
+ --ui-_bg: var(--ui-tag-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
3089
+ --ui-_color: var(--ui-tag-color, var(--ui-color-text, hsl(220, 10%, 10%)));
3090
+ }
3091
+ .ui-tag--sm {
3092
+ --ui-_height: var(--ui-tag-height-sm, calc(0.5rem * 2.5));
3093
+ --ui-_padding-x: var(--ui-tag-padding-x-sm, calc(0.5rem * 1));
3094
+ --ui-_font-size: var(--ui-tag-font-size-sm, var(--ui-font-size-xs, 0.75rem));
3095
+ }
3096
+ .ui-tag--primary {
3097
+ --ui-_bg: var(--ui-tag-primary-bg, var(--ui-color-primary, hsl(220, 85%, 50%)));
3098
+ --ui-_color: var(--ui-tag-primary-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
3099
+ }
3100
+ .ui-tag--success {
3101
+ --ui-_bg: var(--ui-tag-success-bg, var(--ui-color-success, hsl(142, 70%, 45%)));
3102
+ --ui-_color: var(--ui-tag-success-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
3103
+ }
3104
+ .ui-tag--warning {
3105
+ --ui-_bg: var(--ui-tag-warning-bg, var(--ui-color-warning, hsl(38, 90%, 50%)));
3106
+ --ui-_color: var(--ui-tag-warning-color, var(--ui-color-text, hsl(220, 10%, 10%)));
3107
+ }
3108
+ .ui-tag--danger {
3109
+ --ui-_bg: var(--ui-tag-danger-bg, var(--ui-color-danger, hsl(0, 70%, 50%)));
3110
+ --ui-_color: var(--ui-tag-danger-color, var(--ui-color-text-inverse, hsl(220, 10%, 98%)));
3111
+ }
3112
+ }
3113
+ @layer components.styles {
3114
+ .ui-tag {
3115
+ display: inline-flex;
3116
+ align-items: center;
3117
+ gap: var(--ui-_gap);
3118
+ block-size: var(--ui-_height);
3119
+ padding-inline: var(--ui-_padding-x);
3120
+ font-size: var(--ui-_font-size);
3121
+ font-weight: var(--ui-weight-medium, 500);
3122
+ line-height: 1;
3123
+ white-space: nowrap;
3124
+ color: var(--ui-_color);
3125
+ background: var(--ui-_bg);
3126
+ border-radius: var(--ui-_radius);
3127
+ }
3128
+ .ui-tag:disabled, .ui-tag[aria-disabled=true] {
3129
+ opacity: 0.5;
3130
+ cursor: not-allowed;
3131
+ }
3132
+ .ui-tag__remove {
3133
+ display: inline-flex;
3134
+ flex-shrink: 0;
3135
+ align-items: center;
3136
+ justify-content: center;
3137
+ padding: 0;
3138
+ margin-inline-start: calc(var(--ui-_gap) * -0.5);
3139
+ color: currentcolor;
3140
+ background: none;
3141
+ border: none;
3142
+ opacity: 0.7;
3143
+ cursor: pointer;
3144
+ }
3145
+ .ui-tag__remove:hover {
3146
+ opacity: 1;
3147
+ }
3148
+ .ui-tag-group {
3149
+ display: flex;
3150
+ flex-wrap: wrap;
3151
+ gap: calc(0.5rem * 0.5);
3152
+ }
3153
+ }
3154
+ @layer components.tokens {
3155
+ .ui-textarea {
3156
+ --ui-_min-height: var(--ui-textarea-min-height, calc(1rem * 4));
3157
+ --ui-_padding-x: var(--ui-textarea-padding-x, var(--ui-space-1, 0.5rem));
3158
+ --ui-_padding-y: var(--ui-textarea-padding-y, var(--ui-space-1, 0.5rem));
3159
+ --ui-_font-size: var(--ui-textarea-font-size, var(--ui-font-size-sm, 0.875rem));
3160
+ --ui-_radius: var(--ui-textarea-radius, var(--ui-radius-md, 0.5rem));
3161
+ --ui-_bg: var(--ui-textarea-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
3162
+ --ui-_border-color: var(--ui-textarea-border-color, var(--ui-color-border-strong, hsl(220, 10%, 80%)));
3163
+ --ui-_border-color-focus: var(--ui-textarea-border-color-focus, var(--ui-color-primary, hsl(220, 85%, 50%)));
3164
+ --ui-_text: var(--ui-textarea-text, var(--ui-color-text, hsl(220, 10%, 10%)));
3165
+ --ui-_placeholder: var(--ui-textarea-placeholder, var(--ui-color-text-muted, hsl(220, 10%, 45%)));
3166
+ }
3167
+ .ui-textarea--sm {
3168
+ --ui-_min-height: var(--ui-textarea-min-height-sm, calc(1rem * 3));
3169
+ --ui-_font-size: var(--ui-textarea-font-size-sm, var(--ui-font-size-xs, 0.75rem));
3170
+ }
3171
+ .ui-textarea--lg {
3172
+ --ui-_min-height: var(--ui-textarea-min-height-lg, calc(1rem * 6));
3173
+ --ui-_padding-x: var(--ui-textarea-padding-x-lg, var(--ui-space-2, 1rem));
3174
+ --ui-_padding-y: var(--ui-textarea-padding-y-lg, var(--ui-space-2, 1rem));
3175
+ --ui-_font-size: var(--ui-textarea-font-size-lg, var(--ui-font-size-md, 1rem));
3176
+ }
3177
+ .ui-textarea--filled {
3178
+ --ui-_bg: var(--ui-textarea-filled-bg, var(--ui-color-bg-muted, hsl(220, 10%, 90%)));
3179
+ --ui-_border-color: transparent;
3180
+ }
3181
+ .ui-textarea--ghost {
3182
+ --ui-_bg: transparent;
3183
+ --ui-_border-color: transparent;
3184
+ }
3185
+ .ui-textarea--error {
3186
+ --ui-_border-color: var(--ui-textarea-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
3187
+ --ui-_border-color-focus: var(--ui-textarea-error-border, var(--ui-color-danger, hsl(0, 70%, 50%)));
3188
+ }
3189
+ .ui-textarea--success {
3190
+ --ui-_border-color: var(--ui-textarea-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
3191
+ --ui-_border-color-focus: var(--ui-textarea-success-border, var(--ui-color-success, hsl(142, 70%, 45%)));
3192
+ }
3193
+ }
3194
+ @layer components.styles {
3195
+ .ui-textarea {
3196
+ display: block;
3197
+ box-sizing: border-box;
3198
+ inline-size: 100%;
3199
+ min-block-size: var(--ui-_min-height);
3200
+ padding-block: var(--ui-_padding-y);
3201
+ padding-inline: var(--ui-_padding-x);
3202
+ font-family: inherit;
3203
+ font-size: var(--ui-_font-size);
3204
+ line-height: var(--ui-row-1, 1rem);
3205
+ color: var(--ui-_text);
3206
+ background: var(--ui-_bg);
3207
+ border: none;
3208
+ border-radius: var(--ui-_radius);
3209
+ outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
3210
+ transition: border-color var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease), box-shadow var(--ui-duration-fast, 150ms) var(--ui-ease-default, ease);
3211
+ outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
3212
+ resize: vertical;
3213
+ }
3214
+ .ui-textarea::placeholder {
3215
+ color: var(--ui-_placeholder);
3216
+ }
3217
+ .ui-textarea:hover:not(:disabled, :focus) {
3218
+ outline-color: var(--ui-color-border-strong, hsl(220, 10%, 80%));
3219
+ }
3220
+ .ui-textarea:focus, .ui-textarea--focus {
3221
+ outline-color: var(--ui-_border-color-focus);
3222
+ box-shadow: 0 0 0 var(--ui-border-width-md, 0.125rem) var(--ui-color-focus, hsl(220, 85%, 65%));
3223
+ }
3224
+ .ui-textarea:disabled, .ui-textarea--disabled {
3225
+ opacity: 0.5;
3226
+ cursor: not-allowed;
3227
+ resize: none;
3228
+ }
3229
+ .ui-textarea:read-only {
3230
+ background: var(--ui-color-bg-subtle, hsl(220, 10%, 96%));
3231
+ resize: none;
3232
+ }
3233
+ .ui-textarea--resize-none {
3234
+ resize: none;
3235
+ }
3236
+ .ui-textarea--resize-horizontal {
3237
+ resize: horizontal;
3238
+ }
3239
+ .ui-textarea--resize-both {
3240
+ resize: both;
3241
+ }
3242
+ }
3243
+ @layer components.tokens {
3244
+ .ui-toast-viewport {
3245
+ --ui-_gap: var(--ui-toast-viewport-gap, calc(0.5rem * 1));
3246
+ --ui-_padding: var(--ui-toast-viewport-padding, calc(0.5rem * 2));
3247
+ --ui-_max-width: var(--ui-toast-viewport-max-width, 420px);
3248
+ }
3249
+ .ui-toast {
3250
+ --ui-_padding: var(--ui-toast-padding, calc(0.5rem * 2));
3251
+ --ui-_gap: var(--ui-toast-gap, calc(0.5rem * 1));
3252
+ --ui-_radius: var(--ui-toast-radius, var(--ui-radius-md, 0.5rem));
3253
+ --ui-_bg: var(--ui-toast-bg, var(--ui-color-bg, hsl(220, 10%, 98%)));
3254
+ --ui-_border-color: var(--ui-toast-border-color, var(--ui-color-border, hsl(220, 10%, 90%)));
3255
+ --ui-_shadow: var(--ui-toast-shadow, var(--ui-shadow-lg));
3256
+ }
3257
+ .ui-toast--success {
3258
+ --ui-_border-color: var(--ui-color-success);
3259
+ }
3260
+ .ui-toast--warning {
3261
+ --ui-_border-color: var(--ui-color-warning);
3262
+ }
3263
+ .ui-toast--danger {
3264
+ --ui-_border-color: var(--ui-color-danger);
3265
+ }
3266
+ .ui-toast--info {
3267
+ --ui-_border-color: var(--ui-color-primary);
3268
+ }
3269
+ }
3270
+ @layer components.styles {
3271
+ .ui-toast-viewport {
3272
+ display: flex;
3273
+ flex-direction: column;
3274
+ gap: var(--ui-_gap);
3275
+ position: fixed;
3276
+ z-index: var(--ui-z-toast, 1000);
3277
+ max-inline-size: var(--ui-_max-width);
3278
+ padding: var(--ui-_padding);
3279
+ pointer-events: none;
3280
+ list-style: none;
3281
+ }
3282
+ .ui-toast-viewport--top-end {
3283
+ inset-block-start: 0;
3284
+ inset-inline-end: 0;
3285
+ }
3286
+ .ui-toast-viewport--top-start {
3287
+ inset-block-start: 0;
3288
+ inset-inline-start: 0;
3289
+ }
3290
+ .ui-toast-viewport--bottom-end {
3291
+ inset-block-end: 0;
3292
+ inset-inline-end: 0;
3293
+ }
3294
+ .ui-toast-viewport--bottom-start {
3295
+ inset-block-end: 0;
3296
+ inset-inline-start: 0;
3297
+ }
3298
+ .ui-toast-viewport--top-center {
3299
+ inset-block-start: 0;
3300
+ inset-inline-start: 50%;
3301
+ transform: translateX(-50%);
3302
+ }
3303
+ .ui-toast-viewport--bottom-center {
3304
+ inset-block-end: 0;
3305
+ inset-inline-start: 50%;
3306
+ transform: translateX(-50%);
3307
+ }
3308
+ .ui-toast {
3309
+ display: flex;
3310
+ align-items: flex-start;
3311
+ gap: var(--ui-_gap);
3312
+ padding: var(--ui-_padding);
3313
+ background: var(--ui-_bg);
3314
+ border-radius: var(--ui-_radius);
3315
+ outline: var(--ui-border-width-sm, 0.0625rem) solid var(--ui-_border-color);
3316
+ box-shadow: var(--ui-_shadow);
3317
+ pointer-events: auto;
3318
+ outline-offset: calc(var(--ui-border-width-sm, 0.0625rem) * -1);
3319
+ }
3320
+ .ui-toast__icon {
3321
+ flex-shrink: 0;
3322
+ }
3323
+ .ui-toast__content {
3324
+ flex: 1;
3325
+ min-inline-size: 0;
3326
+ }
3327
+ .ui-toast__title {
3328
+ margin: 0;
3329
+ font-weight: var(--ui-weight-medium, 500);
3330
+ line-height: var(--ui-row-1, 1rem);
3331
+ }
3332
+ .ui-toast__description {
3333
+ margin: 0;
3334
+ font-size: var(--ui-font-size-sm, 0.875rem);
3335
+ line-height: var(--ui-row-1, 1rem);
3336
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
3337
+ }
3338
+ .ui-toast__action {
3339
+ flex-shrink: 0;
3340
+ }
3341
+ .ui-toast__close {
3342
+ display: inline-flex;
3343
+ flex-shrink: 0;
3344
+ align-items: center;
3345
+ justify-content: center;
3346
+ block-size: var(--ui-row-1, 1rem);
3347
+ inline-size: var(--ui-row-1, 1rem);
3348
+ padding: 0;
3349
+ color: var(--ui-color-text-muted, hsl(220, 10%, 45%));
3350
+ background: none;
3351
+ border: none;
3352
+ cursor: pointer;
3353
+ }
3354
+ .ui-toast__close:hover {
3355
+ color: var(--ui-color-text, hsl(220, 10%, 10%));
3356
+ }
3357
+ .ui-toast[data-state=open] {
3358
+ animation: toast-slide-in var(--ui-duration-normal, 200ms) var(--ui-ease-out, ease-out);
3359
+ }
3360
+ .ui-toast[data-state=closed] {
3361
+ animation: toast-slide-out var(--ui-duration-fast, 100ms) var(--ui-ease-in, ease-in);
3362
+ }
3363
+ @keyframes toast-slide-in {
3364
+ from {
3365
+ opacity: 0;
3366
+ transform: translateX(100%);
3367
+ }
3368
+ }
3369
+ @keyframes toast-slide-out {
3370
+ to {
3371
+ opacity: 0;
3372
+ transform: translateX(100%);
3373
+ }
3374
+ }
3375
+ }
3376
+ @layer components.tokens {
3377
+ .ui-toggle {
3378
+ --ui-_track-width: var(--ui-toggle-track-width, calc(0.5rem * 5));
3379
+ --ui-_track-height: var(--ui-toggle-track-height, calc(0.5rem * 3));
3380
+ --ui-_track-bg: var(--ui-toggle-track-bg, var(--ui-color-bg-subtle, rgb(0 0 0 / 0.1)));
3381
+ --ui-_track-bg-checked: var(--ui-toggle-track-bg-checked, var(--ui-color-primary));
3382
+ --ui-_track-radius: var(--ui-toggle-track-radius, calc(0.5rem * 1.5));
3383
+ --ui-_thumb-size: var(--ui-toggle-thumb-size, calc(0.5rem * 2.5));
3384
+ --ui-_thumb-bg: var(--ui-toggle-thumb-bg, white);
3385
+ --ui-_thumb-offset: var(--ui-toggle-thumb-offset, calc(0.5rem / 4));
3386
+ }
3387
+ .ui-toggle--sm {
3388
+ --ui-_track-width: calc(0.5rem * 4);
3389
+ --ui-_track-height: calc(0.5rem * 2);
3390
+ --ui-_track-radius: 0.5rem;
3391
+ --ui-_thumb-size: calc(0.5rem * 1.5);
3392
+ }
3393
+ .ui-toggle--lg {
3394
+ --ui-_track-width: calc(0.5rem * 6);
3395
+ --ui-_track-height: calc(0.5rem * 4);
3396
+ --ui-_track-radius: calc(0.5rem * 2);
3397
+ --ui-_thumb-size: calc(0.5rem * 3.5);
3398
+ }
3399
+ }
3400
+ @layer components.styles {
3401
+ .ui-toggle {
3402
+ display: inline-flex;
3403
+ flex-shrink: 0;
3404
+ align-items: center;
3405
+ position: relative;
3406
+ block-size: var(--ui-_track-height);
3407
+ inline-size: var(--ui-_track-width);
3408
+ background: var(--ui-_track-bg);
3409
+ border-radius: var(--ui-_track-radius);
3410
+ cursor: pointer;
3411
+ transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3412
+ }
3413
+ .ui-toggle__input {
3414
+ position: absolute;
3415
+ inset: 0;
3416
+ block-size: 100%;
3417
+ inline-size: 100%;
3418
+ margin: 0;
3419
+ opacity: 0;
3420
+ cursor: pointer;
3421
+ }
3422
+ .ui-toggle__track {
3423
+ position: absolute;
3424
+ inset: 0;
3425
+ background: var(--ui-_track-bg);
3426
+ border-radius: var(--ui-_track-radius);
3427
+ transition: background var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3428
+ }
3429
+ .ui-toggle__thumb {
3430
+ position: absolute;
3431
+ inset-block-start: var(--ui-_thumb-offset);
3432
+ inset-inline-start: var(--ui-_thumb-offset);
3433
+ block-size: var(--ui-_thumb-size);
3434
+ inline-size: var(--ui-_thumb-size);
3435
+ background: var(--ui-_thumb-bg);
3436
+ border-radius: 50%;
3437
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
3438
+ transition: transform var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3439
+ }
3440
+ .ui-toggle__input:checked ~ .toggle__track {
3441
+ background: var(--ui-_track-bg-checked);
3442
+ }
3443
+ .ui-toggle__input:checked ~ .toggle__thumb {
3444
+ transform: translateX(calc(var(--ui-_track-width) - var(--ui-_thumb-size) - var(--ui-_thumb-offset) * 2));
3445
+ }
3446
+ .ui-toggle__input:focus-visible ~ .toggle__track {
3447
+ outline: 2px solid var(--ui-color-focus, var(--ui-color-primary));
3448
+ outline-offset: calc(0.5rem / 4);
3449
+ }
3450
+ .ui-toggle__input:disabled ~ .toggle__track,
3451
+ .ui-toggle__input:disabled ~ .toggle__thumb {
3452
+ opacity: 0.5;
3453
+ cursor: not-allowed;
3454
+ }
3455
+ .ui-toggle:has(.toggle__input:disabled) {
3456
+ cursor: not-allowed;
3457
+ }
3458
+ }
3459
+ @layer components.tokens {
3460
+ .ui-tooltip {
3461
+ --ui-_bg: var(--ui-tooltip-bg, var(--ui-color-text, #1a1a1a));
3462
+ --ui-_color: var(--ui-tooltip-color, var(--ui-color-bg, white));
3463
+ --ui-_radius: var(--ui-tooltip-radius, var(--ui-radius-sm, calc(0.5rem / 2)));
3464
+ --ui-_padding-x: var(--ui-tooltip-padding-x, calc(0.5rem * 1));
3465
+ --ui-_padding-y: var(--ui-tooltip-padding-y, calc(0.5rem / 2));
3466
+ --ui-_size: var(--ui-tooltip-size, var(--ui-font-size-sm, 0.875rem));
3467
+ --ui-_z: var(--ui-tooltip-z, var(--ui-z-tooltip, 500));
3468
+ --ui-_arrow-size: var(--ui-tooltip-arrow-size, calc(0.5rem / 2));
3469
+ }
3470
+ }
3471
+ @layer components.styles {
3472
+ .ui-tooltip {
3473
+ position: absolute;
3474
+ z-index: var(--ui-_z);
3475
+ max-inline-size: calc(0.5rem * 25);
3476
+ padding: var(--ui-_padding-y) var(--ui-_padding-x);
3477
+ font-size: var(--ui-_size);
3478
+ line-height: calc(0.5rem * 2);
3479
+ text-align: center;
3480
+ white-space: nowrap;
3481
+ color: var(--ui-_color);
3482
+ background: var(--ui-_bg);
3483
+ border-radius: var(--ui-_radius);
3484
+ }
3485
+ .ui-tooltip--top::after {
3486
+ content: "";
3487
+ position: absolute;
3488
+ inset-block-start: 100%;
3489
+ inset-inline-start: 50%;
3490
+ border: var(--ui-_arrow-size) solid transparent;
3491
+ border-block-start-color: var(--ui-_bg);
3492
+ transform: translateX(-50%);
3493
+ }
3494
+ .ui-tooltip--bottom::after {
3495
+ content: "";
3496
+ position: absolute;
3497
+ inset-block-end: 100%;
3498
+ inset-inline-start: 50%;
3499
+ border: var(--ui-_arrow-size) solid transparent;
3500
+ border-block-end-color: var(--ui-_bg);
3501
+ transform: translateX(-50%);
3502
+ }
3503
+ .ui-tooltip--start::after {
3504
+ content: "";
3505
+ position: absolute;
3506
+ inset-block-start: 50%;
3507
+ inset-inline-start: 100%;
3508
+ border: var(--ui-_arrow-size) solid transparent;
3509
+ border-inline-start-color: var(--ui-_bg);
3510
+ transform: translateY(-50%);
3511
+ }
3512
+ .ui-tooltip--end::after {
3513
+ content: "";
3514
+ position: absolute;
3515
+ inset-block-start: 50%;
3516
+ inset-inline-end: 100%;
3517
+ border: var(--ui-_arrow-size) solid transparent;
3518
+ border-inline-end-color: var(--ui-_bg);
3519
+ transform: translateY(-50%);
3520
+ }
3521
+ .ui-tooltip--visible {
3522
+ opacity: 1;
3523
+ }
3524
+ .ui-tooltip--hidden {
3525
+ opacity: 0;
3526
+ pointer-events: none;
3527
+ }
3528
+ .ui-tooltip--animate {
3529
+ transition: opacity var(--ui-duration-fast, 100ms) var(--ui-ease-default, ease);
3530
+ }
3531
+ }
3532
+ /* 05. Utilities (high specificity, load last) */
3533
+ /* Spacing utilities - all values align to 8px grid */
3534
+ /* Uses logical properties for international/RTL support */
3535
+ @layer utilities {
3536
+ /* Margin utilities */
3537
+ .ui-m-0 {
3538
+ margin: 0;
3539
+ }
3540
+ .ui-m-1 {
3541
+ margin: var(--ui-space-1);
3542
+ }
3543
+ .ui-m-2 {
3544
+ margin: var(--ui-space-2);
3545
+ }
3546
+ .ui-m-3 {
3547
+ margin: var(--ui-space-3);
3548
+ }
3549
+ .ui-m-4 {
3550
+ margin: var(--ui-space-4);
3551
+ }
3552
+ .ui-m-6 {
3553
+ margin: var(--ui-space-6);
3554
+ }
3555
+ .ui-m-8 {
3556
+ margin: var(--ui-space-8);
3557
+ }
3558
+ .ui-mt-0 {
3559
+ margin-block-start: 0;
3560
+ }
3561
+ .ui-mt-1 {
3562
+ margin-block-start: var(--ui-space-1);
3563
+ }
3564
+ .ui-mt-2 {
3565
+ margin-block-start: var(--ui-space-2);
3566
+ }
3567
+ .ui-mt-3 {
3568
+ margin-block-start: var(--ui-space-3);
3569
+ }
3570
+ .ui-mt-4 {
3571
+ margin-block-start: var(--ui-space-4);
3572
+ }
3573
+ .ui-mt-6 {
3574
+ margin-block-start: var(--ui-space-6);
3575
+ }
3576
+ .ui-mt-8 {
3577
+ margin-block-start: var(--ui-space-8);
3578
+ }
3579
+ .ui-me-0 {
3580
+ margin-inline-end: 0;
3581
+ }
3582
+ .ui-me-1 {
3583
+ margin-inline-end: var(--ui-space-1);
3584
+ }
3585
+ .ui-me-2 {
3586
+ margin-inline-end: var(--ui-space-2);
3587
+ }
3588
+ .ui-me-3 {
3589
+ margin-inline-end: var(--ui-space-3);
3590
+ }
3591
+ .ui-me-4 {
3592
+ margin-inline-end: var(--ui-space-4);
3593
+ }
3594
+ .ui-me-6 {
3595
+ margin-inline-end: var(--ui-space-6);
3596
+ }
3597
+ .ui-me-8 {
3598
+ margin-inline-end: var(--ui-space-8);
3599
+ }
3600
+ .ui-mb-0 {
3601
+ margin-block-end: 0;
3602
+ }
3603
+ .ui-mb-1 {
3604
+ margin-block-end: var(--ui-space-1);
3605
+ }
3606
+ .ui-mb-2 {
3607
+ margin-block-end: var(--ui-space-2);
3608
+ }
3609
+ .ui-mb-3 {
3610
+ margin-block-end: var(--ui-space-3);
3611
+ }
3612
+ .ui-mb-4 {
3613
+ margin-block-end: var(--ui-space-4);
3614
+ }
3615
+ .ui-mb-6 {
3616
+ margin-block-end: var(--ui-space-6);
3617
+ }
3618
+ .ui-mb-8 {
3619
+ margin-block-end: var(--ui-space-8);
3620
+ }
3621
+ .ui-ms-0 {
3622
+ margin-inline-start: 0;
3623
+ }
3624
+ .ui-ms-1 {
3625
+ margin-inline-start: var(--ui-space-1);
3626
+ }
3627
+ .ui-ms-2 {
3628
+ margin-inline-start: var(--ui-space-2);
3629
+ }
3630
+ .ui-ms-3 {
3631
+ margin-inline-start: var(--ui-space-3);
3632
+ }
3633
+ .ui-ms-4 {
3634
+ margin-inline-start: var(--ui-space-4);
3635
+ }
3636
+ .ui-ms-6 {
3637
+ margin-inline-start: var(--ui-space-6);
3638
+ }
3639
+ .ui-ms-8 {
3640
+ margin-inline-start: var(--ui-space-8);
3641
+ }
3642
+ .ui-mx-0 {
3643
+ margin-inline: 0;
3644
+ }
3645
+ .ui-mx-1 {
3646
+ margin-inline: var(--ui-space-1);
3647
+ }
3648
+ .ui-mx-2 {
3649
+ margin-inline: var(--ui-space-2);
3650
+ }
3651
+ .ui-mx-3 {
3652
+ margin-inline: var(--ui-space-3);
3653
+ }
3654
+ .ui-mx-4 {
3655
+ margin-inline: var(--ui-space-4);
3656
+ }
3657
+ .ui-mx-auto {
3658
+ margin-inline: auto;
3659
+ }
3660
+ .ui-my-0 {
3661
+ margin-block: 0;
3662
+ }
3663
+ .ui-my-1 {
3664
+ margin-block: var(--ui-space-1);
3665
+ }
3666
+ .ui-my-2 {
3667
+ margin-block: var(--ui-space-2);
3668
+ }
3669
+ .ui-my-3 {
3670
+ margin-block: var(--ui-space-3);
3671
+ }
3672
+ .ui-my-4 {
3673
+ margin-block: var(--ui-space-4);
3674
+ }
3675
+ /* Padding utilities */
3676
+ .ui-p-0 {
3677
+ padding: 0;
3678
+ }
3679
+ .ui-p-1 {
3680
+ padding: var(--ui-space-1);
3681
+ }
3682
+ .ui-p-2 {
3683
+ padding: var(--ui-space-2);
3684
+ }
3685
+ .ui-p-3 {
3686
+ padding: var(--ui-space-3);
3687
+ }
3688
+ .ui-p-4 {
3689
+ padding: var(--ui-space-4);
3690
+ }
3691
+ .ui-p-6 {
3692
+ padding: var(--ui-space-6);
3693
+ }
3694
+ .ui-p-8 {
3695
+ padding: var(--ui-space-8);
3696
+ }
3697
+ .ui-pt-0 {
3698
+ padding-block-start: 0;
3699
+ }
3700
+ .ui-pt-1 {
3701
+ padding-block-start: var(--ui-space-1);
3702
+ }
3703
+ .ui-pt-2 {
3704
+ padding-block-start: var(--ui-space-2);
3705
+ }
3706
+ .ui-pt-3 {
3707
+ padding-block-start: var(--ui-space-3);
3708
+ }
3709
+ .ui-pt-4 {
3710
+ padding-block-start: var(--ui-space-4);
3711
+ }
3712
+ .ui-pt-6 {
3713
+ padding-block-start: var(--ui-space-6);
3714
+ }
3715
+ .ui-pt-8 {
3716
+ padding-block-start: var(--ui-space-8);
3717
+ }
3718
+ .ui-pe-0 {
3719
+ padding-inline-end: 0;
3720
+ }
3721
+ .ui-pe-1 {
3722
+ padding-inline-end: var(--ui-space-1);
3723
+ }
3724
+ .ui-pe-2 {
3725
+ padding-inline-end: var(--ui-space-2);
3726
+ }
3727
+ .ui-pe-3 {
3728
+ padding-inline-end: var(--ui-space-3);
3729
+ }
3730
+ .ui-pe-4 {
3731
+ padding-inline-end: var(--ui-space-4);
3732
+ }
3733
+ .ui-pe-6 {
3734
+ padding-inline-end: var(--ui-space-6);
3735
+ }
3736
+ .ui-pe-8 {
3737
+ padding-inline-end: var(--ui-space-8);
3738
+ }
3739
+ .ui-pb-0 {
3740
+ padding-block-end: 0;
3741
+ }
3742
+ .ui-pb-1 {
3743
+ padding-block-end: var(--ui-space-1);
3744
+ }
3745
+ .ui-pb-2 {
3746
+ padding-block-end: var(--ui-space-2);
3747
+ }
3748
+ .ui-pb-3 {
3749
+ padding-block-end: var(--ui-space-3);
3750
+ }
3751
+ .ui-pb-4 {
3752
+ padding-block-end: var(--ui-space-4);
3753
+ }
3754
+ .ui-pb-6 {
3755
+ padding-block-end: var(--ui-space-6);
3756
+ }
3757
+ .ui-pb-8 {
3758
+ padding-block-end: var(--ui-space-8);
3759
+ }
3760
+ .ui-ps-0 {
3761
+ padding-inline-start: 0;
3762
+ }
3763
+ .ui-ps-1 {
3764
+ padding-inline-start: var(--ui-space-1);
3765
+ }
3766
+ .ui-ps-2 {
3767
+ padding-inline-start: var(--ui-space-2);
3768
+ }
3769
+ .ui-ps-3 {
3770
+ padding-inline-start: var(--ui-space-3);
3771
+ }
3772
+ .ui-ps-4 {
3773
+ padding-inline-start: var(--ui-space-4);
3774
+ }
3775
+ .ui-ps-6 {
3776
+ padding-inline-start: var(--ui-space-6);
3777
+ }
3778
+ .ui-ps-8 {
3779
+ padding-inline-start: var(--ui-space-8);
3780
+ }
3781
+ .ui-px-0 {
3782
+ padding-inline: 0;
3783
+ }
3784
+ .ui-px-1 {
3785
+ padding-inline: var(--ui-space-1);
3786
+ }
3787
+ .ui-px-2 {
3788
+ padding-inline: var(--ui-space-2);
3789
+ }
3790
+ .ui-px-3 {
3791
+ padding-inline: var(--ui-space-3);
3792
+ }
3793
+ .ui-px-4 {
3794
+ padding-inline: var(--ui-space-4);
3795
+ }
3796
+ .ui-py-0 {
3797
+ padding-block: 0;
3798
+ }
3799
+ .ui-py-1 {
3800
+ padding-block: var(--ui-space-1);
3801
+ }
3802
+ .ui-py-2 {
3803
+ padding-block: var(--ui-space-2);
3804
+ }
3805
+ .ui-py-3 {
3806
+ padding-block: var(--ui-space-3);
3807
+ }
3808
+ .ui-py-4 {
3809
+ padding-block: var(--ui-space-4);
3810
+ }
3811
+ /* Gap utilities (for flex/grid) */
3812
+ .ui-gap-0 {
3813
+ gap: 0;
3814
+ }
3815
+ .ui-gap-1 {
3816
+ gap: var(--ui-space-1);
3817
+ }
3818
+ .ui-gap-2 {
3819
+ gap: var(--ui-space-2);
3820
+ }
3821
+ .ui-gap-3 {
3822
+ gap: var(--ui-space-3);
3823
+ }
3824
+ .ui-gap-4 {
3825
+ gap: var(--ui-space-4);
3826
+ }
3827
+ .ui-gap-6 {
3828
+ gap: var(--ui-space-6);
3829
+ }
3830
+ .ui-gap-8 {
3831
+ gap: var(--ui-space-8);
3832
+ }
3833
+ }
3834
+ /* Display and visibility utilities */
3835
+ /* Uses logical properties for international/RTL support */
3836
+ @layer utilities {
3837
+ /* Display */
3838
+ .ui-block {
3839
+ display: block;
3840
+ }
3841
+ .ui-inline-block {
3842
+ display: inline-block;
3843
+ }
3844
+ .ui-inline {
3845
+ display: inline;
3846
+ }
3847
+ .ui-flex {
3848
+ display: flex;
3849
+ }
3850
+ .ui-inline-flex {
3851
+ display: inline-flex;
3852
+ }
3853
+ .ui-grid {
3854
+ display: grid;
3855
+ }
3856
+ .ui-inline-grid {
3857
+ display: inline-grid;
3858
+ }
3859
+ .ui-hidden {
3860
+ display: none;
3861
+ }
3862
+ /* Flexbox direction */
3863
+ .ui-flex-row {
3864
+ flex-direction: row;
3865
+ }
3866
+ .ui-flex-row-reverse {
3867
+ flex-direction: row-reverse;
3868
+ }
3869
+ .ui-flex-col {
3870
+ flex-direction: column;
3871
+ }
3872
+ .ui-flex-col-reverse {
3873
+ flex-direction: column-reverse;
3874
+ }
3875
+ /* Flexbox wrap */
3876
+ .ui-flex-wrap {
3877
+ flex-wrap: wrap;
3878
+ }
3879
+ .ui-flex-nowrap {
3880
+ flex-wrap: nowrap;
3881
+ }
3882
+ .ui-flex-wrap-reverse {
3883
+ flex-wrap: wrap-reverse;
3884
+ }
3885
+ /* Flexbox grow/shrink */
3886
+ .ui-flex-1 {
3887
+ flex: 1 1 0%;
3888
+ }
3889
+ .ui-flex-auto {
3890
+ flex: 1 1 auto;
3891
+ }
3892
+ .ui-flex-initial {
3893
+ flex: 0 1 auto;
3894
+ }
3895
+ .ui-flex-none {
3896
+ flex: none;
3897
+ }
3898
+ .ui-grow {
3899
+ flex-grow: 1;
3900
+ }
3901
+ .ui-grow-0 {
3902
+ flex-grow: 0;
3903
+ }
3904
+ .ui-shrink {
3905
+ flex-shrink: 1;
3906
+ }
3907
+ .ui-shrink-0 {
3908
+ flex-shrink: 0;
3909
+ }
3910
+ /* Justify content */
3911
+ .ui-justify-start {
3912
+ justify-content: flex-start;
3913
+ }
3914
+ .ui-justify-end {
3915
+ justify-content: flex-end;
3916
+ }
3917
+ .ui-justify-center {
3918
+ justify-content: center;
3919
+ }
3920
+ .ui-justify-between {
3921
+ justify-content: space-between;
3922
+ }
3923
+ .ui-justify-around {
3924
+ justify-content: space-around;
3925
+ }
3926
+ .ui-justify-evenly {
3927
+ justify-content: space-evenly;
3928
+ }
3929
+ /* Align items */
3930
+ .ui-items-start {
3931
+ align-items: flex-start;
3932
+ }
3933
+ .ui-items-end {
3934
+ align-items: flex-end;
3935
+ }
3936
+ .ui-items-center {
3937
+ align-items: center;
3938
+ }
3939
+ .ui-items-baseline {
3940
+ align-items: baseline;
3941
+ }
3942
+ .ui-items-stretch {
3943
+ align-items: stretch;
3944
+ }
3945
+ /* Align self */
3946
+ .ui-self-auto {
3947
+ align-self: auto;
3948
+ }
3949
+ .ui-self-start {
3950
+ align-self: flex-start;
3951
+ }
3952
+ .ui-self-end {
3953
+ align-self: flex-end;
3954
+ }
3955
+ .ui-self-center {
3956
+ align-self: center;
3957
+ }
3958
+ .ui-self-stretch {
3959
+ align-self: stretch;
3960
+ }
3961
+ /* Visibility */
3962
+ .ui-visible {
3963
+ visibility: visible;
3964
+ }
3965
+ .ui-invisible {
3966
+ visibility: hidden;
3967
+ }
3968
+ /* Screen reader only - visually hidden but accessible */
3969
+ .ui-sr-only {
3970
+ position: absolute;
3971
+ /* stylelint-disable-next-line unit-disallowed-list -- intentional 1px for a11y */
3972
+ block-size: 1px;
3973
+ /* stylelint-disable-next-line unit-disallowed-list -- intentional 1px for a11y */
3974
+ inline-size: 1px;
3975
+ padding: 0;
3976
+ /* stylelint-disable-next-line unit-disallowed-list -- intentional -1px for a11y */
3977
+ margin: -1px;
3978
+ overflow: hidden;
3979
+ white-space: nowrap;
3980
+ border-width: 0;
3981
+ clip-path: inset(50%);
3982
+ }
3983
+ }
3984
+ @layer utilities {
3985
+ .ui-text-start {
3986
+ text-align: start;
3987
+ }
3988
+ .ui-text-center {
3989
+ text-align: center;
3990
+ }
3991
+ .ui-text-end {
3992
+ text-align: end;
3993
+ }
3994
+ .ui-text-justify {
3995
+ text-align: justify;
3996
+ }
3997
+ .ui-font-normal {
3998
+ font-weight: var(--ui-weight-normal);
3999
+ }
4000
+ .ui-font-medium {
4001
+ font-weight: var(--ui-weight-medium);
4002
+ }
4003
+ .ui-font-semibold {
4004
+ font-weight: var(--ui-weight-semibold);
4005
+ }
4006
+ .ui-font-bold {
4007
+ font-weight: var(--ui-weight-bold);
4008
+ }
4009
+ .ui-text-xs {
4010
+ font-size: var(--ui-font-size-xs);
4011
+ line-height: var(--ui-leading-xs);
4012
+ }
4013
+ .ui-text-sm {
4014
+ font-size: var(--ui-font-size-sm);
4015
+ line-height: var(--ui-leading-sm);
4016
+ }
4017
+ .ui-text-md {
4018
+ font-size: var(--ui-font-size-md);
4019
+ line-height: var(--ui-leading-md);
4020
+ }
4021
+ .ui-text-lg {
4022
+ font-size: var(--ui-font-size-lg);
4023
+ line-height: var(--ui-leading-lg);
4024
+ }
4025
+ .ui-text-xl {
4026
+ font-size: var(--ui-font-size-xl);
4027
+ line-height: var(--ui-leading-xl);
4028
+ }
4029
+ .ui-text-2xl {
4030
+ font-size: var(--ui-font-size-2xl);
4031
+ line-height: var(--ui-leading-2xl);
4032
+ }
4033
+ .ui-text-3xl {
4034
+ font-size: var(--ui-font-size-3xl);
4035
+ line-height: var(--ui-leading-3xl);
4036
+ }
4037
+ .ui-text-4xl {
4038
+ font-size: var(--ui-font-size-4xl);
4039
+ line-height: var(--ui-leading-4xl);
4040
+ }
4041
+ .ui-text-lead {
4042
+ font-size: var(--ui-lead-size);
4043
+ font-weight: var(--ui-lead-weight);
4044
+ line-height: var(--ui-lead-line-height);
4045
+ letter-spacing: var(--ui-lead-tracking);
4046
+ }
4047
+ .ui-text-eyebrow {
4048
+ font-size: var(--ui-eyebrow-size);
4049
+ font-weight: var(--ui-eyebrow-weight);
4050
+ line-height: var(--ui-eyebrow-line-height);
4051
+ letter-spacing: var(--ui-eyebrow-tracking);
4052
+ text-transform: uppercase;
4053
+ }
4054
+ .ui-text-caption {
4055
+ font-size: var(--ui-caption-size);
4056
+ font-weight: var(--ui-caption-weight);
4057
+ line-height: var(--ui-caption-line-height);
4058
+ letter-spacing: var(--ui-caption-tracking);
4059
+ }
4060
+ .ui-text-body-sm {
4061
+ font-size: var(--ui-body-sm-size);
4062
+ font-weight: var(--ui-body-sm-weight);
4063
+ line-height: var(--ui-body-sm-line-height);
4064
+ letter-spacing: var(--ui-body-sm-tracking);
4065
+ }
4066
+ .ui-font-sans {
4067
+ font-family: var(--ui-font-sans);
4068
+ }
4069
+ .ui-font-mono {
4070
+ font-family: var(--ui-font-mono);
4071
+ }
4072
+ .ui-underline {
4073
+ text-decoration: underline;
4074
+ }
4075
+ .ui-line-through {
4076
+ text-decoration: line-through;
4077
+ }
4078
+ .ui-no-underline {
4079
+ text-decoration: none;
4080
+ }
4081
+ .ui-uppercase {
4082
+ text-transform: uppercase;
4083
+ }
4084
+ .ui-lowercase {
4085
+ text-transform: lowercase;
4086
+ }
4087
+ .ui-capitalize {
4088
+ text-transform: capitalize;
4089
+ }
4090
+ .ui-normal-case {
4091
+ text-transform: none;
4092
+ }
4093
+ .ui-text-primary {
4094
+ color: var(--ui-color-primary);
4095
+ }
4096
+ .ui-text-muted {
4097
+ color: var(--ui-color-text-muted);
4098
+ }
4099
+ .ui-text-success {
4100
+ color: var(--ui-color-success);
4101
+ }
4102
+ .ui-text-warning {
4103
+ color: var(--ui-color-warning);
4104
+ }
4105
+ .ui-text-danger {
4106
+ color: var(--ui-color-danger);
4107
+ }
4108
+ .ui-truncate {
4109
+ overflow: hidden;
4110
+ text-overflow: ellipsis;
4111
+ white-space: nowrap;
4112
+ }
4113
+ .ui-whitespace-normal {
4114
+ white-space: normal;
4115
+ }
4116
+ .ui-whitespace-nowrap {
4117
+ white-space: nowrap;
4118
+ }
4119
+ .ui-whitespace-pre {
4120
+ white-space: pre;
4121
+ }
4122
+ .ui-whitespace-pre-wrap {
4123
+ white-space: pre-wrap;
4124
+ }
4125
+ .ui-prose {
4126
+ max-inline-size: 65ch;
4127
+ }
4128
+ .ui-prose-sm {
4129
+ max-inline-size: 45ch;
4130
+ }
4131
+ .ui-prose-lg {
4132
+ max-inline-size: 75ch;
4133
+ }
4134
+ .ui-tracking-display {
4135
+ letter-spacing: var(--ui-tracking-display);
4136
+ }
4137
+ .ui-tracking-body {
4138
+ letter-spacing: var(--ui-tracking-body);
4139
+ }
4140
+ .ui-tracking-caps {
4141
+ letter-spacing: var(--ui-tracking-caps);
4142
+ }
4143
+ }
4144
+ @layer utilities {
4145
+ .ui-border {
4146
+ border: var(--ui-border-width-sm) solid var(--ui-color-border);
4147
+ }
4148
+ .ui-border-0 {
4149
+ border: none;
4150
+ }
4151
+ .ui-rounded {
4152
+ border-radius: var(--ui-radius-md);
4153
+ }
4154
+ .ui-rounded-none {
4155
+ border-radius: 0;
4156
+ }
4157
+ .ui-rounded-sm {
4158
+ border-radius: var(--ui-radius-sm);
4159
+ }
4160
+ .ui-rounded-lg {
4161
+ border-radius: var(--ui-radius-lg);
4162
+ }
4163
+ .ui-rounded-full {
4164
+ border-radius: var(--ui-radius-full);
4165
+ }
4166
+ .ui-bg {
4167
+ background: var(--ui-color-bg);
4168
+ }
4169
+ .ui-bg-subtle {
4170
+ background: var(--ui-color-bg-subtle);
4171
+ }
4172
+ .ui-bg-muted {
4173
+ background: var(--ui-color-bg-muted);
4174
+ }
4175
+ .ui-bg-transparent {
4176
+ background: transparent;
4177
+ }
4178
+ }
4179
+ @layer utilities {
4180
+ .ui-visually-hidden {
4181
+ position: absolute;
4182
+ block-size: calc(0.5rem / 8);
4183
+ inline-size: calc(0.5rem / 8);
4184
+ padding: 0;
4185
+ margin: calc(0.5rem / -8);
4186
+ overflow: hidden;
4187
+ white-space: nowrap;
4188
+ border: 0;
4189
+ clip: rect(0 0 0 0);
4190
+ clip-path: inset(50%);
4191
+ }
4192
+ .ui-visually-hidden--focusable:focus,
4193
+ .ui-visually-hidden--focusable:active {
4194
+ position: static;
4195
+ block-size: auto;
4196
+ inline-size: auto;
4197
+ margin: 0;
4198
+ overflow: visible;
4199
+ white-space: normal;
4200
+ clip: auto;
4201
+ clip-path: none;
4202
+ }
4203
+ }
4204
+ @view-transition {
4205
+ navigation: auto;
4206
+ }
4207
+ @layer utilities {
4208
+ @keyframes vt-fade-in {
4209
+ from {
4210
+ opacity: 0;
4211
+ }
4212
+ }
4213
+ @keyframes vt-fade-out {
4214
+ to {
4215
+ opacity: 0;
4216
+ }
4217
+ }
4218
+ @keyframes vt-slide-in-up {
4219
+ from {
4220
+ opacity: 0;
4221
+ transform: translateY(1.25rem);
4222
+ }
4223
+ }
4224
+ @keyframes vt-slide-out-up {
4225
+ to {
4226
+ opacity: 0;
4227
+ transform: translateY(-1.25rem);
4228
+ }
4229
+ }
4230
+ @keyframes vt-slide-in-down {
4231
+ from {
4232
+ opacity: 0;
4233
+ transform: translateY(-1.25rem);
4234
+ }
4235
+ }
4236
+ @keyframes vt-slide-out-down {
4237
+ to {
4238
+ opacity: 0;
4239
+ transform: translateY(1.25rem);
4240
+ }
4241
+ }
4242
+ @keyframes vt-slide-in-start {
4243
+ from {
4244
+ opacity: 0;
4245
+ transform: translateX(-1.25rem);
4246
+ }
4247
+ }
4248
+ @keyframes vt-slide-out-start {
4249
+ to {
4250
+ opacity: 0;
4251
+ transform: translateX(-1.25rem);
4252
+ }
4253
+ }
4254
+ @keyframes vt-slide-in-end {
4255
+ from {
4256
+ opacity: 0;
4257
+ transform: translateX(1.25rem);
4258
+ }
4259
+ }
4260
+ @keyframes vt-slide-out-end {
4261
+ to {
4262
+ opacity: 0;
4263
+ transform: translateX(1.25rem);
4264
+ }
4265
+ }
4266
+ @keyframes vt-scale-in {
4267
+ from {
4268
+ opacity: 0;
4269
+ transform: scale(0.95);
4270
+ }
4271
+ }
4272
+ @keyframes vt-scale-out {
4273
+ to {
4274
+ opacity: 0;
4275
+ transform: scale(1.05);
4276
+ }
4277
+ }
4278
+ .ui-transition-name-sidebar {
4279
+ view-transition-name: sidebar;
4280
+ }
4281
+ .ui-transition-name-main {
4282
+ view-transition-name: main;
4283
+ }
4284
+ .ui-transition-name-header {
4285
+ view-transition-name: header;
4286
+ }
4287
+ .ui-transition-name-hero {
4288
+ view-transition-name: hero;
4289
+ }
4290
+ .ui-transition-name-card {
4291
+ view-transition-name: card;
4292
+ }
4293
+ .ui-transition-name-modal {
4294
+ view-transition-name: modal;
4295
+ }
4296
+ .ui-transition-name-slide-up {
4297
+ view-transition-name: slide-up;
4298
+ }
4299
+ .ui-transition-name-slide-down {
4300
+ view-transition-name: slide-down;
4301
+ }
4302
+ .ui-transition-name-slide-start {
4303
+ view-transition-name: slide-start;
4304
+ }
4305
+ .ui-transition-name-slide-end {
4306
+ view-transition-name: slide-end;
4307
+ }
4308
+ .ui-transition-name-scale {
4309
+ view-transition-name: scale;
4310
+ }
4311
+ .ui-transition-name-fade {
4312
+ view-transition-name: fade;
4313
+ }
4314
+ .ui-transition-name-none {
4315
+ view-transition-name: none;
4316
+ }
4317
+ ::view-transition-old(sidebar),
4318
+ ::view-transition-new(sidebar),
4319
+ ::view-transition-old(header),
4320
+ ::view-transition-new(header) {
4321
+ animation: none;
4322
+ }
4323
+ ::view-transition-old(root),
4324
+ ::view-transition-new(root) {
4325
+ animation-duration: var(--ui-duration-base);
4326
+ animation-timing-function: var(--ui-ease-default);
4327
+ }
4328
+ ::view-transition-old(fade) {
4329
+ animation: vt-fade-out var(--ui-duration-base) var(--ui-ease-out);
4330
+ }
4331
+ ::view-transition-new(fade) {
4332
+ animation: vt-fade-in var(--ui-duration-base) var(--ui-ease-out);
4333
+ }
4334
+ ::view-transition-old(slide-up),
4335
+ ::view-transition-old(main) {
4336
+ animation: vt-slide-out-up var(--ui-duration-base) var(--ui-ease-out);
4337
+ }
4338
+ ::view-transition-new(slide-up),
4339
+ ::view-transition-new(main) {
4340
+ animation: vt-slide-in-up var(--ui-duration-base) var(--ui-ease-out);
4341
+ }
4342
+ ::view-transition-old(slide-down) {
4343
+ animation: vt-slide-out-down var(--ui-duration-base) var(--ui-ease-out);
4344
+ }
4345
+ ::view-transition-new(slide-down) {
4346
+ animation: vt-slide-in-down var(--ui-duration-base) var(--ui-ease-out);
4347
+ }
4348
+ ::view-transition-old(slide-start) {
4349
+ animation: vt-slide-out-start var(--ui-duration-base) var(--ui-ease-out);
4350
+ }
4351
+ ::view-transition-new(slide-start) {
4352
+ animation: vt-slide-in-start var(--ui-duration-base) var(--ui-ease-out);
4353
+ }
4354
+ ::view-transition-old(slide-end) {
4355
+ animation: vt-slide-out-end var(--ui-duration-base) var(--ui-ease-out);
4356
+ }
4357
+ ::view-transition-new(slide-end) {
4358
+ animation: vt-slide-in-end var(--ui-duration-base) var(--ui-ease-out);
4359
+ }
4360
+ ::view-transition-old(scale),
4361
+ ::view-transition-old(modal),
4362
+ ::view-transition-old(card) {
4363
+ animation: vt-scale-out var(--ui-duration-base) var(--ui-ease-out);
4364
+ }
4365
+ ::view-transition-new(scale),
4366
+ ::view-transition-new(modal),
4367
+ ::view-transition-new(card) {
4368
+ animation: vt-scale-in var(--ui-duration-base) var(--ui-ease-out);
4369
+ }
4370
+ ::view-transition-group(hero) {
4371
+ animation-duration: var(--ui-duration-slow);
4372
+ animation-timing-function: var(--ui-ease-in-out);
4373
+ }
4374
+ @media (prefers-reduced-motion: reduce) {
4375
+ ::view-transition-old(*),
4376
+ ::view-transition-new(*),
4377
+ ::view-transition-group(*) {
4378
+ animation-duration: 0s !important;
4379
+ }
4380
+ }
4381
+ }
4382
+ /* 99. Debug tools (dev only) */
4383
+ /* Debug grid overlay - add class="debug-grid" to body or any container */
4384
+ .ui-debug-grid,
4385
+ .ui-debug-grid-rows,
4386
+ .ui-debug-baseline {
4387
+ position: relative;
4388
+ }
4389
+ .ui-debug-grid {
4390
+ --ui-debug-color: hsl(var(--ui-hue-primary) 80% 50% / 0.15);
4391
+ }
4392
+ .ui-debug-grid::after {
4393
+ content: "";
4394
+ position: absolute;
4395
+ inset-block-start: 0;
4396
+ inset-inline-start: 0;
4397
+ z-index: var(--ui-z-debug);
4398
+ block-size: 100%;
4399
+ inline-size: 100%;
4400
+ min-block-size: 100vh;
4401
+ background-image: linear-gradient(to right, var(--ui-debug-color) 1px, transparent 1px), linear-gradient(to bottom, var(--ui-debug-color) 1px, transparent 1px);
4402
+ pointer-events: none;
4403
+ background-size: var(--ui-unit) var(--ui-unit);
4404
+ background-position: 0 0;
4405
+ }
4406
+ /* Stronger grid at row intervals (16px) */
4407
+ .ui-debug-grid-rows {
4408
+ --ui-debug-color: hsl(var(--ui-hue-primary) 80% 50% / 0.1);
4409
+ --ui-debug-color-strong: hsl(var(--ui-hue-primary) 80% 50% / 0.25);
4410
+ }
4411
+ .ui-debug-grid-rows::after {
4412
+ content: "";
4413
+ position: absolute;
4414
+ inset-block-start: 0;
4415
+ inset-inline-start: 0;
4416
+ z-index: var(--ui-z-debug);
4417
+ block-size: 100%;
4418
+ inline-size: 100%;
4419
+ min-block-size: 100vh;
4420
+ background-image: linear-gradient(to right, var(--ui-debug-color) 1px, transparent 1px), linear-gradient(to bottom, var(--ui-debug-color) 1px, transparent 1px), linear-gradient(to bottom, var(--ui-debug-color-strong) 1px, transparent 1px);
4421
+ pointer-events: none;
4422
+ background-size: var(--ui-unit) var(--ui-unit), var(--ui-unit) var(--ui-unit), var(--ui-unit) var(--ui-row);
4423
+ background-position: 0 0;
4424
+ }
4425
+ /* Baseline grid only (horizontal lines) */
4426
+ .ui-debug-baseline {
4427
+ --ui-debug-color: hsl(var(--ui-hue-danger) 80% 50% / 0.2);
4428
+ }
4429
+ .ui-debug-baseline::after {
4430
+ content: "";
4431
+ position: absolute;
4432
+ inset-block-start: 0;
4433
+ inset-inline-start: 0;
4434
+ z-index: var(--ui-z-debug);
4435
+ block-size: 100%;
4436
+ inline-size: 100%;
4437
+ min-block-size: 100vh;
4438
+ background-image: linear-gradient(to bottom, var(--ui-debug-color) 1px, transparent 1px);
4439
+ pointer-events: none;
4440
+ background-size: 100% var(--ui-unit);
4441
+ }
4442
+ /* Element boundaries outline */
4443
+ .ui-debug-outline * {
4444
+ outline: 1px solid hsla(0, 100%, 50%, 0.5);
4445
+ }