@blukavantui/community 1.0.1 → 1.2.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 (304) hide show
  1. package/README.md +11 -5
  2. package/dist/build-audit.json +234 -44
  3. package/dist/checkbox.css +1 -0
  4. package/dist/checkbox.d.ts +2 -0
  5. package/dist/checkbox.js +1 -0
  6. package/dist/chunk-2BSBXDOT.js +1 -0
  7. package/dist/chunk-4LHIQROI.js +0 -0
  8. package/dist/chunk-5ENZVZGF.js +0 -0
  9. package/dist/chunk-6T677NSC.js +1 -0
  10. package/dist/chunk-7CEOCZ5L.js +0 -0
  11. package/dist/chunk-7DXFNK7C.js +1 -0
  12. package/dist/chunk-AL2ETLJV.js +1 -0
  13. package/dist/chunk-BN3PDE5G.js +0 -0
  14. package/dist/chunk-CNIIMGT3.js +0 -0
  15. package/dist/chunk-CSTCEBEK.js +1 -0
  16. package/dist/chunk-DRZM2AL3.js +0 -0
  17. package/dist/chunk-EOKNLCNS.js +1 -0
  18. package/dist/chunk-EPPETNK6.js +1 -0
  19. package/dist/chunk-EPPSBHZR.js +1 -0
  20. package/dist/chunk-EPZGLHPD.js +0 -0
  21. package/dist/chunk-FNX33PDD.js +0 -0
  22. package/dist/{chunk-NTFHNL7T.js → chunk-G6OW4OZM.js} +1 -1
  23. package/dist/chunk-GS67ZBLI.js +1 -0
  24. package/dist/chunk-HO6CYWED.js +0 -0
  25. package/dist/{chunk-6EHKOVZK.js → chunk-HVR2UDFX.js} +1 -1
  26. package/dist/chunk-IJ62ILKE.js +0 -0
  27. package/dist/chunk-IKYBFMHI.js +1 -0
  28. package/dist/chunk-IO22GWON.js +0 -0
  29. package/dist/chunk-KVOA55NE.js +0 -0
  30. package/dist/{chunk-MZBB5ROJ.js → chunk-LF2HELEZ.js} +1 -1
  31. package/dist/chunk-MYVLBALF.js +1 -0
  32. package/dist/{chunk-UEOCR2C3.js → chunk-OLDA73XG.js} +2 -2
  33. package/dist/chunk-RWBLICYX.js +0 -0
  34. package/dist/chunk-RYD6RHRX.js +0 -0
  35. package/dist/chunk-T45FJNEQ.js +1 -0
  36. package/dist/chunk-TZSX4OTV.js +1 -0
  37. package/dist/chunk-UN2SLVFG.js +1 -0
  38. package/dist/{chunk-GK3INPAZ.js → chunk-V2YPIC6Z.js} +1 -1
  39. package/dist/chunk-V4ZQLQ7L.js +0 -0
  40. package/dist/chunk-VAM3FPCS.js +0 -0
  41. package/dist/chunk-VJVFHL6P.js +0 -0
  42. package/dist/chunk-VSTKXZYY.js +0 -0
  43. package/dist/chunk-W3H7XTA7.js +1 -0
  44. package/dist/chunk-WG4US4JH.js +1 -0
  45. package/dist/chunk-WGSTNXAQ.js +0 -0
  46. package/dist/chunk-WJHCVECU.js +1 -0
  47. package/dist/chunk-XVMJG26X.js +1 -0
  48. package/dist/chunk-Y4AXWTAD.js +0 -0
  49. package/dist/chunk-YCLR3IE3.js +0 -0
  50. package/dist/chunk-YLFXSHKZ.js +0 -0
  51. package/dist/chunk-ZDGZGAYG.js +0 -0
  52. package/dist/columns2.css +1 -0
  53. package/dist/columns2.d.ts +2 -0
  54. package/dist/columns2.js +1 -0
  55. package/dist/columns3.css +1 -0
  56. package/dist/columns3.d.ts +2 -0
  57. package/dist/columns3.js +1 -0
  58. package/dist/columns4.css +1 -0
  59. package/dist/columns4.d.ts +2 -0
  60. package/dist/columns4.js +1 -0
  61. package/dist/command-palette.js +1 -1
  62. package/dist/component-motion.css +39 -0
  63. package/dist/component-motion.d.ts +45 -0
  64. package/dist/component-motion.js +1 -0
  65. package/dist/content.js +1 -1
  66. package/dist/core.css +8 -0
  67. package/dist/core.js +1 -1
  68. package/dist/data-motion.css +4 -0
  69. package/dist/data-motion.d.ts +23 -0
  70. package/dist/data-motion.js +1 -0
  71. package/dist/data.css +63 -0
  72. package/dist/data.d.ts +1 -0
  73. package/dist/data.js +1 -1
  74. package/dist/date-picker.css +5 -5
  75. package/dist/date-picker.js +1 -1
  76. package/dist/date-range-picker.css +5 -5
  77. package/dist/date-range-picker.js +1 -1
  78. package/dist/date-time-picker.css +5 -5
  79. package/dist/date-time-picker.js +1 -1
  80. package/dist/draft-components.json +77 -0
  81. package/dist/drawer.js +1 -1
  82. package/dist/essentials.css +8 -0
  83. package/dist/feedback.js +1 -1
  84. package/dist/form-field.css +1 -0
  85. package/dist/form-field.d.ts +2 -0
  86. package/dist/form-field.js +1 -0
  87. package/dist/form-layout/choice.d.ts +15 -0
  88. package/dist/form-layout/layout.d.ts +12 -0
  89. package/dist/form-layout/select.d.ts +3 -0
  90. package/dist/form-layout/shared.d.ts +21 -0
  91. package/dist/form-layout/table.d.ts +20 -0
  92. package/dist/form-layout/text.d.ts +3 -0
  93. package/dist/form-layout/types.d.ts +151 -0
  94. package/dist/form-layout.css +62 -0
  95. package/dist/form-layout.d.ts +12 -0
  96. package/dist/form-layout.js +1 -0
  97. package/dist/index.d.ts +1 -0
  98. package/dist/index.js +1 -1
  99. package/dist/inputs.css +83 -20
  100. package/dist/inputs.d.ts +8 -0
  101. package/dist/inputs.js +1 -1
  102. package/dist/layout.css +63 -0
  103. package/dist/layout.d.ts +3 -0
  104. package/dist/layout.js +1 -1
  105. package/dist/modal.js +1 -1
  106. package/dist/motion/action-feedback.d.ts +14 -0
  107. package/dist/motion/border-glow.d.ts +12 -0
  108. package/dist/motion/button.d.ts +11 -0
  109. package/dist/motion/component-settings.d.ts +51 -0
  110. package/dist/motion/controller.d.ts +33 -0
  111. package/dist/motion/effects.d.ts +30 -0
  112. package/dist/motion/feedback.d.ts +6 -0
  113. package/dist/motion/loading.d.ts +9 -0
  114. package/dist/motion/optional.d.ts +35 -0
  115. package/dist/motion/photo.d.ts +7 -0
  116. package/dist/motion/presence.d.ts +12 -0
  117. package/dist/motion/scene.d.ts +10 -0
  118. package/dist/motion/screen.d.ts +6 -0
  119. package/dist/motion/scroll-reveal.d.ts +13 -0
  120. package/dist/motion/settings-group.d.ts +14 -0
  121. package/dist/motion/stagger.d.ts +12 -0
  122. package/dist/motion/structure.d.ts +18 -0
  123. package/dist/motion/tabs.d.ts +19 -0
  124. package/dist/motion/tokens.d.ts +11 -0
  125. package/dist/motion/value.d.ts +21 -0
  126. package/dist/motion/view-transition.d.ts +14 -0
  127. package/dist/motion-enhancers.d.ts +12 -0
  128. package/dist/motion-enhancers.js +1 -0
  129. package/dist/motion-settings.d.ts +3 -0
  130. package/dist/motion-settings.js +1 -0
  131. package/dist/motion.css +1076 -0
  132. package/dist/motion.d.ts +20 -0
  133. package/dist/motion.js +1 -0
  134. package/dist/native/date-picker.js +1 -1
  135. package/dist/native/date-range-picker.js +1 -1
  136. package/dist/native/date-time-picker.js +1 -1
  137. package/dist/native/form-layout.js +1 -0
  138. package/dist/native/time-picker.js +1 -1
  139. package/dist/native-components/form-layout.d.ts +1 -0
  140. package/dist/native-motion-components.d.ts +3 -0
  141. package/dist/native-motion-content.d.ts +1 -0
  142. package/dist/native-motion-foundations.d.ts +3 -0
  143. package/dist/native-motion-layout.d.ts +3 -0
  144. package/dist/native-motion-pilot.d.ts +34 -0
  145. package/dist/native-motion.d.ts +71 -0
  146. package/dist/notification.js +1 -1
  147. package/dist/pagination.js +1 -1
  148. package/dist/radio-button.css +1 -0
  149. package/dist/radio-button.d.ts +2 -0
  150. package/dist/radio-button.js +1 -0
  151. package/dist/radio-group.css +1 -0
  152. package/dist/radio-group.d.ts +2 -0
  153. package/dist/radio-group.js +1 -0
  154. package/dist/select.css +1 -0
  155. package/dist/select.d.ts +2 -0
  156. package/dist/select.js +1 -0
  157. package/dist/sidebar.js +1 -1
  158. package/dist/sizes.json +416 -112
  159. package/dist/skeleton.css +8 -0
  160. package/dist/styles.css +1213 -20
  161. package/dist/switch.css +1 -0
  162. package/dist/switch.d.ts +2 -0
  163. package/dist/switch.js +1 -0
  164. package/dist/table.css +1 -0
  165. package/dist/table.d.ts +2 -0
  166. package/dist/table.js +1 -0
  167. package/dist/text-area.css +1 -0
  168. package/dist/text-area.d.ts +2 -0
  169. package/dist/text-area.js +1 -0
  170. package/dist/text-input.css +1 -0
  171. package/dist/text-input.d.ts +2 -0
  172. package/dist/text-input.js +1 -0
  173. package/dist/time-picker.css +5 -5
  174. package/dist/time-picker.js +1 -1
  175. package/dist/tree-view.js +1 -1
  176. package/dist/web-motion/chip-ripple.d.ts +6 -0
  177. package/dist/web-motion/choice-ripple.d.ts +6 -0
  178. package/dist/web-motion/content.d.ts +9 -0
  179. package/dist/web-motion/data-rows.d.ts +12 -0
  180. package/dist/web-motion/fields.d.ts +6 -0
  181. package/dist/web-motion/navigation.d.ts +6 -0
  182. package/dist/web-motion/notifications.d.ts +6 -0
  183. package/dist/web-motion/select-ripple.d.ts +6 -0
  184. package/dist/web-motion/statistic.d.ts +13 -0
  185. package/dist/web-motion/surfaces.d.ts +10 -0
  186. package/dist/web-motion/tree.d.ts +6 -0
  187. package/docs/FORM-LAYOUT-ESSENTIALS.md +122 -0
  188. package/docs/PUBLISHING.md +129 -25
  189. package/draft-components.json +77 -0
  190. package/edition.json +44 -7
  191. package/npm-shrinkwrap.json +2 -2
  192. package/package.json +102 -10
  193. package/scripts/build-motion-css.mjs +36 -0
  194. package/scripts/build-motion-styles.mjs +29 -0
  195. package/scripts/build.mjs +20 -8
  196. package/scripts/motion-entries.mjs +2 -0
  197. package/src/checkbox.ts +2 -0
  198. package/src/columns2.ts +2 -0
  199. package/src/columns3.ts +2 -0
  200. package/src/columns4.ts +2 -0
  201. package/src/component-motion.ts +101 -0
  202. package/src/data-motion.ts +60 -0
  203. package/src/data.ts +1 -0
  204. package/src/form-field.ts +2 -0
  205. package/src/form-layout/choice.ts +82 -0
  206. package/src/form-layout/layout.ts +40 -0
  207. package/src/form-layout/select.ts +97 -0
  208. package/src/form-layout/shared.ts +57 -0
  209. package/src/form-layout/table.ts +86 -0
  210. package/src/form-layout/text.ts +73 -0
  211. package/src/form-layout/types.ts +59 -0
  212. package/src/form-layout.ts +12 -0
  213. package/src/index.ts +2 -0
  214. package/src/inputs.ts +8 -0
  215. package/src/layout.ts +3 -0
  216. package/src/motion/action-feedback.ts +38 -0
  217. package/src/motion/border-glow.ts +41 -0
  218. package/src/motion/button.ts +56 -0
  219. package/src/motion/component-settings.ts +147 -0
  220. package/src/motion/controller.ts +191 -0
  221. package/src/motion/effects.ts +75 -0
  222. package/src/motion/feedback.ts +41 -0
  223. package/src/motion/loading.ts +40 -0
  224. package/src/motion/optional.ts +123 -0
  225. package/src/motion/photo.ts +19 -0
  226. package/src/motion/presence.ts +44 -0
  227. package/src/motion/scene.ts +103 -0
  228. package/src/motion/screen.ts +15 -0
  229. package/src/motion/scroll-reveal.ts +49 -0
  230. package/src/motion/settings-group.ts +28 -0
  231. package/src/motion/stagger.ts +26 -0
  232. package/src/motion/structure.ts +75 -0
  233. package/src/motion/tabs.ts +105 -0
  234. package/src/motion/tokens.ts +2 -0
  235. package/src/motion/value.ts +61 -0
  236. package/src/motion/view-transition.ts +57 -0
  237. package/src/motion-enhancers.ts +12 -0
  238. package/src/motion-settings.ts +3 -0
  239. package/src/motion.ts +20 -0
  240. package/src/native-components/form-layout.ts +21 -0
  241. package/src/native-motion-components.ts +76 -0
  242. package/src/native-motion-content.ts +10 -0
  243. package/src/native-motion-foundations.ts +56 -0
  244. package/src/native-motion-layout.ts +35 -0
  245. package/src/native-motion-pilot.ts +151 -0
  246. package/src/native-motion.ts +188 -0
  247. package/src/radio-button.ts +2 -0
  248. package/src/radio-group.ts +2 -0
  249. package/src/runtime/date-picker.js +21 -12
  250. package/src/runtime/date-range-picker.js +21 -12
  251. package/src/runtime/date-time-picker.js +21 -12
  252. package/src/runtime/time-picker.js +21 -12
  253. package/src/select.ts +2 -0
  254. package/src/switch.ts +2 -0
  255. package/src/table.ts +2 -0
  256. package/src/text-area.ts +2 -0
  257. package/src/text-input.ts +2 -0
  258. package/src/types.ts +0 -12
  259. package/src/web-motion/chip-ripple.ts +31 -0
  260. package/src/web-motion/choice-ripple.ts +30 -0
  261. package/src/web-motion/content.ts +74 -0
  262. package/src/web-motion/data-rows.ts +106 -0
  263. package/src/web-motion/fields.ts +52 -0
  264. package/src/web-motion/navigation.ts +62 -0
  265. package/src/web-motion/notifications.ts +67 -0
  266. package/src/web-motion/select-ripple.ts +23 -0
  267. package/src/web-motion/statistic.ts +23 -0
  268. package/src/web-motion/surfaces.ts +137 -0
  269. package/src/web-motion/tree.ts +44 -0
  270. package/styles/checkbox.css +1 -0
  271. package/styles/columns2.css +1 -0
  272. package/styles/columns3.css +1 -0
  273. package/styles/columns4.css +1 -0
  274. package/styles/component-motion.css +39 -0
  275. package/styles/data-motion.css +4 -0
  276. package/styles/date-picker.css +5 -5
  277. package/styles/date-range-picker.css +5 -5
  278. package/styles/date-time-picker.css +5 -5
  279. package/styles/form-field.css +1 -0
  280. package/styles/form-layout.css +62 -0
  281. package/styles/motion-optional.css +15 -0
  282. package/styles/motion-presets.css +92 -0
  283. package/styles/motion-tokens.css +6 -0
  284. package/styles/motion.css +125 -0
  285. package/styles/radio-button.css +1 -0
  286. package/styles/radio-group.css +1 -0
  287. package/styles/select.css +1 -0
  288. package/styles/skeleton.css +8 -0
  289. package/styles/switch.css +1 -0
  290. package/styles/table.css +1 -0
  291. package/styles/text-area.css +1 -0
  292. package/styles/text-input.css +1 -0
  293. package/styles/time-picker.css +5 -5
  294. package/test/component-motion-settings.test.mjs +35 -0
  295. package/test/content-overlay-motion.test.mjs +36 -0
  296. package/test/form-layout.test.mjs +28 -0
  297. package/test/isolation.test.mjs +2 -2
  298. package/test/motion.test.mjs +215 -0
  299. package/dist/chunk-2TCNAQC6.js +0 -1
  300. package/dist/chunk-CTLZIWMX.js +0 -1
  301. package/dist/chunk-MHHJZYXW.js +0 -1
  302. package/dist/chunk-XDYBNO4P.js +0 -1
  303. /package/dist/{chunk-H7ETPJVW.js → chunk-3PODK22R.js} +0 -0
  304. /package/dist/{chunk-SIU7DSOA.js → chunk-KBWB4OIF.js} +0 -0
package/dist/styles.css CHANGED
@@ -2410,6 +2410,14 @@ The base shape remains visible when the animated overlay is removed. */
2410
2410
  -servicestudio-height: 20px;
2411
2411
  }
2412
2412
 
2413
+ /* The opt-in native motion adapter owns the shimmer. Avoid a second legacy
2414
+ wave, including when the adapter is Reduced or Off. Removing the adapter
2415
+ restores the existing IsAnimated behavior without changing its contract. */
2416
+ .blu-skeleton[data-blu-native-motion="loading-skeleton"]::after {
2417
+ animation: none !important;
2418
+ display: none !important;
2419
+ }
2420
+
2413
2421
  /* Font loading is headless; the scope supplies shared body and heading tokens. */
2414
2422
  .blu-font-provider-block .blu-component-preview {display:none;}
2415
2423
  [data-blu-font-scope] :is(h1,h2,h3,h4,h5,h6) {font-family:var(--blu-font-heading-family,var(--blu-font-family,inherit));}
@@ -4523,7 +4531,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4523
4531
  .blu-picker [hidden],.blu-picker__dialog [hidden] {display:none!important;}
4524
4532
  .blu-picker__fields {display:flex;flex-wrap:wrap;gap:12px;}
4525
4533
  .blu-picker__field {flex:1 1 180px;min-width:0;}
4526
- .blu-picker__field label,.blu-picker__select-field>span {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
4534
+ .blu-picker__field label,.blu-picker__select-caption {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
4527
4535
  .blu-picker__input {display:block;width:100%;min-width:0;min-height:42px;padding:9px 11px;border:1px solid var(--bluui-control-border,#69788d);border-radius:9px;background:var(--bluui-surface,#fff);color:var(--bluui-text,#182230);font:inherit;line-height:1.4;}
4528
4536
  .blu-picker__field-control {position:relative;}
4529
4537
  .blu-picker__field-control>.blu-picker__input {padding-right:38px;}
@@ -4546,7 +4554,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4546
4554
  .blu-picker__dialog::backdrop {background:transparent;pointer-events:none;}
4547
4555
  .blu-picker__dialog-head {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;}
4548
4556
  .blu-picker__dialog-head h2 {font-size:16px;line-height:1.4;font-family:var(--blu-font-heading-family,inherit);margin:0;overflow-wrap:anywhere;}
4549
- .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 72px 32px;align-items:end;gap:6px;margin-top:0;}
4557
+ .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 88px 32px;align-items:end;gap:6px;margin-top:0;}
4550
4558
  .blu-picker__calendar-nav>.blu-picker__button {height:36px;padding:2px;font-size:22px;}
4551
4559
  .blu-picker__select-field {min-width:0;}
4552
4560
  .blu-picker__caption {font-size:15px;text-align:center;margin:16px 0 8px;}
@@ -4571,8 +4579,8 @@ Keep bulk commands together in a wrapping row between the panels. */
4571
4579
  /* Compact popup controls; editable text stays at 16px to avoid iOS focus zoom. */
4572
4580
  .blu-picker__dialog .blu-picker__input {min-height:36px;padding:5px 7px;font-size:16px;line-height:1.2;}
4573
4581
  .blu-picker__dialog .blu-picker__button {min-height:34px;min-width:32px;padding:5px 9px;font-size:13px;line-height:1.25;}
4574
- .blu-picker__dialog .blu-picker__select-field>span {font-size:11px;margin-bottom:2px;}
4575
- .blu-picker__calendar-nav .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4582
+ .blu-picker__dialog .blu-picker__select-caption {font-size:11px;margin-bottom:2px;}
4583
+ .blu-picker__calendar-nav .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4576
4584
  .blu-picker__dialog .blu-picker__error {margin-top:4px;font-size:12px;line-height:1.3;}
4577
4585
  @media(pointer:coarse){
4578
4586
  .blu-picker__field-control>.blu-picker__input {font-size:16px;min-height:44px;}
@@ -4589,7 +4597,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4589
4597
  .blu-picker__dialog[data-compact=true] .blu-picker__calendar td {height:24px;}
4590
4598
  .blu-picker__dialog[data-compact=true] .blu-picker__day {min-height:24px;padding:3px 0;}
4591
4599
  .blu-picker__dialog[data-compact=true] .blu-picker__time-area {margin:4px 0;gap:6px;}
4592
- .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
4600
+ .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
4593
4601
  .blu-picker__dialog[data-compact=true] .blu-picker__selection {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4594
4602
  .blu-picker__dialog[data-compact=true] .blu-picker__popup-actions {margin-top:4px;gap:4px;}
4595
4603
  .blu-picker__dialog[data-compact=true] .blu-picker__presets {margin-bottom:4px;gap:4px;}
@@ -4602,7 +4610,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4602
4610
  .blu-picker [hidden],.blu-picker__dialog [hidden] {display:none!important;}
4603
4611
  .blu-picker__fields {display:flex;flex-wrap:wrap;gap:12px;}
4604
4612
  .blu-picker__field {flex:1 1 180px;min-width:0;}
4605
- .blu-picker__field label,.blu-picker__select-field>span {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
4613
+ .blu-picker__field label,.blu-picker__select-caption {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
4606
4614
  .blu-picker__input {display:block;width:100%;min-width:0;min-height:42px;padding:9px 11px;border:1px solid var(--bluui-control-border,#69788d);border-radius:9px;background:var(--bluui-surface,#fff);color:var(--bluui-text,#182230);font:inherit;line-height:1.4;}
4607
4615
  .blu-picker__field-control {position:relative;}
4608
4616
  .blu-picker__field-control>.blu-picker__input {padding-right:38px;}
@@ -4625,7 +4633,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4625
4633
  .blu-picker__dialog::backdrop {background:transparent;pointer-events:none;}
4626
4634
  .blu-picker__dialog-head {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;}
4627
4635
  .blu-picker__dialog-head h2 {font-size:16px;line-height:1.4;font-family:var(--blu-font-heading-family,inherit);margin:0;overflow-wrap:anywhere;}
4628
- .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 72px 32px;align-items:end;gap:6px;margin-top:0;}
4636
+ .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 88px 32px;align-items:end;gap:6px;margin-top:0;}
4629
4637
  .blu-picker__calendar-nav>.blu-picker__button {height:36px;padding:2px;font-size:22px;}
4630
4638
  .blu-picker__select-field {min-width:0;}
4631
4639
  .blu-picker__caption {font-size:15px;text-align:center;margin:16px 0 8px;}
@@ -4650,8 +4658,8 @@ Keep bulk commands together in a wrapping row between the panels. */
4650
4658
  /* Compact popup controls; editable text stays at 16px to avoid iOS focus zoom. */
4651
4659
  .blu-picker__dialog .blu-picker__input {min-height:36px;padding:5px 7px;font-size:16px;line-height:1.2;}
4652
4660
  .blu-picker__dialog .blu-picker__button {min-height:34px;min-width:32px;padding:5px 9px;font-size:13px;line-height:1.25;}
4653
- .blu-picker__dialog .blu-picker__select-field>span {font-size:11px;margin-bottom:2px;}
4654
- .blu-picker__calendar-nav .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4661
+ .blu-picker__dialog .blu-picker__select-caption {font-size:11px;margin-bottom:2px;}
4662
+ .blu-picker__calendar-nav .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4655
4663
  .blu-picker__dialog .blu-picker__error {margin-top:4px;font-size:12px;line-height:1.3;}
4656
4664
  @media(pointer:coarse){
4657
4665
  .blu-picker__field-control>.blu-picker__input {font-size:16px;min-height:44px;}
@@ -4668,7 +4676,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4668
4676
  .blu-picker__dialog[data-compact=true] .blu-picker__calendar td {height:24px;}
4669
4677
  .blu-picker__dialog[data-compact=true] .blu-picker__day {min-height:24px;padding:3px 0;}
4670
4678
  .blu-picker__dialog[data-compact=true] .blu-picker__time-area {margin:4px 0;gap:6px;}
4671
- .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
4679
+ .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
4672
4680
  .blu-picker__dialog[data-compact=true] .blu-picker__selection {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4673
4681
  .blu-picker__dialog[data-compact=true] .blu-picker__popup-actions {margin-top:4px;gap:4px;}
4674
4682
  .blu-picker__dialog[data-compact=true] .blu-picker__presets {margin-bottom:4px;gap:4px;}
@@ -4681,7 +4689,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4681
4689
  .blu-picker [hidden],.blu-picker__dialog [hidden] {display:none!important;}
4682
4690
  .blu-picker__fields {display:flex;flex-wrap:wrap;gap:12px;}
4683
4691
  .blu-picker__field {flex:1 1 180px;min-width:0;}
4684
- .blu-picker__field label,.blu-picker__select-field>span {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
4692
+ .blu-picker__field label,.blu-picker__select-caption {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
4685
4693
  .blu-picker__input {display:block;width:100%;min-width:0;min-height:42px;padding:9px 11px;border:1px solid var(--bluui-control-border,#69788d);border-radius:9px;background:var(--bluui-surface,#fff);color:var(--bluui-text,#182230);font:inherit;line-height:1.4;}
4686
4694
  .blu-picker__field-control {position:relative;}
4687
4695
  .blu-picker__field-control>.blu-picker__input {padding-right:38px;}
@@ -4704,7 +4712,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4704
4712
  .blu-picker__dialog::backdrop {background:transparent;pointer-events:none;}
4705
4713
  .blu-picker__dialog-head {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;}
4706
4714
  .blu-picker__dialog-head h2 {font-size:16px;line-height:1.4;font-family:var(--blu-font-heading-family,inherit);margin:0;overflow-wrap:anywhere;}
4707
- .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 72px 32px;align-items:end;gap:6px;margin-top:0;}
4715
+ .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 88px 32px;align-items:end;gap:6px;margin-top:0;}
4708
4716
  .blu-picker__calendar-nav>.blu-picker__button {height:36px;padding:2px;font-size:22px;}
4709
4717
  .blu-picker__select-field {min-width:0;}
4710
4718
  .blu-picker__caption {font-size:15px;text-align:center;margin:16px 0 8px;}
@@ -4729,8 +4737,8 @@ Keep bulk commands together in a wrapping row between the panels. */
4729
4737
  /* Compact popup controls; editable text stays at 16px to avoid iOS focus zoom. */
4730
4738
  .blu-picker__dialog .blu-picker__input {min-height:36px;padding:5px 7px;font-size:16px;line-height:1.2;}
4731
4739
  .blu-picker__dialog .blu-picker__button {min-height:34px;min-width:32px;padding:5px 9px;font-size:13px;line-height:1.25;}
4732
- .blu-picker__dialog .blu-picker__select-field>span {font-size:11px;margin-bottom:2px;}
4733
- .blu-picker__calendar-nav .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4740
+ .blu-picker__dialog .blu-picker__select-caption {font-size:11px;margin-bottom:2px;}
4741
+ .blu-picker__calendar-nav .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4734
4742
  .blu-picker__dialog .blu-picker__error {margin-top:4px;font-size:12px;line-height:1.3;}
4735
4743
  @media(pointer:coarse){
4736
4744
  .blu-picker__field-control>.blu-picker__input {font-size:16px;min-height:44px;}
@@ -4747,7 +4755,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4747
4755
  .blu-picker__dialog[data-compact=true] .blu-picker__calendar td {height:24px;}
4748
4756
  .blu-picker__dialog[data-compact=true] .blu-picker__day {min-height:24px;padding:3px 0;}
4749
4757
  .blu-picker__dialog[data-compact=true] .blu-picker__time-area {margin:4px 0;gap:6px;}
4750
- .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
4758
+ .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
4751
4759
  .blu-picker__dialog[data-compact=true] .blu-picker__selection {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4752
4760
  .blu-picker__dialog[data-compact=true] .blu-picker__popup-actions {margin-top:4px;gap:4px;}
4753
4761
  .blu-picker__dialog[data-compact=true] .blu-picker__presets {margin-bottom:4px;gap:4px;}
@@ -4760,7 +4768,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4760
4768
  .blu-picker [hidden],.blu-picker__dialog [hidden] {display:none!important;}
4761
4769
  .blu-picker__fields {display:flex;flex-wrap:wrap;gap:12px;}
4762
4770
  .blu-picker__field {flex:1 1 180px;min-width:0;}
4763
- .blu-picker__field label,.blu-picker__select-field>span {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
4771
+ .blu-picker__field label,.blu-picker__select-caption {display:block;margin-bottom:5px;color:var(--bluui-text,#182230);font-weight:600;}
4764
4772
  .blu-picker__input {display:block;width:100%;min-width:0;min-height:42px;padding:9px 11px;border:1px solid var(--bluui-control-border,#69788d);border-radius:9px;background:var(--bluui-surface,#fff);color:var(--bluui-text,#182230);font:inherit;line-height:1.4;}
4765
4773
  .blu-picker__field-control {position:relative;}
4766
4774
  .blu-picker__field-control>.blu-picker__input {padding-right:38px;}
@@ -4783,7 +4791,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4783
4791
  .blu-picker__dialog::backdrop {background:transparent;pointer-events:none;}
4784
4792
  .blu-picker__dialog-head {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;}
4785
4793
  .blu-picker__dialog-head h2 {font-size:16px;line-height:1.4;font-family:var(--blu-font-heading-family,inherit);margin:0;overflow-wrap:anywhere;}
4786
- .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 72px 32px;align-items:end;gap:6px;margin-top:0;}
4794
+ .blu-picker__calendar-nav {display:grid;grid-template-columns:32px minmax(0,1fr) 88px 32px;align-items:end;gap:6px;margin-top:0;}
4787
4795
  .blu-picker__calendar-nav>.blu-picker__button {height:36px;padding:2px;font-size:22px;}
4788
4796
  .blu-picker__select-field {min-width:0;}
4789
4797
  .blu-picker__caption {font-size:15px;text-align:center;margin:16px 0 8px;}
@@ -4808,8 +4816,8 @@ Keep bulk commands together in a wrapping row between the panels. */
4808
4816
  /* Compact popup controls; editable text stays at 16px to avoid iOS focus zoom. */
4809
4817
  .blu-picker__dialog .blu-picker__input {min-height:36px;padding:5px 7px;font-size:16px;line-height:1.2;}
4810
4818
  .blu-picker__dialog .blu-picker__button {min-height:34px;min-width:32px;padding:5px 9px;font-size:13px;line-height:1.25;}
4811
- .blu-picker__dialog .blu-picker__select-field>span {font-size:11px;margin-bottom:2px;}
4812
- .blu-picker__calendar-nav .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4819
+ .blu-picker__dialog .blu-picker__select-caption {font-size:11px;margin-bottom:2px;}
4820
+ .blu-picker__calendar-nav .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4813
4821
  .blu-picker__dialog .blu-picker__error {margin-top:4px;font-size:12px;line-height:1.3;}
4814
4822
  @media(pointer:coarse){
4815
4823
  .blu-picker__field-control>.blu-picker__input {font-size:16px;min-height:44px;}
@@ -4826,7 +4834,7 @@ Keep bulk commands together in a wrapping row between the panels. */
4826
4834
  .blu-picker__dialog[data-compact=true] .blu-picker__calendar td {height:24px;}
4827
4835
  .blu-picker__dialog[data-compact=true] .blu-picker__day {min-height:24px;padding:3px 0;}
4828
4836
  .blu-picker__dialog[data-compact=true] .blu-picker__time-area {margin:4px 0;gap:6px;}
4829
- .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-field>span {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
4837
+ .blu-picker__dialog[data-compact=true] .blu-picker__time-area .blu-picker__select-caption {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
4830
4838
  .blu-picker__dialog[data-compact=true] .blu-picker__selection {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:0;}
4831
4839
  .blu-picker__dialog[data-compact=true] .blu-picker__popup-actions {margin-top:4px;gap:4px;}
4832
4840
  .blu-picker__dialog[data-compact=true] .blu-picker__presets {margin-bottom:4px;gap:4px;}
@@ -8880,3 +8888,1188 @@ beside the live host/List, never inside a JavaScript-owned host. */
8880
8888
 
8881
8889
  /* Service Studio caption is hidden once the owned grid has initialized. */
8882
8890
  .blu-community-block:has([data-blu-community-ready]) > .blu-community-preview { display: none; }
8891
+
8892
+ /* Community Form & Layout Essentials — local draft; no OutSystems UI selectors. */
8893
+ .blu-field,.blu-columns,.blu-table{box-sizing:border-box;min-width:0;color:var(--bluui-text,#182230);font-family:var(--blu-font-family,Inter,system-ui,sans-serif);font-size:14px}
8894
+ .blu-field *,.blu-columns *,.blu-table *{box-sizing:border-box}
8895
+ .blu-field [hidden],.blu-table [hidden]{display:none!important}
8896
+ .blu-field{--blu-field-height:42px;--blu-field-padding:12px;display:flex;flex-direction:column;gap:7px;border:0;padding:0;margin:0;min-inline-size:0}
8897
+ .blu-field--small{--blu-field-height:34px;--blu-field-padding:9px;font-size:13px}.blu-field--large{--blu-field-height:50px;--blu-field-padding:15px;font-size:16px}
8898
+ .blu-field__label{font-weight:600;line-height:1.5;padding:0;margin:0 0 2px}.blu-field__body{min-width:0}
8899
+ .blu-field__help,.blu-choice__description,.blu-field__count{font-size:12px;color:var(--bluui-text-muted,#5c6b80);line-height:1.5}.blu-field__error{color:var(--bluui-color-error-text,#b42318);font-size:12px;line-height:1.5}.blu-field__count{text-align:end;margin-top:5px;font-variant-numeric:tabular-nums}
8900
+ .blu-text,.blu-textarea,.blu-select__trigger{border:1px solid var(--bluui-control-border,#7b8799);border-radius:var(--blu-radius-md,8px);background:var(--bluui-surface,#fff);color:inherit;transition:border-color .12s,box-shadow .12s}
8901
+ .blu-text{display:flex;align-items:center;gap:8px;min-height:var(--blu-field-height);padding:0 var(--blu-field-padding)}
8902
+ .blu-text__input{width:100%;min-width:0;border:0!important;box-shadow:none!important;outline:none!important;background:transparent!important;color:inherit;padding:9px 0!important;font:inherit;line-height:1.5;height:auto}
8903
+ .blu-text__input::placeholder,.blu-textarea::placeholder{color:var(--bluui-text-muted,#5c6b80);opacity:1}
8904
+ .blu-text:focus-within,.blu-textarea:focus-visible,.blu-select__trigger:focus-visible{border-color:var(--bluui-primary,#4f46e5);outline:2px solid var(--bluui-primary,#4f46e5);outline-offset:2px}
8905
+ .blu-text__adornment{display:inline-flex;flex:none;gap:6px;align-items:center;color:var(--bluui-text-muted,#5c6b80);white-space:nowrap}.blu-text__adornment img{width:24px;height:24px;object-fit:contain;border-radius:4px}
8906
+ .blu-text__action{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:4px;background:transparent;color:var(--bluui-primary,#4f46e5);font:inherit;font-size:12px;font-weight:600;min-width:26px;min-height:30px;cursor:pointer;white-space:nowrap;padding:3px}
8907
+ .blu-text__action:hover{background:var(--bluui-hover,#f0f2f7)}
8908
+ .blu-field button:focus-visible,.blu-table button:focus-visible,.blu-table__scroll:focus-visible{outline:2px solid var(--bluui-primary,#4f46e5);outline-offset:3px}
8909
+ .blu-textarea{display:block;width:100%;min-height:var(--blu-field-height);padding:10px var(--blu-field-padding);font:inherit;line-height:1.6}
8910
+ .blu-field[data-invalid=true] .blu-text,.blu-field[data-invalid=true] .blu-textarea,.blu-field[data-invalid=true] .blu-select__trigger{border-color:var(--bluui-color-error-text,#b42318)}
8911
+ .blu-field[data-disabled=true]{opacity:.6}.blu-field input:disabled,.blu-field textarea:disabled,.blu-field button:disabled{cursor:not-allowed}
8912
+ .blu-field input[readonly],.blu-field textarea[readonly]{cursor:default}
8913
+ .blu-choice{display:flex;align-items:center;position:relative;gap:10px;min-height:32px;cursor:pointer;line-height:1.5}.blu-choice__input{position:absolute;inline-size:1px;block-size:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap;opacity:0}
8914
+ .blu-choice__mark{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:19px;height:19px;border:1.5px solid var(--bluui-control-border,#7b8799);border-radius:5px;background:var(--bluui-surface,#fff);color:var(--bluui-on-primary,#fff)}
8915
+ .blu-choice__input:checked+.blu-choice__mark,.blu-choice__input:indeterminate+.blu-choice__mark{background:var(--bluui-primary,#4f46e5);border-color:var(--bluui-primary,#4f46e5)}
8916
+ .blu-choice--checkbox .blu-choice__input:checked+.blu-choice__mark:after{content:'';width:5px;height:9px;border:solid currentColor;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg)}
8917
+ .blu-choice__input:indeterminate+.blu-choice__mark:after{content:'';width:9px;height:2px;background:currentColor;transform:none;border:0}
8918
+ .blu-choice__input:focus-visible+.blu-choice__mark{outline:2px solid var(--bluui-primary,#4f46e5);outline-offset:3px}
8919
+ .blu-choice:has(input:disabled){opacity:.6;cursor:not-allowed}.blu-field[data-disabled=true] .blu-choice:has(input:disabled){opacity:1}
8920
+ .blu-choice--radio .blu-choice__mark{border-radius:50%}.blu-choice--radio .blu-choice__input:checked+.blu-choice__mark:after{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
8921
+ .blu-choice--switch .blu-choice__mark{width:38px;height:22px;border-radius:20px;background:var(--bluui-control-border,#7b8799);padding:2px;justify-content:flex-start}
8922
+ .blu-choice--switch .blu-choice__mark:after{content:'';height:16px;width:16px;background:#fff;border-radius:50%;transition:transform .15s}
8923
+ .blu-choice--switch .blu-choice__input:checked+.blu-choice__mark:after{transform:translateX(14px)}.blu-choice--switch .blu-choice__input:checked+.blu-choice__mark{background:var(--bluui-primary,#4f46e5)}
8924
+ .blu-choice__state{margin-inline-start:auto;font-size:12px;color:var(--bluui-text-muted,#5c6b80)}.blu-choice__description{display:block}
8925
+ .blu-radio-group{display:flex;flex-direction:column;gap:10px}.blu-radio-group--horizontal{flex-direction:row;flex-wrap:wrap;gap:12px 24px}
8926
+ .blu-select{position:relative;display:flex;gap:5px}.blu-select__native{position:absolute;width:1px;height:1px;opacity:0;clip-path:inset(50%);pointer-events:none}
8927
+ .blu-select__trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;min-height:var(--blu-field-height);width:100%;padding:9px var(--blu-field-padding);font:inherit;text-align:start;cursor:pointer}
8928
+ .blu-select__trigger:after{content:'';width:7px;height:7px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:translateY(-2px) rotate(45deg);flex-shrink:0}.blu-select__trigger[data-placeholder=true]{color:var(--bluui-text-muted,#5c6b80)}
8929
+ .blu-select__popup{box-sizing:border-box;position:absolute;inset:calc(100% + 6px) 0 auto;z-index:1000;max-height:320px;overflow:auto;margin:0;padding:6px;border:1px solid var(--bluui-border-strong,#b8c4d4);border-radius:10px;background:var(--bluui-surface,#fff);box-shadow:var(--bluui-menu-shadow,0 10px 30px #17203326);color:var(--bluui-text,#182230);font:inherit}
8930
+ .blu-select__search{width:100%;min-height:38px;padding:8px 10px;border:1px solid var(--bluui-control-border,#7b8799);border-radius:6px;background:var(--bluui-surface,#fff);color:inherit;font:inherit;margin-bottom:5px;outline-offset:2px}
8931
+ .blu-select__option{padding:9px 10px;border-radius:5px;cursor:pointer;line-height:1.5}.blu-select__option[aria-selected=true]{font-weight:600;color:var(--bluui-primary,#4f46e5)}.blu-select__option[data-active=true]{background:var(--bluui-selected,#e9e6ff)}.blu-select__option[aria-disabled=true]{opacity:.5;cursor:not-allowed}
8932
+ .blu-columns{display:grid;grid-template-columns:var(--blu-columns-tracks,1fr 1fr);gap:var(--blu-columns-gap,24px)}.blu-columns__column{min-width:0;display:flex;flex-direction:column;gap:20px}
8933
+ @media(max-width:479px){.blu-columns--stack-small{grid-template-columns:minmax(0,1fr)}}
8934
+ @media(max-width:767px){.blu-columns--stack-medium{grid-template-columns:minmax(0,1fr)}}
8935
+ @media(max-width:1023px){.blu-columns--stack-large{grid-template-columns:minmax(0,1fr)}}
8936
+ .blu-table{border:1px solid var(--bluui-border,#e2e8f0);border-radius:12px;background:var(--bluui-surface,#fff);overflow:hidden}
8937
+ .blu-table__scroll{overflow:auto}.blu-table table{width:100%;border-collapse:collapse;font:inherit;text-align:start}.blu-table caption{text-align:start;padding:18px;font-weight:600;font-size:15px}
8938
+ .blu-table th{font-size:12px;color:var(--bluui-text-muted,#5c6b80);background:var(--bluui-surface-muted,#f7f8fb);font-weight:600;white-space:nowrap}
8939
+ .blu-table th,.blu-table td{padding:14px 18px;border-top:1px solid var(--bluui-border,#e2e8f0);line-height:1.5}
8940
+ .blu-table[data-density=Compact] th,.blu-table[data-density=Compact] td{padding:8px 12px}
8941
+ .blu-table[data-striped=true] tbody tr:nth-child(even){background:var(--bluui-surface-muted,#f7f8fb)}
8942
+ .blu-table__sort{font:inherit;font-weight:600;color:inherit;background:transparent;border:0;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:12px}
8943
+ .blu-table__empty{text-align:center!important;height:140px;color:var(--bluui-text-muted,#5c6b80)}
8944
+ .blu-table__footer{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--bluui-border,#e2e8f0);font-size:12px;flex-wrap:wrap}.blu-table__footer>span{margin-inline-end:auto;color:var(--bluui-text-muted,#5c6b80)}
8945
+ .blu-table-button{border:1px solid var(--bluui-border-strong,#b8c4d4);border-radius:6px;padding:6px 10px;background:var(--bluui-surface,#fff);font:inherit;font-size:12px;color:var(--bluui-text,#182230);cursor:pointer;min-height:30px;white-space:nowrap}.blu-table-button:hover{background:var(--bluui-hover,#f0f2f7)}.blu-table-button:disabled{opacity:.5;cursor:not-allowed}.blu-table__actions{display:flex;gap:6px}
8946
+ @media(prefers-reduced-motion:reduce){.blu-field *{transition:none!important}}
8947
+ @media(forced-colors:active){.blu-choice__mark{forced-color-adjust:none;border-color:ButtonText;background:Canvas;color:HighlightText}.blu-choice__input:checked+.blu-choice__mark,.blu-choice__input:indeterminate+.blu-choice__mark{background:Highlight;border-color:Highlight}.blu-select__option[data-active=true]{outline:2px solid Highlight}.blu-choice--switch .blu-choice__mark:after{background:ButtonText}.blu-choice--switch .blu-choice__input:checked+.blu-choice__mark:after{background:HighlightText}}
8948
+
8949
+ /* Equal height is row-scoped; stacked columns retain their content height. */
8950
+ .blu-columns.blu-columns--equal-height{align-items:stretch}
8951
+ .blu-columns--equal-height > .blu-columns__column > :only-child{flex:1 1 auto}
8952
+ .blu-columns--equal-height > .blu-columns__column > [data-placeholder]{display:flex;flex-direction:column}
8953
+ .blu-columns--equal-height > .blu-columns__column > [data-placeholder] > :only-child{flex:1 1 auto}
8954
+
8955
+ /* styles/motion-presets.css */
8956
+ .blu-motion-enter-fade,
8957
+ .blu-motion-fade-in {
8958
+ animation: blu-motion-enter-fade var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
8959
+ }
8960
+ @keyframes blu-motion-enter-fade {
8961
+ 0% {
8962
+ opacity: 0;
8963
+ }
8964
+ 100% {
8965
+ opacity: 1;
8966
+ }
8967
+ }
8968
+ .blu-motion-exit-fade,
8969
+ .blu-motion-fade-out {
8970
+ animation: blu-motion-exit-fade var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
8971
+ }
8972
+ @keyframes blu-motion-exit-fade {
8973
+ 0% {
8974
+ opacity: 1;
8975
+ }
8976
+ 100% {
8977
+ opacity: 0;
8978
+ }
8979
+ }
8980
+ .blu-motion-enter-slide-up,
8981
+ .blu-motion-slide-up {
8982
+ animation: blu-motion-enter-slide-up var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
8983
+ }
8984
+ @keyframes blu-motion-enter-slide-up {
8985
+ 0% {
8986
+ opacity: 0;
8987
+ transform: translateY(var(--blu-motion-distance));
8988
+ }
8989
+ 100% {
8990
+ opacity: 1;
8991
+ transform: none;
8992
+ }
8993
+ }
8994
+ .blu-motion-exit-slide-up {
8995
+ animation: blu-motion-exit-slide-up var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
8996
+ }
8997
+ @keyframes blu-motion-exit-slide-up {
8998
+ 0% {
8999
+ opacity: 1;
9000
+ transform: none;
9001
+ }
9002
+ 100% {
9003
+ opacity: 0;
9004
+ transform: translateY(calc(-1 * var(--blu-motion-distance)));
9005
+ }
9006
+ }
9007
+ .blu-motion-enter-slide-down {
9008
+ animation: blu-motion-enter-slide-down var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9009
+ }
9010
+ @keyframes blu-motion-enter-slide-down {
9011
+ 0% {
9012
+ opacity: 0;
9013
+ transform: translateY(calc(-1 * var(--blu-motion-distance)));
9014
+ }
9015
+ 100% {
9016
+ opacity: 1;
9017
+ transform: none;
9018
+ }
9019
+ }
9020
+ .blu-motion-exit-slide-down {
9021
+ animation: blu-motion-exit-slide-down var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9022
+ }
9023
+ @keyframes blu-motion-exit-slide-down {
9024
+ 0% {
9025
+ opacity: 1;
9026
+ transform: none;
9027
+ }
9028
+ 100% {
9029
+ opacity: 0;
9030
+ transform: translateY(var(--blu-motion-distance));
9031
+ }
9032
+ }
9033
+ .blu-motion-enter-slide-left {
9034
+ animation: blu-motion-enter-slide-left var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9035
+ }
9036
+ @keyframes blu-motion-enter-slide-left {
9037
+ 0% {
9038
+ opacity: 0;
9039
+ transform: translateX(var(--blu-motion-distance));
9040
+ }
9041
+ 100% {
9042
+ opacity: 1;
9043
+ transform: none;
9044
+ }
9045
+ }
9046
+ .blu-motion-exit-slide-left {
9047
+ animation: blu-motion-exit-slide-left var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9048
+ }
9049
+ @keyframes blu-motion-exit-slide-left {
9050
+ 0% {
9051
+ opacity: 1;
9052
+ transform: none;
9053
+ }
9054
+ 100% {
9055
+ opacity: 0;
9056
+ transform: translateX(calc(-1 * var(--blu-motion-distance)));
9057
+ }
9058
+ }
9059
+ .blu-motion-enter-slide-right {
9060
+ animation: blu-motion-enter-slide-right var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9061
+ }
9062
+ @keyframes blu-motion-enter-slide-right {
9063
+ 0% {
9064
+ opacity: 0;
9065
+ transform: translateX(calc(-1 * var(--blu-motion-distance)));
9066
+ }
9067
+ 100% {
9068
+ opacity: 1;
9069
+ transform: none;
9070
+ }
9071
+ }
9072
+ .blu-motion-exit-slide-right {
9073
+ animation: blu-motion-exit-slide-right var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9074
+ }
9075
+ @keyframes blu-motion-exit-slide-right {
9076
+ 0% {
9077
+ opacity: 1;
9078
+ transform: none;
9079
+ }
9080
+ 100% {
9081
+ opacity: 0;
9082
+ transform: translateX(var(--blu-motion-distance));
9083
+ }
9084
+ }
9085
+ .blu-motion-enter-zoom-in,
9086
+ .blu-motion-scale-in {
9087
+ animation: blu-motion-enter-zoom-in var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9088
+ }
9089
+ @keyframes blu-motion-enter-zoom-in {
9090
+ 0% {
9091
+ opacity: 0;
9092
+ transform: scale(.92);
9093
+ }
9094
+ 100% {
9095
+ opacity: 1;
9096
+ transform: none;
9097
+ }
9098
+ }
9099
+ .blu-motion-exit-zoom-in {
9100
+ animation: blu-motion-exit-zoom-in var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9101
+ }
9102
+ @keyframes blu-motion-exit-zoom-in {
9103
+ 0% {
9104
+ opacity: 1;
9105
+ transform: none;
9106
+ }
9107
+ 100% {
9108
+ opacity: 0;
9109
+ transform: scale(1.08);
9110
+ }
9111
+ }
9112
+ .blu-motion-enter-zoom-out {
9113
+ animation: blu-motion-enter-zoom-out var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9114
+ }
9115
+ @keyframes blu-motion-enter-zoom-out {
9116
+ 0% {
9117
+ opacity: 0;
9118
+ transform: scale(1.08);
9119
+ }
9120
+ 100% {
9121
+ opacity: 1;
9122
+ transform: none;
9123
+ }
9124
+ }
9125
+ .blu-motion-exit-zoom-out {
9126
+ animation: blu-motion-exit-zoom-out var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9127
+ }
9128
+ @keyframes blu-motion-exit-zoom-out {
9129
+ 0% {
9130
+ opacity: 1;
9131
+ transform: none;
9132
+ }
9133
+ 100% {
9134
+ opacity: 0;
9135
+ transform: scale(.92);
9136
+ }
9137
+ }
9138
+ .blu-motion-enter-rotate-left {
9139
+ animation: blu-motion-enter-rotate-left var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9140
+ }
9141
+ @keyframes blu-motion-enter-rotate-left {
9142
+ 0% {
9143
+ opacity: 0;
9144
+ transform: rotate(8deg) scale(.97);
9145
+ }
9146
+ 100% {
9147
+ opacity: 1;
9148
+ transform: none;
9149
+ }
9150
+ }
9151
+ .blu-motion-exit-rotate-left {
9152
+ animation: blu-motion-exit-rotate-left var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9153
+ }
9154
+ @keyframes blu-motion-exit-rotate-left {
9155
+ 0% {
9156
+ opacity: 1;
9157
+ transform: none;
9158
+ }
9159
+ 100% {
9160
+ opacity: 0;
9161
+ transform: rotate(-8deg) scale(.97);
9162
+ }
9163
+ }
9164
+ .blu-motion-enter-rotate-right {
9165
+ animation: blu-motion-enter-rotate-right var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9166
+ }
9167
+ @keyframes blu-motion-enter-rotate-right {
9168
+ 0% {
9169
+ opacity: 0;
9170
+ transform: rotate(-8deg) scale(.97);
9171
+ }
9172
+ 100% {
9173
+ opacity: 1;
9174
+ transform: none;
9175
+ }
9176
+ }
9177
+ .blu-motion-exit-rotate-right {
9178
+ animation: blu-motion-exit-rotate-right var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9179
+ }
9180
+ @keyframes blu-motion-exit-rotate-right {
9181
+ 0% {
9182
+ opacity: 1;
9183
+ transform: none;
9184
+ }
9185
+ 100% {
9186
+ opacity: 0;
9187
+ transform: rotate(8deg) scale(.97);
9188
+ }
9189
+ }
9190
+ .blu-motion-enter-flip-x {
9191
+ animation: blu-motion-enter-flip-x var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9192
+ }
9193
+ @keyframes blu-motion-enter-flip-x {
9194
+ 0% {
9195
+ opacity: 0;
9196
+ transform: perspective(600px) rotateX(30deg);
9197
+ }
9198
+ 100% {
9199
+ opacity: 1;
9200
+ transform: none;
9201
+ }
9202
+ }
9203
+ .blu-motion-exit-flip-x {
9204
+ animation: blu-motion-exit-flip-x var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9205
+ }
9206
+ @keyframes blu-motion-exit-flip-x {
9207
+ 0% {
9208
+ opacity: 1;
9209
+ transform: none;
9210
+ }
9211
+ 100% {
9212
+ opacity: 0;
9213
+ transform: perspective(600px) rotateX(-30deg);
9214
+ }
9215
+ }
9216
+ .blu-motion-enter-flip-y {
9217
+ animation: blu-motion-enter-flip-y var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9218
+ }
9219
+ @keyframes blu-motion-enter-flip-y {
9220
+ 0% {
9221
+ opacity: 0;
9222
+ transform: perspective(600px) rotateY(30deg);
9223
+ }
9224
+ 100% {
9225
+ opacity: 1;
9226
+ transform: none;
9227
+ }
9228
+ }
9229
+ .blu-motion-exit-flip-y {
9230
+ animation: blu-motion-exit-flip-y var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9231
+ }
9232
+ @keyframes blu-motion-exit-flip-y {
9233
+ 0% {
9234
+ opacity: 1;
9235
+ transform: none;
9236
+ }
9237
+ 100% {
9238
+ opacity: 0;
9239
+ transform: perspective(600px) rotateY(-30deg);
9240
+ }
9241
+ }
9242
+ .blu-motion-enter-pop {
9243
+ animation: blu-motion-enter-pop var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9244
+ }
9245
+ @keyframes blu-motion-enter-pop {
9246
+ 0% {
9247
+ opacity: 0;
9248
+ transform: scale(.9);
9249
+ }
9250
+ 72% {
9251
+ opacity: 1;
9252
+ transform: scale(1.025);
9253
+ }
9254
+ 100% {
9255
+ opacity: 1;
9256
+ transform: scale(1);
9257
+ }
9258
+ }
9259
+ .blu-motion-exit-pop {
9260
+ animation: blu-motion-exit-pop var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9261
+ }
9262
+ @keyframes blu-motion-exit-pop {
9263
+ 0% {
9264
+ opacity: 1;
9265
+ transform: scale(1);
9266
+ }
9267
+ 25% {
9268
+ opacity: 1;
9269
+ transform: scale(1.025);
9270
+ }
9271
+ 100% {
9272
+ opacity: 0;
9273
+ transform: scale(.9);
9274
+ }
9275
+ }
9276
+ .blu-motion-enter-bounce {
9277
+ animation: blu-motion-enter-bounce var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9278
+ }
9279
+ @keyframes blu-motion-enter-bounce {
9280
+ 0% {
9281
+ opacity: 0;
9282
+ transform: translateY(var(--blu-motion-distance));
9283
+ }
9284
+ 72% {
9285
+ opacity: 1;
9286
+ transform: translateY(-3px);
9287
+ }
9288
+ 100% {
9289
+ opacity: 1;
9290
+ transform: translateY(0);
9291
+ }
9292
+ }
9293
+ .blu-motion-exit-bounce {
9294
+ animation: blu-motion-exit-bounce var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9295
+ }
9296
+ @keyframes blu-motion-exit-bounce {
9297
+ 0% {
9298
+ opacity: 1;
9299
+ transform: translateY(0);
9300
+ }
9301
+ 25% {
9302
+ opacity: 1;
9303
+ transform: translateY(-3px);
9304
+ }
9305
+ 100% {
9306
+ opacity: 0;
9307
+ transform: translateY(var(--blu-motion-distance));
9308
+ }
9309
+ }
9310
+ .blu-motion-enter-wipe-up {
9311
+ animation: blu-motion-enter-wipe-up var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9312
+ }
9313
+ @keyframes blu-motion-enter-wipe-up {
9314
+ 0% {
9315
+ opacity: 0;
9316
+ clip-path: inset(100% 0 0 0);
9317
+ }
9318
+ 100% {
9319
+ opacity: 1;
9320
+ clip-path: inset(0 0 0 0);
9321
+ }
9322
+ }
9323
+ .blu-motion-exit-wipe-up {
9324
+ animation: blu-motion-exit-wipe-up var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9325
+ }
9326
+ @keyframes blu-motion-exit-wipe-up {
9327
+ 0% {
9328
+ opacity: 1;
9329
+ clip-path: inset(0 0 0 0);
9330
+ }
9331
+ 100% {
9332
+ opacity: 0;
9333
+ clip-path: inset(0 0 100% 0);
9334
+ }
9335
+ }
9336
+ .blu-motion-enter-wipe-down {
9337
+ animation: blu-motion-enter-wipe-down var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9338
+ }
9339
+ @keyframes blu-motion-enter-wipe-down {
9340
+ 0% {
9341
+ opacity: 0;
9342
+ clip-path: inset(0 0 100% 0);
9343
+ }
9344
+ 100% {
9345
+ opacity: 1;
9346
+ clip-path: inset(0 0 0 0);
9347
+ }
9348
+ }
9349
+ .blu-motion-exit-wipe-down {
9350
+ animation: blu-motion-exit-wipe-down var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9351
+ }
9352
+ @keyframes blu-motion-exit-wipe-down {
9353
+ 0% {
9354
+ opacity: 1;
9355
+ clip-path: inset(0 0 0 0);
9356
+ }
9357
+ 100% {
9358
+ opacity: 0;
9359
+ clip-path: inset(100% 0 0 0);
9360
+ }
9361
+ }
9362
+ .blu-motion-enter-wipe-left {
9363
+ animation: blu-motion-enter-wipe-left var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9364
+ }
9365
+ @keyframes blu-motion-enter-wipe-left {
9366
+ 0% {
9367
+ opacity: 0;
9368
+ clip-path: inset(0 0 0 100%);
9369
+ }
9370
+ 100% {
9371
+ opacity: 1;
9372
+ clip-path: inset(0 0 0 0);
9373
+ }
9374
+ }
9375
+ .blu-motion-exit-wipe-left {
9376
+ animation: blu-motion-exit-wipe-left var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9377
+ }
9378
+ @keyframes blu-motion-exit-wipe-left {
9379
+ 0% {
9380
+ opacity: 1;
9381
+ clip-path: inset(0 0 0 0);
9382
+ }
9383
+ 100% {
9384
+ opacity: 0;
9385
+ clip-path: inset(0 100% 0 0);
9386
+ }
9387
+ }
9388
+ .blu-motion-enter-wipe-right {
9389
+ animation: blu-motion-enter-wipe-right var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9390
+ }
9391
+ @keyframes blu-motion-enter-wipe-right {
9392
+ 0% {
9393
+ opacity: 0;
9394
+ clip-path: inset(0 100% 0 0);
9395
+ }
9396
+ 100% {
9397
+ opacity: 1;
9398
+ clip-path: inset(0 0 0 0);
9399
+ }
9400
+ }
9401
+ .blu-motion-exit-wipe-right {
9402
+ animation: blu-motion-exit-wipe-right var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9403
+ }
9404
+ @keyframes blu-motion-exit-wipe-right {
9405
+ 0% {
9406
+ opacity: 1;
9407
+ clip-path: inset(0 0 0 0);
9408
+ }
9409
+ 100% {
9410
+ opacity: 0;
9411
+ clip-path: inset(0 0 0 100%);
9412
+ }
9413
+ }
9414
+ .blu-motion-enter-circle-reveal {
9415
+ animation: blu-motion-enter-circle-reveal var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9416
+ }
9417
+ @keyframes blu-motion-enter-circle-reveal {
9418
+ 0% {
9419
+ opacity: 0;
9420
+ clip-path: circle(0% at 50% 50%);
9421
+ }
9422
+ 100% {
9423
+ opacity: 1;
9424
+ clip-path: circle(72% at 50% 50%);
9425
+ }
9426
+ }
9427
+ .blu-motion-exit-circle-reveal {
9428
+ animation: blu-motion-exit-circle-reveal var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9429
+ }
9430
+ @keyframes blu-motion-exit-circle-reveal {
9431
+ 0% {
9432
+ opacity: 1;
9433
+ clip-path: circle(72% at 50% 50%);
9434
+ }
9435
+ 100% {
9436
+ opacity: 0;
9437
+ clip-path: circle(0% at 50% 50%);
9438
+ }
9439
+ }
9440
+ .blu-motion-enter-blur-clear {
9441
+ animation: blu-motion-enter-blur-clear var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9442
+ }
9443
+ @keyframes blu-motion-enter-blur-clear {
9444
+ 0% {
9445
+ opacity: 0;
9446
+ filter: blur(6px);
9447
+ }
9448
+ 100% {
9449
+ opacity: 1;
9450
+ filter: blur(0px);
9451
+ }
9452
+ }
9453
+ .blu-motion-exit-blur-clear {
9454
+ animation: blu-motion-exit-blur-clear var(--blu-motion-duration) var(--blu-motion-ease) var(--blu-motion-delay) both;
9455
+ }
9456
+ @keyframes blu-motion-exit-blur-clear {
9457
+ 0% {
9458
+ opacity: 1;
9459
+ filter: blur(0px);
9460
+ }
9461
+ 100% {
9462
+ opacity: 0;
9463
+ filter: blur(6px);
9464
+ }
9465
+ }
9466
+ .blu-motion-ease-standard {
9467
+ --blu-motion-ease: cubic-bezier(.2,.8,.2,1);
9468
+ }
9469
+ .blu-motion-ease-in {
9470
+ --blu-motion-ease: cubic-bezier(.42,0,1,1);
9471
+ }
9472
+ .blu-motion-ease-out {
9473
+ --blu-motion-ease: cubic-bezier(0,0,.58,1);
9474
+ }
9475
+ .blu-motion-ease-in-out {
9476
+ --blu-motion-ease: cubic-bezier(.42,0,.58,1);
9477
+ }
9478
+ .blu-motion-ease-linear {
9479
+ --blu-motion-ease: linear;
9480
+ }
9481
+ .blu-motion-ease-spring {
9482
+ --blu-motion-ease: cubic-bezier(.34,1.25,.64,1);
9483
+ }
9484
+ .blu-motion-origin-center {
9485
+ transform-origin: 50% 50%;
9486
+ }
9487
+ .blu-motion-origin-top {
9488
+ transform-origin: 50% 0%;
9489
+ }
9490
+ .blu-motion-origin-bottom {
9491
+ transform-origin: 50% 100%;
9492
+ }
9493
+ .blu-motion-origin-left {
9494
+ transform-origin: 0% 50%;
9495
+ }
9496
+ .blu-motion-origin-right {
9497
+ transform-origin: 100% 50%;
9498
+ }
9499
+ .blu-motion-origin-top-left {
9500
+ transform-origin: 0% 0%;
9501
+ }
9502
+ .blu-motion-origin-top-right {
9503
+ transform-origin: 100% 0%;
9504
+ }
9505
+ .blu-motion-origin-bottom-left {
9506
+ transform-origin: 0% 100%;
9507
+ }
9508
+ .blu-motion-origin-bottom-right {
9509
+ transform-origin: 100% 100%;
9510
+ }
9511
+
9512
+ /* styles/motion-tokens.css */
9513
+ :root {
9514
+ --blu-motion-fast: 280ms;
9515
+ --blu-motion-normal: 450ms;
9516
+ --blu-motion-slow: 750ms;
9517
+ }
9518
+
9519
+ /* styles/motion-optional.css */
9520
+ .blu-motion-ripple,
9521
+ .blu-motion-shimmer {
9522
+ position: absolute;
9523
+ inset: 0;
9524
+ overflow: hidden;
9525
+ border-radius: inherit;
9526
+ pointer-events: none !important;
9527
+ }
9528
+ .blu-motion-ripple__wave {
9529
+ position: absolute;
9530
+ border-radius: 50%;
9531
+ background: var(--blu-ripple-color,currentColor);
9532
+ pointer-events: none !important;
9533
+ opacity: 0;
9534
+ }
9535
+ .blu-motion-choice-ripple {
9536
+ inset: -10px;
9537
+ border-radius: 999px;
9538
+ --blu-ripple-color:var(--bluui-primary,#4f46e5);
9539
+ }
9540
+ .blu-motion-shimmer__beam {
9541
+ position: absolute;
9542
+ inset: 0;
9543
+ background:
9544
+ linear-gradient(
9545
+ 100deg,
9546
+ transparent 20%,
9547
+ var(--blu-shimmer-color,#ffffffb8) 50%,
9548
+ transparent 80%);
9549
+ animation: blu-motion-shimmer var(--blu-shimmer-duration,1800ms) ease-in-out infinite;
9550
+ }
9551
+ @keyframes blu-motion-shimmer {
9552
+ from {
9553
+ transform: translateX(-100%);
9554
+ }
9555
+ to {
9556
+ transform: translateX(100%);
9557
+ }
9558
+ }
9559
+ .blu-motion-shimmer[data-paused=true] .blu-motion-shimmer__beam {
9560
+ animation-play-state: paused;
9561
+ }
9562
+ .blu-motion-icon {
9563
+ display: block;
9564
+ width: 24px;
9565
+ height: 24px;
9566
+ overflow: visible;
9567
+ fill: none;
9568
+ stroke: currentColor;
9569
+ stroke-width: 1.8;
9570
+ stroke-linecap: round;
9571
+ stroke-linejoin: round;
9572
+ pointer-events: none;
9573
+ }
9574
+ .blu-motion-emphasis {
9575
+ position: absolute;
9576
+ pointer-events: none !important;
9577
+ color: var(--blu-emphasis-color,currentColor);
9578
+ }
9579
+ .blu-motion-emphasis--underline {
9580
+ inset: auto 0 0;
9581
+ height: 2px;
9582
+ background: currentColor;
9583
+ transform-origin: left center;
9584
+ border-radius: 2px;
9585
+ }
9586
+ .blu-motion-emphasis--border {
9587
+ inset: 0;
9588
+ border-radius: inherit;
9589
+ }
9590
+ .blu-motion-emphasis--border svg {
9591
+ display: block;
9592
+ width: 100%;
9593
+ height: 100%;
9594
+ fill: none;
9595
+ stroke: currentColor;
9596
+ stroke-width: 2px;
9597
+ }
9598
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) :is(.blu-motion-shimmer__beam, .blu-motion-ripple__wave) {
9599
+ display: none;
9600
+ animation: none !important;
9601
+ }
9602
+ @media (prefers-reduced-motion: reduce) {
9603
+ .blu-motion-shimmer__beam,
9604
+ .blu-motion-ripple__wave {
9605
+ display: none;
9606
+ animation: none !important;
9607
+ }
9608
+ }
9609
+ @media (forced-colors: active) {
9610
+ .blu-motion-shimmer__beam,
9611
+ .blu-motion-ripple__wave {
9612
+ display: none;
9613
+ }
9614
+ .blu-motion-emphasis {
9615
+ color: Highlight;
9616
+ }
9617
+ }
9618
+
9619
+ /* styles/motion.css */
9620
+ :root {
9621
+ --blu-motion-duration: var(--blu-motion-normal);
9622
+ --blu-motion-delay: 0ms;
9623
+ --blu-motion-distance: 12px;
9624
+ --blu-motion-ease: cubic-bezier(.2, .8, .2, 1);
9625
+ }
9626
+ .blu-motion-fast {
9627
+ --blu-motion-duration: var(--blu-motion-fast);
9628
+ }
9629
+ .blu-motion-slow {
9630
+ --blu-motion-duration: var(--blu-motion-slow);
9631
+ }
9632
+ .blu-motion-delay-1 {
9633
+ --blu-motion-delay: 60ms;
9634
+ }
9635
+ .blu-motion-delay-2 {
9636
+ --blu-motion-delay: 120ms;
9637
+ }
9638
+ .blu-motion-delay-3 {
9639
+ --blu-motion-delay: 180ms;
9640
+ }
9641
+ .blu-motion-spin {
9642
+ animation: blu-motion-spin 800ms linear infinite;
9643
+ }
9644
+ .blu-motion-pulse {
9645
+ animation: blu-motion-pulse 900ms ease-in-out 3;
9646
+ }
9647
+ .blu-motion-hover-lift {
9648
+ transition: transform var(--blu-motion-duration) var(--blu-motion-ease), box-shadow var(--blu-motion-duration) var(--blu-motion-ease);
9649
+ }
9650
+ @media (hover: hover) {
9651
+ .blu-motion-hover-lift:hover {
9652
+ transform: translateY(calc(-1 * var(--blu-motion-lift-distance, 4px)));
9653
+ box-shadow: 0 8px 20px #28334b12;
9654
+ }
9655
+ }
9656
+ .blu-motion-hover-lift:is(:focus-visible, [data-blu-lifted=true]) {
9657
+ transform: translateY(calc(-1 * var(--blu-motion-lift-distance, 4px)));
9658
+ box-shadow: 0 8px 20px #28334b12;
9659
+ }
9660
+ .blu-motion-expand {
9661
+ display: grid;
9662
+ grid-template-rows: 0fr;
9663
+ transition: grid-template-rows var(--blu-motion-duration) var(--blu-motion-ease);
9664
+ }
9665
+ .blu-motion-expand[data-open=true] {
9666
+ grid-template-rows: 1fr;
9667
+ }
9668
+ .blu-motion-expand > * {
9669
+ min-height: 0;
9670
+ overflow: hidden;
9671
+ }
9672
+ @keyframes blu-motion-spin {
9673
+ to {
9674
+ transform: rotate(360deg);
9675
+ }
9676
+ }
9677
+ @keyframes blu-motion-pulse {
9678
+ 50% {
9679
+ opacity: .45;
9680
+ }
9681
+ }
9682
+ .blu-motion-button.blu-button {
9683
+ display: inline-grid;
9684
+ gap: 0;
9685
+ transition-duration: var(--blu-motion-duration);
9686
+ }
9687
+ .blu-motion-button__face,
9688
+ .blu-motion-button__reserve {
9689
+ grid-area: 1 / 1;
9690
+ padding-inline: 24px;
9691
+ }
9692
+ .blu-motion-button__face {
9693
+ position: relative;
9694
+ display: inline-flex;
9695
+ align-items: center;
9696
+ justify-content: center;
9697
+ }
9698
+ .blu-motion-button__reserve {
9699
+ visibility: hidden;
9700
+ pointer-events: none;
9701
+ }
9702
+ .blu-motion-button .blu-button__spinner {
9703
+ position: absolute;
9704
+ inset-inline-start: 0;
9705
+ }
9706
+ .blu-motion-button[data-spinner-position=Trailing] .blu-button__spinner {
9707
+ inset-inline-start: auto;
9708
+ inset-inline-end: 0;
9709
+ }
9710
+ .blu-motion-button .blu-button__spinner[hidden] {
9711
+ display: none;
9712
+ }
9713
+ .blu-motion-button.blu-button--loading {
9714
+ pointer-events: auto;
9715
+ }
9716
+ .blu-motion-sr-only {
9717
+ position: absolute;
9718
+ width: 1px;
9719
+ height: 1px;
9720
+ padding: 0;
9721
+ overflow: hidden;
9722
+ clip-path: inset(50%);
9723
+ white-space: nowrap;
9724
+ border: 0;
9725
+ }
9726
+ .blu-loading {
9727
+ display: flex;
9728
+ align-items: center;
9729
+ gap: 10px;
9730
+ font: inherit;
9731
+ color: inherit;
9732
+ }
9733
+ .blu-loading [hidden] {
9734
+ display: none !important;
9735
+ }
9736
+ .blu-loading__visual {
9737
+ width: 20px;
9738
+ height: 20px;
9739
+ flex-shrink: 0;
9740
+ }
9741
+ .blu-loading[data-variant=Spinner] .blu-loading__visual {
9742
+ border: 2px solid currentColor;
9743
+ border-right-color: transparent;
9744
+ border-radius: 50%;
9745
+ animation: blu-motion-spin 800ms linear infinite;
9746
+ }
9747
+ .blu-loading[data-variant=Spinner] i {
9748
+ display: none;
9749
+ }
9750
+ .blu-loading[data-variant=Dots] .blu-loading__visual {
9751
+ display: flex;
9752
+ align-items: center;
9753
+ width: 32px;
9754
+ gap: 3px;
9755
+ }
9756
+ .blu-loading[data-variant=Dots] i {
9757
+ width: 7px;
9758
+ height: 7px;
9759
+ background: currentColor;
9760
+ border-radius: 50%;
9761
+ animation: blu-motion-pulse 900ms ease-in-out infinite;
9762
+ }
9763
+ .blu-loading[data-variant=Dots] i:nth-child(2) {
9764
+ animation-delay: 150ms;
9765
+ }
9766
+ .blu-loading[data-variant=Dots] i:nth-child(3) {
9767
+ animation-delay: 300ms;
9768
+ }
9769
+ .blu-loading progress {
9770
+ width: 100%;
9771
+ height: 8px;
9772
+ accent-color: var(--bluui-primary, #5145e5);
9773
+ border: 0;
9774
+ border-radius: 8px;
9775
+ background: #e7e8f1;
9776
+ overflow: hidden;
9777
+ }
9778
+ .blu-loading progress::-webkit-progress-bar {
9779
+ background: #e7e8f1;
9780
+ border-radius: 8px;
9781
+ }
9782
+ .blu-loading progress::-webkit-progress-value {
9783
+ background: var(--bluui-primary, #5145e5);
9784
+ border-radius: 8px;
9785
+ }
9786
+ .blu-loading progress::-moz-progress-bar {
9787
+ background: var(--bluui-primary, #5145e5);
9788
+ }
9789
+ .blu-loading[data-variant=Bar] {
9790
+ flex-direction: column;
9791
+ align-items: stretch;
9792
+ }
9793
+ .blu-loading__bar {
9794
+ height: 8px;
9795
+ overflow: hidden;
9796
+ border-radius: 8px;
9797
+ background: #e7e8f1;
9798
+ }
9799
+ .blu-loading__bar::after {
9800
+ content: "";
9801
+ display: block;
9802
+ width: 35%;
9803
+ height: 100%;
9804
+ background: var(--bluui-primary, #5145e5);
9805
+ border-radius: inherit;
9806
+ animation: blu-motion-progress 1.2s ease-in-out infinite alternate;
9807
+ }
9808
+ @keyframes blu-motion-progress {
9809
+ to {
9810
+ transform: translateX(185%);
9811
+ }
9812
+ }
9813
+ :is([data-blu-motion=off], [data-blu-motion=reduced], .blu-motion-off),
9814
+ :is([data-blu-motion=off], [data-blu-motion=reduced], .blu-motion-off) * {
9815
+ --blu-motion-duration: 0ms;
9816
+ --blu-motion-delay: 0ms;
9817
+ }
9818
+ :is([data-blu-motion=off], [data-blu-motion=reduced], .blu-motion-off) :is([class*=blu-motion-], .blu-button__spinner, .blu-loading__visual, .blu-loading i),
9819
+ :is([data-blu-motion=off], [data-blu-motion=reduced], .blu-motion-off)[class*=blu-motion-],
9820
+ .blu-motion-off {
9821
+ animation: none !important;
9822
+ transition: none !important;
9823
+ }
9824
+ :is([data-blu-motion=off], [data-blu-motion=reduced], .blu-motion-off) .blu-loading__bar::after {
9825
+ animation: none !important;
9826
+ }
9827
+ :is([data-blu-motion=off], [data-blu-motion=reduced], .blu-motion-off) .blu-motion-hover-lift:is(:hover, :focus-visible, [data-blu-lifted=true]) {
9828
+ transform: none;
9829
+ }
9830
+ @media (prefers-reduced-motion: reduce) {
9831
+ [class*=blu-motion-],
9832
+ .blu-button__spinner,
9833
+ .blu-loading__visual,
9834
+ .blu-loading i,
9835
+ .blu-loading__bar::after {
9836
+ animation: none !important;
9837
+ transition: none !important;
9838
+ }
9839
+ .blu-motion-hover-lift:is(:hover, :focus-visible, [data-blu-lifted=true]) {
9840
+ transform: none;
9841
+ }
9842
+ }
9843
+ .blu-motion-press[data-blu-pressed=true] {
9844
+ transform: scale(.97);
9845
+ }
9846
+ .blu-motion-highlight {
9847
+ animation: blu-motion-highlight 1400ms ease-in-out 1;
9848
+ }
9849
+ .blu-motion-nudge {
9850
+ animation: blu-motion-nudge 280ms var(--blu-motion-ease) 1;
9851
+ }
9852
+ @keyframes blu-motion-highlight {
9853
+ 45% {
9854
+ box-shadow: 0 0 0 4px var(--blu-motion-highlight, #7770ed40);
9855
+ }
9856
+ }
9857
+ @keyframes blu-motion-nudge {
9858
+ 25% {
9859
+ transform: translateX(-3px);
9860
+ }
9861
+ 60% {
9862
+ transform: translateX(3px);
9863
+ }
9864
+ }
9865
+ :is([data-blu-motion=off], [data-blu-motion=reduced], .blu-motion-off) .blu-motion-press[data-blu-pressed=true],
9866
+ .blu-motion-press.blu-motion-off[data-blu-pressed=true] {
9867
+ transform: none;
9868
+ }
9869
+ @media (prefers-reduced-motion: reduce) {
9870
+ .blu-motion-press[data-blu-pressed=true] {
9871
+ transform: none;
9872
+ }
9873
+ }
9874
+ .blu-motion-photo-frame {
9875
+ position: relative;
9876
+ overflow: hidden;
9877
+ isolation: isolate;
9878
+ }
9879
+ .blu-motion-photo-frame > img {
9880
+ display: block;
9881
+ width: 100%;
9882
+ height: 100%;
9883
+ object-fit: cover;
9884
+ }
9885
+ .blu-motion-border-glow {
9886
+ position: absolute;
9887
+ inset: -1px;
9888
+ border-radius: inherit;
9889
+ pointer-events: none !important;
9890
+ z-index: 1;
9891
+ filter: drop-shadow(0 0 4px var(--blu-glow-halo,#9b85ee80));
9892
+ }
9893
+ .blu-motion-border-glow__rim {
9894
+ position: absolute;
9895
+ inset: 0;
9896
+ padding: var(--blu-glow-width,2px);
9897
+ border-radius: inherit;
9898
+ overflow: hidden;
9899
+ pointer-events: none !important;
9900
+ -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
9901
+ -webkit-mask-composite: xor;
9902
+ mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
9903
+ mask-composite: exclude;
9904
+ }
9905
+ .blu-motion-border-glow__beam {
9906
+ position: absolute;
9907
+ left: 50%;
9908
+ top: 50%;
9909
+ width: var(--blu-glow-size,1800px);
9910
+ height: var(--blu-glow-size,1800px);
9911
+ background:
9912
+ conic-gradient(
9913
+ transparent 0deg,
9914
+ transparent 240deg,
9915
+ var(--blu-glow-tail,#b5a4ef60) 265deg,
9916
+ var(--blu-glow-color,#8060dd) 295deg,
9917
+ var(--blu-glow-tip,#d7c6ff) 315deg,
9918
+ transparent 340deg);
9919
+ transform: translate(-50%, -50%) rotate(0turn);
9920
+ animation: blu-border-orbit var(--blu-glow-duration,12s) linear infinite;
9921
+ }
9922
+ .blu-motion-border-glow[data-paused=true] .blu-motion-border-glow__beam {
9923
+ animation-play-state: paused;
9924
+ }
9925
+ @keyframes blu-border-orbit {
9926
+ from {
9927
+ transform: translate(-50%, -50%) rotate(0turn);
9928
+ }
9929
+ to {
9930
+ transform: translate(-50%, -50%) rotate(1turn);
9931
+ }
9932
+ }
9933
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) .blu-motion-border-glow {
9934
+ filter: none;
9935
+ }
9936
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) .blu-motion-border-glow__rim {
9937
+ background: var(--blu-glow-static,#b5a4ef80);
9938
+ }
9939
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) .blu-motion-border-glow__beam {
9940
+ animation: none !important;
9941
+ display: none;
9942
+ }
9943
+ @media (prefers-reduced-motion: reduce) {
9944
+ .blu-motion-border-glow {
9945
+ filter: none;
9946
+ }
9947
+ .blu-motion-border-glow__rim {
9948
+ background: var(--blu-glow-static,#b5a4ef80);
9949
+ }
9950
+ .blu-motion-border-glow__beam {
9951
+ animation: none !important;
9952
+ display: none;
9953
+ }
9954
+ }
9955
+ @media (forced-colors: active) {
9956
+ .blu-motion-border-glow {
9957
+ display: none;
9958
+ }
9959
+ }
9960
+ [data-blu-content-motion] .blu-profile-card {
9961
+ transition: translate var(--blu-component-motion-duration,450ms) var(--blu-component-motion-ease,ease-in-out);
9962
+ }
9963
+ [data-blu-content-motion] .blu-profile-card:is(:hover, :focus-within) {
9964
+ translate: 0 -4px;
9965
+ }
9966
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) [data-blu-content-motion] .blu-profile-card,
9967
+ [data-blu-content-motion]:is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) .blu-profile-card {
9968
+ translate: none;
9969
+ transition: none;
9970
+ }
9971
+ [data-blu-content-motion] :is(.blu-tree-select__check, .blu-video-player__heatmap) {
9972
+ transition-duration: var(--blu-component-motion-duration,450ms);
9973
+ transition-timing-function: var(--blu-component-motion-ease,ease-in-out);
9974
+ }
9975
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) [data-blu-content-motion] :is(.blu-tree-select__check, .blu-video-player__heatmap) {
9976
+ transition: none;
9977
+ }
9978
+ @media (prefers-reduced-motion: reduce) {
9979
+ [data-blu-content-motion] .blu-profile-card {
9980
+ translate: none;
9981
+ transition: none;
9982
+ }
9983
+ }
9984
+ [data-blu-content-motion=chip] .blu-chip__select {
9985
+ border-radius: inherit;
9986
+ }
9987
+ [data-blu-content-motion=skeleton] .blu-skeleton--animated::after {
9988
+ animation-duration: 1800ms;
9989
+ animation-iteration-count: 2;
9990
+ }
9991
+ [data-blu-component-motion=statistic] .blu-statistic__loading {
9992
+ animation-duration: 1800ms;
9993
+ animation-iteration-count: 2;
9994
+ }
9995
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) [data-blu-content-motion=skeleton] .blu-skeleton--animated::after {
9996
+ animation: none !important;
9997
+ display: none;
9998
+ }
9999
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) [data-blu-component-motion=statistic] .blu-statistic__loading {
10000
+ animation: none !important;
10001
+ }
10002
+ @media (prefers-reduced-motion: reduce) {
10003
+ [data-blu-content-motion=skeleton] .blu-skeleton--animated::after {
10004
+ animation: none !important;
10005
+ display: none;
10006
+ }
10007
+ [data-blu-component-motion=statistic] .blu-statistic__loading {
10008
+ animation: none !important;
10009
+ }
10010
+ }
10011
+ [data-blu-content-motion=media-image] img {
10012
+ transition-duration: var(--blu-component-motion-duration,650ms);
10013
+ transition-timing-function: var(--blu-component-motion-ease,ease-in-out);
10014
+ }
10015
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) [data-blu-content-motion=media-image] img {
10016
+ transition: none !important;
10017
+ transform: none !important;
10018
+ }
10019
+ [data-blu-content-motion] .blu-button {
10020
+ transition-duration: var(--blu-component-motion-duration,280ms);
10021
+ }
10022
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) [data-blu-content-motion] *,
10023
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) [data-blu-content-motion] *::before,
10024
+ :is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) [data-blu-content-motion] *::after,
10025
+ [data-blu-content-motion]:is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) *,
10026
+ [data-blu-content-motion]:is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) *::before,
10027
+ [data-blu-content-motion]:is([data-blu-motion=reduced], [data-blu-motion=off], .blu-motion-off) *::after {
10028
+ transition: none !important;
10029
+ animation: none !important;
10030
+ }
10031
+
10032
+ /* Opt-in web motion. Existing components remain unchanged without the integration. */
10033
+ [data-blu-component-motion=field] :is(.blu-text,.blu-textarea,.blu-select__trigger,.blu-choice__mark,.blu-text__action){transition:background-color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease),border-color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease),box-shadow var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease),color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease)}
10034
+ [data-blu-component-motion=field] .blu-choice--switch .blu-choice__mark::after{transition:transform var(--blu-component-motion-duration,320ms) var(--blu-component-motion-ease,cubic-bezier(.2,.8,.2,1))}
10035
+ [data-blu-component-motion=field] .blu-choice--radio .blu-choice__mark::after{content:'';width:7px;height:7px;border-radius:50%;background:currentColor;transform:scale(0);transition:transform var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease-out)}
10036
+ [data-blu-component-motion=field] .blu-choice--radio input:checked+.blu-choice__mark::after{transform:scale(1)}
10037
+ [data-blu-component-motion=field] .blu-select__trigger::after{transition:transform var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease-out)}
10038
+ [data-blu-component-motion=field] .blu-select__trigger[aria-expanded=true]::after{transform:translateY(2px) rotate(225deg)}
10039
+ [data-blu-exit-visual] :disabled{opacity:1!important}
10040
+ /* Focus rings and validation semantics stay immediate; only decorative feedback moves. */
10041
+ :is([data-blu-motion=reduced],[data-blu-motion=off],.blu-motion-off) [data-blu-component-motion=field] *,
10042
+ :is([data-blu-motion=reduced],[data-blu-motion=off],.blu-motion-off) [data-blu-component-motion=field] *::after{transition:none!important;animation:none!important}
10043
+ @media(prefers-reduced-motion:reduce){[data-blu-component-motion=field] *,[data-blu-component-motion=field] *::after{transition:none!important;animation:none!important}}
10044
+ [data-blu-surface-motion] :is(.blu-select__option,.blu-command__option,.blu-control){transition:background-color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease),color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease),border-color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease)}
10045
+ :is([data-blu-motion=reduced],[data-blu-motion=off],.blu-motion-off) [data-blu-surface-motion] *{transition:none!important}
10046
+ @media(prefers-reduced-motion:reduce){[data-blu-surface-motion] *{transition:none!important}}
10047
+ /* Side drawers meet both viewport edges; the content scrolls between fixed header/footer. */
10048
+ [data-blu-surface-motion=drawer].blu-overlay:is([data-placement=left],[data-placement=right]){padding:0;align-items:stretch}
10049
+ [data-blu-surface-motion=drawer].blu-overlay:is([data-placement=left],[data-placement=right])>.blu-overlay__panel{margin:0;height:100dvh;max-height:100dvh;min-height:0;border-radius:0}
10050
+ [data-blu-surface-motion=drawer] :is(.blu-overlay__header,.blu-overlay__footer){flex-shrink:0}
10051
+ /* Existing notification keyframes are replaced by the scoped controller. */
10052
+ [data-blu-component-motion=notifications] .blu-notification{animation:none}
10053
+ [data-blu-component-motion=tree] .blu-tree__row{transition:background-color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease),color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease)}
10054
+ [data-blu-surface-motion=picker] :is(.blu-picker__button,.blu-picker__input,.blu-picker__day){transition:background-color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease),border-color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease),color var(--blu-component-motion-duration,280ms) var(--blu-component-motion-ease,ease)}
10055
+ :is([data-blu-motion=reduced],[data-blu-motion=off],.blu-motion-off) [data-blu-component-motion=tree] *{transition:none!important}
10056
+ @media(prefers-reduced-motion:reduce){[data-blu-component-motion=tree] *{transition:none!important}}
10057
+ /* Web-only active-location markers: existing links retain focus and behavior. */
10058
+ .blu-motion-navigation-marker{position:absolute;display:block;border-radius:3px;background:var(--bluui-primary,#5144ed);pointer-events:none;transform-origin:top left;z-index:1}
10059
+ .blu-motion-navigation-marker[hidden]{display:none}
10060
+ .blu-motion-navigation-marker[data-kind=pagination]{box-sizing:border-box;border:2px solid var(--bluui-primary,#5144ed);border-radius:8px;background:transparent}
10061
+ [data-blu-navigation-motion] .blu-navigation-menu .blu-navigation-menu__link--active{color:var(--bluui-primary,#5144ed);background:var(--bluui-color-primary-soft,#efedff)}
10062
+ @media(forced-colors:active){.blu-motion-navigation-marker{background:Highlight}}
10063
+ @media(forced-colors:active){.blu-motion-navigation-marker[data-kind=pagination]{background:transparent;border-color:Highlight}}
10064
+
10065
+ /* Shared finite transition settings; continuous loading keeps its own cadence. */
10066
+ .blu-motion-button.blu-button{transition-duration:var(--blu-component-motion-duration,var(--blu-motion-duration));transition-timing-function:var(--blu-component-motion-ease,var(--blu-motion-ease))}
10067
+ /* A preference may sit on the component root itself, not only its parent. */
10068
+ :is([data-blu-component-motion],[data-blu-surface-motion],[data-blu-navigation-motion]):is([data-blu-motion=reduced],[data-blu-motion=off],.blu-motion-off) *,
10069
+ :is([data-blu-component-motion],[data-blu-surface-motion],[data-blu-navigation-motion]):is([data-blu-motion=reduced],[data-blu-motion=off],.blu-motion-off) *::before,
10070
+ :is([data-blu-component-motion],[data-blu-surface-motion],[data-blu-navigation-motion]):is([data-blu-motion=reduced],[data-blu-motion=off],.blu-motion-off) *::after{transition:none!important;animation:none!important}
10071
+
10072
+ .blu-data-motion-exits { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 3; border-radius: inherit; }
10073
+ .blu-data-motion-exit { position: absolute; display: grid; background: var(--bluui-surface, #fff); color: var(--bluui-text-muted, #68758b); font-size: 13px; align-items: center; border-bottom: 1px solid var(--bluui-border, #dce3ed); pointer-events: none; }
10074
+ .blu-data-motion-exit > span { padding: 10px 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
10075
+ @media (forced-colors: active) { .blu-data-motion-exits { display: none; } }