.Transition { position: relative; width: 100%; height: 100%; &_slide { width: 100%; height: 100%; animation-fill-mode: forwards !important; &-from, &-to { position: absolute; top: 0; left: 0; } &-from { pointer-events: none; } &-inactive { display: none !important; // Best performance when animating container //transform: scale(0); // Shortest initial delay } } &-slideOptimized, &-slideOptimizedBackwards, &-slideOptimizedRtl, &-slideOptimizedRtlBackwards { transform: translate3d(0, 0, 0); #root & > .Transition_slide { position: absolute; top: 0; left: 0; transform: scale(0); transition: transform var(--slide-transition); } } &-slide { > .Transition_slide-to { transform: translateX(100%); animation: slide-in var(--slide-transition); } > .Transition_slide-from { animation: slide-out var(--slide-transition); } } &-slideBackwards { > .Transition_slide-to { transform: translateX(-100%); animation: slide-out-backwards var(--slide-transition); } > .Transition_slide-from { animation: slide-in-backwards var(--slide-transition); } } &-slideRtl { > .Transition_slide-to { transform: translateX(-100%); animation: slide-in var(--slide-transition); } > .Transition_slide-from { animation: slide-out var(--slide-transition); } } &-slideRtlBackwards { > .Transition_slide-to { transform: translateX(100%); animation: slide-out-backwards var(--slide-transition); } > .Transition_slide-from { animation: slide-in-backwards var(--slide-transition); } } &-slideVertical { > .Transition_slide-to { transform: translateY(100%); animation: slide-vertical-in var(--slide-transition); } > .Transition_slide-from { animation: slide-vertical-out var(--slide-transition); } } &-slideVerticalBackwards { > .Transition_slide-to { transform: translateY(-100%); animation: slide-vertical-out-backwards var(--slide-transition); } > .Transition_slide-from { animation: slide-vertical-in-backwards var(--slide-transition); } } &-slideVerticalFade { > .Transition_slide-to { transform: translateY(100%); animation: slide-vertical-fade-in var(--slide-transition); } > .Transition_slide-from { animation: slide-vertical-fade-out var(--slide-transition); } } &-slideVerticalFadeBackwards { > .Transition_slide-to { transform: translateY(-100%); animation: slide-vertical-fade-out-backwards var(--slide-transition); } > .Transition_slide-from { animation: slide-vertical-fade-in-backwards var(--slide-transition); } } &-slideFade { > .Transition_slide-from { transform-origin: left; transform: translateX(0); opacity: 1; animation: fade-out-opacity var(--slide-transition), slide-fade-out-move var(--slide-transition); } > .Transition_slide-to { transform-origin: left; transform: translateX(1.5rem); opacity: 0; animation: fade-in-opacity var(--slide-transition), slide-fade-in-move var(--slide-transition); } } &-slideFadeBackwards { > .Transition_slide-from { transform: translateX(0); opacity: 1; animation: fade-in-backwards-opacity var(--slide-transition), slide-fade-in-backwards-move var(--slide-transition); } > .Transition_slide-to { transform: translateX(-1.5rem); opacity: 0; animation: fade-out-backwards-opacity var(--slide-transition), slide-fade-out-backwards-move var(--slide-transition); } } &-slideFadeAndroid { --background-color: var(--color-background); > .Transition_slide { z-index: 0; background: var(--background-color); } > .Transition_slide-to { transform-origin: left; transform: translateX(1.5rem); opacity: 0; animation: fade-in-opacity var(--slide-transition), slide-fade-in-move-android var(--slide-transition); } } &-slideFadeAndroidBackwards { --background-color: var(--color-background); > .Transition_slide { z-index: 0; background: var(--background-color); } > .Transition_slide-from { transform: translateX(0); opacity: 1; animation: fade-in-backwards-opacity var(--slide-transition), slide-fade-in-backwards-move-android var(--slide-transition); } } &-zoomFade { > .Transition_slide-from { transform-origin: center; transform: scale(1); opacity: 1; animation: fade-out-opacity 0.15s ease; } > .Transition_slide-to { transform-origin: center; opacity: 0; // We can omit `transform: scale(1.1);` here because `opacity` is 0. // We need to for proper position calculation in `InfiniteScroll`. animation: fade-in-opacity 0.15s ease, zoom-fade-in-move 0.15s ease; } } &-zoomFadeBackwards { > .Transition_slide-from { transform: scale(1); animation: fade-in-backwards-opacity 0.1s ease, zoom-fade-in-backwards-move 0.15s ease; } > .Transition_slide-to { transform: scale(0.95); animation: fade-out-backwards-opacity 0.15s ease, zoom-fade-out-backwards-move 0.15s ease; } } &-zoomBounceSemiFade, &-zoomBounceSemiFadeBackwards { > .Transition_slide-from { animation: zoom-bounce 0.25s ease-in-out; } > .Transition_slide-to { animation: fade-in-opacity 250ms ease, zoom-bounce 0.25s ease-in-out; } } &-fade, &-fadeBackwards { > .Transition_slide-from { opacity: 1; animation: fade-out-opacity 0.2s ease; } > .Transition_slide-to { opacity: 0; animation: fade-in-opacity 0.2s ease; } } &-semiFade { > .Transition_slide { isolation: isolate; } > .Transition_slide-from { opacity: 1; } > .Transition_slide-to { opacity: 0; animation: fade-in-opacity 250ms ease; } } &-semiFadeBackwards { > .Transition_slide-from { opacity: 1; animation: fade-in-backwards-opacity 250ms ease; } > .Transition_slide-to { opacity: 1; animation: none !important; } } &-slideLayers { --background-color: var(--color-background); background: black !important; > .Transition_slide { background: var(--background-color); } > .Transition_slide-to { transform: translateX(100%); animation: slide-in var(--layer-transition); } > .Transition_slide-from { animation: slide-layers-out var(--layer-transition-behind); } } &-slideLayersBackwards { --background-color: var(--color-background); background: black !important; > .Transition_slide { background: var(--background-color); } > .Transition_slide-to { transform: translateX(-20%); opacity: calc(1 - var(--layer-blackout-opacity)); animation: slide-layers-out-backwards var(--layer-transition-behind); animation-duration: 450ms; } > .Transition_slide-from { animation: slide-in-backwards var(--layer-transition); } } &-pushSlide { > .Transition_slide { background: var(--color-background); } > .Transition_slide-from { transform-origin: center; transform: scale(1); opacity: 1; animation: push-out 0.25s ease-in-out; .custom-scroll { scrollbar-color: transparent transparent !important; &::-webkit-scrollbar-thumb { background-color: transparent !important; } } } > .Transition_slide-to { transform: translateX(100%); animation: slide-in-200 0.25s ease-in-out; } } &-pushSlideBackwards { > .Transition_slide { background: var(--color-background); } > .Transition_slide-to { transform: scale(0.7); opacity: 0; animation: push-out-backwards 0.25s ease-in-out; } > .Transition_slide-from { animation: slide-in-200-backwards 0.25s ease-in-out; } } &-reveal { > .Transition_slide-to { clip-path: inset(0 100% 0 0); animation: reveal-in 350ms ease-in; } } &-revealBackwards { > .Transition_slide-from { clip-path: inset(0 0 0 0); animation: reveal-in-backwards 350ms ease-out; } > .Transition_slide-to { clip-path: none; animation: none; } } } @keyframes fade-in-opacity { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes fade-out-opacity { 0% { opacity: 1; } 100% { opacity: 0; } } @keyframes fade-in-backwards-opacity { 0% { opacity: 1; } 100% { opacity: 0; } } @keyframes fade-out-backwards-opacity { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes slide-in { 0% { transform: translateX(100%); } 100% { transform: translateX(0); } } @keyframes slide-out { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } } @keyframes slide-in-backwards { 0% { transform: translateX(0); } 100% { transform: translateX(100%); } } @keyframes slide-out-backwards { 0% { transform: translateX(-100%); } 100% { transform: translateX(0); } } @keyframes slide-vertical-in { 0% { transform: translateY(100%); } 100% { transform: translateY(0); } } @keyframes slide-vertical-out { 0% { transform: translateY(0); } 100% { transform: translateY(-100%); } } @keyframes slide-vertical-in-backwards { 0% { transform: translateY(0); } 100% { transform: translateY(100%); } } @keyframes slide-vertical-out-backwards { 0% { transform: translateY(-100%); } 100% { transform: translateY(0); } } @keyframes slide-vertical-fade-in { 0% { transform: translateY(100%); opacity: 0; } 100% { transform: translateY(0); opacity: 1; } } @keyframes slide-vertical-fade-out { 0% { transform: translateY(0); opacity: 1; } 100% { transform: translateY(-100%); opacity: 0; } } @keyframes slide-vertical-fade-in-backwards { 0% { transform: translateY(0); opacity: 1; } 100% { transform: translateY(100%); opacity: 0; } } @keyframes slide-vertical-fade-out-backwards { 0% { transform: translateY(-100%); opacity: 0; } 100% { transform: translateY(0); opacity: 1; } } @keyframes slide-fade-in-move { 0% { transform: translateX(1.5rem); } 100% { transform: translateX(0); } } @keyframes slide-fade-out-move { 0% { transform: translateX(0); } 100% { transform: translateX(-1.5rem); } } @keyframes slide-fade-in-backwards-move { 0% { transform: translateX(0); } 100% { transform: translateX(1.5rem); } } @keyframes slide-fade-out-backwards-move { 0% { transform: translateX(-1.5rem); } 100% { transform: translateX(0); } } @keyframes slide-fade-in-move-android { 0% { transform: translateX(20%); } 100% { transform: translateX(0); } } @keyframes slide-fade-in-backwards-move-android { 0% { transform: translateX(0); } 100% { transform: translateX(15%); } } @keyframes zoom-fade-in-move { 0% { transform: scale(1.1); } 100% { transform: scale(1); } } @keyframes zoom-fade-in-backwards-move { 0% { transform: scale(1); } 100% { transform: scale(1.1); } } @keyframes zoom-fade-out-backwards-move { 0% { transform: scale(0.95); } 100% { transform: scale(1); } } @keyframes slide-layers-out { 0% { transform: translateX(0); opacity: 1; } 100% { transform: translateX(-20%); opacity: calc(1 - var(--layer-blackout-opacity)); } } @keyframes slide-layers-out-backwards { 0% { transform: translateX(-20%); opacity: calc(1 - var(--layer-blackout-opacity)); } 100% { transform: translateX(0); opacity: 1; } } @keyframes push-out { 0% { transform: scale(1); opacity: 1; } 100% { transform: scale(0.7); opacity: 0; } } @keyframes push-out-backwards { 0% { transform: scale(0.7); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } @keyframes slide-in-200 { 0% { transform: translateX(200%); } 100% { transform: translateX(0); } } @keyframes slide-in-200-backwards { 0% { transform: translateX(0); } 100% { transform: translateX(200%); } } @keyframes reveal-in { 0% { clip-path: inset(0 100% 0 0); } 100% { clip-path: inset(0 0 0 0); } } @keyframes reveal-in-backwards { 0% { clip-path: inset(0 0 0 0); } 100% { clip-path: inset(0 100% 0 0); } } @keyframes zoom-bounce { 0% { transform: scale(1); } 25% { transform: scale(0.95); } 100% { transform: scale(1); } }