voltar 0.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/fonts/FontAwesome.otf +0 -0
  6. data/app/assets/fonts/Simple-Line-Icons.eot +0 -0
  7. data/app/assets/fonts/Simple-Line-Icons.svg +1369 -0
  8. data/app/assets/fonts/Simple-Line-Icons.ttf +0 -0
  9. data/app/assets/fonts/Simple-Line-Icons.woff +0 -0
  10. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  11. data/app/assets/fonts/fontawesome-webfont.svg +520 -0
  12. data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
  13. data/app/assets/fonts/fontawesome-webfont.woff +0 -0
  14. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  15. data/app/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  16. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  17. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  18. data/app/assets/fonts/sourcesanspro/sourcesanspro-bold.woff +0 -0
  19. data/app/assets/fonts/sourcesanspro/sourcesanspro-light.woff +0 -0
  20. data/app/assets/fonts/sourcesanspro/sourcesanspro.woff +0 -0
  21. data/app/assets/javascripts/voltar/app.js +203 -0
  22. data/app/assets/javascripts/voltar/application.js +33 -0
  23. data/app/assets/javascripts/voltar/controllers/app_ctrl.js.erb +673 -0
  24. data/app/assets/javascripts/voltar/directives/app_directives.js +345 -0
  25. data/app/assets/javascripts/voltar/factories/app_services.js +255 -0
  26. data/app/assets/javascripts/voltar/stripe.js.coffee +2 -0
  27. data/app/assets/stylesheets/voltar/app.css +4990 -0
  28. data/app/assets/stylesheets/voltar/application.css +23 -0
  29. data/app/assets/stylesheets/voltar/voltar.css.scss +93 -0
  30. data/app/controllers/voltar/application_controller.rb +4 -0
  31. data/app/controllers/voltar/dashboard_controller.rb +11 -0
  32. data/app/helpers/voltar/application_helper.rb +4 -0
  33. data/app/views/layouts/voltar/application.html.erb +40 -0
  34. data/app/views/voltar/account/_billing.html.erb +552 -0
  35. data/app/views/voltar/account/_locations.html.erb +135 -0
  36. data/app/views/voltar/account/_managers.html +134 -0
  37. data/app/views/voltar/account/_password.html.erb +57 -0
  38. data/app/views/voltar/account/_profile.html.erb +84 -0
  39. data/app/views/voltar/dashboard/index.html.erb +0 -0
  40. data/app/views/voltar/inventory/_delete_dialog.html.erb +16 -0
  41. data/app/views/voltar/inventory/_edit.html.erb +244 -0
  42. data/app/views/voltar/inventory/_index.html.erb +160 -0
  43. data/app/views/voltar/inventory/_mark_as_sold_dialog.html.erb +26 -0
  44. data/app/views/voltar/shared/_keen_js.html.haml +11 -0
  45. data/app/views/voltar/shared/_voltar_app.html.erb +83 -0
  46. data/app/views/voltar/shared/_voltar_aside.html.erb +71 -0
  47. data/app/views/voltar/shared/_voltar_footer.html.erb +13 -0
  48. data/app/views/voltar/shared/_voltar_header.html.erb +156 -0
  49. data/app/views/voltar/shared/app/_country_province_select.html +19 -0
  50. data/app/views/voltar/shared/app/_dashboard.html.erb +243 -0
  51. data/app/views/voltar/shared/app/_notifications.html.erb +13 -0
  52. data/app/views/voltar/shared/app/_spinner.html.erb +8 -0
  53. data/config/routes.rb +4 -0
  54. data/lib/tasks/voltar_tasks.rake +4 -0
  55. data/lib/voltar.rb +5 -0
  56. data/lib/voltar/engine.rb +15 -0
  57. data/lib/voltar/version.rb +3 -0
  58. data/test/dummy/README.rdoc +28 -0
  59. data/test/dummy/Rakefile +6 -0
  60. data/test/dummy/app/assets/javascripts/application.js +13 -0
  61. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  62. data/test/dummy/app/controllers/application_controller.rb +5 -0
  63. data/test/dummy/app/helpers/application_helper.rb +2 -0
  64. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  65. data/test/dummy/bin/bundle +3 -0
  66. data/test/dummy/bin/rails +4 -0
  67. data/test/dummy/bin/rake +4 -0
  68. data/test/dummy/bin/setup +29 -0
  69. data/test/dummy/config.ru +4 -0
  70. data/test/dummy/config/application.rb +26 -0
  71. data/test/dummy/config/boot.rb +5 -0
  72. data/test/dummy/config/database.yml +25 -0
  73. data/test/dummy/config/environment.rb +5 -0
  74. data/test/dummy/config/environments/development.rb +41 -0
  75. data/test/dummy/config/environments/production.rb +76 -0
  76. data/test/dummy/config/environments/test.rb +39 -0
  77. data/test/dummy/config/initializers/assets.rb +11 -0
  78. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  79. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  80. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  81. data/test/dummy/config/initializers/inflections.rb +16 -0
  82. data/test/dummy/config/initializers/mime_types.rb +4 -0
  83. data/test/dummy/config/initializers/session_store.rb +3 -0
  84. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  85. data/test/dummy/config/locales/en.yml +23 -0
  86. data/test/dummy/config/routes.rb +4 -0
  87. data/test/dummy/config/secrets.yml +22 -0
  88. data/test/dummy/log/development.log +0 -0
  89. data/test/dummy/public/404.html +67 -0
  90. data/test/dummy/public/422.html +67 -0
  91. data/test/dummy/public/500.html +66 -0
  92. data/test/dummy/public/favicon.ico +0 -0
  93. data/test/integration/navigation_test.rb +10 -0
  94. data/test/test_helper.rb +15 -0
  95. data/test/voltar_test.rb +7 -0
  96. data/vendor/assets/images/voltar/a0.jpg +0 -0
  97. data/vendor/assets/images/voltar/a1.jpg +0 -0
  98. data/vendor/assets/images/voltar/a10.jpg +0 -0
  99. data/vendor/assets/images/voltar/a2.jpg +0 -0
  100. data/vendor/assets/images/voltar/a3.jpg +0 -0
  101. data/vendor/assets/images/voltar/a4.jpg +0 -0
  102. data/vendor/assets/images/voltar/a5.jpg +0 -0
  103. data/vendor/assets/images/voltar/a6.jpg +0 -0
  104. data/vendor/assets/images/voltar/a7.jpg +0 -0
  105. data/vendor/assets/images/voltar/a8.jpg +0 -0
  106. data/vendor/assets/images/voltar/a9.jpg +0 -0
  107. data/vendor/assets/images/voltar/b0.jpg +0 -0
  108. data/vendor/assets/images/voltar/b1.jpg +0 -0
  109. data/vendor/assets/images/voltar/b2.jpg +0 -0
  110. data/vendor/assets/images/voltar/b3.jpg +0 -0
  111. data/vendor/assets/images/voltar/b4.jpg +0 -0
  112. data/vendor/assets/images/voltar/b5.jpg +0 -0
  113. data/vendor/assets/images/voltar/c0.jpg +0 -0
  114. data/vendor/assets/images/voltar/c1.jpg +0 -0
  115. data/vendor/assets/images/voltar/c2.jpg +0 -0
  116. data/vendor/assets/images/voltar/c3.jpg +0 -0
  117. data/vendor/assets/images/voltar/c4.jpg +0 -0
  118. data/vendor/assets/images/voltar/c5.jpg +0 -0
  119. data/vendor/assets/images/voltar/chosen-sprite.png +0 -0
  120. data/vendor/assets/images/voltar/chosen-sprite@2x.png +0 -0
  121. data/vendor/assets/images/voltar/logo.png +0 -0
  122. data/vendor/assets/images/voltar/p0.jpg +0 -0
  123. data/vendor/assets/javascripts/voltar/angular-animate.js +1689 -0
  124. data/vendor/assets/javascripts/voltar/angular-contenteditable.js +98 -0
  125. data/vendor/assets/javascripts/voltar/angular-cookies.js +206 -0
  126. data/vendor/assets/javascripts/voltar/angular-sanitize.js +647 -0
  127. data/vendor/assets/javascripts/voltar/angular-ui-router.js +3658 -0
  128. data/vendor/assets/javascripts/voltar/angular.js +22024 -0
  129. data/vendor/assets/javascripts/voltar/chosen.jquery.min.js +2 -0
  130. data/vendor/assets/javascripts/voltar/easypiechart/jquery.easy-pie-chart.js +209 -0
  131. data/vendor/assets/javascripts/voltar/flot/jquery.flot.min.js +29 -0
  132. data/vendor/assets/javascripts/voltar/flot/jquery.flot.orderBars.js +187 -0
  133. data/vendor/assets/javascripts/voltar/flot/jquery.flot.pie.min.js +56 -0
  134. data/vendor/assets/javascripts/voltar/flot/jquery.flot.resize.js +60 -0
  135. data/vendor/assets/javascripts/voltar/flot/jquery.flot.spline.js +212 -0
  136. data/vendor/assets/javascripts/voltar/flot/jquery.flot.tooltip.min.js +12 -0
  137. data/vendor/assets/javascripts/voltar/jquery.min.js +5 -0
  138. data/vendor/assets/javascripts/voltar/moment.js +2856 -0
  139. data/vendor/assets/javascripts/voltar/ngStorage.js +103 -0
  140. data/vendor/assets/javascripts/voltar/ocLazyLoad.js +906 -0
  141. data/vendor/assets/javascripts/voltar/smart-table.min.js +1 -0
  142. data/vendor/assets/javascripts/voltar/sparkline/jquery.sparkline.min.js +2 -0
  143. data/vendor/assets/javascripts/voltar/toaster.js +185 -0
  144. data/vendor/assets/javascripts/voltar/ui-bootstrap-tpls.js +4116 -0
  145. data/vendor/assets/javascripts/voltar/ui-jq.js +86 -0
  146. data/vendor/assets/javascripts/voltar/ui-load.js +93 -0
  147. data/vendor/assets/javascripts/voltar/ui-validate.js +119 -0
  148. data/vendor/assets/stylesheets/voltar/animate.css +1098 -0
  149. data/vendor/assets/stylesheets/voltar/bootstrap.css +6202 -0
  150. data/vendor/assets/stylesheets/voltar/chosen.css +399 -0
  151. data/vendor/assets/stylesheets/voltar/font-awesome.min.css +4 -0
  152. data/vendor/assets/stylesheets/voltar/font.css +18 -0
  153. data/vendor/assets/stylesheets/voltar/simple-line-icons.css +526 -0
  154. data/vendor/assets/stylesheets/voltar/toaster.css +213 -0
  155. metadata +333 -0
@@ -0,0 +1,86 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * 0.1.1
5
+ * General-purpose jQuery wrapper. Simply pass the plugin name as the expression.
6
+ *
7
+ * It is possible to specify a default set of parameters for each jQuery plugin.
8
+ * Under the jq key, namespace each plugin by that which will be passed to ui-jq.
9
+ * Unfortunately, at this time you can only pre-define the first parameter.
10
+ * @example { jq : { datepicker : { showOn:'click' } } }
11
+ *
12
+ * @param ui-jq {string} The $elm.[pluginName]() to call.
13
+ * @param [ui-options] {mixed} Expression to be evaluated and passed as options to the function
14
+ * Multiple parameters can be separated by commas
15
+ * @param [ui-refresh] {expression} Watch expression and refire plugin on changes
16
+ *
17
+ * @example <input ui-jq="datepicker" ui-options="{showOn:'click'},secondParameter,thirdParameter" ui-refresh="iChange">
18
+ */
19
+ angular.module('ui.jq', ['ui.load']).
20
+ value('uiJqConfig', {}).
21
+ directive('uiJq', ['uiJqConfig', 'JQ_CONFIG', 'uiLoad', '$timeout', function uiJqInjectingFunction(uiJqConfig, JQ_CONFIG, uiLoad, $timeout) {
22
+
23
+ return {
24
+ restrict: 'A',
25
+ compile: function uiJqCompilingFunction(tElm, tAttrs) {
26
+
27
+ if (!angular.isFunction(tElm[tAttrs.uiJq]) && !JQ_CONFIG[tAttrs.uiJq]) {
28
+ throw new Error('ui-jq: The "' + tAttrs.uiJq + '" function does not exist');
29
+ }
30
+ var options = uiJqConfig && uiJqConfig[tAttrs.uiJq];
31
+
32
+ return function uiJqLinkingFunction(scope, elm, attrs) {
33
+
34
+ function getOptions(){
35
+ var linkOptions = [];
36
+
37
+ // If ui-options are passed, merge (or override) them onto global defaults and pass to the jQuery method
38
+ if (attrs.uiOptions) {
39
+ linkOptions = scope.$eval('[' + attrs.uiOptions + ']');
40
+ if (angular.isObject(options) && angular.isObject(linkOptions[0])) {
41
+ linkOptions[0] = angular.extend({}, options, linkOptions[0]);
42
+ }
43
+ } else if (options) {
44
+ linkOptions = [options];
45
+ }
46
+ return linkOptions;
47
+ }
48
+
49
+ // If change compatibility is enabled, the form input's "change" event will trigger an "input" event
50
+ if (attrs.ngModel && elm.is('select,input,textarea')) {
51
+ elm.bind('change', function() {
52
+ elm.trigger('input');
53
+ });
54
+ }
55
+
56
+ // Call jQuery method and pass relevant options
57
+ function callPlugin() {
58
+ $timeout(function() {
59
+ elm[attrs.uiJq].apply(elm, getOptions());
60
+ }, 0, false);
61
+ }
62
+
63
+ function refresh(){
64
+ // If ui-refresh is used, re-fire the the method upon every change
65
+ if (attrs.uiRefresh) {
66
+ scope.$watch(attrs.uiRefresh, function() {
67
+ callPlugin();
68
+ });
69
+ }
70
+ }
71
+
72
+ if ( JQ_CONFIG[attrs.uiJq] ) {
73
+ uiLoad.load(JQ_CONFIG[attrs.uiJq]).then(function() {
74
+ callPlugin();
75
+ refresh();
76
+ }).catch(function() {
77
+
78
+ });
79
+ } else {
80
+ callPlugin();
81
+ refresh();
82
+ }
83
+ };
84
+ }
85
+ };
86
+ }]);
@@ -0,0 +1,93 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * 0.1.1
5
+ * Deferred load js/css file, used for ui-jq.js and Lazy Loading.
6
+ *
7
+ * @ flatfull.com All Rights Reserved.
8
+ * Author url: http://themeforest.net/user/flatfull
9
+ */
10
+
11
+ angular.module('ui.load', [])
12
+ .service('uiLoad', ['$document', '$q', '$timeout', function ($document, $q, $timeout) {
13
+
14
+ var loaded = [];
15
+ var promise = false;
16
+ var deferred = $q.defer();
17
+
18
+ /**
19
+ * Chain loads the given sources
20
+ * @param srcs array, script or css
21
+ * @returns {*} Promise that will be resolved once the sources has been loaded.
22
+ */
23
+ this.load = function (srcs) {
24
+ srcs = angular.isArray(srcs) ? srcs : srcs.split(/\s+/);
25
+ var self = this;
26
+ if(!promise){
27
+ promise = deferred.promise;
28
+ }
29
+ angular.forEach(srcs, function(src) {
30
+ promise = promise.then( function(){
31
+ return src.indexOf('.css') >=0 ? self.loadCSS(src) : self.loadScript(src);
32
+ } );
33
+ });
34
+ deferred.resolve();
35
+ return promise;
36
+ }
37
+
38
+ /**
39
+ * Dynamically loads the given script
40
+ * @param src The url of the script to load dynamically
41
+ * @returns {*} Promise that will be resolved once the script has been loaded.
42
+ */
43
+ this.loadScript = function (src) {
44
+ if(loaded[src]) return loaded[src].promise;
45
+
46
+ var deferred = $q.defer();
47
+ var script = $document[0].createElement('script');
48
+ script.src = src;
49
+ script.onload = function (e) {
50
+ $timeout(function () {
51
+ deferred.resolve(e);
52
+ });
53
+ };
54
+ script.onerror = function (e) {
55
+ $timeout(function () {
56
+ deferred.reject(e);
57
+ });
58
+ };
59
+ $document[0].body.appendChild(script);
60
+ loaded[src] = deferred;
61
+
62
+ return deferred.promise;
63
+ };
64
+
65
+ /**
66
+ * Dynamically loads the given CSS file
67
+ * @param href The url of the CSS to load dynamically
68
+ * @returns {*} Promise that will be resolved once the CSS file has been loaded.
69
+ */
70
+ this.loadCSS = function (href) {
71
+ if(loaded[href]) return loaded[href].promise;
72
+
73
+ var deferred = $q.defer();
74
+ var style = $document[0].createElement('link');
75
+ style.rel = 'stylesheet';
76
+ style.type = 'text/css';
77
+ style.href = href;
78
+ style.onload = function (e) {
79
+ $timeout(function () {
80
+ deferred.resolve(e);
81
+ });
82
+ };
83
+ style.onerror = function (e) {
84
+ $timeout(function () {
85
+ deferred.reject(e);
86
+ });
87
+ };
88
+ $document[0].head.appendChild(style);
89
+ loaded[href] = deferred;
90
+
91
+ return deferred.promise;
92
+ };
93
+ }]);
@@ -0,0 +1,119 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * General-purpose validator for ngModel.
5
+ * angular.js comes with several built-in validation mechanism for input fields (ngRequired, ngPattern etc.) but using
6
+ * an arbitrary validation function requires creation of a custom formatters and / or parsers.
7
+ * The ui-validate directive makes it easy to use any function(s) defined in scope as a validator function(s).
8
+ * A validator function will trigger validation on both model and input changes.
9
+ *
10
+ * @example <input ui-validate=" 'myValidatorFunction($value)' ">
11
+ * @example <input ui-validate="{ foo : '$value > anotherModel', bar : 'validateFoo($value)' }">
12
+ * @example <input ui-validate="{ foo : '$value > anotherModel' }" ui-validate-watch=" 'anotherModel' ">
13
+ * @example <input ui-validate="{ foo : '$value > anotherModel', bar : 'validateFoo($value)' }" ui-validate-watch=" { foo : 'anotherModel' } ">
14
+ *
15
+ * @param ui-validate {string|object literal} If strings is passed it should be a scope's function to be used as a validator.
16
+ * If an object literal is passed a key denotes a validation error key while a value should be a validator function.
17
+ * In both cases validator function should take a value to validate as its argument and should return true/false indicating a validation result.
18
+ */
19
+ angular.module('ui.validate',[]).directive('uiValidate', function () {
20
+
21
+ return {
22
+ restrict: 'A',
23
+ require: 'ngModel',
24
+ link: function (scope, elm, attrs, ctrl) {
25
+ var validateFn, validators = {},
26
+ validateExpr = scope.$eval(attrs.uiValidate);
27
+
28
+ if (!validateExpr){ return;}
29
+
30
+ if (angular.isString(validateExpr)) {
31
+ validateExpr = { validator: validateExpr };
32
+ }
33
+
34
+ angular.forEach(validateExpr, function (exprssn, key) {
35
+ validateFn = function (valueToValidate) {
36
+ var expression = scope.$eval(exprssn, { '$value' : valueToValidate });
37
+ if (angular.isObject(expression) && angular.isFunction(expression.then)) {
38
+ // expression is a promise
39
+ expression.then(function(){
40
+ ctrl.$setValidity(key, true);
41
+ }, function(){
42
+ ctrl.$setValidity(key, false);
43
+ });
44
+ return valueToValidate;
45
+ } else if (expression) {
46
+ // expression is true
47
+ ctrl.$setValidity(key, true);
48
+ return valueToValidate;
49
+ } else {
50
+ // expression is false
51
+ ctrl.$setValidity(key, false);
52
+ return valueToValidate;
53
+ }
54
+ };
55
+ validators[key] = validateFn;
56
+ ctrl.$formatters.push(validateFn);
57
+ ctrl.$parsers.push(validateFn);
58
+ });
59
+
60
+ function apply_watch(watch)
61
+ {
62
+ //string - update all validators on expression change
63
+ if (angular.isString(watch))
64
+ {
65
+ scope.$watch(watch, function(){
66
+ angular.forEach(validators, function(validatorFn){
67
+ validatorFn(ctrl.$modelValue);
68
+ });
69
+ });
70
+ return;
71
+ }
72
+
73
+ //array - update all validators on change of any expression
74
+ if (angular.isArray(watch))
75
+ {
76
+ angular.forEach(watch, function(expression){
77
+ scope.$watch(expression, function()
78
+ {
79
+ angular.forEach(validators, function(validatorFn){
80
+ validatorFn(ctrl.$modelValue);
81
+ });
82
+ });
83
+ });
84
+ return;
85
+ }
86
+
87
+ //object - update appropriate validator
88
+ if (angular.isObject(watch))
89
+ {
90
+ angular.forEach(watch, function(expression, validatorKey)
91
+ {
92
+ //value is string - look after one expression
93
+ if (angular.isString(expression))
94
+ {
95
+ scope.$watch(expression, function(){
96
+ validators[validatorKey](ctrl.$modelValue);
97
+ });
98
+ }
99
+
100
+ //value is array - look after all expressions in array
101
+ if (angular.isArray(expression))
102
+ {
103
+ angular.forEach(expression, function(intExpression)
104
+ {
105
+ scope.$watch(intExpression, function(){
106
+ validators[validatorKey](ctrl.$modelValue);
107
+ });
108
+ });
109
+ }
110
+ });
111
+ }
112
+ }
113
+ // Support for ui-validate-watch
114
+ if (attrs.uiValidateWatch){
115
+ apply_watch( scope.$eval(attrs.uiValidateWatch) );
116
+ }
117
+ }
118
+ };
119
+ });
@@ -0,0 +1,1098 @@
1
+ .animated{
2
+ -webkit-animation-fill-mode:both;
3
+ -moz-animation-fill-mode:both;
4
+ -ms-animation-fill-mode:both;
5
+ -o-animation-fill-mode:both;
6
+ animation-fill-mode:both;
7
+ -webkit-animation-duration:0.5s;
8
+ -moz-animation-duration:0.5s;
9
+ -ms-animation-duration:0.5s;
10
+ -o-animation-duration:0.5s;
11
+ animation-duration:0.5s;
12
+ }
13
+
14
+ @-webkit-keyframes fadeIn {
15
+ 0% {opacity: 0;} 100% {opacity: 1;}
16
+ }
17
+
18
+ @-moz-keyframes fadeIn {
19
+ 0% {opacity: 0;}
20
+ 100% {opacity: 1;}
21
+ }
22
+
23
+ @-o-keyframes fadeIn {
24
+ 0% {opacity: 0;}
25
+ 100% {opacity: 1;}
26
+ }
27
+
28
+ @keyframes fadeIn {
29
+ 0% {opacity: 0;}
30
+ 100% {opacity: 1;}
31
+ }
32
+
33
+ .fadeIn {
34
+ -webkit-animation-name: fadeIn;
35
+ -moz-animation-name: fadeIn;
36
+ -o-animation-name: fadeIn;
37
+ animation-name: fadeIn;
38
+ }
39
+ @-webkit-keyframes fadeInUp {
40
+ 0% {
41
+ opacity: 0;
42
+ -webkit-transform: translateY(20px);
43
+ }
44
+
45
+ 100% {
46
+ opacity: 1;
47
+ -webkit-transform: translateY(0);
48
+ }
49
+ }
50
+
51
+ @-moz-keyframes fadeInUp {
52
+ 0% {
53
+ opacity: 0;
54
+ -moz-transform: translateY(20px);
55
+ }
56
+
57
+ 100% {
58
+ opacity: 1;
59
+ -moz-transform: translateY(0);
60
+ }
61
+ }
62
+
63
+ @-o-keyframes fadeInUp {
64
+ 0% {
65
+ opacity: 0;
66
+ -o-transform: translateY(20px);
67
+ }
68
+
69
+ 100% {
70
+ opacity: 1;
71
+ -o-transform: translateY(0);
72
+ }
73
+ }
74
+
75
+ @keyframes fadeInUp {
76
+ 0% {
77
+ opacity: 0;
78
+ transform: translateY(20px);
79
+ }
80
+
81
+ 100% {
82
+ opacity: 1;
83
+ transform: translateY(0);
84
+ }
85
+ }
86
+
87
+ .fadeInUp {
88
+ -webkit-animation-name: fadeInUp;
89
+ -moz-animation-name: fadeInUp;
90
+ -o-animation-name: fadeInUp;
91
+ animation-name: fadeInUp;
92
+ }
93
+ @-webkit-keyframes fadeInDown {
94
+ 0% {
95
+ opacity: 0;
96
+ -webkit-transform: translateY(-20px);
97
+ }
98
+
99
+ 100% {
100
+ opacity: 1;
101
+ -webkit-transform: translateY(0);
102
+ }
103
+ }
104
+
105
+ @-moz-keyframes fadeInDown {
106
+ 0% {
107
+ opacity: 0;
108
+ -moz-transform: translateY(-20px);
109
+ }
110
+
111
+ 100% {
112
+ opacity: 1;
113
+ -moz-transform: translateY(0);
114
+ }
115
+ }
116
+
117
+ @-o-keyframes fadeInDown {
118
+ 0% {
119
+ opacity: 0;
120
+ -o-transform: translateY(-20px);
121
+ }
122
+
123
+ 100% {
124
+ opacity: 1;
125
+ -o-transform: translateY(0);
126
+ }
127
+ }
128
+
129
+ @keyframes fadeInDown {
130
+ 0% {
131
+ opacity: 0;
132
+ transform: translateY(-20px);
133
+ }
134
+
135
+ 100% {
136
+ opacity: 1;
137
+ transform: translateY(0);
138
+ }
139
+ }
140
+
141
+ .fadeInDown {
142
+ -webkit-animation-name: fadeInDown;
143
+ -moz-animation-name: fadeInDown;
144
+ -o-animation-name: fadeInDown;
145
+ animation-name: fadeInDown;
146
+ }
147
+ @-webkit-keyframes fadeInLeft {
148
+ 0% {
149
+ opacity: 0;
150
+ -webkit-transform: translateX(-20px);
151
+ }
152
+
153
+ 100% {
154
+ opacity: 1;
155
+ -webkit-transform: translateX(0);
156
+ }
157
+ }
158
+
159
+ @-moz-keyframes fadeInLeft {
160
+ 0% {
161
+ opacity: 0;
162
+ -moz-transform: translateX(-20px);
163
+ }
164
+
165
+ 100% {
166
+ opacity: 1;
167
+ -moz-transform: translateX(0);
168
+ }
169
+ }
170
+
171
+ @-o-keyframes fadeInLeft {
172
+ 0% {
173
+ opacity: 0;
174
+ -o-transform: translateX(-20px);
175
+ }
176
+
177
+ 100% {
178
+ opacity: 1;
179
+ -o-transform: translateX(0);
180
+ }
181
+ }
182
+
183
+ @keyframes fadeInLeft {
184
+ 0% {
185
+ opacity: 0;
186
+ transform: translateX(-20px);
187
+ }
188
+
189
+ 100% {
190
+ opacity: 1;
191
+ transform: translateX(0);
192
+ }
193
+ }
194
+
195
+ .fadeInLeft {
196
+ -webkit-animation-name: fadeInLeft;
197
+ -moz-animation-name: fadeInLeft;
198
+ -o-animation-name: fadeInLeft;
199
+ animation-name: fadeInLeft;
200
+ }
201
+ @-webkit-keyframes fadeInRight {
202
+ 0% {
203
+ opacity: 0;
204
+ -webkit-transform: translateX(20px);
205
+ }
206
+
207
+ 100% {
208
+ opacity: 1;
209
+ -webkit-transform: translateX(0);
210
+ }
211
+ }
212
+
213
+ @-moz-keyframes fadeInRight {
214
+ 0% {
215
+ opacity: 0;
216
+ -moz-transform: translateX(20px);
217
+ }
218
+
219
+ 100% {
220
+ opacity: 1;
221
+ -moz-transform: translateX(0);
222
+ }
223
+ }
224
+
225
+ @-o-keyframes fadeInRight {
226
+ 0% {
227
+ opacity: 0;
228
+ -o-transform: translateX(20px);
229
+ }
230
+
231
+ 100% {
232
+ opacity: 1;
233
+ -o-transform: translateX(0);
234
+ }
235
+ }
236
+
237
+ @keyframes fadeInRight {
238
+ 0% {
239
+ opacity: 0;
240
+ transform: translateX(20px);
241
+ }
242
+
243
+ 100% {
244
+ opacity: 1;
245
+ transform: translateX(0);
246
+ }
247
+ }
248
+
249
+ .fadeInRight {
250
+ -webkit-animation-name: fadeInRight;
251
+ -moz-animation-name: fadeInRight;
252
+ -o-animation-name: fadeInRight;
253
+ animation-name: fadeInRight;
254
+ }
255
+ @-webkit-keyframes fadeInUpBig {
256
+ 0% {
257
+ opacity: 0;
258
+ -webkit-transform: translateY(2000px);
259
+ }
260
+
261
+ 100% {
262
+ opacity: 1;
263
+ -webkit-transform: translateY(0);
264
+ }
265
+ }
266
+
267
+ @-moz-keyframes fadeInUpBig {
268
+ 0% {
269
+ opacity: 0;
270
+ -moz-transform: translateY(2000px);
271
+ }
272
+
273
+ 100% {
274
+ opacity: 1;
275
+ -moz-transform: translateY(0);
276
+ }
277
+ }
278
+
279
+ @-o-keyframes fadeInUpBig {
280
+ 0% {
281
+ opacity: 0;
282
+ -o-transform: translateY(2000px);
283
+ }
284
+
285
+ 100% {
286
+ opacity: 1;
287
+ -o-transform: translateY(0);
288
+ }
289
+ }
290
+
291
+ @keyframes fadeInUpBig {
292
+ 0% {
293
+ opacity: 0;
294
+ transform: translateY(2000px);
295
+ }
296
+
297
+ 100% {
298
+ opacity: 1;
299
+ transform: translateY(0);
300
+ }
301
+ }
302
+
303
+ .fadeInUpBig {
304
+ -webkit-animation-name: fadeInUpBig;
305
+ -moz-animation-name: fadeInUpBig;
306
+ -o-animation-name: fadeInUpBig;
307
+ animation-name: fadeInUpBig;
308
+ }
309
+ @-webkit-keyframes fadeInDownBig {
310
+ 0% {
311
+ opacity: 0;
312
+ -webkit-transform: translateY(-2000px);
313
+ }
314
+
315
+ 100% {
316
+ opacity: 1;
317
+ -webkit-transform: translateY(0);
318
+ }
319
+ }
320
+
321
+ @-moz-keyframes fadeInDownBig {
322
+ 0% {
323
+ opacity: 0;
324
+ -moz-transform: translateY(-2000px);
325
+ }
326
+
327
+ 100% {
328
+ opacity: 1;
329
+ -moz-transform: translateY(0);
330
+ }
331
+ }
332
+
333
+ @-o-keyframes fadeInDownBig {
334
+ 0% {
335
+ opacity: 0;
336
+ -o-transform: translateY(-2000px);
337
+ }
338
+
339
+ 100% {
340
+ opacity: 1;
341
+ -o-transform: translateY(0);
342
+ }
343
+ }
344
+
345
+ @keyframes fadeInDownBig {
346
+ 0% {
347
+ opacity: 0;
348
+ transform: translateY(-2000px);
349
+ }
350
+
351
+ 100% {
352
+ opacity: 1;
353
+ transform: translateY(0);
354
+ }
355
+ }
356
+
357
+ .fadeInDownBig {
358
+ -webkit-animation-name: fadeInDownBig;
359
+ -moz-animation-name: fadeInDownBig;
360
+ -o-animation-name: fadeInDownBig;
361
+ animation-name: fadeInDownBig;
362
+ }
363
+ @-webkit-keyframes fadeInLeftBig {
364
+ 0% {
365
+ opacity: 0;
366
+ -webkit-transform: translateX(-2000px);
367
+ }
368
+
369
+ 100% {
370
+ opacity: 1;
371
+ -webkit-transform: translateX(0);
372
+ }
373
+ }
374
+ @-moz-keyframes fadeInLeftBig {
375
+ 0% {
376
+ opacity: 0;
377
+ -moz-transform: translateX(-2000px);
378
+ }
379
+
380
+ 100% {
381
+ opacity: 1;
382
+ -moz-transform: translateX(0);
383
+ }
384
+ }
385
+ @-o-keyframes fadeInLeftBig {
386
+ 0% {
387
+ opacity: 0;
388
+ -o-transform: translateX(-2000px);
389
+ }
390
+
391
+ 100% {
392
+ opacity: 1;
393
+ -o-transform: translateX(0);
394
+ }
395
+ }
396
+ @keyframes fadeInLeftBig {
397
+ 0% {
398
+ opacity: 0;
399
+ transform: translateX(-2000px);
400
+ }
401
+
402
+ 100% {
403
+ opacity: 1;
404
+ transform: translateX(0);
405
+ }
406
+ }
407
+
408
+ .fadeInLeftBig {
409
+ -webkit-animation-name: fadeInLeftBig;
410
+ -moz-animation-name: fadeInLeftBig;
411
+ -o-animation-name: fadeInLeftBig;
412
+ animation-name: fadeInLeftBig;
413
+ }
414
+ @-webkit-keyframes fadeInRightBig {
415
+ 0% {
416
+ opacity: 0;
417
+ -webkit-transform: translateX(2000px);
418
+ }
419
+
420
+ 100% {
421
+ opacity: 1;
422
+ -webkit-transform: translateX(0);
423
+ }
424
+ }
425
+
426
+ @-moz-keyframes fadeInRightBig {
427
+ 0% {
428
+ opacity: 0;
429
+ -moz-transform: translateX(2000px);
430
+ }
431
+
432
+ 100% {
433
+ opacity: 1;
434
+ -moz-transform: translateX(0);
435
+ }
436
+ }
437
+
438
+ @-o-keyframes fadeInRightBig {
439
+ 0% {
440
+ opacity: 0;
441
+ -o-transform: translateX(2000px);
442
+ }
443
+
444
+ 100% {
445
+ opacity: 1;
446
+ -o-transform: translateX(0);
447
+ }
448
+ }
449
+
450
+ @keyframes fadeInRightBig {
451
+ 0% {
452
+ opacity: 0;
453
+ transform: translateX(2000px);
454
+ }
455
+
456
+ 100% {
457
+ opacity: 1;
458
+ transform: translateX(0);
459
+ }
460
+ }
461
+
462
+ .fadeInRightBig {
463
+ -webkit-animation-name: fadeInRightBig;
464
+ -moz-animation-name: fadeInRightBig;
465
+ -o-animation-name: fadeInRightBig;
466
+ animation-name: fadeInRightBig;
467
+ }
468
+ @-webkit-keyframes fadeOut {
469
+ 0% {opacity: 1;}
470
+ 100% {opacity: 0;}
471
+ }
472
+
473
+ @-moz-keyframes fadeOut {
474
+ 0% {opacity: 1;}
475
+ 100% {opacity: 0;}
476
+ }
477
+
478
+ @-o-keyframes fadeOut {
479
+ 0% {opacity: 1;}
480
+ 100% {opacity: 0;}
481
+ }
482
+
483
+ @keyframes fadeOut {
484
+ 0% {opacity: 1;}
485
+ 100% {opacity: 0;}
486
+ }
487
+
488
+ .fadeOut {
489
+ -webkit-animation-name: fadeOut;
490
+ -moz-animation-name: fadeOut;
491
+ -o-animation-name: fadeOut;
492
+ animation-name: fadeOut;
493
+ }
494
+ @-webkit-keyframes fadeOutUp {
495
+ 0% {
496
+ opacity: 1;
497
+ -webkit-transform: translateY(0);
498
+ }
499
+
500
+ 100% {
501
+ opacity: 0;
502
+ -webkit-transform: translateY(-20px);
503
+ }
504
+ }
505
+ @-moz-keyframes fadeOutUp {
506
+ 0% {
507
+ opacity: 1;
508
+ -moz-transform: translateY(0);
509
+ }
510
+
511
+ 100% {
512
+ opacity: 0;
513
+ -moz-transform: translateY(-20px);
514
+ }
515
+ }
516
+ @-o-keyframes fadeOutUp {
517
+ 0% {
518
+ opacity: 1;
519
+ -o-transform: translateY(0);
520
+ }
521
+
522
+ 100% {
523
+ opacity: 0;
524
+ -o-transform: translateY(-20px);
525
+ }
526
+ }
527
+ @keyframes fadeOutUp {
528
+ 0% {
529
+ opacity: 1;
530
+ transform: translateY(0);
531
+ }
532
+
533
+ 100% {
534
+ opacity: 0;
535
+ transform: translateY(-20px);
536
+ }
537
+ }
538
+
539
+ .fadeOutUp {
540
+ -webkit-animation-name: fadeOutUp;
541
+ -moz-animation-name: fadeOutUp;
542
+ -o-animation-name: fadeOutUp;
543
+ animation-name: fadeOutUp;
544
+ }
545
+ @-webkit-keyframes fadeOutDown {
546
+ 0% {
547
+ opacity: 1;
548
+ -webkit-transform: translateY(0);
549
+ }
550
+
551
+ 100% {
552
+ opacity: 0;
553
+ -webkit-transform: translateY(20px);
554
+ }
555
+ }
556
+
557
+ @-moz-keyframes fadeOutDown {
558
+ 0% {
559
+ opacity: 1;
560
+ -moz-transform: translateY(0);
561
+ }
562
+
563
+ 100% {
564
+ opacity: 0;
565
+ -moz-transform: translateY(20px);
566
+ }
567
+ }
568
+
569
+ @-o-keyframes fadeOutDown {
570
+ 0% {
571
+ opacity: 1;
572
+ -o-transform: translateY(0);
573
+ }
574
+
575
+ 100% {
576
+ opacity: 0;
577
+ -o-transform: translateY(20px);
578
+ }
579
+ }
580
+
581
+ @keyframes fadeOutDown {
582
+ 0% {
583
+ opacity: 1;
584
+ transform: translateY(0);
585
+ }
586
+
587
+ 100% {
588
+ opacity: 0;
589
+ transform: translateY(20px);
590
+ }
591
+ }
592
+
593
+ .fadeOutDown {
594
+ -webkit-animation-name: fadeOutDown;
595
+ -moz-animation-name: fadeOutDown;
596
+ -o-animation-name: fadeOutDown;
597
+ animation-name: fadeOutDown;
598
+ }
599
+ @-webkit-keyframes fadeOutLeft {
600
+ 0% {
601
+ opacity: 1;
602
+ -webkit-transform: translateX(0);
603
+ }
604
+
605
+ 100% {
606
+ opacity: 0;
607
+ -webkit-transform: translateX(-20px);
608
+ }
609
+ }
610
+
611
+ @-moz-keyframes fadeOutLeft {
612
+ 0% {
613
+ opacity: 1;
614
+ -moz-transform: translateX(0);
615
+ }
616
+
617
+ 100% {
618
+ opacity: 0;
619
+ -moz-transform: translateX(-20px);
620
+ }
621
+ }
622
+
623
+ @-o-keyframes fadeOutLeft {
624
+ 0% {
625
+ opacity: 1;
626
+ -o-transform: translateX(0);
627
+ }
628
+
629
+ 100% {
630
+ opacity: 0;
631
+ -o-transform: translateX(-20px);
632
+ }
633
+ }
634
+
635
+ @keyframes fadeOutLeft {
636
+ 0% {
637
+ opacity: 1;
638
+ transform: translateX(0);
639
+ }
640
+
641
+ 100% {
642
+ opacity: 0;
643
+ transform: translateX(-20px);
644
+ }
645
+ }
646
+
647
+ .fadeOutLeft {
648
+ -webkit-animation-name: fadeOutLeft;
649
+ -moz-animation-name: fadeOutLeft;
650
+ -o-animation-name: fadeOutLeft;
651
+ animation-name: fadeOutLeft;
652
+ }
653
+ @-webkit-keyframes fadeOutRight {
654
+ 0% {
655
+ opacity: 1;
656
+ -webkit-transform: translateX(0);
657
+ }
658
+
659
+ 100% {
660
+ opacity: 0;
661
+ -webkit-transform: translateX(20px);
662
+ }
663
+ }
664
+
665
+ @-moz-keyframes fadeOutRight {
666
+ 0% {
667
+ opacity: 1;
668
+ -moz-transform: translateX(0);
669
+ }
670
+
671
+ 100% {
672
+ opacity: 0;
673
+ -moz-transform: translateX(20px);
674
+ }
675
+ }
676
+
677
+ @-o-keyframes fadeOutRight {
678
+ 0% {
679
+ opacity: 1;
680
+ -o-transform: translateX(0);
681
+ }
682
+
683
+ 100% {
684
+ opacity: 0;
685
+ -o-transform: translateX(20px);
686
+ }
687
+ }
688
+
689
+ @keyframes fadeOutRight {
690
+ 0% {
691
+ opacity: 1;
692
+ transform: translateX(0);
693
+ }
694
+
695
+ 100% {
696
+ opacity: 0;
697
+ transform: translateX(20px);
698
+ }
699
+ }
700
+
701
+ .fadeOutRight {
702
+ -webkit-animation-name: fadeOutRight;
703
+ -moz-animation-name: fadeOutRight;
704
+ -o-animation-name: fadeOutRight;
705
+ animation-name: fadeOutRight;
706
+ }
707
+ @-webkit-keyframes fadeOutUpBig {
708
+ 0% {
709
+ opacity: 1;
710
+ -webkit-transform: translateY(0);
711
+ }
712
+
713
+ 100% {
714
+ opacity: 0;
715
+ -webkit-transform: translateY(-2000px);
716
+ }
717
+ }
718
+
719
+ @-moz-keyframes fadeOutUpBig {
720
+ 0% {
721
+ opacity: 1;
722
+ -moz-transform: translateY(0);
723
+ }
724
+
725
+ 100% {
726
+ opacity: 0;
727
+ -moz-transform: translateY(-2000px);
728
+ }
729
+ }
730
+
731
+ @-o-keyframes fadeOutUpBig {
732
+ 0% {
733
+ opacity: 1;
734
+ -o-transform: translateY(0);
735
+ }
736
+
737
+ 100% {
738
+ opacity: 0;
739
+ -o-transform: translateY(-2000px);
740
+ }
741
+ }
742
+
743
+ @keyframes fadeOutUpBig {
744
+ 0% {
745
+ opacity: 1;
746
+ transform: translateY(0);
747
+ }
748
+
749
+ 100% {
750
+ opacity: 0;
751
+ transform: translateY(-2000px);
752
+ }
753
+ }
754
+
755
+ .fadeOutUpBig {
756
+ -webkit-animation-name: fadeOutUpBig;
757
+ -moz-animation-name: fadeOutUpBig;
758
+ -o-animation-name: fadeOutUpBig;
759
+ animation-name: fadeOutUpBig;
760
+ }
761
+ @-webkit-keyframes fadeOutDownBig {
762
+ 0% {
763
+ opacity: 1;
764
+ -webkit-transform: translateY(0);
765
+ }
766
+
767
+ 100% {
768
+ opacity: 0;
769
+ -webkit-transform: translateY(2000px);
770
+ }
771
+ }
772
+
773
+ @-moz-keyframes fadeOutDownBig {
774
+ 0% {
775
+ opacity: 1;
776
+ -moz-transform: translateY(0);
777
+ }
778
+
779
+ 100% {
780
+ opacity: 0;
781
+ -moz-transform: translateY(2000px);
782
+ }
783
+ }
784
+
785
+ @-o-keyframes fadeOutDownBig {
786
+ 0% {
787
+ opacity: 1;
788
+ -o-transform: translateY(0);
789
+ }
790
+
791
+ 100% {
792
+ opacity: 0;
793
+ -o-transform: translateY(2000px);
794
+ }
795
+ }
796
+
797
+ @keyframes fadeOutDownBig {
798
+ 0% {
799
+ opacity: 1;
800
+ transform: translateY(0);
801
+ }
802
+
803
+ 100% {
804
+ opacity: 0;
805
+ transform: translateY(2000px);
806
+ }
807
+ }
808
+
809
+ .fadeOutDownBig {
810
+ -webkit-animation-name: fadeOutDownBig;
811
+ -moz-animation-name: fadeOutDownBig;
812
+ -o-animation-name: fadeOutDownBig;
813
+ animation-name: fadeOutDownBig;
814
+ }
815
+ @-webkit-keyframes fadeOutLeftBig {
816
+ 0% {
817
+ opacity: 1;
818
+ -webkit-transform: translateX(0);
819
+ }
820
+
821
+ 100% {
822
+ opacity: 0;
823
+ -webkit-transform: translateX(-2000px);
824
+ }
825
+ }
826
+
827
+ @-moz-keyframes fadeOutLeftBig {
828
+ 0% {
829
+ opacity: 1;
830
+ -moz-transform: translateX(0);
831
+ }
832
+
833
+ 100% {
834
+ opacity: 0;
835
+ -moz-transform: translateX(-2000px);
836
+ }
837
+ }
838
+
839
+ @-o-keyframes fadeOutLeftBig {
840
+ 0% {
841
+ opacity: 1;
842
+ -o-transform: translateX(0);
843
+ }
844
+
845
+ 100% {
846
+ opacity: 0;
847
+ -o-transform: translateX(-2000px);
848
+ }
849
+ }
850
+
851
+ @keyframes fadeOutLeftBig {
852
+ 0% {
853
+ opacity: 1;
854
+ transform: translateX(0);
855
+ }
856
+
857
+ 100% {
858
+ opacity: 0;
859
+ transform: translateX(-2000px);
860
+ }
861
+ }
862
+
863
+ .fadeOutLeftBig {
864
+ -webkit-animation-name: fadeOutLeftBig;
865
+ -moz-animation-name: fadeOutLeftBig;
866
+ -o-animation-name: fadeOutLeftBig;
867
+ animation-name: fadeOutLeftBig;
868
+ }
869
+ @-webkit-keyframes fadeOutRightBig {
870
+ 0% {
871
+ opacity: 1;
872
+ -webkit-transform: translateX(0);
873
+ }
874
+
875
+ 100% {
876
+ opacity: 0;
877
+ -webkit-transform: translateX(2000px);
878
+ }
879
+ }
880
+ @-moz-keyframes fadeOutRightBig {
881
+ 0% {
882
+ opacity: 1;
883
+ -moz-transform: translateX(0);
884
+ }
885
+
886
+ 100% {
887
+ opacity: 0;
888
+ -moz-transform: translateX(2000px);
889
+ }
890
+ }
891
+ @-o-keyframes fadeOutRightBig {
892
+ 0% {
893
+ opacity: 1;
894
+ -o-transform: translateX(0);
895
+ }
896
+
897
+ 100% {
898
+ opacity: 0;
899
+ -o-transform: translateX(2000px);
900
+ }
901
+ }
902
+ @keyframes fadeOutRightBig {
903
+ 0% {
904
+ opacity: 1;
905
+ transform: translateX(0);
906
+ }
907
+
908
+ 100% {
909
+ opacity: 0;
910
+ transform: translateX(2000px);
911
+ }
912
+ }
913
+
914
+ .fadeOutRightBig {
915
+ -webkit-animation-name: fadeOutRightBig;
916
+ -moz-animation-name: fadeOutRightBig;
917
+ -o-animation-name: fadeOutRightBig;
918
+ animation-name: fadeOutRightBig;
919
+ }
920
+
921
+
922
+
923
+
924
+ @-webkit-keyframes flipInX {
925
+ 0% {
926
+ -webkit-transform: perspective(400px) rotateX(90deg);
927
+ opacity: 0;
928
+ }
929
+
930
+ 40% {
931
+ -webkit-transform: perspective(400px) rotateX(-10deg);
932
+ }
933
+
934
+ 70% {
935
+ -webkit-transform: perspective(400px) rotateX(10deg);
936
+ }
937
+
938
+ 100% {
939
+ -webkit-transform: perspective(400px) rotateX(0deg);
940
+ opacity: 1;
941
+ }
942
+ }
943
+ @-moz-keyframes flipInX {
944
+ 0% {
945
+ -moz-transform: perspective(400px) rotateX(90deg);
946
+ opacity: 0;
947
+ }
948
+
949
+ 40% {
950
+ -moz-transform: perspective(400px) rotateX(-10deg);
951
+ }
952
+
953
+ 70% {
954
+ -moz-transform: perspective(400px) rotateX(10deg);
955
+ }
956
+
957
+ 100% {
958
+ -moz-transform: perspective(400px) rotateX(0deg);
959
+ opacity: 1;
960
+ }
961
+ }
962
+ @-o-keyframes flipInX {
963
+ 0% {
964
+ -o-transform: perspective(400px) rotateX(90deg);
965
+ opacity: 0;
966
+ }
967
+
968
+ 40% {
969
+ -o-transform: perspective(400px) rotateX(-10deg);
970
+ }
971
+
972
+ 70% {
973
+ -o-transform: perspective(400px) rotateX(10deg);
974
+ }
975
+
976
+ 100% {
977
+ -o-transform: perspective(400px) rotateX(0deg);
978
+ opacity: 1;
979
+ }
980
+ }
981
+ @keyframes flipInX {
982
+ 0% {
983
+ transform: perspective(400px) rotateX(90deg);
984
+ opacity: 0;
985
+ }
986
+
987
+ 40% {
988
+ transform: perspective(400px) rotateX(-10deg);
989
+ }
990
+
991
+ 70% {
992
+ transform: perspective(400px) rotateX(10deg);
993
+ }
994
+
995
+ 100% {
996
+ transform: perspective(400px) rotateX(0deg);
997
+ opacity: 1;
998
+ }
999
+ }
1000
+
1001
+ .animated.flipInX {
1002
+ -webkit-backface-visibility: visible !important;
1003
+ -webkit-animation-name: flipInX;
1004
+ -moz-backface-visibility: visible !important;
1005
+ -moz-animation-name: flipInX;
1006
+ -o-backface-visibility: visible !important;
1007
+ -o-animation-name: flipInX;
1008
+ backface-visibility: visible !important;
1009
+ animation-name: flipInX;
1010
+ }
1011
+
1012
+ @-webkit-keyframes flipInY {
1013
+ 0% {
1014
+ -webkit-transform: perspective(400px) rotateY(90deg);
1015
+ opacity: 0;
1016
+ }
1017
+
1018
+ 40% {
1019
+ -webkit-transform: perspective(400px) rotateY(-10deg);
1020
+ }
1021
+
1022
+ 70% {
1023
+ -webkit-transform: perspective(400px) rotateY(10deg);
1024
+ }
1025
+
1026
+ 100% {
1027
+ -webkit-transform: perspective(400px) rotateY(0deg);
1028
+ opacity: 1;
1029
+ }
1030
+ }
1031
+ @-moz-keyframes flipInY {
1032
+ 0% {
1033
+ -moz-transform: perspective(400px) rotateY(90deg);
1034
+ opacity: 0;
1035
+ }
1036
+
1037
+ 40% {
1038
+ -moz-transform: perspective(400px) rotateY(-10deg);
1039
+ }
1040
+
1041
+ 70% {
1042
+ -moz-transform: perspective(400px) rotateY(10deg);
1043
+ }
1044
+
1045
+ 100% {
1046
+ -moz-transform: perspective(400px) rotateY(0deg);
1047
+ opacity: 1;
1048
+ }
1049
+ }
1050
+ @-o-keyframes flipInY {
1051
+ 0% {
1052
+ -o-transform: perspective(400px) rotateY(90deg);
1053
+ opacity: 0;
1054
+ }
1055
+
1056
+ 40% {
1057
+ -o-transform: perspective(400px) rotateY(-10deg);
1058
+ }
1059
+
1060
+ 70% {
1061
+ -o-transform: perspective(400px) rotateY(10deg);
1062
+ }
1063
+
1064
+ 100% {
1065
+ -o-transform: perspective(400px) rotateY(0deg);
1066
+ opacity: 1;
1067
+ }
1068
+ }
1069
+ @keyframes flipInY {
1070
+ 0% {
1071
+ transform: perspective(400px) rotateY(90deg);
1072
+ opacity: 0;
1073
+ }
1074
+
1075
+ 40% {
1076
+ transform: perspective(400px) rotateY(-10deg);
1077
+ }
1078
+
1079
+ 70% {
1080
+ transform: perspective(400px) rotateY(10deg);
1081
+ }
1082
+
1083
+ 100% {
1084
+ transform: perspective(400px) rotateY(0deg);
1085
+ opacity: 1;
1086
+ }
1087
+ }
1088
+
1089
+ .animated.flipInY {
1090
+ -webkit-backface-visibility: visible !important;
1091
+ -webkit-animation-name: flipInY;
1092
+ -moz-backface-visibility: visible !important;
1093
+ -moz-animation-name: flipInY;
1094
+ -o-backface-visibility: visible !important;
1095
+ -o-animation-name: flipInY;
1096
+ backface-visibility: visible !important;
1097
+ animation-name: flipInY;
1098
+ }