@blukavantui/community 1.1.0 → 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 (179) hide show
  1. package/dist/build-audit.json +127 -65
  2. package/dist/checkbox.js +1 -1
  3. package/dist/chunk-4LHIQROI.js +0 -0
  4. package/dist/chunk-6T677NSC.js +1 -0
  5. package/dist/chunk-7CEOCZ5L.js +0 -0
  6. package/dist/chunk-7DXFNK7C.js +1 -0
  7. package/dist/chunk-CNIIMGT3.js +0 -0
  8. package/dist/chunk-CSTCEBEK.js +1 -0
  9. package/dist/chunk-DRZM2AL3.js +0 -0
  10. package/dist/{chunk-JVE6CXCJ.js → chunk-EPPETNK6.js} +1 -1
  11. package/dist/chunk-EPPSBHZR.js +1 -0
  12. package/dist/{chunk-NTFHNL7T.js → chunk-G6OW4OZM.js} +1 -1
  13. package/dist/chunk-GS67ZBLI.js +1 -0
  14. package/dist/{chunk-6EHKOVZK.js → chunk-HVR2UDFX.js} +1 -1
  15. package/dist/chunk-IKYBFMHI.js +1 -0
  16. package/dist/chunk-KVOA55NE.js +0 -0
  17. package/dist/{chunk-MZBB5ROJ.js → chunk-LF2HELEZ.js} +1 -1
  18. package/dist/{chunk-UEOCR2C3.js → chunk-OLDA73XG.js} +2 -2
  19. package/dist/{chunk-IZJN3EF7.js → chunk-T45FJNEQ.js} +1 -1
  20. package/dist/chunk-TZSX4OTV.js +1 -0
  21. package/dist/{chunk-GK3INPAZ.js → chunk-V2YPIC6Z.js} +1 -1
  22. package/dist/chunk-V4ZQLQ7L.js +0 -0
  23. package/dist/chunk-VAM3FPCS.js +0 -0
  24. package/dist/chunk-VSTKXZYY.js +0 -0
  25. package/dist/chunk-WG4US4JH.js +1 -0
  26. package/dist/chunk-WGSTNXAQ.js +0 -0
  27. package/dist/chunk-WJHCVECU.js +1 -0
  28. package/dist/chunk-Y4AXWTAD.js +0 -0
  29. package/dist/chunk-YLFXSHKZ.js +0 -0
  30. package/dist/chunk-ZDGZGAYG.js +0 -0
  31. package/dist/command-palette.js +1 -1
  32. package/dist/component-motion.css +39 -0
  33. package/dist/component-motion.d.ts +45 -0
  34. package/dist/component-motion.js +1 -0
  35. package/dist/content.js +1 -1
  36. package/dist/core.css +8 -0
  37. package/dist/core.js +1 -1
  38. package/dist/data-motion.css +4 -0
  39. package/dist/data-motion.d.ts +23 -0
  40. package/dist/data-motion.js +1 -0
  41. package/dist/data.js +1 -1
  42. package/dist/date-picker.js +1 -1
  43. package/dist/date-range-picker.js +1 -1
  44. package/dist/date-time-picker.js +1 -1
  45. package/dist/drawer.js +1 -1
  46. package/dist/essentials.css +8 -0
  47. package/dist/feedback.js +1 -1
  48. package/dist/form-layout.js +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/inputs.js +1 -1
  51. package/dist/layout.js +1 -1
  52. package/dist/modal.js +1 -1
  53. package/dist/motion/action-feedback.d.ts +14 -0
  54. package/dist/motion/border-glow.d.ts +12 -0
  55. package/dist/motion/button.d.ts +11 -0
  56. package/dist/motion/component-settings.d.ts +51 -0
  57. package/dist/motion/controller.d.ts +33 -0
  58. package/dist/motion/effects.d.ts +30 -0
  59. package/dist/motion/feedback.d.ts +6 -0
  60. package/dist/motion/loading.d.ts +9 -0
  61. package/dist/motion/optional.d.ts +35 -0
  62. package/dist/motion/photo.d.ts +7 -0
  63. package/dist/motion/presence.d.ts +12 -0
  64. package/dist/motion/scene.d.ts +10 -0
  65. package/dist/motion/screen.d.ts +6 -0
  66. package/dist/motion/scroll-reveal.d.ts +13 -0
  67. package/dist/motion/settings-group.d.ts +14 -0
  68. package/dist/motion/stagger.d.ts +12 -0
  69. package/dist/motion/structure.d.ts +18 -0
  70. package/dist/motion/tabs.d.ts +19 -0
  71. package/dist/motion/tokens.d.ts +11 -0
  72. package/dist/motion/value.d.ts +21 -0
  73. package/dist/motion/view-transition.d.ts +14 -0
  74. package/dist/motion-enhancers.d.ts +12 -0
  75. package/dist/motion-enhancers.js +1 -0
  76. package/dist/motion-settings.d.ts +3 -0
  77. package/dist/motion-settings.js +1 -0
  78. package/dist/motion.css +1076 -0
  79. package/dist/motion.d.ts +20 -0
  80. package/dist/motion.js +1 -0
  81. package/dist/native/form-layout.js +1 -1
  82. package/dist/native-motion-components.d.ts +3 -0
  83. package/dist/native-motion-content.d.ts +1 -0
  84. package/dist/native-motion-foundations.d.ts +3 -0
  85. package/dist/native-motion-layout.d.ts +3 -0
  86. package/dist/native-motion-pilot.d.ts +34 -0
  87. package/dist/native-motion.d.ts +71 -0
  88. package/dist/notification.js +1 -1
  89. package/dist/pagination.js +1 -1
  90. package/dist/radio-button.js +1 -1
  91. package/dist/radio-group.js +1 -1
  92. package/dist/sidebar.js +1 -1
  93. package/dist/sizes.json +273 -151
  94. package/dist/skeleton.css +8 -0
  95. package/dist/styles.css +1130 -0
  96. package/dist/switch.js +1 -1
  97. package/dist/table.js +1 -1
  98. package/dist/time-picker.js +1 -1
  99. package/dist/tree-view.js +1 -1
  100. package/dist/web-motion/chip-ripple.d.ts +6 -0
  101. package/dist/web-motion/choice-ripple.d.ts +6 -0
  102. package/dist/web-motion/content.d.ts +9 -0
  103. package/dist/web-motion/data-rows.d.ts +12 -0
  104. package/dist/web-motion/fields.d.ts +6 -0
  105. package/dist/web-motion/navigation.d.ts +6 -0
  106. package/dist/web-motion/notifications.d.ts +6 -0
  107. package/dist/web-motion/select-ripple.d.ts +6 -0
  108. package/dist/web-motion/statistic.d.ts +13 -0
  109. package/dist/web-motion/surfaces.d.ts +10 -0
  110. package/dist/web-motion/tree.d.ts +6 -0
  111. package/docs/FORM-LAYOUT-ESSENTIALS.md +4 -4
  112. package/edition.json +1 -1
  113. package/npm-shrinkwrap.json +2 -2
  114. package/package.json +29 -3
  115. package/scripts/build-motion-css.mjs +36 -0
  116. package/scripts/build-motion-styles.mjs +29 -0
  117. package/scripts/build.mjs +5 -1
  118. package/scripts/motion-entries.mjs +2 -0
  119. package/src/component-motion.ts +101 -0
  120. package/src/data-motion.ts +60 -0
  121. package/src/form-layout/choice.ts +17 -1
  122. package/src/motion/action-feedback.ts +38 -0
  123. package/src/motion/border-glow.ts +41 -0
  124. package/src/motion/button.ts +56 -0
  125. package/src/motion/component-settings.ts +147 -0
  126. package/src/motion/controller.ts +191 -0
  127. package/src/motion/effects.ts +75 -0
  128. package/src/motion/feedback.ts +41 -0
  129. package/src/motion/loading.ts +40 -0
  130. package/src/motion/optional.ts +123 -0
  131. package/src/motion/photo.ts +19 -0
  132. package/src/motion/presence.ts +44 -0
  133. package/src/motion/scene.ts +103 -0
  134. package/src/motion/screen.ts +15 -0
  135. package/src/motion/scroll-reveal.ts +49 -0
  136. package/src/motion/settings-group.ts +28 -0
  137. package/src/motion/stagger.ts +26 -0
  138. package/src/motion/structure.ts +75 -0
  139. package/src/motion/tabs.ts +105 -0
  140. package/src/motion/tokens.ts +2 -0
  141. package/src/motion/value.ts +61 -0
  142. package/src/motion/view-transition.ts +57 -0
  143. package/src/motion-enhancers.ts +12 -0
  144. package/src/motion-settings.ts +3 -0
  145. package/src/motion.ts +20 -0
  146. package/src/native-motion-components.ts +76 -0
  147. package/src/native-motion-content.ts +10 -0
  148. package/src/native-motion-foundations.ts +56 -0
  149. package/src/native-motion-layout.ts +35 -0
  150. package/src/native-motion-pilot.ts +151 -0
  151. package/src/native-motion.ts +188 -0
  152. package/src/web-motion/chip-ripple.ts +31 -0
  153. package/src/web-motion/choice-ripple.ts +30 -0
  154. package/src/web-motion/content.ts +74 -0
  155. package/src/web-motion/data-rows.ts +106 -0
  156. package/src/web-motion/fields.ts +52 -0
  157. package/src/web-motion/navigation.ts +62 -0
  158. package/src/web-motion/notifications.ts +67 -0
  159. package/src/web-motion/select-ripple.ts +23 -0
  160. package/src/web-motion/statistic.ts +23 -0
  161. package/src/web-motion/surfaces.ts +137 -0
  162. package/src/web-motion/tree.ts +44 -0
  163. package/styles/component-motion.css +39 -0
  164. package/styles/data-motion.css +4 -0
  165. package/styles/motion-optional.css +15 -0
  166. package/styles/motion-presets.css +92 -0
  167. package/styles/motion-tokens.css +6 -0
  168. package/styles/motion.css +125 -0
  169. package/styles/skeleton.css +8 -0
  170. package/test/component-motion-settings.test.mjs +35 -0
  171. package/test/content-overlay-motion.test.mjs +36 -0
  172. package/test/isolation.test.mjs +1 -1
  173. package/test/motion.test.mjs +215 -0
  174. package/dist/chunk-GXHANADL.js +0 -1
  175. /package/dist/{chunk-3PNBQVYS.js → chunk-2BSBXDOT.js} +0 -0
  176. /package/dist/{chunk-H7ETPJVW.js → chunk-3PODK22R.js} +0 -0
  177. /package/dist/{chunk-SIU7DSOA.js → chunk-KBWB4OIF.js} +0 -0
  178. /package/dist/{chunk-OPMD7QNV.js → chunk-W3H7XTA7.js} +0 -0
  179. /package/dist/{chunk-XWXEH3SW.js → chunk-XVMJG26X.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));}
@@ -8943,3 +8951,1125 @@ beside the live host/List, never inside a JavaScript-owned host. */
8943
8951
  .blu-columns--equal-height > .blu-columns__column > :only-child{flex:1 1 auto}
8944
8952
  .blu-columns--equal-height > .blu-columns__column > [data-placeholder]{display:flex;flex-direction:column}
8945
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; } }