/**************************************************************** * Animation * Variables for animating elements with CSS animations. * animation: var(--animate-fade-in) forwards; *****************************************************************/ :root { --animate-fade-in: fade-in .5s cubic-bezier(.25, 0, .3, 1); --animate-fade-in-bloom: fade-in-bloom 2s cubic-bezier(.25, 0, .3, 1); --animate-fade-out: fade-out .5s cubic-bezier(.25, 0, .3, 1); --animate-fade-out-bloom: fade-out-bloom 2s cubic-bezier(.25, 0, .3, 1); --animate-scale-up: scale-up .5s cubic-bezier(.25, 0, .3, 1); --animate-scale-down: scale-down .5s cubic-bezier(.25, 0, .3, 1); --animate-slide-out-up: slide-out-up .5s cubic-bezier(.25, 0, .3, 1); --animate-slide-out-down: slide-out-down .5s cubic-bezier(.25, 0, .3, 1); --animate-slide-out-right: slide-out-right .5s cubic-bezier(.25, 0, .3, 1); --animate-slide-out-left: slide-out-left .5s cubic-bezier(.25, 0, .3, 1); --animate-slide-in-up: slide-in-up .5s cubic-bezier(.25, 0, .3, 1); --animate-slide-in-down: slide-in-down .5s cubic-bezier(.25, 0, .3, 1); --animate-slide-in-right: slide-in-right .5s cubic-bezier(.25, 0, .3, 1); --animate-slide-in-left: slide-in-left .5s cubic-bezier(.25, 0, .3, 1); --animate-shake-x: shake-x .75s cubic-bezier(0, 0, 0, 1); --animate-shake-y: shake-y .75s cubic-bezier(0, 0, 0, 1); --animate-shake-z: shake-z 1s cubic-bezier(0, 0, 0, 1); --animate-spin: spin 2s linear infinite; --animate-ping: ping 5s cubic-bezier(0, 0, .3, 1) infinite; --animate-blink: blink 1s cubic-bezier(0, 0, .3, 1) infinite; --animate-float: float 3s cubic-bezier(0, 0, 0, 1) infinite; --animate-bounce: bounce 2s cubic-bezier(.5, -.3, .1, 1.5) infinite; --animate-pulse: pulse 2s cubic-bezier(0, 0, .3, 1) infinite; } @keyframes fade-in { to { opacity: 1 } } @keyframes fade-in-bloom { 0% { opacity: 0; filter: brightness(1) blur(20px) } 10% { opacity: 1; filter: brightness(2) blur(10px) } 100% { opacity: 1; filter: brightness(1) blur(0) } } @keyframes fade-out { to { opacity: 0 } } @keyframes fade-out-bloom { 100% { opacity: 0; filter: brightness(1) blur(20px) } 10% { opacity: 1; filter: brightness(2) blur(10px) } 0% { opacity: 1; filter: brightness(1) blur(0) } } @keyframes scale-up { to { transform: scale(1.25) } } @keyframes scale-down { to { transform: scale(.75) } } @keyframes slide-out-up { to { transform: translateY(-100%) } } @keyframes slide-out-down { to { transform: translateY(100%) } } @keyframes slide-out-right { to { transform: translateX(100%) } } @keyframes slide-out-left { to { transform: translateX(-100%) } } @keyframes slide-in-up { from { transform: translateY(100%) } } @keyframes slide-in-down { from { transform: translateY(-100%) } } @keyframes slide-in-right { from { transform: translateX(-100%) } } @keyframes slide-in-left { from { transform: translateX(100%) } } @keyframes shake-x { 0%, 100% { transform: translateX(0%) } 20% { transform: translateX(-5%) } 40% { transform: translateX(5%) } 60% { transform: translateX(-5%) } 80% { transform: translateX(5%) } } @keyframes shake-y { 0%, 100% { transform: translateY(0%) } 20% { transform: translateY(-5%) } 40% { transform: translateY(5%) } 60% { transform: translateY(-5%) } 80% { transform: translateY(5%) } } @keyframes shake-z { 0%, 100% { transform: rotate(0deg) } 20% { transform: rotate(-2deg) } 40% { transform: rotate(2deg) } 60% { transform: rotate(-2deg) } 80% { transform: rotate(2deg) } } @keyframes spin { to { transform: rotate(1turn) } } @keyframes ping { 90%, 100% { transform: scale(2); opacity: 0; } } @keyframes blink { 0%, 100% { opacity: 1 } 50% { opacity: .5 } } @keyframes float { 50% { transform: translateY(-25%) } } @keyframes bounce { 25% { transform: translateY(-20%) } 40% { transform: translateY(-3%) } 0%, 60%, 100% { transform: translateY(0) } } @keyframes pulse { 50% { transform: scale(.9,.9) } } @media (prefers-color-scheme: dark) { @keyframes fade-in-bloom { 0% { opacity: 0; filter: brightness(1) blur(20px) } 10% { opacity: 1; filter: brightness(0.5) blur(10px) } 100% { opacity: 1; filter: brightness(1) blur(0) } } } @media (prefers-color-scheme: dark) { @keyframes fade-out-bloom { 100% { opacity: 0; filter: brightness(1) blur(20px) } 10% { opacity: 1; filter: brightness(0.5) blur(10px) } 0% { opacity: 1; filter: brightness(1) blur(0) } } }