@bendyline/squisq-react 1.3.2 → 1.4.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.
Files changed (46) hide show
  1. package/README.md +57 -23
  2. package/dist/index.d.ts +131 -26
  3. package/dist/index.js +1475 -755
  4. package/dist/index.js.map +1 -1
  5. package/dist/squisq-player.css +1 -1
  6. package/dist/squisq-player.css.map +1 -1
  7. package/dist/squisq-player.global.js +49 -13
  8. package/dist/squisq-player.global.js.map +1 -1
  9. package/dist/standalone-source.js +1 -1
  10. package/dist/styles/index.css +2263 -0
  11. package/package.json +9 -5
  12. package/src/BlockRenderer.tsx +15 -7
  13. package/src/DocPlayer.tsx +222 -55
  14. package/src/DocPlayerWithSidebar.tsx +21 -9
  15. package/src/DocProgressBar.tsx +21 -3
  16. package/src/LinearDocView.tsx +69 -206
  17. package/src/MarkdownRenderer.tsx +182 -41
  18. package/src/MediaClipLayer.tsx +135 -0
  19. package/src/__tests__/DocPlayer.test.tsx +81 -0
  20. package/src/__tests__/DocPlayerStylesSentinel.test.tsx +41 -0
  21. package/src/__tests__/DocProgressBar.test.tsx +76 -0
  22. package/src/__tests__/LinearDocView.test.tsx +53 -1
  23. package/src/__tests__/MarkdownRenderer.test.tsx +113 -1
  24. package/src/__tests__/PathLayer.test.tsx +73 -0
  25. package/src/__tests__/fillStyle.test.tsx +112 -0
  26. package/src/__tests__/transitionStyles.test.ts +125 -0
  27. package/src/__tests__/useDocPlayback.transition.test.ts +70 -0
  28. package/src/__tests__/useJsonViewTokens.test.ts +41 -0
  29. package/src/__tests__/useSlideSwipe.test.ts +81 -0
  30. package/src/hooks/{AudioProvider.ts → AudioController.ts} +3 -3
  31. package/src/hooks/index.ts +7 -2
  32. package/src/hooks/useAudioSync.ts +19 -5
  33. package/src/hooks/useDocPlayback.ts +81 -100
  34. package/src/hooks/useMediaSchedule.ts +39 -0
  35. package/src/hooks/useSlideSwipe.ts +265 -0
  36. package/src/index.ts +8 -1
  37. package/src/jsonView/useJsonViewTokens.ts +6 -31
  38. package/src/layers/ImageLayer.tsx +11 -1
  39. package/src/layers/PathLayer.tsx +146 -0
  40. package/src/layers/ShapeLayer.tsx +27 -5
  41. package/src/layers/TextLayer.tsx +395 -22
  42. package/src/layers/VideoLayer.tsx +16 -9
  43. package/src/layers/index.ts +1 -0
  44. package/src/standalone-entry.tsx +1 -1
  45. package/src/styles/doc-animations.css +1936 -35
  46. package/src/utils/fillStyle.tsx +148 -0
@@ -0,0 +1,2263 @@
1
+ /* src/styles/doc-animations.css */
2
+ @keyframes slowZoomIn {
3
+ from {
4
+ transform: scale(1);
5
+ }
6
+ to {
7
+ transform: scale(1.15);
8
+ }
9
+ }
10
+ @keyframes slowZoomOut {
11
+ from {
12
+ transform: scale(1.15);
13
+ }
14
+ to {
15
+ transform: scale(1);
16
+ }
17
+ }
18
+ @keyframes slowZoomPanLeft {
19
+ from {
20
+ transform: translateX(0) scale(1.1);
21
+ }
22
+ to {
23
+ transform: translateX(-8%) scale(1.1);
24
+ }
25
+ }
26
+ @keyframes slowZoomPanRight {
27
+ from {
28
+ transform: translateX(-8%) scale(1.1);
29
+ }
30
+ to {
31
+ transform: translateX(0) scale(1.1);
32
+ }
33
+ }
34
+ @keyframes slowZoomPanUp {
35
+ from {
36
+ transform: translateY(0) scale(1.1);
37
+ }
38
+ to {
39
+ transform: translateY(-8%) scale(1.1);
40
+ }
41
+ }
42
+ @keyframes slowZoomPanDown {
43
+ from {
44
+ transform: translateY(-8%) scale(1.1);
45
+ }
46
+ to {
47
+ transform: translateY(0) scale(1.1);
48
+ }
49
+ }
50
+ @keyframes slowZoomCombinedPanLeft {
51
+ from {
52
+ transform: translateX(0) scale(1);
53
+ }
54
+ to {
55
+ transform: translateX(-5%) scale(1.12);
56
+ }
57
+ }
58
+ @keyframes slowZoomCombinedPanRight {
59
+ from {
60
+ transform: translateX(-5%) scale(1.12);
61
+ }
62
+ to {
63
+ transform: translateX(0) scale(1);
64
+ }
65
+ }
66
+ @keyframes fadeIn {
67
+ from {
68
+ opacity: 0;
69
+ }
70
+ to {
71
+ opacity: 1;
72
+ }
73
+ }
74
+ @keyframes fadeOut {
75
+ from {
76
+ opacity: 1;
77
+ }
78
+ to {
79
+ opacity: 0;
80
+ }
81
+ }
82
+ @keyframes fadeInUp {
83
+ from {
84
+ opacity: 0;
85
+ transform: translateY(20px);
86
+ }
87
+ to {
88
+ opacity: 1;
89
+ transform: translateY(0);
90
+ }
91
+ }
92
+ @keyframes fadeInDown {
93
+ from {
94
+ opacity: 0;
95
+ transform: translateY(-20px);
96
+ }
97
+ to {
98
+ opacity: 1;
99
+ transform: translateY(0);
100
+ }
101
+ }
102
+ @keyframes zoomIn {
103
+ from {
104
+ transform: scale(0.9);
105
+ opacity: 0;
106
+ }
107
+ to {
108
+ transform: scale(1);
109
+ opacity: 1;
110
+ }
111
+ }
112
+ @keyframes zoomOut {
113
+ from {
114
+ transform: scale(1);
115
+ opacity: 1;
116
+ }
117
+ to {
118
+ transform: scale(0.9);
119
+ opacity: 0;
120
+ }
121
+ }
122
+ @keyframes panLeft {
123
+ from {
124
+ transform: translateX(0);
125
+ }
126
+ to {
127
+ transform: translateX(-10%);
128
+ }
129
+ }
130
+ @keyframes panRight {
131
+ from {
132
+ transform: translateX(-10%);
133
+ }
134
+ to {
135
+ transform: translateX(0);
136
+ }
137
+ }
138
+ @keyframes slideInLeft {
139
+ from {
140
+ transform: translateX(-100%);
141
+ }
142
+ to {
143
+ transform: translateX(0);
144
+ }
145
+ }
146
+ @keyframes slideInRight {
147
+ from {
148
+ transform: translateX(100%);
149
+ }
150
+ to {
151
+ transform: translateX(0);
152
+ }
153
+ }
154
+ @keyframes slideOutLeft {
155
+ from {
156
+ transform: translateX(0);
157
+ }
158
+ to {
159
+ transform: translateX(-100%);
160
+ }
161
+ }
162
+ @keyframes slideOutRight {
163
+ from {
164
+ transform: translateX(0);
165
+ }
166
+ to {
167
+ transform: translateX(100%);
168
+ }
169
+ }
170
+ @keyframes slideInTop {
171
+ from {
172
+ transform: translateY(-100%);
173
+ }
174
+ to {
175
+ transform: translateY(0);
176
+ }
177
+ }
178
+ @keyframes slideInBottom {
179
+ from {
180
+ transform: translateY(100%);
181
+ }
182
+ to {
183
+ transform: translateY(0);
184
+ }
185
+ }
186
+ @keyframes slideOutTop {
187
+ from {
188
+ transform: translateY(0);
189
+ }
190
+ to {
191
+ transform: translateY(-100%);
192
+ }
193
+ }
194
+ @keyframes slideOutBottom {
195
+ from {
196
+ transform: translateY(0);
197
+ }
198
+ to {
199
+ transform: translateY(100%);
200
+ }
201
+ }
202
+ @keyframes transitionZoomIn {
203
+ from {
204
+ opacity: 0;
205
+ transform: scale(0.82);
206
+ }
207
+ to {
208
+ opacity: 1;
209
+ transform: scale(1);
210
+ }
211
+ }
212
+ @keyframes transitionZoomOut {
213
+ from {
214
+ opacity: 1;
215
+ transform: scale(1);
216
+ }
217
+ to {
218
+ opacity: 0;
219
+ transform: scale(1.08);
220
+ }
221
+ }
222
+ @keyframes transitionFlipIn {
223
+ from {
224
+ opacity: 0;
225
+ transform: perspective(1400px) rotateY(-72deg) scale(0.96);
226
+ }
227
+ to {
228
+ opacity: 1;
229
+ transform: perspective(1400px) rotateY(0deg) scale(1);
230
+ }
231
+ }
232
+ @keyframes transitionFlipOut {
233
+ from {
234
+ opacity: 1;
235
+ transform: perspective(1400px) rotateY(0deg) scale(1);
236
+ }
237
+ to {
238
+ opacity: 0;
239
+ transform: perspective(1400px) rotateY(56deg) scale(0.96);
240
+ }
241
+ }
242
+ @keyframes transitionRotateIn {
243
+ from {
244
+ opacity: 0;
245
+ transform: rotate(-8deg) scale(0.88);
246
+ }
247
+ to {
248
+ opacity: 1;
249
+ transform: rotate(0deg) scale(1);
250
+ }
251
+ }
252
+ @keyframes transitionRotateOut {
253
+ from {
254
+ opacity: 1;
255
+ transform: rotate(0deg) scale(1);
256
+ }
257
+ to {
258
+ opacity: 0;
259
+ transform: rotate(8deg) scale(1.04);
260
+ }
261
+ }
262
+ @keyframes transitionDissolveIn {
263
+ 0% {
264
+ opacity: 0;
265
+ filter: blur(10px);
266
+ }
267
+ 60% {
268
+ opacity: 0.72;
269
+ }
270
+ 100% {
271
+ opacity: 1;
272
+ filter: blur(0);
273
+ }
274
+ }
275
+ @keyframes transitionDissolveOut {
276
+ 0% {
277
+ opacity: 1;
278
+ filter: blur(0);
279
+ }
280
+ 100% {
281
+ opacity: 0;
282
+ filter: blur(12px);
283
+ }
284
+ }
285
+ @keyframes transitionMorphIn {
286
+ from {
287
+ opacity: 0;
288
+ filter: blur(16px) saturate(0.8);
289
+ transform: scale(1.025);
290
+ }
291
+ to {
292
+ opacity: 1;
293
+ filter: blur(0) saturate(1);
294
+ transform: scale(1);
295
+ }
296
+ }
297
+ @keyframes transitionMorphOut {
298
+ from {
299
+ opacity: 1;
300
+ filter: blur(0) saturate(1);
301
+ transform: scale(1);
302
+ }
303
+ to {
304
+ opacity: 0;
305
+ filter: blur(16px) saturate(0.85);
306
+ transform: scale(0.985);
307
+ }
308
+ }
309
+ @keyframes transitionHold {
310
+ from, to {
311
+ opacity: 1;
312
+ transform: none;
313
+ }
314
+ }
315
+ @keyframes transitionWipeLeftIn {
316
+ from {
317
+ clip-path: inset(0 100% 0 0);
318
+ }
319
+ to {
320
+ clip-path: inset(0);
321
+ }
322
+ }
323
+ @keyframes transitionWipeLeftOut {
324
+ from {
325
+ clip-path: inset(0);
326
+ }
327
+ to {
328
+ clip-path: inset(0 0 0 100%);
329
+ }
330
+ }
331
+ @keyframes transitionWipeRightIn {
332
+ from {
333
+ clip-path: inset(0 0 0 100%);
334
+ }
335
+ to {
336
+ clip-path: inset(0);
337
+ }
338
+ }
339
+ @keyframes transitionWipeRightOut {
340
+ from {
341
+ clip-path: inset(0);
342
+ }
343
+ to {
344
+ clip-path: inset(0 100% 0 0);
345
+ }
346
+ }
347
+ @keyframes transitionWipeUpIn {
348
+ from {
349
+ clip-path: inset(100% 0 0 0);
350
+ }
351
+ to {
352
+ clip-path: inset(0);
353
+ }
354
+ }
355
+ @keyframes transitionWipeUpOut {
356
+ from {
357
+ clip-path: inset(0);
358
+ }
359
+ to {
360
+ clip-path: inset(0 0 100% 0);
361
+ }
362
+ }
363
+ @keyframes transitionWipeDownIn {
364
+ from {
365
+ clip-path: inset(0 0 100% 0);
366
+ }
367
+ to {
368
+ clip-path: inset(0);
369
+ }
370
+ }
371
+ @keyframes transitionWipeDownOut {
372
+ from {
373
+ clip-path: inset(0);
374
+ }
375
+ to {
376
+ clip-path: inset(100% 0 0 0);
377
+ }
378
+ }
379
+ @keyframes transitionSplitHorizontalIn {
380
+ from {
381
+ clip-path: inset(0 50% 0 50%);
382
+ }
383
+ to {
384
+ clip-path: inset(0);
385
+ }
386
+ }
387
+ @keyframes transitionSplitHorizontalOut {
388
+ from {
389
+ clip-path: inset(0);
390
+ }
391
+ to {
392
+ clip-path: inset(0 50% 0 50%);
393
+ }
394
+ }
395
+ @keyframes transitionSplitVerticalIn {
396
+ from {
397
+ clip-path: inset(50% 0 50% 0);
398
+ }
399
+ to {
400
+ clip-path: inset(0);
401
+ }
402
+ }
403
+ @keyframes transitionSplitVerticalOut {
404
+ from {
405
+ clip-path: inset(0);
406
+ }
407
+ to {
408
+ clip-path: inset(50% 0 50% 0);
409
+ }
410
+ }
411
+ @keyframes transitionCircleIn {
412
+ from {
413
+ clip-path: circle(0% at 50% 50%);
414
+ opacity: 0.4;
415
+ }
416
+ to {
417
+ clip-path: circle(75% at 50% 50%);
418
+ opacity: 1;
419
+ }
420
+ }
421
+ @keyframes transitionCircleOut {
422
+ from {
423
+ clip-path: circle(75% at 50% 50%);
424
+ opacity: 1;
425
+ }
426
+ to {
427
+ clip-path: circle(0% at 50% 50%);
428
+ opacity: 0;
429
+ }
430
+ }
431
+ @keyframes transitionDiamondIn {
432
+ from {
433
+ clip-path: polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%);
434
+ opacity: 0.35;
435
+ }
436
+ to {
437
+ clip-path: polygon(50% -30%, 130% 50%, 50% 130%, -30% 50%);
438
+ opacity: 1;
439
+ }
440
+ }
441
+ @keyframes transitionDiamondOut {
442
+ from {
443
+ clip-path: polygon(50% -30%, 130% 50%, 50% 130%, -30% 50%);
444
+ opacity: 1;
445
+ }
446
+ to {
447
+ clip-path: polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%);
448
+ opacity: 0;
449
+ }
450
+ }
451
+ @keyframes transitionPlusIn {
452
+ 0% {
453
+ clip-path: polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%);
454
+ opacity: 0.45;
455
+ }
456
+ 70% {
457
+ clip-path: polygon(43% 0, 57% 0, 57% 43%, 100% 43%, 100% 57%, 57% 57%, 57% 100%, 43% 100%, 43% 57%, 0 57%, 0 43%, 43% 43%);
458
+ opacity: 1;
459
+ }
460
+ 100% {
461
+ clip-path: inset(0);
462
+ opacity: 1;
463
+ }
464
+ }
465
+ @keyframes transitionPlusOut {
466
+ 0% {
467
+ clip-path: inset(0);
468
+ opacity: 1;
469
+ }
470
+ 100% {
471
+ clip-path: polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%);
472
+ opacity: 0;
473
+ }
474
+ }
475
+ @keyframes transitionFlashIn {
476
+ 0% {
477
+ opacity: 0;
478
+ filter: brightness(2.8) contrast(1.5);
479
+ transform: scale(1.04);
480
+ }
481
+ 42% {
482
+ opacity: 1;
483
+ filter: brightness(3.5) contrast(1.8);
484
+ }
485
+ 100% {
486
+ opacity: 1;
487
+ filter: brightness(1) contrast(1);
488
+ transform: scale(1);
489
+ }
490
+ }
491
+ @keyframes transitionFlashOut {
492
+ 0% {
493
+ opacity: 1;
494
+ filter: brightness(1) contrast(1);
495
+ }
496
+ 55% {
497
+ opacity: 0.9;
498
+ filter: brightness(3) contrast(1.6);
499
+ }
500
+ 100% {
501
+ opacity: 0;
502
+ filter: brightness(0.4) contrast(1);
503
+ }
504
+ }
505
+ @keyframes transitionNewsflashIn {
506
+ 0% {
507
+ opacity: 0;
508
+ filter: brightness(3) contrast(1.8);
509
+ transform: scale(0.72) rotate(-2deg);
510
+ }
511
+ 45% {
512
+ opacity: 1;
513
+ filter: brightness(2.8) contrast(1.6);
514
+ transform: scale(1.08) rotate(1deg);
515
+ }
516
+ 100% {
517
+ opacity: 1;
518
+ filter: brightness(1) contrast(1);
519
+ transform: scale(1) rotate(0deg);
520
+ }
521
+ }
522
+ @keyframes transitionNewsflashOut {
523
+ from {
524
+ opacity: 1;
525
+ filter: brightness(1) contrast(1);
526
+ transform: scale(1);
527
+ }
528
+ to {
529
+ opacity: 0;
530
+ filter: brightness(2.4) contrast(1.6);
531
+ transform: scale(1.18) rotate(2deg);
532
+ }
533
+ }
534
+ @keyframes transitionFallOverIn {
535
+ from {
536
+ opacity: 0;
537
+ transform: perspective(1200px) rotateX(-72deg) translateY(-8%);
538
+ transform-origin: 50% 100%;
539
+ }
540
+ to {
541
+ opacity: 1;
542
+ transform: perspective(1200px) rotateX(0deg) translateY(0);
543
+ transform-origin: 50% 100%;
544
+ }
545
+ }
546
+ @keyframes transitionFallOverOut {
547
+ from {
548
+ opacity: 1;
549
+ transform: perspective(1200px) rotateX(0deg) translateY(0);
550
+ transform-origin: 50% 100%;
551
+ }
552
+ to {
553
+ opacity: 0;
554
+ transform: perspective(1200px) rotateX(76deg) translateY(8%);
555
+ transform-origin: 50% 100%;
556
+ }
557
+ }
558
+ @keyframes transitionDrapeIn {
559
+ from {
560
+ opacity: 0;
561
+ transform: perspective(1200px) rotateX(-42deg) skewX(-8deg) scaleY(0.82);
562
+ transform-origin: 50% 0;
563
+ }
564
+ to {
565
+ opacity: 1;
566
+ transform: perspective(1200px) rotateX(0deg) skewX(0deg) scaleY(1);
567
+ transform-origin: 50% 0;
568
+ }
569
+ }
570
+ @keyframes transitionDrapeOut {
571
+ from {
572
+ opacity: 1;
573
+ transform: perspective(1200px) rotateX(0deg) skewX(0deg) scaleY(1);
574
+ transform-origin: 50% 0;
575
+ }
576
+ to {
577
+ opacity: 0;
578
+ transform: perspective(1200px) rotateX(48deg) skewX(7deg) scaleY(0.74);
579
+ transform-origin: 50% 0;
580
+ }
581
+ }
582
+ @keyframes transitionCurtainsIn {
583
+ from {
584
+ opacity: 0.4;
585
+ transform: scaleX(0.04);
586
+ filter: brightness(0.75);
587
+ }
588
+ to {
589
+ opacity: 1;
590
+ transform: scaleX(1);
591
+ filter: brightness(1);
592
+ }
593
+ }
594
+ @keyframes transitionCurtainsOut {
595
+ from {
596
+ opacity: 1;
597
+ transform: scaleX(1);
598
+ filter: brightness(1);
599
+ }
600
+ to {
601
+ opacity: 0.35;
602
+ transform: scaleX(0.04);
603
+ filter: brightness(0.55);
604
+ }
605
+ }
606
+ @keyframes transitionWindIn {
607
+ from {
608
+ opacity: 0;
609
+ filter: blur(14px);
610
+ transform: translateX(24%) skewX(-14deg);
611
+ }
612
+ to {
613
+ opacity: 1;
614
+ filter: blur(0);
615
+ transform: translateX(0) skewX(0);
616
+ }
617
+ }
618
+ @keyframes transitionWindOut {
619
+ from {
620
+ opacity: 1;
621
+ filter: blur(0);
622
+ transform: translateX(0) skewX(0);
623
+ }
624
+ to {
625
+ opacity: 0;
626
+ filter: blur(14px);
627
+ transform: translateX(-24%) skewX(14deg);
628
+ }
629
+ }
630
+ @keyframes transitionPrestigeIn {
631
+ from {
632
+ opacity: 0;
633
+ filter: brightness(1.8) saturate(0.7);
634
+ transform: perspective(1200px) translateZ(-180px) scale(0.82);
635
+ }
636
+ to {
637
+ opacity: 1;
638
+ filter: brightness(1) saturate(1);
639
+ transform: perspective(1200px) translateZ(0) scale(1);
640
+ }
641
+ }
642
+ @keyframes transitionPrestigeOut {
643
+ from {
644
+ opacity: 1;
645
+ filter: brightness(1) saturate(1);
646
+ transform: perspective(1200px) translateZ(0) scale(1);
647
+ }
648
+ to {
649
+ opacity: 0;
650
+ filter: brightness(1.6) saturate(0.75);
651
+ transform: perspective(1200px) translateZ(140px) scale(1.06);
652
+ }
653
+ }
654
+ @keyframes transitionFractureIn {
655
+ 0% {
656
+ opacity: 0;
657
+ filter: contrast(1.8) brightness(1.4);
658
+ clip-path: polygon(0 0, 48% 0, 52% 24%, 100% 0, 100% 100%, 55% 78%, 45% 100%, 0 100%);
659
+ transform: skewX(-6deg) scale(1.03);
660
+ }
661
+ 100% {
662
+ opacity: 1;
663
+ filter: contrast(1) brightness(1);
664
+ clip-path: inset(0);
665
+ transform: skewX(0) scale(1);
666
+ }
667
+ }
668
+ @keyframes transitionFractureOut {
669
+ from {
670
+ opacity: 1;
671
+ filter: contrast(1) brightness(1);
672
+ clip-path: inset(0);
673
+ transform: skewX(0) scale(1);
674
+ }
675
+ to {
676
+ opacity: 0;
677
+ filter: contrast(1.8) brightness(1.2);
678
+ clip-path: polygon(0 0, 42% 8%, 56% 28%, 100% 0, 100% 100%, 58% 72%, 40% 94%, 0 100%);
679
+ transform: skewX(8deg) scale(1.05);
680
+ }
681
+ }
682
+ @keyframes transitionCrushIn {
683
+ from {
684
+ opacity: 0;
685
+ transform: scaleX(1.22) scaleY(0.08);
686
+ filter: contrast(1.4);
687
+ }
688
+ to {
689
+ opacity: 1;
690
+ transform: scaleX(1) scaleY(1);
691
+ filter: contrast(1);
692
+ }
693
+ }
694
+ @keyframes transitionCrushOut {
695
+ from {
696
+ opacity: 1;
697
+ transform: scaleX(1) scaleY(1);
698
+ filter: contrast(1);
699
+ }
700
+ to {
701
+ opacity: 0;
702
+ transform: scaleX(1.28) scaleY(0.04);
703
+ filter: contrast(1.5);
704
+ }
705
+ }
706
+ @keyframes transitionPeelIn {
707
+ from {
708
+ opacity: 0;
709
+ transform: perspective(1400px) rotateY(-78deg) skewY(8deg);
710
+ transform-origin: 0 50%;
711
+ }
712
+ to {
713
+ opacity: 1;
714
+ transform: perspective(1400px) rotateY(0deg) skewY(0deg);
715
+ transform-origin: 0 50%;
716
+ }
717
+ }
718
+ @keyframes transitionPeelOut {
719
+ from {
720
+ opacity: 1;
721
+ transform: perspective(1400px) rotateY(0deg) skewY(0deg);
722
+ transform-origin: 100% 50%;
723
+ }
724
+ to {
725
+ opacity: 0;
726
+ transform: perspective(1400px) rotateY(82deg) skewY(-8deg);
727
+ transform-origin: 100% 50%;
728
+ }
729
+ }
730
+ @keyframes transitionPageCurlIn {
731
+ from {
732
+ opacity: 0;
733
+ transform: perspective(1400px) rotateY(-64deg) rotateZ(-2deg);
734
+ transform-origin: 0 50%;
735
+ filter: brightness(0.85);
736
+ }
737
+ to {
738
+ opacity: 1;
739
+ transform: perspective(1400px) rotateY(0deg) rotateZ(0deg);
740
+ transform-origin: 0 50%;
741
+ filter: brightness(1);
742
+ }
743
+ }
744
+ @keyframes transitionPageCurlOut {
745
+ from {
746
+ opacity: 1;
747
+ transform: perspective(1400px) rotateY(0deg) rotateZ(0deg);
748
+ transform-origin: 100% 50%;
749
+ filter: brightness(1);
750
+ }
751
+ to {
752
+ opacity: 0;
753
+ transform: perspective(1400px) rotateY(68deg) rotateZ(2deg);
754
+ transform-origin: 100% 50%;
755
+ filter: brightness(0.8);
756
+ }
757
+ }
758
+ @keyframes transitionAirplaneIn {
759
+ from {
760
+ opacity: 0;
761
+ transform: translate(-40%, 30%) rotate(-18deg) scale(0.72);
762
+ filter: blur(2px);
763
+ }
764
+ to {
765
+ opacity: 1;
766
+ transform: translate(0, 0) rotate(0deg) scale(1);
767
+ filter: blur(0);
768
+ }
769
+ }
770
+ @keyframes transitionAirplaneOut {
771
+ from {
772
+ opacity: 1;
773
+ transform: translate(0, 0) rotate(0deg) scale(1);
774
+ filter: blur(0);
775
+ }
776
+ to {
777
+ opacity: 0;
778
+ transform: translate(42%, -28%) rotate(18deg) scale(0.72);
779
+ filter: blur(2px);
780
+ }
781
+ }
782
+ @keyframes transitionOrigamiIn {
783
+ from {
784
+ opacity: 0;
785
+ transform: perspective(1400px) rotateX(58deg) rotateY(-42deg) scale(0.86);
786
+ filter: brightness(0.85);
787
+ }
788
+ to {
789
+ opacity: 1;
790
+ transform: perspective(1400px) rotateX(0deg) rotateY(0deg) scale(1);
791
+ filter: brightness(1);
792
+ }
793
+ }
794
+ @keyframes transitionOrigamiOut {
795
+ from {
796
+ opacity: 1;
797
+ transform: perspective(1400px) rotateX(0deg) rotateY(0deg) scale(1);
798
+ filter: brightness(1);
799
+ }
800
+ to {
801
+ opacity: 0;
802
+ transform: perspective(1400px) rotateX(-58deg) rotateY(42deg) scale(0.82);
803
+ filter: brightness(0.82);
804
+ }
805
+ }
806
+ @keyframes transitionRippleIn {
807
+ 0% {
808
+ opacity: 0;
809
+ filter: blur(10px);
810
+ transform: scale(0.86);
811
+ clip-path: circle(0% at 50% 50%);
812
+ }
813
+ 60% {
814
+ opacity: 0.88;
815
+ filter: blur(3px);
816
+ transform: scale(1.035);
817
+ clip-path: circle(65% at 50% 50%);
818
+ }
819
+ 100% {
820
+ opacity: 1;
821
+ filter: blur(0);
822
+ transform: scale(1);
823
+ clip-path: circle(75% at 50% 50%);
824
+ }
825
+ }
826
+ @keyframes transitionRippleOut {
827
+ from {
828
+ opacity: 1;
829
+ filter: blur(0);
830
+ transform: scale(1);
831
+ clip-path: circle(75% at 50% 50%);
832
+ }
833
+ to {
834
+ opacity: 0;
835
+ filter: blur(10px);
836
+ transform: scale(1.08);
837
+ clip-path: circle(0% at 50% 50%);
838
+ }
839
+ }
840
+ @keyframes transitionTexturedIn {
841
+ 0% {
842
+ opacity: 0.12;
843
+ filter: contrast(1.6);
844
+ }
845
+ 88% {
846
+ opacity: 1;
847
+ filter: contrast(1.05);
848
+ }
849
+ 100% {
850
+ opacity: 1;
851
+ filter: contrast(1);
852
+ -webkit-mask-image: none;
853
+ mask-image: none;
854
+ }
855
+ }
856
+ @keyframes transitionTexturedOut {
857
+ from {
858
+ opacity: 1;
859
+ filter: contrast(1);
860
+ }
861
+ to {
862
+ opacity: 0;
863
+ filter: contrast(1.7);
864
+ }
865
+ }
866
+ @keyframes transitionVortexIn {
867
+ from {
868
+ opacity: 0;
869
+ transform: rotate(-110deg) scale(0.28);
870
+ filter: blur(8px);
871
+ }
872
+ to {
873
+ opacity: 1;
874
+ transform: rotate(0deg) scale(1);
875
+ filter: blur(0);
876
+ }
877
+ }
878
+ @keyframes transitionVortexOut {
879
+ from {
880
+ opacity: 1;
881
+ transform: rotate(0deg) scale(1);
882
+ filter: blur(0);
883
+ }
884
+ to {
885
+ opacity: 0;
886
+ transform: rotate(120deg) scale(0.2);
887
+ filter: blur(10px);
888
+ }
889
+ }
890
+ @keyframes transitionShredIn {
891
+ from {
892
+ opacity: 0;
893
+ clip-path: inset(0 42% 0 42%);
894
+ transform: translateY(-9%) skewX(-8deg);
895
+ filter: contrast(1.7);
896
+ }
897
+ to {
898
+ opacity: 1;
899
+ clip-path: inset(0);
900
+ transform: translateY(0) skewX(0);
901
+ filter: contrast(1);
902
+ }
903
+ }
904
+ @keyframes transitionShredOut {
905
+ from {
906
+ opacity: 1;
907
+ clip-path: inset(0);
908
+ transform: translateY(0) skewX(0);
909
+ filter: contrast(1);
910
+ }
911
+ to {
912
+ opacity: 0;
913
+ clip-path: inset(0 44% 0 44%);
914
+ transform: translateY(11%) skewX(8deg);
915
+ filter: contrast(1.8);
916
+ }
917
+ }
918
+ @keyframes transitionSwitchIn {
919
+ from {
920
+ opacity: 0;
921
+ transform: perspective(1400px) rotateY(-48deg) translateX(18%);
922
+ }
923
+ to {
924
+ opacity: 1;
925
+ transform: perspective(1400px) rotateY(0deg) translateX(0);
926
+ }
927
+ }
928
+ @keyframes transitionSwitchOut {
929
+ from {
930
+ opacity: 1;
931
+ transform: perspective(1400px) rotateY(0deg) translateX(0);
932
+ }
933
+ to {
934
+ opacity: 0;
935
+ transform: perspective(1400px) rotateY(48deg) translateX(-18%);
936
+ }
937
+ }
938
+ @keyframes transitionCubeIn {
939
+ from {
940
+ opacity: 0;
941
+ transform: perspective(1200px) rotateY(-86deg) translateX(44%);
942
+ transform-origin: 0 50%;
943
+ }
944
+ to {
945
+ opacity: 1;
946
+ transform: perspective(1200px) rotateY(0deg) translateX(0);
947
+ transform-origin: 0 50%;
948
+ }
949
+ }
950
+ @keyframes transitionCubeOut {
951
+ from {
952
+ opacity: 1;
953
+ transform: perspective(1200px) rotateY(0deg) translateX(0);
954
+ transform-origin: 100% 50%;
955
+ }
956
+ to {
957
+ opacity: 0;
958
+ transform: perspective(1200px) rotateY(86deg) translateX(-44%);
959
+ transform-origin: 100% 50%;
960
+ }
961
+ }
962
+ @keyframes transitionDoorsIn {
963
+ from {
964
+ opacity: 0.2;
965
+ transform: perspective(1200px) scaleX(0.04);
966
+ filter: brightness(0.7);
967
+ }
968
+ to {
969
+ opacity: 1;
970
+ transform: perspective(1200px) scaleX(1);
971
+ filter: brightness(1);
972
+ }
973
+ }
974
+ @keyframes transitionDoorsOut {
975
+ from {
976
+ opacity: 1;
977
+ transform: perspective(1200px) scaleX(1);
978
+ filter: brightness(1);
979
+ }
980
+ to {
981
+ opacity: 0.2;
982
+ transform: perspective(1200px) scaleX(0.04);
983
+ filter: brightness(0.65);
984
+ }
985
+ }
986
+ @keyframes transitionBoxIn {
987
+ from {
988
+ opacity: 0.2;
989
+ transform: scale(0.18);
990
+ clip-path: inset(38%);
991
+ }
992
+ to {
993
+ opacity: 1;
994
+ transform: scale(1);
995
+ clip-path: inset(0);
996
+ }
997
+ }
998
+ @keyframes transitionBoxOut {
999
+ from {
1000
+ opacity: 1;
1001
+ transform: scale(1);
1002
+ clip-path: inset(0);
1003
+ }
1004
+ to {
1005
+ opacity: 0;
1006
+ transform: scale(0.18);
1007
+ clip-path: inset(38%);
1008
+ }
1009
+ }
1010
+ @keyframes transitionGalleryIn {
1011
+ from {
1012
+ opacity: 0;
1013
+ transform: translateX(28%) scale(0.84);
1014
+ filter: brightness(0.82);
1015
+ }
1016
+ to {
1017
+ opacity: 1;
1018
+ transform: translateX(0) scale(1);
1019
+ filter: brightness(1);
1020
+ }
1021
+ }
1022
+ @keyframes transitionGalleryOut {
1023
+ from {
1024
+ opacity: 1;
1025
+ transform: translateX(0) scale(1);
1026
+ filter: brightness(1);
1027
+ }
1028
+ to {
1029
+ opacity: 0;
1030
+ transform: translateX(-28%) scale(0.84);
1031
+ filter: brightness(0.82);
1032
+ }
1033
+ }
1034
+ @keyframes transitionFerrisIn {
1035
+ from {
1036
+ opacity: 0;
1037
+ transform: translateY(42%) rotate(-34deg) scale(0.78);
1038
+ transform-origin: 50% 140%;
1039
+ }
1040
+ to {
1041
+ opacity: 1;
1042
+ transform: translateY(0) rotate(0deg) scale(1);
1043
+ transform-origin: 50% 140%;
1044
+ }
1045
+ }
1046
+ @keyframes transitionFerrisOut {
1047
+ from {
1048
+ opacity: 1;
1049
+ transform: translateY(0) rotate(0deg) scale(1);
1050
+ transform-origin: 50% 140%;
1051
+ }
1052
+ to {
1053
+ opacity: 0;
1054
+ transform: translateY(-42%) rotate(34deg) scale(0.78);
1055
+ transform-origin: 50% 140%;
1056
+ }
1057
+ }
1058
+ @keyframes transitionWindowIn {
1059
+ from {
1060
+ opacity: 0.35;
1061
+ clip-path: inset(50% 50% 50% 50%);
1062
+ transform: scale(1.08);
1063
+ }
1064
+ to {
1065
+ opacity: 1;
1066
+ clip-path: inset(0);
1067
+ transform: scale(1);
1068
+ }
1069
+ }
1070
+ @keyframes transitionWindowOut {
1071
+ from {
1072
+ opacity: 1;
1073
+ clip-path: inset(0);
1074
+ transform: scale(1);
1075
+ }
1076
+ to {
1077
+ opacity: 0;
1078
+ clip-path: inset(50% 50% 50% 50%);
1079
+ transform: scale(1.08);
1080
+ }
1081
+ }
1082
+ @keyframes transitionOrbitIn {
1083
+ from {
1084
+ opacity: 0;
1085
+ transform: rotate(-42deg) translateX(18%) scale(0.76);
1086
+ transform-origin: 50% 50%;
1087
+ }
1088
+ to {
1089
+ opacity: 1;
1090
+ transform: rotate(0deg) translateX(0) scale(1);
1091
+ transform-origin: 50% 50%;
1092
+ }
1093
+ }
1094
+ @keyframes transitionOrbitOut {
1095
+ from {
1096
+ opacity: 1;
1097
+ transform: rotate(0deg) translateX(0) scale(1);
1098
+ transform-origin: 50% 50%;
1099
+ }
1100
+ to {
1101
+ opacity: 0;
1102
+ transform: rotate(42deg) translateX(-18%) scale(0.76);
1103
+ transform-origin: 50% 50%;
1104
+ }
1105
+ }
1106
+ @keyframes transitionFlyThroughIn {
1107
+ from {
1108
+ opacity: 0;
1109
+ transform: perspective(1200px) translateZ(-520px) scale(0.56);
1110
+ filter: blur(4px);
1111
+ }
1112
+ to {
1113
+ opacity: 1;
1114
+ transform: perspective(1200px) translateZ(0) scale(1);
1115
+ filter: blur(0);
1116
+ }
1117
+ }
1118
+ @keyframes transitionFlyThroughOut {
1119
+ from {
1120
+ opacity: 1;
1121
+ transform: perspective(1200px) translateZ(0) scale(1);
1122
+ filter: blur(0);
1123
+ }
1124
+ to {
1125
+ opacity: 0;
1126
+ transform: perspective(1200px) translateZ(420px) scale(1.28);
1127
+ filter: blur(5px);
1128
+ }
1129
+ }
1130
+ @keyframes transitionWheelIn {
1131
+ from {
1132
+ opacity: 0;
1133
+ transform: rotate(-58deg) scale(0.7);
1134
+ clip-path: circle(0% at 50% 50%);
1135
+ }
1136
+ to {
1137
+ opacity: 1;
1138
+ transform: rotate(0deg) scale(1);
1139
+ clip-path: circle(75% at 50% 50%);
1140
+ }
1141
+ }
1142
+ @keyframes transitionWheelOut {
1143
+ from {
1144
+ opacity: 1;
1145
+ transform: rotate(0deg) scale(1);
1146
+ clip-path: circle(75% at 50% 50%);
1147
+ }
1148
+ to {
1149
+ opacity: 0;
1150
+ transform: rotate(58deg) scale(0.7);
1151
+ clip-path: circle(0% at 50% 50%);
1152
+ }
1153
+ }
1154
+ @keyframes transitionWheelReverseIn {
1155
+ from {
1156
+ opacity: 0;
1157
+ transform: rotate(58deg) scale(0.7);
1158
+ clip-path: circle(0% at 50% 50%);
1159
+ }
1160
+ to {
1161
+ opacity: 1;
1162
+ transform: rotate(0deg) scale(1);
1163
+ clip-path: circle(75% at 50% 50%);
1164
+ }
1165
+ }
1166
+ @keyframes transitionWheelReverseOut {
1167
+ from {
1168
+ opacity: 1;
1169
+ transform: rotate(0deg) scale(1);
1170
+ clip-path: circle(75% at 50% 50%);
1171
+ }
1172
+ to {
1173
+ opacity: 0;
1174
+ transform: rotate(-58deg) scale(0.7);
1175
+ clip-path: circle(0% at 50% 50%);
1176
+ }
1177
+ }
1178
+ @keyframes transitionWedgeIn {
1179
+ from {
1180
+ opacity: 0.4;
1181
+ clip-path: polygon(50% 50%, 50% 0, 50% 0);
1182
+ }
1183
+ to {
1184
+ opacity: 1;
1185
+ clip-path: polygon(50% 50%, -30% -30%, 130% -30%, 130% 130%, -30% 130%);
1186
+ }
1187
+ }
1188
+ @keyframes transitionWedgeOut {
1189
+ from {
1190
+ opacity: 1;
1191
+ clip-path: polygon(50% 50%, -30% -30%, 130% -30%, 130% 130%, -30% 130%);
1192
+ }
1193
+ to {
1194
+ opacity: 0;
1195
+ clip-path: polygon(50% 50%, 50% 0, 50% 0);
1196
+ }
1197
+ }
1198
+ @keyframes transitionPrismIn {
1199
+ from {
1200
+ opacity: 0;
1201
+ transform: perspective(1200px) rotateY(-28deg) skewX(-12deg) scale(0.9);
1202
+ filter: hue-rotate(24deg) saturate(1.6);
1203
+ }
1204
+ to {
1205
+ opacity: 1;
1206
+ transform: perspective(1200px) rotateY(0deg) skewX(0) scale(1);
1207
+ filter: hue-rotate(0deg) saturate(1);
1208
+ }
1209
+ }
1210
+ @keyframes transitionPrismOut {
1211
+ from {
1212
+ opacity: 1;
1213
+ transform: perspective(1200px) rotateY(0deg) skewX(0) scale(1);
1214
+ filter: hue-rotate(0deg) saturate(1);
1215
+ }
1216
+ to {
1217
+ opacity: 0;
1218
+ transform: perspective(1200px) rotateY(28deg) skewX(12deg) scale(0.9);
1219
+ filter: hue-rotate(-24deg) saturate(1.6);
1220
+ }
1221
+ }
1222
+ @keyframes transitionWarpIn {
1223
+ from {
1224
+ opacity: 0;
1225
+ transform: scaleX(0.72) scaleY(1.18) skewX(-14deg);
1226
+ filter: blur(8px);
1227
+ }
1228
+ to {
1229
+ opacity: 1;
1230
+ transform: scaleX(1) scaleY(1) skewX(0deg);
1231
+ filter: blur(0);
1232
+ }
1233
+ }
1234
+ @keyframes transitionWarpOut {
1235
+ from {
1236
+ opacity: 1;
1237
+ transform: scaleX(1) scaleY(1) skewX(0deg);
1238
+ filter: blur(0);
1239
+ }
1240
+ to {
1241
+ opacity: 0;
1242
+ transform: scaleX(1.2) scaleY(0.72) skewX(14deg);
1243
+ filter: blur(8px);
1244
+ }
1245
+ }
1246
+ @keyframes transitionClockIn {
1247
+ from {
1248
+ opacity: 0.35;
1249
+ transform: rotate(-90deg) scale(0.84);
1250
+ clip-path: circle(0% at 50% 50%);
1251
+ }
1252
+ to {
1253
+ opacity: 1;
1254
+ transform: rotate(0deg) scale(1);
1255
+ clip-path: circle(75% at 50% 50%);
1256
+ }
1257
+ }
1258
+ @keyframes transitionClockOut {
1259
+ from {
1260
+ opacity: 1;
1261
+ transform: rotate(0deg) scale(1);
1262
+ clip-path: circle(75% at 50% 50%);
1263
+ }
1264
+ to {
1265
+ opacity: 0;
1266
+ transform: rotate(90deg) scale(0.84);
1267
+ clip-path: circle(0% at 50% 50%);
1268
+ }
1269
+ }
1270
+ @keyframes typewriter {
1271
+ from {
1272
+ clip-path: inset(0 100% 0 0);
1273
+ }
1274
+ to {
1275
+ clip-path: inset(0 0 0 0);
1276
+ }
1277
+ }
1278
+ @keyframes typewriterFallback {
1279
+ from {
1280
+ width: 0;
1281
+ overflow: hidden;
1282
+ }
1283
+ to {
1284
+ width: 100%;
1285
+ overflow: hidden;
1286
+ }
1287
+ }
1288
+ .transition-fade-enter {
1289
+ animation: fadeIn var(--transition-duration, 1.5s) ease-out forwards;
1290
+ }
1291
+ .transition-fade-exit {
1292
+ animation: fadeOut var(--transition-duration, 1.5s) ease-out forwards;
1293
+ }
1294
+ .transition-dissolve-enter {
1295
+ animation: transitionDissolveIn var(--transition-duration, 0.8s) ease-in-out forwards;
1296
+ }
1297
+ .transition-dissolve-exit {
1298
+ animation: transitionDissolveOut var(--transition-duration, 0.8s) ease-in-out forwards;
1299
+ }
1300
+ .transition-morph-enter {
1301
+ animation: transitionMorphIn var(--transition-duration, 0.9s) ease-in-out forwards;
1302
+ }
1303
+ .transition-morph-exit {
1304
+ animation: transitionMorphOut var(--transition-duration, 0.9s) ease-in-out forwards;
1305
+ }
1306
+ .transition-pushLeft-enter,
1307
+ .transition-slideLeft-enter {
1308
+ animation: slideInRight var(--transition-duration, 0.8s) ease-out forwards;
1309
+ }
1310
+ .transition-pushLeft-exit,
1311
+ .transition-slideLeft-exit {
1312
+ animation: slideOutLeft var(--transition-duration, 0.8s) ease-out forwards;
1313
+ }
1314
+ .transition-pushRight-enter,
1315
+ .transition-slideRight-enter {
1316
+ animation: slideInLeft var(--transition-duration, 0.8s) ease-out forwards;
1317
+ }
1318
+ .transition-pushRight-exit,
1319
+ .transition-slideRight-exit {
1320
+ animation: slideOutRight var(--transition-duration, 0.8s) ease-out forwards;
1321
+ }
1322
+ .transition-pushUp-enter,
1323
+ .transition-slideUp-enter {
1324
+ animation: slideInBottom var(--transition-duration, 0.8s) ease-out forwards;
1325
+ }
1326
+ .transition-pushUp-exit,
1327
+ .transition-slideUp-exit {
1328
+ animation: slideOutTop var(--transition-duration, 0.8s) ease-out forwards;
1329
+ }
1330
+ .transition-pushDown-enter,
1331
+ .transition-slideDown-enter {
1332
+ animation: slideInTop var(--transition-duration, 0.8s) ease-out forwards;
1333
+ }
1334
+ .transition-pushDown-exit,
1335
+ .transition-slideDown-exit {
1336
+ animation: slideOutBottom var(--transition-duration, 0.8s) ease-out forwards;
1337
+ }
1338
+ .transition-zoom-enter {
1339
+ animation: transitionZoomIn var(--transition-duration, 0.7s) ease-out forwards;
1340
+ }
1341
+ .transition-zoom-exit {
1342
+ animation: transitionZoomOut var(--transition-duration, 0.7s) ease-in forwards;
1343
+ }
1344
+ .transition-flip-enter {
1345
+ animation: transitionFlipIn var(--transition-duration, 0.8s) ease-out forwards;
1346
+ }
1347
+ .transition-flip-exit {
1348
+ animation: transitionFlipOut var(--transition-duration, 0.8s) ease-in forwards;
1349
+ }
1350
+ .transition-rotate-enter {
1351
+ animation: transitionRotateIn var(--transition-duration, 0.8s) ease-out forwards;
1352
+ }
1353
+ .transition-rotate-exit {
1354
+ animation: transitionRotateOut var(--transition-duration, 0.8s) ease-in forwards;
1355
+ }
1356
+ .transition-wipeLeft-enter,
1357
+ .transition-revealLeft-enter {
1358
+ animation: transitionWipeLeftIn var(--transition-duration, 0.75s) ease-out forwards;
1359
+ }
1360
+ .transition-wipeLeft-exit {
1361
+ animation: transitionWipeLeftOut var(--transition-duration, 0.75s) ease-in forwards;
1362
+ }
1363
+ .transition-wipeRight-enter,
1364
+ .transition-revealRight-enter {
1365
+ animation: transitionWipeRightIn var(--transition-duration, 0.75s) ease-out forwards;
1366
+ }
1367
+ .transition-wipeRight-exit {
1368
+ animation: transitionWipeRightOut var(--transition-duration, 0.75s) ease-in forwards;
1369
+ }
1370
+ .transition-wipeUp-enter,
1371
+ .transition-revealUp-enter {
1372
+ animation: transitionWipeUpIn var(--transition-duration, 0.75s) ease-out forwards;
1373
+ }
1374
+ .transition-wipeUp-exit {
1375
+ animation: transitionWipeUpOut var(--transition-duration, 0.75s) ease-in forwards;
1376
+ }
1377
+ .transition-wipeDown-enter,
1378
+ .transition-revealDown-enter {
1379
+ animation: transitionWipeDownIn var(--transition-duration, 0.75s) ease-out forwards;
1380
+ }
1381
+ .transition-wipeDown-exit {
1382
+ animation: transitionWipeDownOut var(--transition-duration, 0.75s) ease-in forwards;
1383
+ }
1384
+ .transition-revealLeft-exit,
1385
+ .transition-revealRight-exit,
1386
+ .transition-revealUp-exit,
1387
+ .transition-revealDown-exit {
1388
+ animation: fadeOut var(--transition-duration, 0.75s) ease-in forwards;
1389
+ }
1390
+ .transition-splitHorizontal-enter {
1391
+ animation: transitionSplitHorizontalIn var(--transition-duration, 0.8s) ease-out forwards;
1392
+ }
1393
+ .transition-splitHorizontal-exit {
1394
+ animation: transitionSplitHorizontalOut var(--transition-duration, 0.8s) ease-in forwards;
1395
+ }
1396
+ .transition-splitVertical-enter {
1397
+ animation: transitionSplitVerticalIn var(--transition-duration, 0.8s) ease-out forwards;
1398
+ }
1399
+ .transition-splitVertical-exit {
1400
+ animation: transitionSplitVerticalOut var(--transition-duration, 0.8s) ease-in forwards;
1401
+ }
1402
+ .transition-coverLeft-enter,
1403
+ .transition-pullLeft-enter {
1404
+ animation: slideInRight var(--transition-duration, 0.75s) ease-out forwards;
1405
+ }
1406
+ .transition-coverRight-enter,
1407
+ .transition-pullRight-enter {
1408
+ animation: slideInLeft var(--transition-duration, 0.75s) ease-out forwards;
1409
+ }
1410
+ .transition-coverUp-enter,
1411
+ .transition-pullUp-enter {
1412
+ animation: slideInBottom var(--transition-duration, 0.75s) ease-out forwards;
1413
+ }
1414
+ .transition-coverDown-enter,
1415
+ .transition-pullDown-enter {
1416
+ animation: slideInTop var(--transition-duration, 0.75s) ease-out forwards;
1417
+ }
1418
+ .transition-coverLeft-exit,
1419
+ .transition-coverRight-exit,
1420
+ .transition-coverUp-exit,
1421
+ .transition-coverDown-exit,
1422
+ .transition-pullLeft-exit,
1423
+ .transition-pullRight-exit,
1424
+ .transition-pullUp-exit,
1425
+ .transition-pullDown-exit {
1426
+ animation: transitionHold var(--transition-duration, 0.75s) linear forwards;
1427
+ }
1428
+ .transition-uncoverLeft-enter,
1429
+ .transition-uncoverRight-enter,
1430
+ .transition-uncoverUp-enter,
1431
+ .transition-uncoverDown-enter {
1432
+ animation: fadeIn var(--transition-duration, 0.75s) ease-out forwards;
1433
+ }
1434
+ .transition-uncoverLeft-exit {
1435
+ animation: slideOutLeft var(--transition-duration, 0.75s) ease-in forwards;
1436
+ }
1437
+ .transition-uncoverRight-exit {
1438
+ animation: slideOutRight var(--transition-duration, 0.75s) ease-in forwards;
1439
+ }
1440
+ .transition-uncoverUp-exit {
1441
+ animation: slideOutTop var(--transition-duration, 0.75s) ease-in forwards;
1442
+ }
1443
+ .transition-uncoverDown-exit {
1444
+ animation: slideOutBottom var(--transition-duration, 0.75s) ease-in forwards;
1445
+ }
1446
+ .transition-shapeCircle-enter {
1447
+ animation: transitionCircleIn var(--transition-duration, 0.75s) ease-out forwards;
1448
+ }
1449
+ .transition-shapeCircle-exit {
1450
+ animation: transitionCircleOut var(--transition-duration, 0.75s) ease-in forwards;
1451
+ }
1452
+ .transition-shapeDiamond-enter {
1453
+ animation: transitionDiamondIn var(--transition-duration, 0.75s) ease-out forwards;
1454
+ }
1455
+ .transition-shapeDiamond-exit {
1456
+ animation: transitionDiamondOut var(--transition-duration, 0.75s) ease-in forwards;
1457
+ }
1458
+ .transition-shapePlus-enter {
1459
+ animation: transitionPlusIn var(--transition-duration, 0.8s) ease-out forwards;
1460
+ }
1461
+ .transition-shapePlus-exit {
1462
+ animation: transitionPlusOut var(--transition-duration, 0.8s) ease-in forwards;
1463
+ }
1464
+ .transition-flash-enter {
1465
+ animation: transitionFlashIn var(--transition-duration, 0.7s) ease-out forwards;
1466
+ }
1467
+ .transition-flash-exit {
1468
+ animation: transitionFlashOut var(--transition-duration, 0.7s) ease-in forwards;
1469
+ }
1470
+ .transition-newsflash-enter {
1471
+ animation: transitionNewsflashIn var(--transition-duration, 0.75s) ease-out forwards;
1472
+ }
1473
+ .transition-newsflash-exit {
1474
+ animation: transitionNewsflashOut var(--transition-duration, 0.75s) ease-in forwards;
1475
+ }
1476
+ .transition-fallOver-enter {
1477
+ animation: transitionFallOverIn var(--transition-duration, 0.85s) ease-out forwards;
1478
+ }
1479
+ .transition-fallOver-exit {
1480
+ animation: transitionFallOverOut var(--transition-duration, 0.85s) ease-in forwards;
1481
+ }
1482
+ .transition-drape-enter {
1483
+ animation: transitionDrapeIn var(--transition-duration, 0.85s) ease-out forwards;
1484
+ }
1485
+ .transition-drape-exit {
1486
+ animation: transitionDrapeOut var(--transition-duration, 0.85s) ease-in forwards;
1487
+ }
1488
+ .transition-curtains-enter {
1489
+ animation: transitionCurtainsIn var(--transition-duration, 0.85s) ease-out forwards;
1490
+ }
1491
+ .transition-curtains-exit {
1492
+ animation: transitionCurtainsOut var(--transition-duration, 0.85s) ease-in forwards;
1493
+ }
1494
+ .transition-wind-enter {
1495
+ animation: transitionWindIn var(--transition-duration, 0.8s) ease-out forwards;
1496
+ }
1497
+ .transition-wind-exit {
1498
+ animation: transitionWindOut var(--transition-duration, 0.8s) ease-in forwards;
1499
+ }
1500
+ .transition-prestige-enter {
1501
+ animation: transitionPrestigeIn var(--transition-duration, 0.85s) ease-out forwards;
1502
+ }
1503
+ .transition-prestige-exit {
1504
+ animation: transitionPrestigeOut var(--transition-duration, 0.85s) ease-in forwards;
1505
+ }
1506
+ .transition-fracture-enter {
1507
+ animation: transitionFractureIn var(--transition-duration, 0.8s) ease-out forwards;
1508
+ }
1509
+ .transition-fracture-exit {
1510
+ animation: transitionFractureOut var(--transition-duration, 0.8s) ease-in forwards;
1511
+ }
1512
+ .transition-crush-enter {
1513
+ animation: transitionCrushIn var(--transition-duration, 0.75s) ease-out forwards;
1514
+ }
1515
+ .transition-crush-exit {
1516
+ animation: transitionCrushOut var(--transition-duration, 0.75s) ease-in forwards;
1517
+ }
1518
+ .transition-peelOff-enter {
1519
+ animation: transitionPeelIn var(--transition-duration, 0.85s) ease-out forwards;
1520
+ }
1521
+ .transition-peelOff-exit {
1522
+ animation: transitionPeelOut var(--transition-duration, 0.85s) ease-in forwards;
1523
+ }
1524
+ .transition-pageCurl-enter,
1525
+ .transition-pageCurlDouble-enter,
1526
+ .transition-pageCurlSingle-enter {
1527
+ animation: transitionPageCurlIn var(--transition-duration, 0.9s) ease-out forwards;
1528
+ }
1529
+ .transition-pageCurl-exit,
1530
+ .transition-pageCurlDouble-exit,
1531
+ .transition-pageCurlSingle-exit {
1532
+ animation: transitionPageCurlOut var(--transition-duration, 0.9s) ease-in forwards;
1533
+ }
1534
+ .transition-airplane-enter {
1535
+ animation: transitionAirplaneIn var(--transition-duration, 0.85s) ease-out forwards;
1536
+ }
1537
+ .transition-airplane-exit {
1538
+ animation: transitionAirplaneOut var(--transition-duration, 0.85s) ease-in forwards;
1539
+ }
1540
+ .transition-origami-enter {
1541
+ animation: transitionOrigamiIn var(--transition-duration, 0.85s) ease-out forwards;
1542
+ }
1543
+ .transition-origami-exit {
1544
+ animation: transitionOrigamiOut var(--transition-duration, 0.85s) ease-in forwards;
1545
+ }
1546
+ .transition-ripple-enter {
1547
+ animation: transitionRippleIn var(--transition-duration, 0.85s) ease-out forwards;
1548
+ }
1549
+ .transition-ripple-exit {
1550
+ animation: transitionRippleOut var(--transition-duration, 0.85s) ease-in forwards;
1551
+ }
1552
+ .transition-checkerboard-enter,
1553
+ .transition-random-enter {
1554
+ -webkit-mask-image:
1555
+ linear-gradient(
1556
+ 45deg,
1557
+ #000 25%,
1558
+ transparent 25%,
1559
+ transparent 75%,
1560
+ #000 75%),
1561
+ linear-gradient(
1562
+ 45deg,
1563
+ #000 25%,
1564
+ transparent 25%,
1565
+ transparent 75%,
1566
+ #000 75%);
1567
+ -webkit-mask-size: 12% 12%;
1568
+ -webkit-mask-position: 0 0, 6% 6%;
1569
+ mask-image:
1570
+ linear-gradient(
1571
+ 45deg,
1572
+ #000 25%,
1573
+ transparent 25%,
1574
+ transparent 75%,
1575
+ #000 75%),
1576
+ linear-gradient(
1577
+ 45deg,
1578
+ #000 25%,
1579
+ transparent 25%,
1580
+ transparent 75%,
1581
+ #000 75%);
1582
+ mask-size: 12% 12%;
1583
+ mask-position: 0 0, 6% 6%;
1584
+ animation: transitionTexturedIn var(--transition-duration, 0.85s) steps(8, end) forwards;
1585
+ }
1586
+ .transition-checkerboard-exit,
1587
+ .transition-random-exit {
1588
+ -webkit-mask-image:
1589
+ linear-gradient(
1590
+ 45deg,
1591
+ #000 25%,
1592
+ transparent 25%,
1593
+ transparent 75%,
1594
+ #000 75%),
1595
+ linear-gradient(
1596
+ 45deg,
1597
+ #000 25%,
1598
+ transparent 25%,
1599
+ transparent 75%,
1600
+ #000 75%);
1601
+ -webkit-mask-size: 12% 12%;
1602
+ -webkit-mask-position: 0 0, 6% 6%;
1603
+ mask-image:
1604
+ linear-gradient(
1605
+ 45deg,
1606
+ #000 25%,
1607
+ transparent 25%,
1608
+ transparent 75%,
1609
+ #000 75%),
1610
+ linear-gradient(
1611
+ 45deg,
1612
+ #000 25%,
1613
+ transparent 25%,
1614
+ transparent 75%,
1615
+ #000 75%);
1616
+ mask-size: 12% 12%;
1617
+ mask-position: 0 0, 6% 6%;
1618
+ animation: transitionTexturedOut var(--transition-duration, 0.85s) steps(8, end) forwards;
1619
+ }
1620
+ .transition-randomBarsHorizontal-enter,
1621
+ .transition-blindsHorizontal-enter,
1622
+ .transition-combHorizontal-enter,
1623
+ .transition-stripsLeft-enter,
1624
+ .transition-stripsRight-enter {
1625
+ -webkit-mask-image:
1626
+ repeating-linear-gradient(
1627
+ 0deg,
1628
+ #000 0 6%,
1629
+ transparent 6% 12%);
1630
+ mask-image:
1631
+ repeating-linear-gradient(
1632
+ 0deg,
1633
+ #000 0 6%,
1634
+ transparent 6% 12%);
1635
+ animation: transitionTexturedIn var(--transition-duration, 0.8s) steps(9, end) forwards;
1636
+ }
1637
+ .transition-randomBarsHorizontal-exit,
1638
+ .transition-blindsHorizontal-exit,
1639
+ .transition-combHorizontal-exit,
1640
+ .transition-stripsLeft-exit,
1641
+ .transition-stripsRight-exit {
1642
+ -webkit-mask-image:
1643
+ repeating-linear-gradient(
1644
+ 0deg,
1645
+ #000 0 6%,
1646
+ transparent 6% 12%);
1647
+ mask-image:
1648
+ repeating-linear-gradient(
1649
+ 0deg,
1650
+ #000 0 6%,
1651
+ transparent 6% 12%);
1652
+ animation: transitionTexturedOut var(--transition-duration, 0.8s) steps(9, end) forwards;
1653
+ }
1654
+ .transition-randomBarsVertical-enter,
1655
+ .transition-blindsVertical-enter,
1656
+ .transition-combVertical-enter,
1657
+ .transition-stripsUp-enter,
1658
+ .transition-stripsDown-enter {
1659
+ -webkit-mask-image:
1660
+ repeating-linear-gradient(
1661
+ 90deg,
1662
+ #000 0 6%,
1663
+ transparent 6% 12%);
1664
+ mask-image:
1665
+ repeating-linear-gradient(
1666
+ 90deg,
1667
+ #000 0 6%,
1668
+ transparent 6% 12%);
1669
+ animation: transitionTexturedIn var(--transition-duration, 0.8s) steps(9, end) forwards;
1670
+ }
1671
+ .transition-randomBarsVertical-exit,
1672
+ .transition-blindsVertical-exit,
1673
+ .transition-combVertical-exit,
1674
+ .transition-stripsUp-exit,
1675
+ .transition-stripsDown-exit {
1676
+ -webkit-mask-image:
1677
+ repeating-linear-gradient(
1678
+ 90deg,
1679
+ #000 0 6%,
1680
+ transparent 6% 12%);
1681
+ mask-image:
1682
+ repeating-linear-gradient(
1683
+ 90deg,
1684
+ #000 0 6%,
1685
+ transparent 6% 12%);
1686
+ animation: transitionTexturedOut var(--transition-duration, 0.8s) steps(9, end) forwards;
1687
+ }
1688
+ .transition-honeycomb-enter {
1689
+ -webkit-mask-image:
1690
+ radial-gradient(
1691
+ circle,
1692
+ #000 0 34%,
1693
+ transparent 35% 48%,
1694
+ #000 49%);
1695
+ -webkit-mask-size: 10% 17%;
1696
+ mask-image:
1697
+ radial-gradient(
1698
+ circle,
1699
+ #000 0 34%,
1700
+ transparent 35% 48%,
1701
+ #000 49%);
1702
+ mask-size: 10% 17%;
1703
+ animation: transitionTexturedIn var(--transition-duration, 0.85s) steps(8, end) forwards;
1704
+ }
1705
+ .transition-honeycomb-exit {
1706
+ -webkit-mask-image:
1707
+ radial-gradient(
1708
+ circle,
1709
+ #000 0 34%,
1710
+ transparent 35% 48%,
1711
+ #000 49%);
1712
+ -webkit-mask-size: 10% 17%;
1713
+ mask-image:
1714
+ radial-gradient(
1715
+ circle,
1716
+ #000 0 34%,
1717
+ transparent 35% 48%,
1718
+ #000 49%);
1719
+ mask-size: 10% 17%;
1720
+ animation: transitionTexturedOut var(--transition-duration, 0.85s) steps(8, end) forwards;
1721
+ }
1722
+ .transition-glitter-enter {
1723
+ -webkit-mask-image:
1724
+ radial-gradient(
1725
+ circle,
1726
+ #000 0 18%,
1727
+ transparent 20% 36%,
1728
+ #000 38%);
1729
+ -webkit-mask-size: 7% 7%;
1730
+ mask-image:
1731
+ radial-gradient(
1732
+ circle,
1733
+ #000 0 18%,
1734
+ transparent 20% 36%,
1735
+ #000 38%);
1736
+ mask-size: 7% 7%;
1737
+ animation: transitionFlashIn var(--transition-duration, 0.85s) steps(10, end) forwards;
1738
+ }
1739
+ .transition-glitter-exit {
1740
+ -webkit-mask-image:
1741
+ radial-gradient(
1742
+ circle,
1743
+ #000 0 18%,
1744
+ transparent 20% 36%,
1745
+ #000 38%);
1746
+ -webkit-mask-size: 7% 7%;
1747
+ mask-image:
1748
+ radial-gradient(
1749
+ circle,
1750
+ #000 0 18%,
1751
+ transparent 20% 36%,
1752
+ #000 38%);
1753
+ mask-size: 7% 7%;
1754
+ animation: transitionFlashOut var(--transition-duration, 0.85s) steps(10, end) forwards;
1755
+ }
1756
+ .transition-vortex-enter {
1757
+ animation: transitionVortexIn var(--transition-duration, 0.85s) ease-out forwards;
1758
+ }
1759
+ .transition-vortex-exit {
1760
+ animation: transitionVortexOut var(--transition-duration, 0.85s) ease-in forwards;
1761
+ }
1762
+ .transition-shred-enter {
1763
+ -webkit-mask-image:
1764
+ repeating-linear-gradient(
1765
+ 90deg,
1766
+ #000 0 5%,
1767
+ transparent 5% 8%);
1768
+ mask-image:
1769
+ repeating-linear-gradient(
1770
+ 90deg,
1771
+ #000 0 5%,
1772
+ transparent 5% 8%);
1773
+ animation: transitionShredIn var(--transition-duration, 0.85s) ease-out forwards;
1774
+ }
1775
+ .transition-shred-exit {
1776
+ -webkit-mask-image:
1777
+ repeating-linear-gradient(
1778
+ 90deg,
1779
+ #000 0 5%,
1780
+ transparent 5% 8%);
1781
+ mask-image:
1782
+ repeating-linear-gradient(
1783
+ 90deg,
1784
+ #000 0 5%,
1785
+ transparent 5% 8%);
1786
+ animation: transitionShredOut var(--transition-duration, 0.85s) ease-in forwards;
1787
+ }
1788
+ .transition-switch-enter {
1789
+ animation: transitionSwitchIn var(--transition-duration, 0.8s) ease-out forwards;
1790
+ }
1791
+ .transition-switch-exit {
1792
+ animation: transitionSwitchOut var(--transition-duration, 0.8s) ease-in forwards;
1793
+ }
1794
+ .transition-cube-enter {
1795
+ animation: transitionCubeIn var(--transition-duration, 0.85s) ease-out forwards;
1796
+ }
1797
+ .transition-cube-exit {
1798
+ animation: transitionCubeOut var(--transition-duration, 0.85s) ease-in forwards;
1799
+ }
1800
+ .transition-doors-enter {
1801
+ animation: transitionDoorsIn var(--transition-duration, 0.85s) ease-out forwards;
1802
+ }
1803
+ .transition-doors-exit {
1804
+ animation: transitionDoorsOut var(--transition-duration, 0.85s) ease-in forwards;
1805
+ }
1806
+ .transition-box-enter {
1807
+ animation: transitionBoxIn var(--transition-duration, 0.75s) ease-out forwards;
1808
+ }
1809
+ .transition-box-exit {
1810
+ animation: transitionBoxOut var(--transition-duration, 0.75s) ease-in forwards;
1811
+ }
1812
+ .transition-gallery-enter {
1813
+ animation: transitionGalleryIn var(--transition-duration, 0.8s) ease-out forwards;
1814
+ }
1815
+ .transition-gallery-exit {
1816
+ animation: transitionGalleryOut var(--transition-duration, 0.8s) ease-in forwards;
1817
+ }
1818
+ .transition-conveyor-enter,
1819
+ .transition-panLeft-enter {
1820
+ animation: slideInRight var(--transition-duration, 0.8s) ease-out forwards;
1821
+ }
1822
+ .transition-conveyor-exit,
1823
+ .transition-panLeft-exit {
1824
+ animation: slideOutLeft var(--transition-duration, 0.8s) ease-in forwards;
1825
+ }
1826
+ .transition-panRight-enter {
1827
+ animation: slideInLeft var(--transition-duration, 0.8s) ease-out forwards;
1828
+ }
1829
+ .transition-panRight-exit {
1830
+ animation: slideOutRight var(--transition-duration, 0.8s) ease-in forwards;
1831
+ }
1832
+ .transition-panUp-enter {
1833
+ animation: slideInBottom var(--transition-duration, 0.8s) ease-out forwards;
1834
+ }
1835
+ .transition-panUp-exit {
1836
+ animation: slideOutTop var(--transition-duration, 0.8s) ease-in forwards;
1837
+ }
1838
+ .transition-panDown-enter {
1839
+ animation: slideInTop var(--transition-duration, 0.8s) ease-out forwards;
1840
+ }
1841
+ .transition-panDown-exit {
1842
+ animation: slideOutBottom var(--transition-duration, 0.8s) ease-in forwards;
1843
+ }
1844
+ .transition-ferrisWheel-enter {
1845
+ animation: transitionFerrisIn var(--transition-duration, 0.85s) ease-out forwards;
1846
+ }
1847
+ .transition-ferrisWheel-exit {
1848
+ animation: transitionFerrisOut var(--transition-duration, 0.85s) ease-in forwards;
1849
+ }
1850
+ .transition-window-enter {
1851
+ animation: transitionWindowIn var(--transition-duration, 0.8s) ease-out forwards;
1852
+ }
1853
+ .transition-window-exit {
1854
+ animation: transitionWindowOut var(--transition-duration, 0.8s) ease-in forwards;
1855
+ }
1856
+ .transition-orbit-enter {
1857
+ animation: transitionOrbitIn var(--transition-duration, 0.85s) ease-out forwards;
1858
+ }
1859
+ .transition-orbit-exit {
1860
+ animation: transitionOrbitOut var(--transition-duration, 0.85s) ease-in forwards;
1861
+ }
1862
+ .transition-flyThrough-enter {
1863
+ animation: transitionFlyThroughIn var(--transition-duration, 0.85s) ease-out forwards;
1864
+ }
1865
+ .transition-flyThrough-exit {
1866
+ animation: transitionFlyThroughOut var(--transition-duration, 0.85s) ease-in forwards;
1867
+ }
1868
+ .transition-wheel-enter {
1869
+ animation: transitionWheelIn var(--transition-duration, 0.85s) ease-out forwards;
1870
+ }
1871
+ .transition-wheel-exit {
1872
+ animation: transitionWheelOut var(--transition-duration, 0.85s) ease-in forwards;
1873
+ }
1874
+ .transition-wheelReverse-enter {
1875
+ animation: transitionWheelReverseIn var(--transition-duration, 0.85s) ease-out forwards;
1876
+ }
1877
+ .transition-wheelReverse-exit {
1878
+ animation: transitionWheelReverseOut var(--transition-duration, 0.85s) ease-in forwards;
1879
+ }
1880
+ .transition-wedge-enter {
1881
+ animation: transitionWedgeIn var(--transition-duration, 0.8s) ease-out forwards;
1882
+ }
1883
+ .transition-wedge-exit {
1884
+ animation: transitionWedgeOut var(--transition-duration, 0.8s) ease-in forwards;
1885
+ }
1886
+ .transition-prism-enter {
1887
+ animation: transitionPrismIn var(--transition-duration, 0.85s) ease-out forwards;
1888
+ }
1889
+ .transition-prism-exit {
1890
+ animation: transitionPrismOut var(--transition-duration, 0.85s) ease-in forwards;
1891
+ }
1892
+ .transition-warp-enter {
1893
+ animation: transitionWarpIn var(--transition-duration, 0.85s) ease-out forwards;
1894
+ }
1895
+ .transition-warp-exit {
1896
+ animation: transitionWarpOut var(--transition-duration, 0.85s) ease-in forwards;
1897
+ }
1898
+ .transition-clock-enter {
1899
+ animation: transitionClockIn var(--transition-duration, 0.8s) ease-out forwards;
1900
+ }
1901
+ .transition-clock-exit {
1902
+ animation: transitionClockOut var(--transition-duration, 0.8s) ease-in forwards;
1903
+ }
1904
+ .anim-none {
1905
+ animation: none;
1906
+ }
1907
+ .anim-fadeIn {
1908
+ animation: fadeIn var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards;
1909
+ }
1910
+ .anim-fadeOut {
1911
+ animation: fadeOut var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards;
1912
+ }
1913
+ .anim-fadeInUp {
1914
+ animation: fadeInUp var(--anim-duration, 0.6s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards;
1915
+ }
1916
+ .anim-slowZoom-in {
1917
+ animation: slowZoomIn var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards;
1918
+ }
1919
+ .anim-slowZoom-out {
1920
+ animation: slowZoomOut var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards;
1921
+ }
1922
+ .anim-slowZoom-panLeft {
1923
+ animation: slowZoomCombinedPanLeft var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards;
1924
+ }
1925
+ .anim-slowZoom-panRight {
1926
+ animation: slowZoomCombinedPanRight var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards;
1927
+ }
1928
+ .anim-zoomIn {
1929
+ animation: zoomIn var(--anim-duration, 0.5s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards;
1930
+ }
1931
+ .anim-zoomOut {
1932
+ animation: zoomOut var(--anim-duration, 0.5s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards;
1933
+ }
1934
+ .anim-panLeft {
1935
+ animation: panLeft var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards;
1936
+ }
1937
+ .anim-panRight {
1938
+ animation: panRight var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards;
1939
+ }
1940
+ .anim-typewriter {
1941
+ animation: typewriter var(--anim-duration, 2s) var(--anim-easing, steps(40, end)) var(--anim-delay, 0s) forwards;
1942
+ }
1943
+ .doc-player {
1944
+ position: relative;
1945
+ overflow: hidden;
1946
+ clip-path: inset(0);
1947
+ background: #000;
1948
+ max-width: 100%;
1949
+ max-height: 100%;
1950
+ }
1951
+ .doc-player__viewport {
1952
+ position: absolute;
1953
+ top: 0;
1954
+ left: 0;
1955
+ width: 100%;
1956
+ height: 100%;
1957
+ }
1958
+ .doc-player__block {
1959
+ position: absolute;
1960
+ top: 0;
1961
+ left: 0;
1962
+ width: 100%;
1963
+ height: 100%;
1964
+ }
1965
+ .doc-player__block--active {
1966
+ z-index: 2;
1967
+ }
1968
+ .doc-player__block--previous {
1969
+ z-index: 1;
1970
+ }
1971
+ .doc-player__block--active.doc-player__block--dragging {
1972
+ transition: none;
1973
+ }
1974
+ .doc-player__block--active.doc-player__block--settling {
1975
+ transition: transform 260ms cubic-bezier(0.22, 1, 0.36, 1);
1976
+ }
1977
+ .doc-player--swipe {
1978
+ cursor: grab;
1979
+ -webkit-user-select: none;
1980
+ user-select: none;
1981
+ }
1982
+ .doc-player--swipe.doc-player--grabbing {
1983
+ cursor: grabbing;
1984
+ }
1985
+ .doc-player__tap-feedback {
1986
+ position: absolute;
1987
+ top: 50%;
1988
+ left: 50%;
1989
+ transform: translate(-50%, -50%);
1990
+ z-index: 150;
1991
+ pointer-events: none;
1992
+ display: flex;
1993
+ align-items: center;
1994
+ justify-content: center;
1995
+ width: 72px;
1996
+ height: 72px;
1997
+ border-radius: 50%;
1998
+ background: rgba(0, 0, 0, 0.45);
1999
+ animation: tap-feedback-fade 0.6s ease-out forwards;
2000
+ }
2001
+ @keyframes tap-feedback-fade {
2002
+ 0% {
2003
+ opacity: 1;
2004
+ transform: translate(-50%, -50%) scale(1);
2005
+ }
2006
+ 100% {
2007
+ opacity: 0;
2008
+ transform: translate(-50%, -50%) scale(1.3);
2009
+ }
2010
+ }
2011
+ .block-svg {
2012
+ width: 100%;
2013
+ height: 100%;
2014
+ display: block;
2015
+ transform-origin: center;
2016
+ transform-box: fill-box;
2017
+ }
2018
+ .block-svg[class*=transition-] {
2019
+ backface-visibility: hidden;
2020
+ will-change:
2021
+ transform,
2022
+ opacity,
2023
+ filter,
2024
+ clip-path;
2025
+ }
2026
+ .block-layer {
2027
+ overflow: hidden;
2028
+ }
2029
+ .block-layer--image {
2030
+ overflow: visible;
2031
+ }
2032
+ .text-shadow {
2033
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.8), 0 4px 8px rgba(0, 0, 0, 0.4);
2034
+ }
2035
+ .text-shadow-light {
2036
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
2037
+ }
2038
+ .text-box {
2039
+ background: rgba(0, 0, 0, 0.6);
2040
+ padding: 16px 24px;
2041
+ border-radius: 4px;
2042
+ }
2043
+ .text-box--light {
2044
+ background: rgba(255, 255, 255, 0.9);
2045
+ color: #1a1a1a;
2046
+ }
2047
+ .squisq-inline-video-player {
2048
+ display: inline-block;
2049
+ max-width: 480px;
2050
+ width: 100%;
2051
+ margin: 0.5em 0;
2052
+ }
2053
+ .squisq-inline-video-player video {
2054
+ display: block;
2055
+ width: 100%;
2056
+ max-width: 100%;
2057
+ height: auto;
2058
+ border-radius: 4px;
2059
+ background: #000;
2060
+ }
2061
+ .squisq-inline-audio-player {
2062
+ display: inline-block;
2063
+ max-width: 360px;
2064
+ width: 100%;
2065
+ margin: 0.25em 0;
2066
+ vertical-align: middle;
2067
+ }
2068
+ .squisq-inline-audio-player audio {
2069
+ display: block;
2070
+ width: 100%;
2071
+ }
2072
+ @media (prefers-reduced-motion: reduce) {
2073
+ .anim-slowZoom-in,
2074
+ .anim-slowZoom-out,
2075
+ .anim-slowZoom-panLeft,
2076
+ .anim-slowZoom-panRight,
2077
+ .anim-drift {
2078
+ animation: none;
2079
+ }
2080
+ }
2081
+ .doc-player--empty {
2082
+ min-height: 120px;
2083
+ width: 100%;
2084
+ background: #f0f0f0;
2085
+ }
2086
+ .doc-player {
2087
+ --squisq-styles-loaded: 1;
2088
+ }
2089
+
2090
+ /* src/jsonView/json-view.css */
2091
+ .squisq-json-view {
2092
+ font-family: var(--squisq-json-body-font, system-ui, sans-serif);
2093
+ color: var(--squisq-json-text);
2094
+ background: var(--squisq-json-bg);
2095
+ border-radius: var(--squisq-json-radius, 8px);
2096
+ padding: 16px;
2097
+ display: flex;
2098
+ flex-direction: column;
2099
+ gap: 16px;
2100
+ container-type: inline-size;
2101
+ }
2102
+ .squisq-json-view--compact {
2103
+ padding: 8px;
2104
+ gap: 8px;
2105
+ }
2106
+ .squisq-jv-group {
2107
+ display: flex;
2108
+ flex-direction: column;
2109
+ gap: 12px;
2110
+ background: color-mix(in srgb, var(--squisq-json-bg) 92%, var(--squisq-json-text) 8%);
2111
+ border: 1px solid var(--squisq-json-border);
2112
+ border-radius: var(--squisq-json-radius, 8px);
2113
+ padding: 14px 16px;
2114
+ }
2115
+ .squisq-jv-group__title {
2116
+ font-family: var(--squisq-json-title-font, inherit);
2117
+ font-size: 1.05em;
2118
+ font-weight: 600;
2119
+ color: var(--squisq-json-text);
2120
+ margin: 0;
2121
+ }
2122
+ .squisq-jv-group__help {
2123
+ font-size: 0.85em;
2124
+ color: var(--squisq-json-muted);
2125
+ margin: -6px 0 0 0;
2126
+ }
2127
+ .squisq-jv-row {
2128
+ display: grid;
2129
+ grid-template-columns: minmax(110px, 0.4fr) minmax(0, 1fr);
2130
+ gap: 12px;
2131
+ align-items: baseline;
2132
+ }
2133
+ .squisq-json-view--compact .squisq-jv-row {
2134
+ gap: 8px;
2135
+ }
2136
+ @container (max-width: 480px) {
2137
+ .squisq-jv-row {
2138
+ grid-template-columns: 1fr;
2139
+ gap: 2px;
2140
+ }
2141
+ }
2142
+ .squisq-jv-label {
2143
+ color: var(--squisq-json-muted);
2144
+ font-size: 0.85em;
2145
+ text-transform: uppercase;
2146
+ letter-spacing: 0.04em;
2147
+ font-weight: 500;
2148
+ }
2149
+ .squisq-jv-value {
2150
+ color: var(--squisq-json-text);
2151
+ word-break: break-word;
2152
+ }
2153
+ .squisq-jv-value--multiline {
2154
+ white-space: pre-wrap;
2155
+ }
2156
+ .squisq-jv-empty {
2157
+ color: var(--squisq-json-muted);
2158
+ font-style: italic;
2159
+ }
2160
+ .squisq-jv-chip-bin {
2161
+ display: flex;
2162
+ flex-wrap: wrap;
2163
+ gap: 6px;
2164
+ }
2165
+ .squisq-jv-chip {
2166
+ display: inline-flex;
2167
+ align-items: center;
2168
+ padding: 3px 10px;
2169
+ font-size: 0.85em;
2170
+ background: color-mix(in srgb, var(--squisq-json-primary) 16%, transparent);
2171
+ color: var(--squisq-json-text);
2172
+ border-radius: 999px;
2173
+ border: 1px solid color-mix(in srgb, var(--squisq-json-primary) 30%, transparent);
2174
+ }
2175
+ .squisq-jv-card-stack {
2176
+ display: flex;
2177
+ flex-direction: column;
2178
+ gap: 10px;
2179
+ }
2180
+ .squisq-jv-card {
2181
+ background: color-mix(in srgb, var(--squisq-json-bg) 95%, var(--squisq-json-text) 5%);
2182
+ border: 1px solid var(--squisq-json-border);
2183
+ border-radius: var(--squisq-json-radius, 6px);
2184
+ padding: 12px 14px;
2185
+ display: flex;
2186
+ flex-direction: column;
2187
+ gap: 8px;
2188
+ }
2189
+ .squisq-jv-card__title {
2190
+ font-family: var(--squisq-json-title-font, inherit);
2191
+ font-weight: 600;
2192
+ font-size: 0.95em;
2193
+ color: var(--squisq-json-text);
2194
+ margin: 0;
2195
+ }
2196
+ .squisq-jv-color {
2197
+ display: inline-flex;
2198
+ align-items: center;
2199
+ gap: 8px;
2200
+ }
2201
+ .squisq-jv-color__swatch {
2202
+ width: 18px;
2203
+ height: 18px;
2204
+ border-radius: 4px;
2205
+ border: 1px solid var(--squisq-json-border);
2206
+ display: inline-block;
2207
+ }
2208
+ .squisq-jv-color__hex {
2209
+ font-family: var(--squisq-json-mono-font, ui-monospace, Consolas, monospace);
2210
+ font-size: 0.9em;
2211
+ color: var(--squisq-json-muted);
2212
+ }
2213
+ .squisq-jv-toggle {
2214
+ display: inline-flex;
2215
+ align-items: center;
2216
+ gap: 6px;
2217
+ padding: 2px 10px;
2218
+ border-radius: 999px;
2219
+ font-size: 0.8em;
2220
+ font-weight: 500;
2221
+ }
2222
+ .squisq-jv-toggle--on {
2223
+ background: color-mix(in srgb, var(--squisq-json-primary) 18%, transparent);
2224
+ color: var(--squisq-json-primary);
2225
+ }
2226
+ .squisq-jv-toggle--off {
2227
+ background: color-mix(in srgb, var(--squisq-json-muted) 14%, transparent);
2228
+ color: var(--squisq-json-muted);
2229
+ }
2230
+ .squisq-jv-tabs {
2231
+ display: flex;
2232
+ flex-direction: column;
2233
+ gap: 8px;
2234
+ }
2235
+ .squisq-jv-tabs__discriminator {
2236
+ font-size: 0.8em;
2237
+ color: var(--squisq-json-muted);
2238
+ }
2239
+ .squisq-jv-richtext {
2240
+ color: var(--squisq-json-text);
2241
+ font-family: var(--squisq-json-body-font, inherit);
2242
+ line-height: 1.55;
2243
+ }
2244
+ .squisq-jv-richtext h1,
2245
+ .squisq-jv-richtext h2,
2246
+ .squisq-jv-richtext h3,
2247
+ .squisq-jv-richtext h4 {
2248
+ font-family: var(--squisq-json-title-font, inherit);
2249
+ margin: 0.6em 0 0.3em;
2250
+ font-weight: 600;
2251
+ }
2252
+ .squisq-jv-richtext p {
2253
+ margin: 0.4em 0;
2254
+ }
2255
+ .squisq-jv-richtext code {
2256
+ font-family: var(--squisq-json-mono-font, ui-monospace, Consolas, monospace);
2257
+ background: color-mix(in srgb, var(--squisq-json-text) 10%, transparent);
2258
+ padding: 1px 4px;
2259
+ border-radius: 3px;
2260
+ font-size: 0.92em;
2261
+ }
2262
+
2263
+ /* src/styles/index.css */