@bendyline/squisq-react 2.0.1 → 2.2.0

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