From 36969b36de3bde50d76dc7afff6be86dbba219df Mon Sep 17 00:00:00 2001 From: George Cordalis Date: Tue, 13 Dec 2016 17:37:51 +1300 Subject: [PATCH] Updated UI Updated UI - includes client playback functionality --- app/css/animate.css | 3340 +++++++++++++++++++++++++++++++++++++ app/css/scroll.css | 8 +- app/css/style.css | 40 +- app/home.html | 249 ++- app/img/poster.jpeg | Bin 0 -> 34578 bytes app/js/home.js | 64 +- app/js/plex/PlexClient.js | 23 + app/js/titlebar.js | 94 +- 8 files changed, 3600 insertions(+), 218 deletions(-) create mode 100644 app/css/animate.css create mode 100644 app/img/poster.jpeg diff --git a/app/css/animate.css b/app/css/animate.css new file mode 100644 index 00000000..7148b576 --- /dev/null +++ b/app/css/animate.css @@ -0,0 +1,3340 @@ +@charset "UTF-8"; + +/*! + * animate.css -http://daneden.me/animate + * Version - 3.5.1 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2016 Daniel Eden + */ + +.animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.animated.infinite { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} + +.animated.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; +} + +.animated.flipOutX, +.animated.flipOutY, +.animated.bounceIn, +.animated.bounceOut { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +@-webkit-keyframes bounce { + from, 20%, 53%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + } + + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + + 90% { + -webkit-transform: translate3d(0,-4px,0); + transform: translate3d(0,-4px,0); + } +} + +@keyframes bounce { + from, 20%, 53%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + } + + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + + 90% { + -webkit-transform: translate3d(0,-4px,0); + transform: translate3d(0,-4px,0); + } +} + +.bounce { + -webkit-animation-name: bounce; + animation-name: bounce; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} + +@-webkit-keyframes flash { + from, 50%, to { + opacity: 1; + } + + 25%, 75% { + opacity: 0; + } +} + +@keyframes flash { + from, 50%, to { + opacity: 1; + } + + 25%, 75% { + opacity: 0; + } +} + +.flash { + -webkit-animation-name: flash; + animation-name: flash; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.pulse { + -webkit-animation-name: pulse; + animation-name: pulse; +} + +@-webkit-keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(.95, 1.05, 1); + transform: scale3d(.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, .95, 1); + transform: scale3d(1.05, .95, 1); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(.95, 1.05, 1); + transform: scale3d(.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, .95, 1); + transform: scale3d(1.05, .95, 1); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.rubberBand { + -webkit-animation-name: rubberBand; + animation-name: rubberBand; +} + +@-webkit-keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +@keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +.shake { + -webkit-animation-name: shake; + animation-name: shake; +} + +@-webkit-keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); + } + + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); + } + + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); + } + + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); + } + + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); + } + + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); + } + + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); + } + + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); + } + + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +.headShake { + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + -webkit-animation-name: headShake; + animation-name: headShake; +} + +@-webkit-keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +@keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +.swing { + -webkit-transform-origin: top center; + transform-origin: top center; + -webkit-animation-name: swing; + animation-name: swing; +} + +@-webkit-keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, 20% { + -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + } + + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, 20% { + -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + } + + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.tada { + -webkit-animation-name: tada; + animation-name: tada; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes wobble { + from { + -webkit-transform: none; + transform: none; + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes wobble { + from { + -webkit-transform: none; + transform: none; + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +.wobble { + -webkit-animation-name: wobble; + animation-name: wobble; +} + +@-webkit-keyframes jello { + from, 11.1%, to { + -webkit-transform: none; + transform: none; + } + + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} + +@keyframes jello { + from, 11.1%, to { + -webkit-transform: none; + transform: none; + } + + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} + +.jello { + -webkit-animation-name: jello; + animation-name: jello; + -webkit-transform-origin: center; + transform-origin: center; +} + +@-webkit-keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.bounceIn { + -webkit-animation-name: bounceIn; + animation-name: bounceIn; +} + +@-webkit-keyframes bounceInDown { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInDown { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +.bounceInDown { + -webkit-animation-name: bounceInDown; + animation-name: bounceInDown; +} + +@-webkit-keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +.bounceInLeft { + -webkit-animation-name: bounceInLeft; + animation-name: bounceInLeft; +} + +@-webkit-keyframes bounceInRight { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInRight { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + + to { + -webkit-transform: none; + transform: none; + } +} + +.bounceInRight { + -webkit-animation-name: bounceInRight; + animation-name: bounceInRight; +} + +@-webkit-keyframes bounceInUp { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes bounceInUp { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.bounceInUp { + -webkit-animation-name: bounceInUp; + animation-name: bounceInUp; +} + +@-webkit-keyframes bounceOut { + 20% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +@keyframes bounceOut { + 20% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +.bounceOut { + -webkit-animation-name: bounceOut; + animation-name: bounceOut; +} + +@-webkit-keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +.bounceOutDown { + -webkit-animation-name: bounceOutDown; + animation-name: bounceOutDown; +} + +@-webkit-keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +.bounceOutLeft { + -webkit-animation-name: bounceOutLeft; + animation-name: bounceOutLeft; +} + +@-webkit-keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +.bounceOutRight { + -webkit-animation-name: bounceOutRight; + animation-name: bounceOutRight; +} + +@-webkit-keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +.bounceOutUp { + -webkit-animation-name: bounceOutUp; + animation-name: bounceOutUp; +} + +@-webkit-keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +.fadeIn { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} + +@-webkit-keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} + +@-webkit-keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInDownBig { + -webkit-animation-name: fadeInDownBig; + animation-name: fadeInDownBig; +} + +@-webkit-keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInLeft { + -webkit-animation-name: fadeInLeft; + animation-name: fadeInLeft; +} + +@-webkit-keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInLeftBig { + -webkit-animation-name: fadeInLeftBig; + animation-name: fadeInLeftBig; +} + +@-webkit-keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInRight { + -webkit-animation-name: fadeInRight; + animation-name: fadeInRight; +} + +@-webkit-keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInRightBig { + -webkit-animation-name: fadeInRightBig; + animation-name: fadeInRightBig; +} + +@-webkit-keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInUp { + -webkit-animation-name: fadeInUp; + animation-name: fadeInUp; +} + +@-webkit-keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInUpBig { + -webkit-animation-name: fadeInUpBig; + animation-name: fadeInUpBig; +} + +@-webkit-keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +@keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +.fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} + +@-webkit-keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +.fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; +} + +@-webkit-keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +.fadeOutDownBig { + -webkit-animation-name: fadeOutDownBig; + animation-name: fadeOutDownBig; +} + +@-webkit-keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.fadeOutLeft { + -webkit-animation-name: fadeOutLeft; + animation-name: fadeOutLeft; +} + +@-webkit-keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +.fadeOutLeftBig { + -webkit-animation-name: fadeOutLeftBig; + animation-name: fadeOutLeftBig; +} + +@-webkit-keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.fadeOutRight { + -webkit-animation-name: fadeOutRight; + animation-name: fadeOutRight; +} + +@-webkit-keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +.fadeOutRightBig { + -webkit-animation-name: fadeOutRightBig; + animation-name: fadeOutRightBig; +} + +@-webkit-keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; +} + +@-webkit-keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +.fadeOutUpBig { + -webkit-animation-name: fadeOutUpBig; + animation-name: fadeOutUpBig; +} + +@-webkit-keyframes flip { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(.95, .95, .95); + transform: perspective(400px) scale3d(.95, .95, .95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +@keyframes flip { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(.95, .95, .95); + transform: perspective(400px) scale3d(.95, .95, .95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +.animated.flip { + -webkit-backface-visibility: visible; + backface-visibility: visible; + -webkit-animation-name: flip; + animation-name: flip; +} + +@-webkit-keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +.flipInX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInX; + animation-name: flipInX; +} + +@-webkit-keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +.flipInY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInY; + animation-name: flipInY; +} + +@-webkit-keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +.flipOutX { + -webkit-animation-name: flipOutX; + animation-name: flipOutX; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; +} + +@-webkit-keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +@keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +.flipOutY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipOutY; + animation-name: flipOutY; +} + +@-webkit-keyframes lightSpeedIn { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; + } + + to { + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes lightSpeedIn { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; + } + + to { + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.lightSpeedIn { + -webkit-animation-name: lightSpeedIn; + animation-name: lightSpeedIn; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; +} + +@-webkit-keyframes lightSpeedOut { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +@keyframes lightSpeedOut { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +.lightSpeedOut { + -webkit-animation-name: lightSpeedOut; + animation-name: lightSpeedOut; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; +} + +@-webkit-keyframes rotateIn { + from { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateIn { + from { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateIn { + -webkit-animation-name: rotateIn; + animation-name: rotateIn; +} + +@-webkit-keyframes rotateInDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInDownLeft { + -webkit-animation-name: rotateInDownLeft; + animation-name: rotateInDownLeft; +} + +@-webkit-keyframes rotateInDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInDownRight { + -webkit-animation-name: rotateInDownRight; + animation-name: rotateInDownRight; +} + +@-webkit-keyframes rotateInUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInUpLeft { + -webkit-animation-name: rotateInUpLeft; + animation-name: rotateInUpLeft; +} + +@-webkit-keyframes rotateInUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInUpRight { + -webkit-animation-name: rotateInUpRight; + animation-name: rotateInUpRight; +} + +@-webkit-keyframes rotateOut { + from { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +@keyframes rotateOut { + from { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; + } + + to { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +.rotateOut { + -webkit-animation-name: rotateOut; + animation-name: rotateOut; +} + +@-webkit-keyframes rotateOutDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +@keyframes rotateOutDownLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +.rotateOutDownLeft { + -webkit-animation-name: rotateOutDownLeft; + animation-name: rotateOutDownLeft; +} + +@-webkit-keyframes rotateOutDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +@keyframes rotateOutDownRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutDownRight { + -webkit-animation-name: rotateOutDownRight; + animation-name: rotateOutDownRight; +} + +@-webkit-keyframes rotateOutUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +@keyframes rotateOutUpLeft { + from { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutUpLeft { + -webkit-animation-name: rotateOutUpLeft; + animation-name: rotateOutUpLeft; +} + +@-webkit-keyframes rotateOutUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +@keyframes rotateOutUpRight { + from { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + to { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +.rotateOutUpRight { + -webkit-animation-name: rotateOutUpRight; + animation-name: rotateOutUpRight; +} + +@-webkit-keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +@keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +.hinge { + -webkit-animation-name: hinge; + animation-name: hinge; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.rollIn { + -webkit-animation-name: rollIn; + animation-name: rollIn; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +@keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +.rollOut { + -webkit-animation-name: rollOut; + animation-name: rollOut; +} + +@-webkit-keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 50% { + opacity: 1; + } +} + +@keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 50% { + opacity: 1; + } +} + +.zoomIn { + -webkit-animation-name: zoomIn; + animation-name: zoomIn; +} + +@-webkit-keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInDown { + -webkit-animation-name: zoomInDown; + animation-name: zoomInDown; +} + +@-webkit-keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInLeft { + -webkit-animation-name: zoomInLeft; + animation-name: zoomInLeft; +} + +@-webkit-keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInRight { + -webkit-animation-name: zoomInRight; + animation-name: zoomInRight; +} + +@-webkit-keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInUp { + -webkit-animation-name: zoomInUp; + animation-name: zoomInUp; +} + +@-webkit-keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + to { + opacity: 0; + } +} + +@keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + to { + opacity: 0; + } +} + +.zoomOut { + -webkit-animation-name: zoomOut; + animation-name: zoomOut; +} + +@-webkit-keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomOutDown { + -webkit-animation-name: zoomOutDown; + animation-name: zoomOutDown; +} + +@-webkit-keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); + transform: scale(.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; + } +} + +@keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); + transform: scale(.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; + } +} + +.zoomOutLeft { + -webkit-animation-name: zoomOutLeft; + animation-name: zoomOutLeft; +} + +@-webkit-keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(.1) translate3d(2000px, 0, 0); + transform: scale(.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; + } +} + +@keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(.1) translate3d(2000px, 0, 0); + transform: scale(.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; + } +} + +.zoomOutRight { + -webkit-animation-name: zoomOutRight; + animation-name: zoomOutRight; +} + +@-webkit-keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + to { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomOutUp { + -webkit-animation-name: zoomOutUp; + animation-name: zoomOutUp; +} + +@-webkit-keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInDown { + -webkit-animation-name: slideInDown; + animation-name: slideInDown; +} + +@-webkit-keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInLeft { + -webkit-animation-name: slideInLeft; + animation-name: slideInLeft; +} + +@-webkit-keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInRight { + -webkit-animation-name: slideInRight; + animation-name: slideInRight; +} + +@-webkit-keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInUp { + -webkit-animation-name: slideInUp; + animation-name: slideInUp; +} + +@-webkit-keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +.slideOutDown { + -webkit-animation-name: slideOutDown; + animation-name: slideOutDown; +} + +@-webkit-keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.slideOutLeft { + -webkit-animation-name: slideOutLeft; + animation-name: slideOutLeft; +} + +@-webkit-keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.slideOutRight { + -webkit-animation-name: slideOutRight; + animation-name: slideOutRight; +} + +@-webkit-keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.slideOutUp { + -webkit-animation-name: slideOutUp; + animation-name: slideOutUp; +} diff --git a/app/css/scroll.css b/app/css/scroll.css index b2e2c0de..edb9f903 100644 --- a/app/css/scroll.css +++ b/app/css/scroll.css @@ -19,23 +19,23 @@ ::-webkit-scrollbar { width: 5px; /* 1px wider than Lion. */ /* This is more usable for users trying to click it. */ - background-color: rgba(0,0,0,0); + background-color: rgba(229,160,13,0); -webkit-border-radius: 100px; } /* hover effect for both scrollbar area, and scrollbar 'thumb' */ ::-webkit-scrollbar:hover { - background-color: rgba(0, 0, 0, 0.09); + background-color: rgba(229, 160, 13, 1); } /* The scrollbar 'thumb' ...that marque oval shape in a scrollbar */ ::-webkit-scrollbar-thumb:vertical { /* This is the EXACT color of Mac OS scrollbars. Yes, I pulled out digital color meter */ - background: rgba(0,0,0,0.5); + background: rgba(229,160,13,1); -webkit-border-radius: 100px; } ::-webkit-scrollbar-thumb:vertical:active { - background: rgba(0,0,0,0.61); /* Some darker color when you click it */ + background: rgba(229,160,13,0.61); /* Some darker color when you click it */ -webkit-border-radius: 100px; } diff --git a/app/css/style.css b/app/css/style.css index 4dddad80..e1d587a2 100644 --- a/app/css/style.css +++ b/app/css/style.css @@ -1,4 +1,10 @@ -body { min-width:650px; } +body { + min-width:650px; +} + +.container-test { + top: 0px; +} .plex-shark { background-color: #282A2D !important; @@ -12,8 +18,12 @@ body { min-width:650px; } background-color: #3F4245 !important; } +.plex-riverbed-text { + color: #3F4245; +} + .plex-white { - background-color: #F2F3F4 !important; + background-color: #F9F9F9 !important; } @@ -53,20 +63,20 @@ body { min-width:650px; } .plexTogetherInfo { position: absolute; - bottom: 0px; + bottom: 2px; /* border-top: 1px solid #F2F3F4; */ box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, 0.16); - padding-top: 3px; - height: 199px + /* padding-top: 7.5px; */ + height: 51px } .plexTogetherInfoButton { position: absolute; bottom: 0px; /* border-top: 1px solid #F2F3F4; */ - /* box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, 0.16); */ - padding-top: 3px; - height: 42px + box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, 0.16); + padding-top: 7.5px; + height: 51px } .plexAccountInfo { @@ -107,7 +117,7 @@ body { min-width:650px; } } .sideNav { - background-color: #3F4245; + background-color: #282A2D; cursor: default; } @@ -115,6 +125,12 @@ body { min-width:650px; } background-color: #282A2D; } +.topbar { + width: 165px; + height: 50px; + display: block; +} + /* Photon */ .window { @@ -156,7 +172,7 @@ body { min-width:650px; } } .sidebar { - background-color: #3F4245 + background-color: #282A2D } .nav-group-title { @@ -189,7 +205,7 @@ Main Components -------------------------------- */ .cd-accordion-menu { width: 100%; - background: #3F4245; + background: #282A2D; /* margin: 4em auto; */ /* box-shadow: 0 4px 40px #70ac76; */ } @@ -212,7 +228,7 @@ Main Components position: relative; display: block; padding: 18px 18px 18px 64px; - background: #3F4245; + background: #282A2D; box-shadow: inset 0 -1px #555960; color: #ffffff; font-size: 1.6rem; diff --git a/app/home.html b/app/home.html index a85d9054..85f26f3b 100644 --- a/app/home.html +++ b/app/home.html @@ -1,85 +1,105 @@ - - Plex Together - - - - - - - - - - - + + Plex Together + + + + + + + + + + + + + + + + + - - - - - - - - - - -
-
-
-
-
-
-
- - - + + + + - - diff --git a/app/img/poster.jpeg b/app/img/poster.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..1e49569f56a5022caa135986a27cf09358e85b43 GIT binary patch literal 34578 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 literal 0 HcmV?d00001 diff --git a/app/js/home.js b/app/js/home.js index 4e2bfeda..84c99ce0 100644 --- a/app/js/home.js +++ b/app/js/home.js @@ -34,22 +34,6 @@ ipcRenderer.on('home-tab-me-avatar-result', function(event, result, path) { document.getElementById('meAvatar').src = relPath }) ipcRenderer.on('home-tab-initialize-result', function(event, username, clients, servers) { - $('#metaDropdown').click(function() { - global.renderLog.info('dropdown') - if (arrowDirection == 'arrow_drop_down'){ - $(this).parent().find('#userMetadata').html('arrow_drop_down'); - $(this).html('arrow_drop_up'); - $('#userMetadata').css('display', 'block'); - $('#mainUser').css('box-shadow', '0 2px 5px 0 rgba(0, 0, 0, 0.16)'); - arrowDirection = 'arrow_drop_up' - } else { - $(this).parent().find('#userMetadata').html('arrow_drop_down'); - $(this).html('arrow_drop_down'); - $('#userMetadata').css('display', 'none'); - $('#mainUser').css('box-shadow', '0 2px 5px 0 rgba(0, 0, 0, 0)'); - arrowDirection = 'arrow_drop_down' - } - }); updateSelfUserUsername(username) ipcRenderer.send('ptmain-thumb-download') @@ -156,7 +140,7 @@ ipcRenderer.on('home-tab-clientclicked-result',function(event,result,client){ checkRatingKey() },5000) metadataIntervals.push(ratingKeyInterval) - document.getElementById('metaPlayer').innerHTML = client.name + // document.getElementById('metaPlayer').innerHTML = client.name } else { //The swap wasn't a success, reflect this!' child.style.color = '#FF262E' @@ -253,7 +237,7 @@ function updateMeta(server){ // we just want a timed update var plex = remote.getGlobal('plex') var metadata = plex.chosenClient.clientPlayingMetadata - document.getElementById('metaServer').innerHTML = server.name + // document.getElementById('metaServer').innerHTML = server.name ipcRenderer.send('home-metadata-download',server,metadata) } //This is the reply from the above @@ -277,29 +261,18 @@ ipcRenderer.on('home-metadata-download-result',function(event,result,path){ } var under if (metadata.type == 'episode'){ - under = metadata.title + ' - S' + season + '·E' + episode + under = metadata.title + '
S' + season + '·E' + episode } else { under = metadata.tagline + ' (' + metadata.year + ')' } document.getElementById('metaThumb').src = path + '#' + new Date().getTime() - var originalTitle = title - if (title.length > 40){ - document.getElementById('metaTitle').style.fontSize = '32px' - } - if (originalTitle.length > 50){ - originalTitle = originalTitle.substring(0,50) - title = originalTitle + '...' - } - document.getElementById('metaTitle').innerHTML = title - document.getElementById('metaUnder').innerHTML = under - var summary = metadata.summary - if (summary.length > 280){ - summary = summary.substring(0,280) - summary = summary + '...' - } - document.getElementById('metaSummary').innerHTML = summary + + //Display Metadata + play controls + $('#userMetadata').css('display', 'block'); + $('.plexServerClientInfo').css({'height': 'calc(100% - 401px)'}) + } }) ipcRenderer.on('ptuser-thumb-download-result',function(event,result,path,userData){ @@ -949,6 +922,25 @@ function getPercent(current,max){ } return percent } +function PlexClientPlayPause(){ + var plex = remote.getGlobal('plex') + if (plex.chosenClient.lastTimelineObject.state == 'paused') { + plex.chosenClient.pressPlay(function(){}) + } + if (plex.chosenClient.lastTimelineObject.state == 'playing') { + plex.chosenClient.pressPause(function(){}) + }} + +function PlexClientStepBack(){ + var plex = remote.getGlobal('plex') + plex.chosenClient.stepBack(function(){}) +} + +function PlexClientStepForward(){ + var plex = remote.getGlobal('plex') + plex.chosenClient.stepForward(function(){}) +} + function getTimeFromMs(ms){ var hours = ms / (1000*60*60) var absoluteHours = Math.floor(hours) @@ -1004,7 +996,7 @@ ipcRenderer.on('pt-server-hideInfo',function(event){ function ptserverShowInfo() { document.getElementById('plexTogetherInfoButton').style.display = 'none' document.getElementById('plexTogetherInfo').style.display = 'block' - $('.plexServerClientInfo').css({"height": "100%"}) + $('.plexServerClientInfo').css({"height": "calc(100% - 401px)"}) } function ptserverHideInfo() { document.getElementById('plexTogetherInfo').style.display = 'none' diff --git a/app/js/plex/PlexClient.js b/app/js/plex/PlexClient.js index dc987d2d..fd8137fe 100644 --- a/app/js/plex/PlexClient.js +++ b/app/js/plex/PlexClient.js @@ -149,6 +149,7 @@ module.exports = function PlexClient(){ } }) } + this.pressStop = function(callback){ //Press pause on the client this.hitApi('/player/playback/stop',{'wait':0},this.chosenConnection,function(result){ @@ -171,6 +172,28 @@ module.exports = function PlexClient(){ } }) } + this.stepBack = function(callback){ + //Seek to a time (in ms) + this.hitApi('/player/playback/stepBack',{'wait':0},this.chosenConnection,function(result){ + if (result){ + //Valid response back from the client + return callback(result) + } else { + return callback(null) + } + }) + } + this.stepForward = function(callback){ + //Seek to a time (in ms) + this.hitApi('/player/playback/stepForward',{'wait':0},this.chosenConnection,function(result){ + if (result){ + //Valid response back from the client + return callback(result) + } else { + return callback(null) + } + }) + } this.getRatingKey = function(callback){ //Get the ratingKey, aka the mediaId, of the item playing diff --git a/app/js/titlebar.js b/app/js/titlebar.js index ec3ab2aa..0533d295 100644 --- a/app/js/titlebar.js +++ b/app/js/titlebar.js @@ -5,54 +5,56 @@ var remote = require('electron').remote var ALT = 18; // Setup our top bar -let macTop = '