codexly-ui 0.0.1

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.
@@ -0,0 +1,769 @@
1
+ /* ─────────────────────────────────────────────────────────────────────────────
2
+ Codexly UI — Animation System
3
+ Sin dependencias externas. Prefijo: clx-anim--
4
+ ───────────────────────────────────────────────────────────────────────────── */
5
+
6
+ /* ─── Base ───────────────────────────────────────────────────────────────────── */
7
+ .clx-anim--animated {
8
+ animation-duration: var(--clx-anim-duration, 1000ms);
9
+ animation-delay: var(--clx-anim-delay, 0ms);
10
+ animation-iteration-count: var(--clx-anim-repeat, 1);
11
+ animation-timing-function: var(--clx-anim-easing, ease);
12
+ animation-fill-mode: both;
13
+ }
14
+
15
+ .clx-anim--infinite {
16
+ animation-iteration-count: infinite;
17
+ }
18
+
19
+ /* ═══════════════════════════════════════════════════════════════════════════════
20
+ ATTENTION SEEKERS
21
+ ═══════════════════════════════════════════════════════════════════════════════ */
22
+
23
+ @keyframes bounce {
24
+ from, 20%, 53%, to {
25
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
26
+ transform: translate3d(0, 0, 0);
27
+ }
28
+ 40%, 43% {
29
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
30
+ transform: translate3d(0, -30px, 0) scaleY(1.1);
31
+ }
32
+ 70% {
33
+ animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
34
+ transform: translate3d(0, -15px, 0) scaleY(1.05);
35
+ }
36
+ 80% {
37
+ transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
38
+ transform: translate3d(0, 0, 0) scaleY(0.95);
39
+ }
40
+ 90% { transform: translate3d(0, -4px, 0) scaleY(1.02); }
41
+ }
42
+ .clx-anim--bounce { animation-name: bounce; transform-origin: center bottom; }
43
+
44
+ @keyframes flash {
45
+ from, 50%, to { opacity: 1; }
46
+ 25%, 75% { opacity: 0; }
47
+ }
48
+ .clx-anim--flash { animation-name: flash; }
49
+
50
+ @keyframes pulse {
51
+ from { transform: scale3d(1, 1, 1); }
52
+ 50% { transform: scale3d(1.05, 1.05, 1.05); }
53
+ to { transform: scale3d(1, 1, 1); }
54
+ }
55
+ .clx-anim--pulse { animation-name: pulse; animation-timing-function: ease-in-out; }
56
+
57
+ @keyframes rubberBand {
58
+ from { transform: scale3d(1, 1, 1); }
59
+ 30% { transform: scale3d(1.25, 0.75, 1); }
60
+ 40% { transform: scale3d(0.75, 1.25, 1); }
61
+ 50% { transform: scale3d(1.15, 0.85, 1); }
62
+ 65% { transform: scale3d(0.95, 1.05, 1); }
63
+ 75% { transform: scale3d(1.05, 0.95, 1); }
64
+ to { transform: scale3d(1, 1, 1); }
65
+ }
66
+ .clx-anim--rubberBand { animation-name: rubberBand; }
67
+
68
+ @keyframes shakeX {
69
+ from, to { transform: translate3d(0, 0, 0); }
70
+ 10%, 30%, 50%, 70%, 90% { transform: translate3d(-10px, 0, 0); }
71
+ 20%, 40%, 60%, 80% { transform: translate3d(10px, 0, 0); }
72
+ }
73
+ .clx-anim--shakeX { animation-name: shakeX; }
74
+
75
+ @keyframes shakeY {
76
+ from, to { transform: translate3d(0, 0, 0); }
77
+ 10%, 30%, 50%, 70%, 90% { transform: translate3d(0, -10px, 0); }
78
+ 20%, 40%, 60%, 80% { transform: translate3d(0, 10px, 0); }
79
+ }
80
+ .clx-anim--shakeY { animation-name: shakeY; }
81
+
82
+ @keyframes headShake {
83
+ 0% { transform: translateX(0); }
84
+ 6.5% { transform: translateX(-6px) rotateY(-9deg); }
85
+ 18.5%{ transform: translateX(5px) rotateY(7deg); }
86
+ 31.5%{ transform: translateX(-3px) rotateY(-5deg); }
87
+ 43.5%{ transform: translateX(2px) rotateY(3deg); }
88
+ 50% { transform: translateX(0); }
89
+ }
90
+ .clx-anim--headShake { animation-name: headShake; animation-timing-function: ease-in-out; }
91
+
92
+ @keyframes swing {
93
+ 20% { transform: rotate3d(0, 0, 1, 15deg); }
94
+ 40% { transform: rotate3d(0, 0, 1, -10deg); }
95
+ 60% { transform: rotate3d(0, 0, 1, 5deg); }
96
+ 80% { transform: rotate3d(0, 0, 1, -5deg); }
97
+ to { transform: rotate3d(0, 0, 1, 0deg); }
98
+ }
99
+ .clx-anim--swing { animation-name: swing; transform-origin: top center; }
100
+
101
+ @keyframes tada {
102
+ from { transform: scale3d(1, 1, 1); }
103
+ 10%, 20% { transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); }
104
+ 30%, 50%, 70%, 90% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); }
105
+ 40%, 60%, 80% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); }
106
+ to { transform: scale3d(1, 1, 1); }
107
+ }
108
+ .clx-anim--tada { animation-name: tada; }
109
+
110
+ @keyframes wobble {
111
+ from { transform: translate3d(0, 0, 0); }
112
+ 15% { transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); }
113
+ 30% { transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); }
114
+ 45% { transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); }
115
+ 60% { transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); }
116
+ 75% { transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); }
117
+ to { transform: translate3d(0, 0, 0); }
118
+ }
119
+ .clx-anim--wobble { animation-name: wobble; }
120
+
121
+ @keyframes jello {
122
+ from, 11.1%, to { transform: translate3d(0, 0, 0); }
123
+ 22.2% { transform: skewX(-12.5deg) skewY(-12.5deg); }
124
+ 33.3% { transform: skewX(6.25deg) skewY(6.25deg); }
125
+ 44.4% { transform: skewX(-3.125deg) skewY(-3.125deg); }
126
+ 55.5% { transform: skewX(1.5625deg) skewY(1.5625deg); }
127
+ 66.6% { transform: skewX(-0.78125deg) skewY(-0.78125deg); }
128
+ 77.7% { transform: skewX(0.390625deg) skewY(0.390625deg); }
129
+ 88.8% { transform: skewX(-0.1953125deg) skewY(-0.1953125deg); }
130
+ }
131
+ .clx-anim--jello { animation-name: jello; transform-origin: center; }
132
+
133
+ @keyframes heartBeat {
134
+ 0% { transform: scale(1); }
135
+ 14% { transform: scale(1.3); }
136
+ 28% { transform: scale(1); }
137
+ 42% { transform: scale(1.3); }
138
+ 70% { transform: scale(1); }
139
+ }
140
+ .clx-anim--heartBeat { animation-name: heartBeat; animation-duration: 1.3s; animation-timing-function: ease-in-out; }
141
+
142
+ /* ═══════════════════════════════════════════════════════════════════════════════
143
+ BACK ENTRANCES
144
+ ═══════════════════════════════════════════════════════════════════════════════ */
145
+
146
+ @keyframes backInDown {
147
+ 0% { transform: translateY(-1200px) scale(0.7); opacity: 0.7; }
148
+ 80% { transform: translateY(0px) scale(0.7); opacity: 0.7; }
149
+ 100% { transform: scale(1); opacity: 1; }
150
+ }
151
+ .clx-anim--backInDown { animation-name: backInDown; }
152
+
153
+ @keyframes backInLeft {
154
+ 0% { transform: translateX(-2000px) scale(0.7); opacity: 0.7; }
155
+ 80% { transform: translateX(0px) scale(0.7); opacity: 0.7; }
156
+ 100% { transform: scale(1); opacity: 1; }
157
+ }
158
+ .clx-anim--backInLeft { animation-name: backInLeft; }
159
+
160
+ @keyframes backInRight {
161
+ 0% { transform: translateX(2000px) scale(0.7); opacity: 0.7; }
162
+ 80% { transform: translateX(0px) scale(0.7); opacity: 0.7; }
163
+ 100% { transform: scale(1); opacity: 1; }
164
+ }
165
+ .clx-anim--backInRight { animation-name: backInRight; }
166
+
167
+ @keyframes backInUp {
168
+ 0% { transform: translateY(1200px) scale(0.7); opacity: 0.7; }
169
+ 80% { transform: translateY(0px) scale(0.7); opacity: 0.7; }
170
+ 100% { transform: scale(1); opacity: 1; }
171
+ }
172
+ .clx-anim--backInUp { animation-name: backInUp; }
173
+
174
+ /* ═══════════════════════════════════════════════════════════════════════════════
175
+ BACK EXITS
176
+ ═══════════════════════════════════════════════════════════════════════════════ */
177
+
178
+ @keyframes backOutDown {
179
+ 0% { transform: scale(1); opacity: 1; }
180
+ 20% { transform: translateY(0px) scale(0.7); opacity: 0.7; }
181
+ 100% { transform: translateY(700px) scale(0.7); opacity: 0.7; }
182
+ }
183
+ .clx-anim--backOutDown { animation-name: backOutDown; }
184
+
185
+ @keyframes backOutLeft {
186
+ 0% { transform: scale(1); opacity: 1; }
187
+ 20% { transform: translateX(0px) scale(0.7); opacity: 0.7; }
188
+ 100% { transform: translateX(-2000px) scale(0.7); opacity: 0.7; }
189
+ }
190
+ .clx-anim--backOutLeft { animation-name: backOutLeft; }
191
+
192
+ @keyframes backOutRight {
193
+ 0% { transform: scale(1); opacity: 1; }
194
+ 20% { transform: translateX(0px) scale(0.7); opacity: 0.7; }
195
+ 100% { transform: translateX(2000px) scale(0.7); opacity: 0.7; }
196
+ }
197
+ .clx-anim--backOutRight { animation-name: backOutRight; }
198
+
199
+ @keyframes backOutUp {
200
+ 0% { transform: scale(1); opacity: 1; }
201
+ 20% { transform: translateY(0px) scale(0.7); opacity: 0.7; }
202
+ 100% { transform: translateY(-700px) scale(0.7); opacity: 0.7; }
203
+ }
204
+ .clx-anim--backOutUp { animation-name: backOutUp; }
205
+
206
+ /* ═══════════════════════════════════════════════════════════════════════════════
207
+ BOUNCING ENTRANCES
208
+ ═══════════════════════════════════════════════════════════════════════════════ */
209
+
210
+ @keyframes bounceIn {
211
+ from, 20%, 40%, 60%, 80%, to {
212
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
213
+ }
214
+ 0% { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
215
+ 20% { transform: scale3d(1.1, 1.1, 1.1); }
216
+ 40% { transform: scale3d(0.9, 0.9, 0.9); }
217
+ 60% { opacity: 1; transform: scale3d(1.03, 1.03, 1.03); }
218
+ 80% { transform: scale3d(0.97, 0.97, 0.97); }
219
+ to { opacity: 1; transform: scale3d(1, 1, 1); }
220
+ }
221
+ .clx-anim--bounceIn { animation-name: bounceIn; animation-duration: 0.75s; }
222
+
223
+ @keyframes bounceInDown {
224
+ from, 60%, 75%, 90%, to {
225
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
226
+ }
227
+ 0% { opacity: 0; transform: translate3d(0, -3000px, 0) scaleY(3); }
228
+ 60% { opacity: 1; transform: translate3d(0, 25px, 0) scaleY(0.9); }
229
+ 75% { transform: translate3d(0, -10px, 0) scaleY(0.95); }
230
+ 90% { transform: translate3d(0, 5px, 0) scaleY(0.985); }
231
+ to { transform: translate3d(0, 0, 0); }
232
+ }
233
+ .clx-anim--bounceInDown { animation-name: bounceInDown; }
234
+
235
+ @keyframes bounceInLeft {
236
+ from, 60%, 75%, 90%, to {
237
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
238
+ }
239
+ 0% { opacity: 0; transform: translate3d(-3000px, 0, 0) scaleX(3); }
240
+ 60% { opacity: 1; transform: translate3d(25px, 0, 0) scaleX(1); }
241
+ 75% { transform: translate3d(-10px, 0, 0) scaleX(0.98); }
242
+ 90% { transform: translate3d(5px, 0, 0) scaleX(0.995); }
243
+ to { transform: translate3d(0, 0, 0); }
244
+ }
245
+ .clx-anim--bounceInLeft { animation-name: bounceInLeft; }
246
+
247
+ @keyframes bounceInRight {
248
+ 0% { opacity: 0; transform: translateX(100%); }
249
+ 60% { opacity: 1; transform: translateX(-10px); }
250
+ 80% { transform: translateX(5px); }
251
+ 100% { transform: translateX(0); }
252
+ }
253
+ .clx-anim--bounceInRight { animation-name: bounceInRight; }
254
+
255
+ @keyframes bounceInUp {
256
+ from, 60%, 75%, 90%, to {
257
+ animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
258
+ }
259
+ from { opacity: 0; transform: translate3d(0, 3000px, 0) scaleY(5); }
260
+ 60% { opacity: 1; transform: translate3d(0, -20px, 0) scaleY(0.9); }
261
+ 75% { transform: translate3d(0, 10px, 0) scaleY(0.95); }
262
+ 90% { transform: translate3d(0, -5px, 0) scaleY(0.985); }
263
+ to { transform: translate3d(0, 0, 0); }
264
+ }
265
+ .clx-anim--bounceInUp { animation-name: bounceInUp; }
266
+
267
+ /* ═══════════════════════════════════════════════════════════════════════════════
268
+ BOUNCING EXITS
269
+ ═══════════════════════════════════════════════════════════════════════════════ */
270
+
271
+ @keyframes bounceOut {
272
+ 20% { transform: scale3d(0.9, 0.9, 0.9); }
273
+ 50%, 55% { opacity: 1; transform: scale3d(1.1, 1.1, 1.1); }
274
+ to { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
275
+ }
276
+ .clx-anim--bounceOut { animation-name: bounceOut; animation-duration: 0.75s; }
277
+
278
+ @keyframes bounceOutDown {
279
+ 20% { transform: translate3d(0, 10px, 0) scaleY(0.985); }
280
+ 40%, 45% { opacity: 1; transform: translate3d(0, -20px, 0) scaleY(0.9); }
281
+ to { opacity: 0; transform: translate3d(0, 2000px, 0) scaleY(3); }
282
+ }
283
+ .clx-anim--bounceOutDown { animation-name: bounceOutDown; }
284
+
285
+ @keyframes bounceOutLeft {
286
+ 20% { opacity: 1; transform: translate3d(20px, 0, 0) scaleX(0.9); }
287
+ to { opacity: 0; transform: translate3d(-2000px, 0, 0) scaleX(2); }
288
+ }
289
+ .clx-anim--bounceOutLeft { animation-name: bounceOutLeft; }
290
+
291
+ @keyframes bounceOutRight {
292
+ 0% { opacity: 1; transform: translateX(0); }
293
+ 20% { transform: translateX(-10px); }
294
+ 100% { opacity: 0; transform: translateX(120%); }
295
+ }
296
+ .clx-anim--bounceOutRight { animation-name: bounceOutRight; }
297
+
298
+ @keyframes bounceOutUp {
299
+ 20% { transform: translate3d(0, -10px, 0) scaleY(0.985); }
300
+ 40%, 45% { opacity: 1; transform: translate3d(0, 20px, 0) scaleY(0.9); }
301
+ to { opacity: 0; transform: translate3d(0, -2000px, 0) scaleY(3); }
302
+ }
303
+ .clx-anim--bounceOutUp { animation-name: bounceOutUp; }
304
+
305
+ /* ═══════════════════════════════════════════════════════════════════════════════
306
+ FADING ENTRANCES
307
+ ═══════════════════════════════════════════════════════════════════════════════ */
308
+
309
+ @keyframes fadeIn {
310
+ from { opacity: 0; }
311
+ to { opacity: 1; }
312
+ }
313
+ .clx-anim--fadeIn { animation-name: fadeIn; }
314
+
315
+ @keyframes fadeInDown {
316
+ from { opacity: 0; transform: translate3d(0, -100%, 0); }
317
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
318
+ }
319
+ .clx-anim--fadeInDown { animation-name: fadeInDown; }
320
+
321
+ @keyframes fadeInDownBig {
322
+ from { opacity: 0; transform: translate3d(0, -2000px, 0); }
323
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
324
+ }
325
+ .clx-anim--fadeInDownBig { animation-name: fadeInDownBig; }
326
+
327
+ @keyframes fadeInLeft {
328
+ from { opacity: 0; transform: translate3d(-100%, 0, 0); }
329
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
330
+ }
331
+ .clx-anim--fadeInLeft { animation-name: fadeInLeft; }
332
+
333
+ @keyframes fadeInLeftBig {
334
+ from { opacity: 0; transform: translate3d(-2000px, 0, 0); }
335
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
336
+ }
337
+ .clx-anim--fadeInLeftBig { animation-name: fadeInLeftBig; }
338
+
339
+ @keyframes fadeInRight {
340
+ from { opacity: 0; transform: translate3d(100%, 0, 0); }
341
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
342
+ }
343
+ .clx-anim--fadeInRight { animation-name: fadeInRight; }
344
+
345
+ @keyframes fadeInRightBig {
346
+ from { opacity: 0; transform: translate3d(2000px, 0, 0); }
347
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
348
+ }
349
+ .clx-anim--fadeInRightBig { animation-name: fadeInRightBig; }
350
+
351
+ @keyframes fadeInUp {
352
+ from { opacity: 0; transform: translate3d(0, 100%, 0); }
353
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
354
+ }
355
+ .clx-anim--fadeInUp { animation-name: fadeInUp; }
356
+
357
+ @keyframes fadeInUpBig {
358
+ from { opacity: 0; transform: translate3d(0, 2000px, 0); }
359
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
360
+ }
361
+ .clx-anim--fadeInUpBig { animation-name: fadeInUpBig; }
362
+
363
+ @keyframes fadeInTopLeft {
364
+ from { opacity: 0; transform: translate3d(-100%, -100%, 0); }
365
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
366
+ }
367
+ .clx-anim--fadeInTopLeft { animation-name: fadeInTopLeft; }
368
+
369
+ @keyframes fadeInTopRight {
370
+ from { opacity: 0; transform: translate3d(100%, -100%, 0); }
371
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
372
+ }
373
+ .clx-anim--fadeInTopRight { animation-name: fadeInTopRight; }
374
+
375
+ @keyframes fadeInBottomLeft {
376
+ from { opacity: 0; transform: translate3d(-100%, 100%, 0); }
377
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
378
+ }
379
+ .clx-anim--fadeInBottomLeft { animation-name: fadeInBottomLeft; }
380
+
381
+ @keyframes fadeInBottomRight {
382
+ from { opacity: 0; transform: translate3d(100%, 100%, 0); }
383
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
384
+ }
385
+ .clx-anim--fadeInBottomRight { animation-name: fadeInBottomRight; }
386
+
387
+ /* ═══════════════════════════════════════════════════════════════════════════════
388
+ FADING EXITS
389
+ ═══════════════════════════════════════════════════════════════════════════════ */
390
+
391
+ @keyframes fadeOut {
392
+ from { opacity: 1; }
393
+ to { opacity: 0; }
394
+ }
395
+ .clx-anim--fadeOut { animation-name: fadeOut; }
396
+
397
+ @keyframes fadeOutDown {
398
+ from { opacity: 1; }
399
+ to { opacity: 0; transform: translate3d(0, 100%, 0); }
400
+ }
401
+ .clx-anim--fadeOutDown { animation-name: fadeOutDown; }
402
+
403
+ @keyframes fadeOutDownBig {
404
+ from { opacity: 1; }
405
+ to { opacity: 0; transform: translate3d(0, 2000px, 0); }
406
+ }
407
+ .clx-anim--fadeOutDownBig { animation-name: fadeOutDownBig; }
408
+
409
+ @keyframes fadeOutLeft {
410
+ from { opacity: 1; }
411
+ to { opacity: 0; transform: translate3d(-100%, 0, 0); }
412
+ }
413
+ .clx-anim--fadeOutLeft { animation-name: fadeOutLeft; }
414
+
415
+ @keyframes fadeOutLeftBig {
416
+ from { opacity: 1; }
417
+ to { opacity: 0; transform: translate3d(-2000px, 0, 0); }
418
+ }
419
+ .clx-anim--fadeOutLeftBig { animation-name: fadeOutLeftBig; }
420
+
421
+ @keyframes fadeOutRight {
422
+ from { opacity: 1; }
423
+ to { opacity: 0; transform: translate3d(100%, 0, 0); }
424
+ }
425
+ .clx-anim--fadeOutRight { animation-name: fadeOutRight; }
426
+
427
+ @keyframes fadeOutRightBig {
428
+ from { opacity: 1; }
429
+ to { opacity: 0; transform: translate3d(2000px, 0, 0); }
430
+ }
431
+ .clx-anim--fadeOutRightBig { animation-name: fadeOutRightBig; }
432
+
433
+ @keyframes fadeOutUp {
434
+ from { opacity: 1; }
435
+ to { opacity: 0; transform: translate3d(0, -100%, 0); }
436
+ }
437
+ .clx-anim--fadeOutUp { animation-name: fadeOutUp; }
438
+
439
+ @keyframes fadeOutUpBig {
440
+ from { opacity: 1; }
441
+ to { opacity: 0; transform: translate3d(0, -2000px, 0); }
442
+ }
443
+ .clx-anim--fadeOutUpBig { animation-name: fadeOutUpBig; }
444
+
445
+ @keyframes fadeOutTopLeft {
446
+ from { opacity: 1; transform: translate3d(0, 0, 0); }
447
+ to { opacity: 0; transform: translate3d(-100%, -100%, 0); }
448
+ }
449
+ .clx-anim--fadeOutTopLeft { animation-name: fadeOutTopLeft; }
450
+
451
+ @keyframes fadeOutTopRight {
452
+ from { opacity: 1; transform: translate3d(0, 0, 0); }
453
+ to { opacity: 0; transform: translate3d(100%, -100%, 0); }
454
+ }
455
+ .clx-anim--fadeOutTopRight { animation-name: fadeOutTopRight; }
456
+
457
+ @keyframes fadeOutBottomLeft {
458
+ from { opacity: 1; transform: translate3d(0, 0, 0); }
459
+ to { opacity: 0; transform: translate3d(-100%, 100%, 0); }
460
+ }
461
+ .clx-anim--fadeOutBottomLeft { animation-name: fadeOutBottomLeft; }
462
+
463
+ @keyframes fadeOutBottomRight {
464
+ from { opacity: 1; transform: translate3d(0, 0, 0); }
465
+ to { opacity: 0; transform: translate3d(100%, 100%, 0); }
466
+ }
467
+ .clx-anim--fadeOutBottomRight { animation-name: fadeOutBottomRight; }
468
+
469
+ /* ═══════════════════════════════════════════════════════════════════════════════
470
+ FLIPPERS
471
+ ═══════════════════════════════════════════════════════════════════════════════ */
472
+
473
+ @keyframes flip {
474
+ from { transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg); animation-timing-function: ease-out; }
475
+ 40% { transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); animation-timing-function: ease-out; }
476
+ 50% { transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); animation-timing-function: ease-in; }
477
+ 80% { transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg); animation-timing-function: ease-in; }
478
+ to { transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg); animation-timing-function: ease-in; }
479
+ }
480
+ .clx-anim--flip { animation-name: flip; backface-visibility: visible; }
481
+
482
+ @keyframes flipInX {
483
+ from { transform: perspective(400px) rotate3d(1, 0, 0, 90deg); animation-timing-function: ease-in; opacity: 0; }
484
+ 40% { transform: perspective(400px) rotate3d(1, 0, 0, -20deg); animation-timing-function: ease-in; }
485
+ 60% { transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; }
486
+ 80% { transform: perspective(400px) rotate3d(1, 0, 0, -5deg); }
487
+ to { transform: perspective(400px); }
488
+ }
489
+ .clx-anim--flipInX { animation-name: flipInX; backface-visibility: visible; }
490
+
491
+ @keyframes flipInY {
492
+ from { transform: perspective(400px) rotate3d(0, 1, 0, 90deg); animation-timing-function: ease-in; opacity: 0; }
493
+ 40% { transform: perspective(400px) rotate3d(0, 1, 0, -20deg); animation-timing-function: ease-in; }
494
+ 60% { transform: perspective(400px) rotate3d(0, 1, 0, 10deg); opacity: 1; }
495
+ 80% { transform: perspective(400px) rotate3d(0, 1, 0, -5deg); }
496
+ to { transform: perspective(400px); }
497
+ }
498
+ .clx-anim--flipInY { animation-name: flipInY; backface-visibility: visible; }
499
+
500
+ @keyframes flipOutX {
501
+ from { transform: perspective(400px); }
502
+ 30% { transform: perspective(400px) rotate3d(1, 0, 0, -20deg); opacity: 1; }
503
+ to { transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; }
504
+ }
505
+ .clx-anim--flipOutX { animation-name: flipOutX; animation-duration: 0.75s; backface-visibility: visible; }
506
+
507
+ @keyframes flipOutY {
508
+ from { transform: perspective(400px); }
509
+ 30% { transform: perspective(400px) rotate3d(0, 1, 0, -15deg); opacity: 1; }
510
+ to { transform: perspective(400px) rotate3d(0, 1, 0, 90deg); opacity: 0; }
511
+ }
512
+ .clx-anim--flipOutY { animation-name: flipOutY; animation-duration: 0.75s; backface-visibility: visible; }
513
+
514
+ /* ═══════════════════════════════════════════════════════════════════════════════
515
+ LIGHTSPEED
516
+ ═══════════════════════════════════════════════════════════════════════════════ */
517
+
518
+ @keyframes lightSpeedInRight {
519
+ from { transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; }
520
+ 60% { transform: skewX(20deg); opacity: 1; }
521
+ 80% { transform: skewX(-5deg); }
522
+ to { transform: translate3d(0, 0, 0); }
523
+ }
524
+ .clx-anim--lightSpeedInRight { animation-name: lightSpeedInRight; animation-timing-function: ease-out; }
525
+
526
+ @keyframes lightSpeedInLeft {
527
+ from { transform: translate3d(-100%, 0, 0) skewX(30deg); opacity: 0; }
528
+ 60% { transform: skewX(-20deg); opacity: 1; }
529
+ 80% { transform: skewX(5deg); }
530
+ to { transform: translate3d(0, 0, 0); }
531
+ }
532
+ .clx-anim--lightSpeedInLeft { animation-name: lightSpeedInLeft; animation-timing-function: ease-out; }
533
+
534
+ @keyframes lightSpeedOutRight {
535
+ from { opacity: 1; }
536
+ to { transform: translate3d(100%, 0, 0) skewX(30deg); opacity: 0; }
537
+ }
538
+ .clx-anim--lightSpeedOutRight { animation-name: lightSpeedOutRight; animation-timing-function: ease-in; }
539
+
540
+ @keyframes lightSpeedOutLeft {
541
+ from { opacity: 1; }
542
+ to { transform: translate3d(-100%, 0, 0) skewX(-30deg); opacity: 0; }
543
+ }
544
+ .clx-anim--lightSpeedOutLeft { animation-name: lightSpeedOutLeft; animation-timing-function: ease-in; }
545
+
546
+ /* ═══════════════════════════════════════════════════════════════════════════════
547
+ ROTATING ENTRANCES
548
+ ═══════════════════════════════════════════════════════════════════════════════ */
549
+
550
+ @keyframes rotateIn {
551
+ from { transform: rotate3d(0, 0, 1, -200deg); opacity: 0; }
552
+ to { transform: translate3d(0, 0, 0); opacity: 1; }
553
+ }
554
+ .clx-anim--rotateIn { animation-name: rotateIn; transform-origin: center; }
555
+
556
+ @keyframes rotateInDownLeft {
557
+ from { transform: rotate3d(0, 0, 1, -45deg); opacity: 0; }
558
+ to { transform: translate3d(0, 0, 0); opacity: 1; }
559
+ }
560
+ .clx-anim--rotateInDownLeft { animation-name: rotateInDownLeft; transform-origin: left bottom; }
561
+
562
+ @keyframes rotateInDownRight {
563
+ from { transform: rotate3d(0, 0, 1, 45deg); opacity: 0; }
564
+ to { transform: translate3d(0, 0, 0); opacity: 1; }
565
+ }
566
+ .clx-anim--rotateInDownRight { animation-name: rotateInDownRight; transform-origin: right bottom; }
567
+
568
+ @keyframes rotateInUpLeft {
569
+ from { transform: rotate3d(0, 0, 1, 45deg); opacity: 0; }
570
+ to { transform: translate3d(0, 0, 0); opacity: 1; }
571
+ }
572
+ .clx-anim--rotateInUpLeft { animation-name: rotateInUpLeft; transform-origin: left bottom; }
573
+
574
+ @keyframes rotateInUpRight {
575
+ from { transform: rotate3d(0, 0, 1, -90deg); opacity: 0; }
576
+ to { transform: translate3d(0, 0, 0); opacity: 1; }
577
+ }
578
+ .clx-anim--rotateInUpRight { animation-name: rotateInUpRight; transform-origin: right bottom; }
579
+
580
+ /* ═══════════════════════════════════════════════════════════════════════════════
581
+ ROTATING EXITS
582
+ ═══════════════════════════════════════════════════════════════════════════════ */
583
+
584
+ @keyframes rotateOut {
585
+ from { opacity: 1; }
586
+ to { transform: rotate3d(0, 0, 1, 200deg); opacity: 0; }
587
+ }
588
+ .clx-anim--rotateOut { animation-name: rotateOut; transform-origin: center; }
589
+
590
+ @keyframes rotateOutDownLeft {
591
+ from { opacity: 1; }
592
+ to { transform: rotate3d(0, 0, 1, 45deg); opacity: 0; }
593
+ }
594
+ .clx-anim--rotateOutDownLeft { animation-name: rotateOutDownLeft; transform-origin: left bottom; }
595
+
596
+ @keyframes rotateOutDownRight {
597
+ from { opacity: 1; }
598
+ to { transform: rotate3d(0, 0, 1, -45deg); opacity: 0; }
599
+ }
600
+ .clx-anim--rotateOutDownRight { animation-name: rotateOutDownRight; transform-origin: right bottom; }
601
+
602
+ @keyframes rotateOutUpLeft {
603
+ from { opacity: 1; }
604
+ to { transform: rotate3d(0, 0, 1, -45deg); opacity: 0; }
605
+ }
606
+ .clx-anim--rotateOutUpLeft { animation-name: rotateOutUpLeft; transform-origin: left bottom; }
607
+
608
+ @keyframes rotateOutUpRight {
609
+ from { opacity: 1; }
610
+ to { transform: rotate3d(0, 0, 1, 90deg); opacity: 0; }
611
+ }
612
+ .clx-anim--rotateOutUpRight { animation-name: rotateOutUpRight; transform-origin: right bottom; }
613
+
614
+ /* ═══════════════════════════════════════════════════════════════════════════════
615
+ SPECIAL
616
+ ═══════════════════════════════════════════════════════════════════════════════ */
617
+
618
+ @keyframes hinge {
619
+ 0% { animation-timing-function: ease-in-out; }
620
+ 20%, 60% { transform: rotate3d(0, 0, 1, 80deg); animation-timing-function: ease-in-out; }
621
+ 40%, 80% { transform: rotate3d(0, 0, 1, 60deg); animation-timing-function: ease-in-out; opacity: 1; }
622
+ to { transform: translate3d(0, 700px, 0); opacity: 0; }
623
+ }
624
+ .clx-anim--hinge { animation-name: hinge; animation-duration: 2s; transform-origin: top left; }
625
+
626
+ @keyframes jackInTheBox {
627
+ from { opacity: 0; transform: scale(0.1) rotate(30deg); transform-origin: center bottom; }
628
+ 50% { transform: rotate(-10deg); }
629
+ 70% { transform: rotate(3deg); }
630
+ to { opacity: 1; transform: scale(1); }
631
+ }
632
+ .clx-anim--jackInTheBox { animation-name: jackInTheBox; }
633
+
634
+ @keyframes rollIn {
635
+ from { opacity: 0; transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); }
636
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
637
+ }
638
+ .clx-anim--rollIn { animation-name: rollIn; }
639
+
640
+ @keyframes rollOut {
641
+ from { opacity: 1; }
642
+ to { opacity: 0; transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); }
643
+ }
644
+ .clx-anim--rollOut { animation-name: rollOut; }
645
+
646
+ /* ═══════════════════════════════════════════════════════════════════════════════
647
+ ZOOMING ENTRANCES
648
+ ═══════════════════════════════════════════════════════════════════════════════ */
649
+
650
+ @keyframes zoomIn {
651
+ from { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
652
+ 50% { opacity: 1; }
653
+ }
654
+ .clx-anim--zoomIn { animation-name: zoomIn; }
655
+
656
+ @keyframes zoomInDown {
657
+ from { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
658
+ 60% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
659
+ }
660
+ .clx-anim--zoomInDown { animation-name: zoomInDown; }
661
+
662
+ @keyframes zoomInLeft {
663
+ from { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
664
+ 60% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
665
+ }
666
+ .clx-anim--zoomInLeft { animation-name: zoomInLeft; }
667
+
668
+ @keyframes zoomInRight {
669
+ from { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
670
+ 60% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
671
+ }
672
+ .clx-anim--zoomInRight { animation-name: zoomInRight; }
673
+
674
+ @keyframes zoomInUp {
675
+ from { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
676
+ 60% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
677
+ }
678
+ .clx-anim--zoomInUp { animation-name: zoomInUp; }
679
+
680
+ /* ═══════════════════════════════════════════════════════════════════════════════
681
+ ZOOMING EXITS
682
+ ═══════════════════════════════════════════════════════════════════════════════ */
683
+
684
+ @keyframes zoomOut {
685
+ from { opacity: 1; }
686
+ 50% { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
687
+ to { opacity: 0; }
688
+ }
689
+ .clx-anim--zoomOut { animation-name: zoomOut; }
690
+
691
+ @keyframes zoomOutDown {
692
+ 40% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
693
+ to { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
694
+ }
695
+ .clx-anim--zoomOutDown { animation-name: zoomOutDown; transform-origin: center bottom; }
696
+
697
+ @keyframes zoomOutLeft {
698
+ 40% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); }
699
+ to { opacity: 0; transform: scale(0.1) translate3d(-2000px, 0, 0); }
700
+ }
701
+ .clx-anim--zoomOutLeft { animation-name: zoomOutLeft; transform-origin: left center; }
702
+
703
+ @keyframes zoomOutRight {
704
+ 40% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); }
705
+ to { opacity: 0; transform: scale(0.1) translate3d(2000px, 0, 0); }
706
+ }
707
+ .clx-anim--zoomOutRight { animation-name: zoomOutRight; transform-origin: right center; }
708
+
709
+ @keyframes zoomOutUp {
710
+ 40% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
711
+ to { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
712
+ }
713
+ .clx-anim--zoomOutUp { animation-name: zoomOutUp; transform-origin: center bottom; }
714
+
715
+ /* ═══════════════════════════════════════════════════════════════════════════════
716
+ SLIDING ENTRANCES
717
+ ═══════════════════════════════════════════════════════════════════════════════ */
718
+
719
+ @keyframes slideInDown {
720
+ from { transform: translate3d(0, -100%, 0); visibility: visible; }
721
+ to { transform: translate3d(0, 0, 0); }
722
+ }
723
+ .clx-anim--slideInDown { animation-name: slideInDown; }
724
+
725
+ @keyframes slideInLeft {
726
+ from { transform: translate3d(-100%, 0, 0); visibility: visible; }
727
+ to { transform: translate3d(0, 0, 0); }
728
+ }
729
+ .clx-anim--slideInLeft { animation-name: slideInLeft; }
730
+
731
+ @keyframes slideInRight {
732
+ from { transform: translate3d(100%, 0, 0); visibility: visible; }
733
+ to { transform: translate3d(0, 0, 0); }
734
+ }
735
+ .clx-anim--slideInRight { animation-name: slideInRight; }
736
+
737
+ @keyframes slideInUp {
738
+ from { transform: translate3d(0, 100%, 0); visibility: visible; }
739
+ to { transform: translate3d(0, 0, 0); }
740
+ }
741
+ .clx-anim--slideInUp { animation-name: slideInUp; }
742
+
743
+ /* ═══════════════════════════════════════════════════════════════════════════════
744
+ SLIDING EXITS
745
+ ═══════════════════════════════════════════════════════════════════════════════ */
746
+
747
+ @keyframes slideOutDown {
748
+ from { transform: translate3d(0, 0, 0); }
749
+ to { visibility: hidden; transform: translate3d(0, 100%, 0); }
750
+ }
751
+ .clx-anim--slideOutDown { animation-name: slideOutDown; }
752
+
753
+ @keyframes slideOutLeft {
754
+ from { transform: translate3d(0, 0, 0); }
755
+ to { visibility: hidden; transform: translate3d(-100%, 0, 0); }
756
+ }
757
+ .clx-anim--slideOutLeft { animation-name: slideOutLeft; }
758
+
759
+ @keyframes slideOutRight {
760
+ from { transform: translate3d(0, 0, 0); }
761
+ to { visibility: hidden; transform: translate3d(100%, 0, 0); }
762
+ }
763
+ .clx-anim--slideOutRight { animation-name: slideOutRight; }
764
+
765
+ @keyframes slideOutUp {
766
+ from { transform: translate3d(0, 0, 0); }
767
+ to { visibility: hidden; transform: translate3d(0, -100%, 0); }
768
+ }
769
+ .clx-anim--slideOutUp { animation-name: slideOutUp; }