voltar 0.0.23

Sign up to get free protection for your applications and to get access to all the features.
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
+ }