Commit 27a74d7e222298433e6d2ccbe5a7c9e61a1f2d8c

Authored by Victor Costa
1 parent 4cd649e7

Display pending notifications to user

controllers/gamification_plugin_profile_controller.rb
1 1 class GamificationPluginProfileController < ProfileController
2 2  
3 3 def info
4   - @target = current_person
  4 + @target = profile
5 5 render 'gamification/info'
6 6 end
7 7  
... ...
lib/gamification_plugin.rb
... ... @@ -30,7 +30,23 @@ class GamificationPlugin &lt; Noosfero::Plugin
30 30 end
31 31  
32 32 def body_ending
33   - proc { render :file => 'gamification/display_achievements' }
  33 + proc do
  34 + if current_person.present?
  35 + badges = current_person.badges.notification_pending.all
  36 + current_person.sash.notify_all_badges_from_user
  37 + render :file => 'gamification/display_notifications', :locals => {:badges => badges}
  38 + else
  39 + ''
  40 + end
  41 + end
  42 + end
  43 +
  44 + def stylesheet?
  45 + true
  46 + end
  47 +
  48 + def js_files
  49 + ['jquery.noty.packaged.min.js', 'main.js']
34 50 end
35 51  
36 52 ActionDispatch::Reloader.to_prepare do
... ...
lib/gamification_plugin/badge.rb
... ... @@ -2,6 +2,8 @@ class GamificationPlugin::Badge &lt; Noosfero::Plugin::ActiveRecord
2 2  
3 3 belongs_to :owner, :polymorphic => true
4 4  
  5 + has_many :badges_sash, :class_name => 'Merit::BadgesSash'
  6 +
5 7 attr_accessible :owner, :name, :description, :level, :custom_fields
6 8  
7 9 serialize :custom_fields
... ... @@ -16,4 +18,6 @@ class GamificationPlugin::Badge &lt; Noosfero::Plugin::ActiveRecord
16 18 Merit::BadgesSash.where(:badge_id => self.id).destroy_all
17 19 end
18 20  
  21 + scope :notification_pending, :joins => :badges_sash, :conditions => ['badges_sashes.notified_user = false']
  22 +
19 23 end
... ...
lib/merit/badge_ext.rb 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +require_dependency 'merit/badge'
  2 +
  3 +module Merit
  4 +
  5 + # Delegate find methods to GamificationPlugin::Badge
  6 + class Badge
  7 + class << self
  8 + delegate :find_by_name_and_level, :to => 'GamificationPlugin::Badge'
  9 + delegate :find, :to => 'GamificationPlugin::Badge'
  10 + end
  11 + end
  12 +
  13 +end
... ...
lib/merit/badges_sash.rb 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +module Merit
  2 +
  3 + class BadgesSash
  4 + belongs_to :gamification_plugin_badge, :class_name => 'GamificationPlugin::Badge', :foreign_key => :badge_id
  5 + alias :badge :gamification_plugin_badge
  6 + end
  7 +
  8 +end
... ...
lib/merit/sash.rb 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +module Merit
  2 +
  3 + class Sash
  4 + has_many :gamification_plugin_badges, :through => :badges_sashes, :source => :gamification_plugin_badge
  5 + alias :badges :gamification_plugin_badges
  6 + end
  7 +
  8 + def notify_all_badges_from_user
  9 + badges_sashes.update_all(:notified_user => true)
  10 + end
  11 +
  12 +end
... ...
lib/merit_badge.rb
... ... @@ -1,16 +0,0 @@
1   -require_dependency 'merit/badge'
2   -
3   -module Merit
4   -
5   - # Delegate find methods to GamificationPlugin::Badge
6   - class Badge
7   - class << self
8   - delegate :find_by_name_and_level, :to => 'GamificationPlugin::Badge'
9   -
10   - def find(id)
11   - GamificationPlugin::Badge.find_by_id(id)
12   - end
13   - end
14   - end
15   -
16   -end
lib/merit_ext.rb
1   -require 'merit_badge'
  1 +require 'merit/badge_ext'
  2 +require 'merit/sash'
  3 +require 'merit/badges_sash'
2 4  
3 5 module Merit
  6 +
4 7 module ControllerExtensions
5 8  
6 9 private
... ...
public/animate.css 0 → 100644
... ... @@ -0,0 +1,3181 @@
  1 +@charset "UTF-8";
  2 +
  3 +/*!
  4 +Animate.css - http://daneden.me/animate
  5 +Licensed under the MIT license - http://opensource.org/licenses/MIT
  6 +
  7 +Copyright (c) 2015 Daniel Eden
  8 +*/
  9 +
  10 +.animated {
  11 + -webkit-animation-duration: 1s;
  12 + animation-duration: 1s;
  13 + -webkit-animation-fill-mode: both;
  14 + animation-fill-mode: both;
  15 +}
  16 +
  17 +.animated.infinite {
  18 + -webkit-animation-iteration-count: infinite;
  19 + animation-iteration-count: infinite;
  20 +}
  21 +
  22 +.animated.hinge {
  23 + -webkit-animation-duration: 2s;
  24 + animation-duration: 2s;
  25 +}
  26 +
  27 +.animated.bounceIn,
  28 +.animated.bounceOut {
  29 + -webkit-animation-duration: .75s;
  30 + animation-duration: .75s;
  31 +}
  32 +
  33 +.animated.flipOutX,
  34 +.animated.flipOutY {
  35 + -webkit-animation-duration: .75s;
  36 + animation-duration: .75s;
  37 +}
  38 +
  39 +@-webkit-keyframes bounce {
  40 + 0%, 20%, 53%, 80%, 100% {
  41 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  42 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  43 + -webkit-transform: translate3d(0,0,0);
  44 + transform: translate3d(0,0,0);
  45 + }
  46 +
  47 + 40%, 43% {
  48 + -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
  49 + transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
  50 + -webkit-transform: translate3d(0, -30px, 0);
  51 + transform: translate3d(0, -30px, 0);
  52 + }
  53 +
  54 + 70% {
  55 + -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
  56 + transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
  57 + -webkit-transform: translate3d(0, -15px, 0);
  58 + transform: translate3d(0, -15px, 0);
  59 + }
  60 +
  61 + 90% {
  62 + -webkit-transform: translate3d(0,-4px,0);
  63 + transform: translate3d(0,-4px,0);
  64 + }
  65 +}
  66 +
  67 +@keyframes bounce {
  68 + 0%, 20%, 53%, 80%, 100% {
  69 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  70 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  71 + -webkit-transform: translate3d(0,0,0);
  72 + transform: translate3d(0,0,0);
  73 + }
  74 +
  75 + 40%, 43% {
  76 + -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
  77 + transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
  78 + -webkit-transform: translate3d(0, -30px, 0);
  79 + transform: translate3d(0, -30px, 0);
  80 + }
  81 +
  82 + 70% {
  83 + -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
  84 + transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
  85 + -webkit-transform: translate3d(0, -15px, 0);
  86 + transform: translate3d(0, -15px, 0);
  87 + }
  88 +
  89 + 90% {
  90 + -webkit-transform: translate3d(0,-4px,0);
  91 + transform: translate3d(0,-4px,0);
  92 + }
  93 +}
  94 +
  95 +.bounce {
  96 + -webkit-animation-name: bounce;
  97 + animation-name: bounce;
  98 + -webkit-transform-origin: center bottom;
  99 + transform-origin: center bottom;
  100 +}
  101 +
  102 +@-webkit-keyframes flash {
  103 + 0%, 50%, 100% {
  104 + opacity: 1;
  105 + }
  106 +
  107 + 25%, 75% {
  108 + opacity: 0;
  109 + }
  110 +}
  111 +
  112 +@keyframes flash {
  113 + 0%, 50%, 100% {
  114 + opacity: 1;
  115 + }
  116 +
  117 + 25%, 75% {
  118 + opacity: 0;
  119 + }
  120 +}
  121 +
  122 +.flash {
  123 + -webkit-animation-name: flash;
  124 + animation-name: flash;
  125 +}
  126 +
  127 +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
  128 +
  129 +@-webkit-keyframes pulse {
  130 + 0% {
  131 + -webkit-transform: scale3d(1, 1, 1);
  132 + transform: scale3d(1, 1, 1);
  133 + }
  134 +
  135 + 50% {
  136 + -webkit-transform: scale3d(1.05, 1.05, 1.05);
  137 + transform: scale3d(1.05, 1.05, 1.05);
  138 + }
  139 +
  140 + 100% {
  141 + -webkit-transform: scale3d(1, 1, 1);
  142 + transform: scale3d(1, 1, 1);
  143 + }
  144 +}
  145 +
  146 +@keyframes pulse {
  147 + 0% {
  148 + -webkit-transform: scale3d(1, 1, 1);
  149 + transform: scale3d(1, 1, 1);
  150 + }
  151 +
  152 + 50% {
  153 + -webkit-transform: scale3d(1.05, 1.05, 1.05);
  154 + transform: scale3d(1.05, 1.05, 1.05);
  155 + }
  156 +
  157 + 100% {
  158 + -webkit-transform: scale3d(1, 1, 1);
  159 + transform: scale3d(1, 1, 1);
  160 + }
  161 +}
  162 +
  163 +.pulse {
  164 + -webkit-animation-name: pulse;
  165 + animation-name: pulse;
  166 +}
  167 +
  168 +@-webkit-keyframes rubberBand {
  169 + 0% {
  170 + -webkit-transform: scale3d(1, 1, 1);
  171 + transform: scale3d(1, 1, 1);
  172 + }
  173 +
  174 + 30% {
  175 + -webkit-transform: scale3d(1.25, 0.75, 1);
  176 + transform: scale3d(1.25, 0.75, 1);
  177 + }
  178 +
  179 + 40% {
  180 + -webkit-transform: scale3d(0.75, 1.25, 1);
  181 + transform: scale3d(0.75, 1.25, 1);
  182 + }
  183 +
  184 + 50% {
  185 + -webkit-transform: scale3d(1.15, 0.85, 1);
  186 + transform: scale3d(1.15, 0.85, 1);
  187 + }
  188 +
  189 + 65% {
  190 + -webkit-transform: scale3d(.95, 1.05, 1);
  191 + transform: scale3d(.95, 1.05, 1);
  192 + }
  193 +
  194 + 75% {
  195 + -webkit-transform: scale3d(1.05, .95, 1);
  196 + transform: scale3d(1.05, .95, 1);
  197 + }
  198 +
  199 + 100% {
  200 + -webkit-transform: scale3d(1, 1, 1);
  201 + transform: scale3d(1, 1, 1);
  202 + }
  203 +}
  204 +
  205 +@keyframes rubberBand {
  206 + 0% {
  207 + -webkit-transform: scale3d(1, 1, 1);
  208 + transform: scale3d(1, 1, 1);
  209 + }
  210 +
  211 + 30% {
  212 + -webkit-transform: scale3d(1.25, 0.75, 1);
  213 + transform: scale3d(1.25, 0.75, 1);
  214 + }
  215 +
  216 + 40% {
  217 + -webkit-transform: scale3d(0.75, 1.25, 1);
  218 + transform: scale3d(0.75, 1.25, 1);
  219 + }
  220 +
  221 + 50% {
  222 + -webkit-transform: scale3d(1.15, 0.85, 1);
  223 + transform: scale3d(1.15, 0.85, 1);
  224 + }
  225 +
  226 + 65% {
  227 + -webkit-transform: scale3d(.95, 1.05, 1);
  228 + transform: scale3d(.95, 1.05, 1);
  229 + }
  230 +
  231 + 75% {
  232 + -webkit-transform: scale3d(1.05, .95, 1);
  233 + transform: scale3d(1.05, .95, 1);
  234 + }
  235 +
  236 + 100% {
  237 + -webkit-transform: scale3d(1, 1, 1);
  238 + transform: scale3d(1, 1, 1);
  239 + }
  240 +}
  241 +
  242 +.rubberBand {
  243 + -webkit-animation-name: rubberBand;
  244 + animation-name: rubberBand;
  245 +}
  246 +
  247 +@-webkit-keyframes shake {
  248 + 0%, 100% {
  249 + -webkit-transform: translate3d(0, 0, 0);
  250 + transform: translate3d(0, 0, 0);
  251 + }
  252 +
  253 + 10%, 30%, 50%, 70%, 90% {
  254 + -webkit-transform: translate3d(-10px, 0, 0);
  255 + transform: translate3d(-10px, 0, 0);
  256 + }
  257 +
  258 + 20%, 40%, 60%, 80% {
  259 + -webkit-transform: translate3d(10px, 0, 0);
  260 + transform: translate3d(10px, 0, 0);
  261 + }
  262 +}
  263 +
  264 +@keyframes shake {
  265 + 0%, 100% {
  266 + -webkit-transform: translate3d(0, 0, 0);
  267 + transform: translate3d(0, 0, 0);
  268 + }
  269 +
  270 + 10%, 30%, 50%, 70%, 90% {
  271 + -webkit-transform: translate3d(-10px, 0, 0);
  272 + transform: translate3d(-10px, 0, 0);
  273 + }
  274 +
  275 + 20%, 40%, 60%, 80% {
  276 + -webkit-transform: translate3d(10px, 0, 0);
  277 + transform: translate3d(10px, 0, 0);
  278 + }
  279 +}
  280 +
  281 +.shake {
  282 + -webkit-animation-name: shake;
  283 + animation-name: shake;
  284 +}
  285 +
  286 +@-webkit-keyframes swing {
  287 + 20% {
  288 + -webkit-transform: rotate3d(0, 0, 1, 15deg);
  289 + transform: rotate3d(0, 0, 1, 15deg);
  290 + }
  291 +
  292 + 40% {
  293 + -webkit-transform: rotate3d(0, 0, 1, -10deg);
  294 + transform: rotate3d(0, 0, 1, -10deg);
  295 + }
  296 +
  297 + 60% {
  298 + -webkit-transform: rotate3d(0, 0, 1, 5deg);
  299 + transform: rotate3d(0, 0, 1, 5deg);
  300 + }
  301 +
  302 + 80% {
  303 + -webkit-transform: rotate3d(0, 0, 1, -5deg);
  304 + transform: rotate3d(0, 0, 1, -5deg);
  305 + }
  306 +
  307 + 100% {
  308 + -webkit-transform: rotate3d(0, 0, 1, 0deg);
  309 + transform: rotate3d(0, 0, 1, 0deg);
  310 + }
  311 +}
  312 +
  313 +@keyframes swing {
  314 + 20% {
  315 + -webkit-transform: rotate3d(0, 0, 1, 15deg);
  316 + transform: rotate3d(0, 0, 1, 15deg);
  317 + }
  318 +
  319 + 40% {
  320 + -webkit-transform: rotate3d(0, 0, 1, -10deg);
  321 + transform: rotate3d(0, 0, 1, -10deg);
  322 + }
  323 +
  324 + 60% {
  325 + -webkit-transform: rotate3d(0, 0, 1, 5deg);
  326 + transform: rotate3d(0, 0, 1, 5deg);
  327 + }
  328 +
  329 + 80% {
  330 + -webkit-transform: rotate3d(0, 0, 1, -5deg);
  331 + transform: rotate3d(0, 0, 1, -5deg);
  332 + }
  333 +
  334 + 100% {
  335 + -webkit-transform: rotate3d(0, 0, 1, 0deg);
  336 + transform: rotate3d(0, 0, 1, 0deg);
  337 + }
  338 +}
  339 +
  340 +.swing {
  341 + -webkit-transform-origin: top center;
  342 + transform-origin: top center;
  343 + -webkit-animation-name: swing;
  344 + animation-name: swing;
  345 +}
  346 +
  347 +@-webkit-keyframes tada {
  348 + 0% {
  349 + -webkit-transform: scale3d(1, 1, 1);
  350 + transform: scale3d(1, 1, 1);
  351 + }
  352 +
  353 + 10%, 20% {
  354 + -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
  355 + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
  356 + }
  357 +
  358 + 30%, 50%, 70%, 90% {
  359 + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  360 + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  361 + }
  362 +
  363 + 40%, 60%, 80% {
  364 + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  365 + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  366 + }
  367 +
  368 + 100% {
  369 + -webkit-transform: scale3d(1, 1, 1);
  370 + transform: scale3d(1, 1, 1);
  371 + }
  372 +}
  373 +
  374 +@keyframes tada {
  375 + 0% {
  376 + -webkit-transform: scale3d(1, 1, 1);
  377 + transform: scale3d(1, 1, 1);
  378 + }
  379 +
  380 + 10%, 20% {
  381 + -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
  382 + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
  383 + }
  384 +
  385 + 30%, 50%, 70%, 90% {
  386 + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  387 + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  388 + }
  389 +
  390 + 40%, 60%, 80% {
  391 + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  392 + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  393 + }
  394 +
  395 + 100% {
  396 + -webkit-transform: scale3d(1, 1, 1);
  397 + transform: scale3d(1, 1, 1);
  398 + }
  399 +}
  400 +
  401 +.tada {
  402 + -webkit-animation-name: tada;
  403 + animation-name: tada;
  404 +}
  405 +
  406 +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
  407 +
  408 +@-webkit-keyframes wobble {
  409 + 0% {
  410 + -webkit-transform: none;
  411 + transform: none;
  412 + }
  413 +
  414 + 15% {
  415 + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  416 + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  417 + }
  418 +
  419 + 30% {
  420 + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  421 + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  422 + }
  423 +
  424 + 45% {
  425 + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  426 + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  427 + }
  428 +
  429 + 60% {
  430 + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  431 + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  432 + }
  433 +
  434 + 75% {
  435 + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  436 + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  437 + }
  438 +
  439 + 100% {
  440 + -webkit-transform: none;
  441 + transform: none;
  442 + }
  443 +}
  444 +
  445 +@keyframes wobble {
  446 + 0% {
  447 + -webkit-transform: none;
  448 + transform: none;
  449 + }
  450 +
  451 + 15% {
  452 + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  453 + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  454 + }
  455 +
  456 + 30% {
  457 + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  458 + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  459 + }
  460 +
  461 + 45% {
  462 + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  463 + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  464 + }
  465 +
  466 + 60% {
  467 + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  468 + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  469 + }
  470 +
  471 + 75% {
  472 + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  473 + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  474 + }
  475 +
  476 + 100% {
  477 + -webkit-transform: none;
  478 + transform: none;
  479 + }
  480 +}
  481 +
  482 +.wobble {
  483 + -webkit-animation-name: wobble;
  484 + animation-name: wobble;
  485 +}
  486 +
  487 +@-webkit-keyframes bounceIn {
  488 + 0%, 20%, 40%, 60%, 80%, 100% {
  489 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  490 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  491 + }
  492 +
  493 + 0% {
  494 + opacity: 0;
  495 + -webkit-transform: scale3d(.3, .3, .3);
  496 + transform: scale3d(.3, .3, .3);
  497 + }
  498 +
  499 + 20% {
  500 + -webkit-transform: scale3d(1.1, 1.1, 1.1);
  501 + transform: scale3d(1.1, 1.1, 1.1);
  502 + }
  503 +
  504 + 40% {
  505 + -webkit-transform: scale3d(.9, .9, .9);
  506 + transform: scale3d(.9, .9, .9);
  507 + }
  508 +
  509 + 60% {
  510 + opacity: 1;
  511 + -webkit-transform: scale3d(1.03, 1.03, 1.03);
  512 + transform: scale3d(1.03, 1.03, 1.03);
  513 + }
  514 +
  515 + 80% {
  516 + -webkit-transform: scale3d(.97, .97, .97);
  517 + transform: scale3d(.97, .97, .97);
  518 + }
  519 +
  520 + 100% {
  521 + opacity: 1;
  522 + -webkit-transform: scale3d(1, 1, 1);
  523 + transform: scale3d(1, 1, 1);
  524 + }
  525 +}
  526 +
  527 +@keyframes bounceIn {
  528 + 0%, 20%, 40%, 60%, 80%, 100% {
  529 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  530 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  531 + }
  532 +
  533 + 0% {
  534 + opacity: 0;
  535 + -webkit-transform: scale3d(.3, .3, .3);
  536 + transform: scale3d(.3, .3, .3);
  537 + }
  538 +
  539 + 20% {
  540 + -webkit-transform: scale3d(1.1, 1.1, 1.1);
  541 + transform: scale3d(1.1, 1.1, 1.1);
  542 + }
  543 +
  544 + 40% {
  545 + -webkit-transform: scale3d(.9, .9, .9);
  546 + transform: scale3d(.9, .9, .9);
  547 + }
  548 +
  549 + 60% {
  550 + opacity: 1;
  551 + -webkit-transform: scale3d(1.03, 1.03, 1.03);
  552 + transform: scale3d(1.03, 1.03, 1.03);
  553 + }
  554 +
  555 + 80% {
  556 + -webkit-transform: scale3d(.97, .97, .97);
  557 + transform: scale3d(.97, .97, .97);
  558 + }
  559 +
  560 + 100% {
  561 + opacity: 1;
  562 + -webkit-transform: scale3d(1, 1, 1);
  563 + transform: scale3d(1, 1, 1);
  564 + }
  565 +}
  566 +
  567 +.bounceIn {
  568 + -webkit-animation-name: bounceIn;
  569 + animation-name: bounceIn;
  570 +}
  571 +
  572 +@-webkit-keyframes bounceInDown {
  573 + 0%, 60%, 75%, 90%, 100% {
  574 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  575 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  576 + }
  577 +
  578 + 0% {
  579 + opacity: 0;
  580 + -webkit-transform: translate3d(0, -3000px, 0);
  581 + transform: translate3d(0, -3000px, 0);
  582 + }
  583 +
  584 + 60% {
  585 + opacity: 1;
  586 + -webkit-transform: translate3d(0, 25px, 0);
  587 + transform: translate3d(0, 25px, 0);
  588 + }
  589 +
  590 + 75% {
  591 + -webkit-transform: translate3d(0, -10px, 0);
  592 + transform: translate3d(0, -10px, 0);
  593 + }
  594 +
  595 + 90% {
  596 + -webkit-transform: translate3d(0, 5px, 0);
  597 + transform: translate3d(0, 5px, 0);
  598 + }
  599 +
  600 + 100% {
  601 + -webkit-transform: none;
  602 + transform: none;
  603 + }
  604 +}
  605 +
  606 +@keyframes bounceInDown {
  607 + 0%, 60%, 75%, 90%, 100% {
  608 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  609 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  610 + }
  611 +
  612 + 0% {
  613 + opacity: 0;
  614 + -webkit-transform: translate3d(0, -3000px, 0);
  615 + transform: translate3d(0, -3000px, 0);
  616 + }
  617 +
  618 + 60% {
  619 + opacity: 1;
  620 + -webkit-transform: translate3d(0, 25px, 0);
  621 + transform: translate3d(0, 25px, 0);
  622 + }
  623 +
  624 + 75% {
  625 + -webkit-transform: translate3d(0, -10px, 0);
  626 + transform: translate3d(0, -10px, 0);
  627 + }
  628 +
  629 + 90% {
  630 + -webkit-transform: translate3d(0, 5px, 0);
  631 + transform: translate3d(0, 5px, 0);
  632 + }
  633 +
  634 + 100% {
  635 + -webkit-transform: none;
  636 + transform: none;
  637 + }
  638 +}
  639 +
  640 +.bounceInDown {
  641 + -webkit-animation-name: bounceInDown;
  642 + animation-name: bounceInDown;
  643 +}
  644 +
  645 +@-webkit-keyframes bounceInLeft {
  646 + 0%, 60%, 75%, 90%, 100% {
  647 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  648 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  649 + }
  650 +
  651 + 0% {
  652 + opacity: 0;
  653 + -webkit-transform: translate3d(-3000px, 0, 0);
  654 + transform: translate3d(-3000px, 0, 0);
  655 + }
  656 +
  657 + 60% {
  658 + opacity: 1;
  659 + -webkit-transform: translate3d(25px, 0, 0);
  660 + transform: translate3d(25px, 0, 0);
  661 + }
  662 +
  663 + 75% {
  664 + -webkit-transform: translate3d(-10px, 0, 0);
  665 + transform: translate3d(-10px, 0, 0);
  666 + }
  667 +
  668 + 90% {
  669 + -webkit-transform: translate3d(5px, 0, 0);
  670 + transform: translate3d(5px, 0, 0);
  671 + }
  672 +
  673 + 100% {
  674 + -webkit-transform: none;
  675 + transform: none;
  676 + }
  677 +}
  678 +
  679 +@keyframes bounceInLeft {
  680 + 0%, 60%, 75%, 90%, 100% {
  681 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  682 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  683 + }
  684 +
  685 + 0% {
  686 + opacity: 0;
  687 + -webkit-transform: translate3d(-3000px, 0, 0);
  688 + transform: translate3d(-3000px, 0, 0);
  689 + }
  690 +
  691 + 60% {
  692 + opacity: 1;
  693 + -webkit-transform: translate3d(25px, 0, 0);
  694 + transform: translate3d(25px, 0, 0);
  695 + }
  696 +
  697 + 75% {
  698 + -webkit-transform: translate3d(-10px, 0, 0);
  699 + transform: translate3d(-10px, 0, 0);
  700 + }
  701 +
  702 + 90% {
  703 + -webkit-transform: translate3d(5px, 0, 0);
  704 + transform: translate3d(5px, 0, 0);
  705 + }
  706 +
  707 + 100% {
  708 + -webkit-transform: none;
  709 + transform: none;
  710 + }
  711 +}
  712 +
  713 +.bounceInLeft {
  714 + -webkit-animation-name: bounceInLeft;
  715 + animation-name: bounceInLeft;
  716 +}
  717 +
  718 +@-webkit-keyframes bounceInRight {
  719 + 0%, 60%, 75%, 90%, 100% {
  720 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  721 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  722 + }
  723 +
  724 + 0% {
  725 + opacity: 0;
  726 + -webkit-transform: translate3d(3000px, 0, 0);
  727 + transform: translate3d(3000px, 0, 0);
  728 + }
  729 +
  730 + 60% {
  731 + opacity: 1;
  732 + -webkit-transform: translate3d(-25px, 0, 0);
  733 + transform: translate3d(-25px, 0, 0);
  734 + }
  735 +
  736 + 75% {
  737 + -webkit-transform: translate3d(10px, 0, 0);
  738 + transform: translate3d(10px, 0, 0);
  739 + }
  740 +
  741 + 90% {
  742 + -webkit-transform: translate3d(-5px, 0, 0);
  743 + transform: translate3d(-5px, 0, 0);
  744 + }
  745 +
  746 + 100% {
  747 + -webkit-transform: none;
  748 + transform: none;
  749 + }
  750 +}
  751 +
  752 +@keyframes bounceInRight {
  753 + 0%, 60%, 75%, 90%, 100% {
  754 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  755 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  756 + }
  757 +
  758 + 0% {
  759 + opacity: 0;
  760 + -webkit-transform: translate3d(3000px, 0, 0);
  761 + transform: translate3d(3000px, 0, 0);
  762 + }
  763 +
  764 + 60% {
  765 + opacity: 1;
  766 + -webkit-transform: translate3d(-25px, 0, 0);
  767 + transform: translate3d(-25px, 0, 0);
  768 + }
  769 +
  770 + 75% {
  771 + -webkit-transform: translate3d(10px, 0, 0);
  772 + transform: translate3d(10px, 0, 0);
  773 + }
  774 +
  775 + 90% {
  776 + -webkit-transform: translate3d(-5px, 0, 0);
  777 + transform: translate3d(-5px, 0, 0);
  778 + }
  779 +
  780 + 100% {
  781 + -webkit-transform: none;
  782 + transform: none;
  783 + }
  784 +}
  785 +
  786 +.bounceInRight {
  787 + -webkit-animation-name: bounceInRight;
  788 + animation-name: bounceInRight;
  789 +}
  790 +
  791 +@-webkit-keyframes bounceInUp {
  792 + 0%, 60%, 75%, 90%, 100% {
  793 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  794 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  795 + }
  796 +
  797 + 0% {
  798 + opacity: 0;
  799 + -webkit-transform: translate3d(0, 3000px, 0);
  800 + transform: translate3d(0, 3000px, 0);
  801 + }
  802 +
  803 + 60% {
  804 + opacity: 1;
  805 + -webkit-transform: translate3d(0, -20px, 0);
  806 + transform: translate3d(0, -20px, 0);
  807 + }
  808 +
  809 + 75% {
  810 + -webkit-transform: translate3d(0, 10px, 0);
  811 + transform: translate3d(0, 10px, 0);
  812 + }
  813 +
  814 + 90% {
  815 + -webkit-transform: translate3d(0, -5px, 0);
  816 + transform: translate3d(0, -5px, 0);
  817 + }
  818 +
  819 + 100% {
  820 + -webkit-transform: translate3d(0, 0, 0);
  821 + transform: translate3d(0, 0, 0);
  822 + }
  823 +}
  824 +
  825 +@keyframes bounceInUp {
  826 + 0%, 60%, 75%, 90%, 100% {
  827 + -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  828 + transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
  829 + }
  830 +
  831 + 0% {
  832 + opacity: 0;
  833 + -webkit-transform: translate3d(0, 3000px, 0);
  834 + transform: translate3d(0, 3000px, 0);
  835 + }
  836 +
  837 + 60% {
  838 + opacity: 1;
  839 + -webkit-transform: translate3d(0, -20px, 0);
  840 + transform: translate3d(0, -20px, 0);
  841 + }
  842 +
  843 + 75% {
  844 + -webkit-transform: translate3d(0, 10px, 0);
  845 + transform: translate3d(0, 10px, 0);
  846 + }
  847 +
  848 + 90% {
  849 + -webkit-transform: translate3d(0, -5px, 0);
  850 + transform: translate3d(0, -5px, 0);
  851 + }
  852 +
  853 + 100% {
  854 + -webkit-transform: translate3d(0, 0, 0);
  855 + transform: translate3d(0, 0, 0);
  856 + }
  857 +}
  858 +
  859 +.bounceInUp {
  860 + -webkit-animation-name: bounceInUp;
  861 + animation-name: bounceInUp;
  862 +}
  863 +
  864 +@-webkit-keyframes bounceOut {
  865 + 20% {
  866 + -webkit-transform: scale3d(.9, .9, .9);
  867 + transform: scale3d(.9, .9, .9);
  868 + }
  869 +
  870 + 50%, 55% {
  871 + opacity: 1;
  872 + -webkit-transform: scale3d(1.1, 1.1, 1.1);
  873 + transform: scale3d(1.1, 1.1, 1.1);
  874 + }
  875 +
  876 + 100% {
  877 + opacity: 0;
  878 + -webkit-transform: scale3d(.3, .3, .3);
  879 + transform: scale3d(.3, .3, .3);
  880 + }
  881 +}
  882 +
  883 +@keyframes bounceOut {
  884 + 20% {
  885 + -webkit-transform: scale3d(.9, .9, .9);
  886 + transform: scale3d(.9, .9, .9);
  887 + }
  888 +
  889 + 50%, 55% {
  890 + opacity: 1;
  891 + -webkit-transform: scale3d(1.1, 1.1, 1.1);
  892 + transform: scale3d(1.1, 1.1, 1.1);
  893 + }
  894 +
  895 + 100% {
  896 + opacity: 0;
  897 + -webkit-transform: scale3d(.3, .3, .3);
  898 + transform: scale3d(.3, .3, .3);
  899 + }
  900 +}
  901 +
  902 +.bounceOut {
  903 + -webkit-animation-name: bounceOut;
  904 + animation-name: bounceOut;
  905 +}
  906 +
  907 +@-webkit-keyframes bounceOutDown {
  908 + 20% {
  909 + -webkit-transform: translate3d(0, 10px, 0);
  910 + transform: translate3d(0, 10px, 0);
  911 + }
  912 +
  913 + 40%, 45% {
  914 + opacity: 1;
  915 + -webkit-transform: translate3d(0, -20px, 0);
  916 + transform: translate3d(0, -20px, 0);
  917 + }
  918 +
  919 + 100% {
  920 + opacity: 0;
  921 + -webkit-transform: translate3d(0, 2000px, 0);
  922 + transform: translate3d(0, 2000px, 0);
  923 + }
  924 +}
  925 +
  926 +@keyframes bounceOutDown {
  927 + 20% {
  928 + -webkit-transform: translate3d(0, 10px, 0);
  929 + transform: translate3d(0, 10px, 0);
  930 + }
  931 +
  932 + 40%, 45% {
  933 + opacity: 1;
  934 + -webkit-transform: translate3d(0, -20px, 0);
  935 + transform: translate3d(0, -20px, 0);
  936 + }
  937 +
  938 + 100% {
  939 + opacity: 0;
  940 + -webkit-transform: translate3d(0, 2000px, 0);
  941 + transform: translate3d(0, 2000px, 0);
  942 + }
  943 +}
  944 +
  945 +.bounceOutDown {
  946 + -webkit-animation-name: bounceOutDown;
  947 + animation-name: bounceOutDown;
  948 +}
  949 +
  950 +@-webkit-keyframes bounceOutLeft {
  951 + 20% {
  952 + opacity: 1;
  953 + -webkit-transform: translate3d(20px, 0, 0);
  954 + transform: translate3d(20px, 0, 0);
  955 + }
  956 +
  957 + 100% {
  958 + opacity: 0;
  959 + -webkit-transform: translate3d(-2000px, 0, 0);
  960 + transform: translate3d(-2000px, 0, 0);
  961 + }
  962 +}
  963 +
  964 +@keyframes bounceOutLeft {
  965 + 20% {
  966 + opacity: 1;
  967 + -webkit-transform: translate3d(20px, 0, 0);
  968 + transform: translate3d(20px, 0, 0);
  969 + }
  970 +
  971 + 100% {
  972 + opacity: 0;
  973 + -webkit-transform: translate3d(-2000px, 0, 0);
  974 + transform: translate3d(-2000px, 0, 0);
  975 + }
  976 +}
  977 +
  978 +.bounceOutLeft {
  979 + -webkit-animation-name: bounceOutLeft;
  980 + animation-name: bounceOutLeft;
  981 +}
  982 +
  983 +@-webkit-keyframes bounceOutRight {
  984 + 20% {
  985 + opacity: 1;
  986 + -webkit-transform: translate3d(-20px, 0, 0);
  987 + transform: translate3d(-20px, 0, 0);
  988 + }
  989 +
  990 + 100% {
  991 + opacity: 0;
  992 + -webkit-transform: translate3d(2000px, 0, 0);
  993 + transform: translate3d(2000px, 0, 0);
  994 + }
  995 +}
  996 +
  997 +@keyframes bounceOutRight {
  998 + 20% {
  999 + opacity: 1;
  1000 + -webkit-transform: translate3d(-20px, 0, 0);
  1001 + transform: translate3d(-20px, 0, 0);
  1002 + }
  1003 +
  1004 + 100% {
  1005 + opacity: 0;
  1006 + -webkit-transform: translate3d(2000px, 0, 0);
  1007 + transform: translate3d(2000px, 0, 0);
  1008 + }
  1009 +}
  1010 +
  1011 +.bounceOutRight {
  1012 + -webkit-animation-name: bounceOutRight;
  1013 + animation-name: bounceOutRight;
  1014 +}
  1015 +
  1016 +@-webkit-keyframes bounceOutUp {
  1017 + 20% {
  1018 + -webkit-transform: translate3d(0, -10px, 0);
  1019 + transform: translate3d(0, -10px, 0);
  1020 + }
  1021 +
  1022 + 40%, 45% {
  1023 + opacity: 1;
  1024 + -webkit-transform: translate3d(0, 20px, 0);
  1025 + transform: translate3d(0, 20px, 0);
  1026 + }
  1027 +
  1028 + 100% {
  1029 + opacity: 0;
  1030 + -webkit-transform: translate3d(0, -2000px, 0);
  1031 + transform: translate3d(0, -2000px, 0);
  1032 + }
  1033 +}
  1034 +
  1035 +@keyframes bounceOutUp {
  1036 + 20% {
  1037 + -webkit-transform: translate3d(0, -10px, 0);
  1038 + transform: translate3d(0, -10px, 0);
  1039 + }
  1040 +
  1041 + 40%, 45% {
  1042 + opacity: 1;
  1043 + -webkit-transform: translate3d(0, 20px, 0);
  1044 + transform: translate3d(0, 20px, 0);
  1045 + }
  1046 +
  1047 + 100% {
  1048 + opacity: 0;
  1049 + -webkit-transform: translate3d(0, -2000px, 0);
  1050 + transform: translate3d(0, -2000px, 0);
  1051 + }
  1052 +}
  1053 +
  1054 +.bounceOutUp {
  1055 + -webkit-animation-name: bounceOutUp;
  1056 + animation-name: bounceOutUp;
  1057 +}
  1058 +
  1059 +@-webkit-keyframes fadeIn {
  1060 + 0% {
  1061 + opacity: 0;
  1062 + }
  1063 +
  1064 + 100% {
  1065 + opacity: 1;
  1066 + }
  1067 +}
  1068 +
  1069 +@keyframes fadeIn {
  1070 + 0% {
  1071 + opacity: 0;
  1072 + }
  1073 +
  1074 + 100% {
  1075 + opacity: 1;
  1076 + }
  1077 +}
  1078 +
  1079 +.fadeIn {
  1080 + -webkit-animation-name: fadeIn;
  1081 + animation-name: fadeIn;
  1082 +}
  1083 +
  1084 +@-webkit-keyframes fadeInDown {
  1085 + 0% {
  1086 + opacity: 0;
  1087 + -webkit-transform: translate3d(0, -100%, 0);
  1088 + transform: translate3d(0, -100%, 0);
  1089 + }
  1090 +
  1091 + 100% {
  1092 + opacity: 1;
  1093 + -webkit-transform: none;
  1094 + transform: none;
  1095 + }
  1096 +}
  1097 +
  1098 +@keyframes fadeInDown {
  1099 + 0% {
  1100 + opacity: 0;
  1101 + -webkit-transform: translate3d(0, -100%, 0);
  1102 + transform: translate3d(0, -100%, 0);
  1103 + }
  1104 +
  1105 + 100% {
  1106 + opacity: 1;
  1107 + -webkit-transform: none;
  1108 + transform: none;
  1109 + }
  1110 +}
  1111 +
  1112 +.fadeInDown {
  1113 + -webkit-animation-name: fadeInDown;
  1114 + animation-name: fadeInDown;
  1115 +}
  1116 +
  1117 +@-webkit-keyframes fadeInDownBig {
  1118 + 0% {
  1119 + opacity: 0;
  1120 + -webkit-transform: translate3d(0, -2000px, 0);
  1121 + transform: translate3d(0, -2000px, 0);
  1122 + }
  1123 +
  1124 + 100% {
  1125 + opacity: 1;
  1126 + -webkit-transform: none;
  1127 + transform: none;
  1128 + }
  1129 +}
  1130 +
  1131 +@keyframes fadeInDownBig {
  1132 + 0% {
  1133 + opacity: 0;
  1134 + -webkit-transform: translate3d(0, -2000px, 0);
  1135 + transform: translate3d(0, -2000px, 0);
  1136 + }
  1137 +
  1138 + 100% {
  1139 + opacity: 1;
  1140 + -webkit-transform: none;
  1141 + transform: none;
  1142 + }
  1143 +}
  1144 +
  1145 +.fadeInDownBig {
  1146 + -webkit-animation-name: fadeInDownBig;
  1147 + animation-name: fadeInDownBig;
  1148 +}
  1149 +
  1150 +@-webkit-keyframes fadeInLeft {
  1151 + 0% {
  1152 + opacity: 0;
  1153 + -webkit-transform: translate3d(-100%, 0, 0);
  1154 + transform: translate3d(-100%, 0, 0);
  1155 + }
  1156 +
  1157 + 100% {
  1158 + opacity: 1;
  1159 + -webkit-transform: none;
  1160 + transform: none;
  1161 + }
  1162 +}
  1163 +
  1164 +@keyframes fadeInLeft {
  1165 + 0% {
  1166 + opacity: 0;
  1167 + -webkit-transform: translate3d(-100%, 0, 0);
  1168 + transform: translate3d(-100%, 0, 0);
  1169 + }
  1170 +
  1171 + 100% {
  1172 + opacity: 1;
  1173 + -webkit-transform: none;
  1174 + transform: none;
  1175 + }
  1176 +}
  1177 +
  1178 +.fadeInLeft {
  1179 + -webkit-animation-name: fadeInLeft;
  1180 + animation-name: fadeInLeft;
  1181 +}
  1182 +
  1183 +@-webkit-keyframes fadeInLeftBig {
  1184 + 0% {
  1185 + opacity: 0;
  1186 + -webkit-transform: translate3d(-2000px, 0, 0);
  1187 + transform: translate3d(-2000px, 0, 0);
  1188 + }
  1189 +
  1190 + 100% {
  1191 + opacity: 1;
  1192 + -webkit-transform: none;
  1193 + transform: none;
  1194 + }
  1195 +}
  1196 +
  1197 +@keyframes fadeInLeftBig {
  1198 + 0% {
  1199 + opacity: 0;
  1200 + -webkit-transform: translate3d(-2000px, 0, 0);
  1201 + transform: translate3d(-2000px, 0, 0);
  1202 + }
  1203 +
  1204 + 100% {
  1205 + opacity: 1;
  1206 + -webkit-transform: none;
  1207 + transform: none;
  1208 + }
  1209 +}
  1210 +
  1211 +.fadeInLeftBig {
  1212 + -webkit-animation-name: fadeInLeftBig;
  1213 + animation-name: fadeInLeftBig;
  1214 +}
  1215 +
  1216 +@-webkit-keyframes fadeInRight {
  1217 + 0% {
  1218 + opacity: 0;
  1219 + -webkit-transform: translate3d(100%, 0, 0);
  1220 + transform: translate3d(100%, 0, 0);
  1221 + }
  1222 +
  1223 + 100% {
  1224 + opacity: 1;
  1225 + -webkit-transform: none;
  1226 + transform: none;
  1227 + }
  1228 +}
  1229 +
  1230 +@keyframes fadeInRight {
  1231 + 0% {
  1232 + opacity: 0;
  1233 + -webkit-transform: translate3d(100%, 0, 0);
  1234 + transform: translate3d(100%, 0, 0);
  1235 + }
  1236 +
  1237 + 100% {
  1238 + opacity: 1;
  1239 + -webkit-transform: none;
  1240 + transform: none;
  1241 + }
  1242 +}
  1243 +
  1244 +.fadeInRight {
  1245 + -webkit-animation-name: fadeInRight;
  1246 + animation-name: fadeInRight;
  1247 +}
  1248 +
  1249 +@-webkit-keyframes fadeInRightBig {
  1250 + 0% {
  1251 + opacity: 0;
  1252 + -webkit-transform: translate3d(2000px, 0, 0);
  1253 + transform: translate3d(2000px, 0, 0);
  1254 + }
  1255 +
  1256 + 100% {
  1257 + opacity: 1;
  1258 + -webkit-transform: none;
  1259 + transform: none;
  1260 + }
  1261 +}
  1262 +
  1263 +@keyframes fadeInRightBig {
  1264 + 0% {
  1265 + opacity: 0;
  1266 + -webkit-transform: translate3d(2000px, 0, 0);
  1267 + transform: translate3d(2000px, 0, 0);
  1268 + }
  1269 +
  1270 + 100% {
  1271 + opacity: 1;
  1272 + -webkit-transform: none;
  1273 + transform: none;
  1274 + }
  1275 +}
  1276 +
  1277 +.fadeInRightBig {
  1278 + -webkit-animation-name: fadeInRightBig;
  1279 + animation-name: fadeInRightBig;
  1280 +}
  1281 +
  1282 +@-webkit-keyframes fadeInUp {
  1283 + 0% {
  1284 + opacity: 0;
  1285 + -webkit-transform: translate3d(0, 100%, 0);
  1286 + transform: translate3d(0, 100%, 0);
  1287 + }
  1288 +
  1289 + 100% {
  1290 + opacity: 1;
  1291 + -webkit-transform: none;
  1292 + transform: none;
  1293 + }
  1294 +}
  1295 +
  1296 +@keyframes fadeInUp {
  1297 + 0% {
  1298 + opacity: 0;
  1299 + -webkit-transform: translate3d(0, 100%, 0);
  1300 + transform: translate3d(0, 100%, 0);
  1301 + }
  1302 +
  1303 + 100% {
  1304 + opacity: 1;
  1305 + -webkit-transform: none;
  1306 + transform: none;
  1307 + }
  1308 +}
  1309 +
  1310 +.fadeInUp {
  1311 + -webkit-animation-name: fadeInUp;
  1312 + animation-name: fadeInUp;
  1313 +}
  1314 +
  1315 +@-webkit-keyframes fadeInUpBig {
  1316 + 0% {
  1317 + opacity: 0;
  1318 + -webkit-transform: translate3d(0, 2000px, 0);
  1319 + transform: translate3d(0, 2000px, 0);
  1320 + }
  1321 +
  1322 + 100% {
  1323 + opacity: 1;
  1324 + -webkit-transform: none;
  1325 + transform: none;
  1326 + }
  1327 +}
  1328 +
  1329 +@keyframes fadeInUpBig {
  1330 + 0% {
  1331 + opacity: 0;
  1332 + -webkit-transform: translate3d(0, 2000px, 0);
  1333 + transform: translate3d(0, 2000px, 0);
  1334 + }
  1335 +
  1336 + 100% {
  1337 + opacity: 1;
  1338 + -webkit-transform: none;
  1339 + transform: none;
  1340 + }
  1341 +}
  1342 +
  1343 +.fadeInUpBig {
  1344 + -webkit-animation-name: fadeInUpBig;
  1345 + animation-name: fadeInUpBig;
  1346 +}
  1347 +
  1348 +@-webkit-keyframes fadeOut {
  1349 + 0% {
  1350 + opacity: 1;
  1351 + }
  1352 +
  1353 + 100% {
  1354 + opacity: 0;
  1355 + }
  1356 +}
  1357 +
  1358 +@keyframes fadeOut {
  1359 + 0% {
  1360 + opacity: 1;
  1361 + }
  1362 +
  1363 + 100% {
  1364 + opacity: 0;
  1365 + }
  1366 +}
  1367 +
  1368 +.fadeOut {
  1369 + -webkit-animation-name: fadeOut;
  1370 + animation-name: fadeOut;
  1371 +}
  1372 +
  1373 +@-webkit-keyframes fadeOutDown {
  1374 + 0% {
  1375 + opacity: 1;
  1376 + }
  1377 +
  1378 + 100% {
  1379 + opacity: 0;
  1380 + -webkit-transform: translate3d(0, 100%, 0);
  1381 + transform: translate3d(0, 100%, 0);
  1382 + }
  1383 +}
  1384 +
  1385 +@keyframes fadeOutDown {
  1386 + 0% {
  1387 + opacity: 1;
  1388 + }
  1389 +
  1390 + 100% {
  1391 + opacity: 0;
  1392 + -webkit-transform: translate3d(0, 100%, 0);
  1393 + transform: translate3d(0, 100%, 0);
  1394 + }
  1395 +}
  1396 +
  1397 +.fadeOutDown {
  1398 + -webkit-animation-name: fadeOutDown;
  1399 + animation-name: fadeOutDown;
  1400 +}
  1401 +
  1402 +@-webkit-keyframes fadeOutDownBig {
  1403 + 0% {
  1404 + opacity: 1;
  1405 + }
  1406 +
  1407 + 100% {
  1408 + opacity: 0;
  1409 + -webkit-transform: translate3d(0, 2000px, 0);
  1410 + transform: translate3d(0, 2000px, 0);
  1411 + }
  1412 +}
  1413 +
  1414 +@keyframes fadeOutDownBig {
  1415 + 0% {
  1416 + opacity: 1;
  1417 + }
  1418 +
  1419 + 100% {
  1420 + opacity: 0;
  1421 + -webkit-transform: translate3d(0, 2000px, 0);
  1422 + transform: translate3d(0, 2000px, 0);
  1423 + }
  1424 +}
  1425 +
  1426 +.fadeOutDownBig {
  1427 + -webkit-animation-name: fadeOutDownBig;
  1428 + animation-name: fadeOutDownBig;
  1429 +}
  1430 +
  1431 +@-webkit-keyframes fadeOutLeft {
  1432 + 0% {
  1433 + opacity: 1;
  1434 + }
  1435 +
  1436 + 100% {
  1437 + opacity: 0;
  1438 + -webkit-transform: translate3d(-100%, 0, 0);
  1439 + transform: translate3d(-100%, 0, 0);
  1440 + }
  1441 +}
  1442 +
  1443 +@keyframes fadeOutLeft {
  1444 + 0% {
  1445 + opacity: 1;
  1446 + }
  1447 +
  1448 + 100% {
  1449 + opacity: 0;
  1450 + -webkit-transform: translate3d(-100%, 0, 0);
  1451 + transform: translate3d(-100%, 0, 0);
  1452 + }
  1453 +}
  1454 +
  1455 +.fadeOutLeft {
  1456 + -webkit-animation-name: fadeOutLeft;
  1457 + animation-name: fadeOutLeft;
  1458 +}
  1459 +
  1460 +@-webkit-keyframes fadeOutLeftBig {
  1461 + 0% {
  1462 + opacity: 1;
  1463 + }
  1464 +
  1465 + 100% {
  1466 + opacity: 0;
  1467 + -webkit-transform: translate3d(-2000px, 0, 0);
  1468 + transform: translate3d(-2000px, 0, 0);
  1469 + }
  1470 +}
  1471 +
  1472 +@keyframes fadeOutLeftBig {
  1473 + 0% {
  1474 + opacity: 1;
  1475 + }
  1476 +
  1477 + 100% {
  1478 + opacity: 0;
  1479 + -webkit-transform: translate3d(-2000px, 0, 0);
  1480 + transform: translate3d(-2000px, 0, 0);
  1481 + }
  1482 +}
  1483 +
  1484 +.fadeOutLeftBig {
  1485 + -webkit-animation-name: fadeOutLeftBig;
  1486 + animation-name: fadeOutLeftBig;
  1487 +}
  1488 +
  1489 +@-webkit-keyframes fadeOutRight {
  1490 + 0% {
  1491 + opacity: 1;
  1492 + }
  1493 +
  1494 + 100% {
  1495 + opacity: 0;
  1496 + -webkit-transform: translate3d(100%, 0, 0);
  1497 + transform: translate3d(100%, 0, 0);
  1498 + }
  1499 +}
  1500 +
  1501 +@keyframes fadeOutRight {
  1502 + 0% {
  1503 + opacity: 1;
  1504 + }
  1505 +
  1506 + 100% {
  1507 + opacity: 0;
  1508 + -webkit-transform: translate3d(100%, 0, 0);
  1509 + transform: translate3d(100%, 0, 0);
  1510 + }
  1511 +}
  1512 +
  1513 +.fadeOutRight {
  1514 + -webkit-animation-name: fadeOutRight;
  1515 + animation-name: fadeOutRight;
  1516 +}
  1517 +
  1518 +@-webkit-keyframes fadeOutRightBig {
  1519 + 0% {
  1520 + opacity: 1;
  1521 + }
  1522 +
  1523 + 100% {
  1524 + opacity: 0;
  1525 + -webkit-transform: translate3d(2000px, 0, 0);
  1526 + transform: translate3d(2000px, 0, 0);
  1527 + }
  1528 +}
  1529 +
  1530 +@keyframes fadeOutRightBig {
  1531 + 0% {
  1532 + opacity: 1;
  1533 + }
  1534 +
  1535 + 100% {
  1536 + opacity: 0;
  1537 + -webkit-transform: translate3d(2000px, 0, 0);
  1538 + transform: translate3d(2000px, 0, 0);
  1539 + }
  1540 +}
  1541 +
  1542 +.fadeOutRightBig {
  1543 + -webkit-animation-name: fadeOutRightBig;
  1544 + animation-name: fadeOutRightBig;
  1545 +}
  1546 +
  1547 +@-webkit-keyframes fadeOutUp {
  1548 + 0% {
  1549 + opacity: 1;
  1550 + }
  1551 +
  1552 + 100% {
  1553 + opacity: 0;
  1554 + -webkit-transform: translate3d(0, -100%, 0);
  1555 + transform: translate3d(0, -100%, 0);
  1556 + }
  1557 +}
  1558 +
  1559 +@keyframes fadeOutUp {
  1560 + 0% {
  1561 + opacity: 1;
  1562 + }
  1563 +
  1564 + 100% {
  1565 + opacity: 0;
  1566 + -webkit-transform: translate3d(0, -100%, 0);
  1567 + transform: translate3d(0, -100%, 0);
  1568 + }
  1569 +}
  1570 +
  1571 +.fadeOutUp {
  1572 + -webkit-animation-name: fadeOutUp;
  1573 + animation-name: fadeOutUp;
  1574 +}
  1575 +
  1576 +@-webkit-keyframes fadeOutUpBig {
  1577 + 0% {
  1578 + opacity: 1;
  1579 + }
  1580 +
  1581 + 100% {
  1582 + opacity: 0;
  1583 + -webkit-transform: translate3d(0, -2000px, 0);
  1584 + transform: translate3d(0, -2000px, 0);
  1585 + }
  1586 +}
  1587 +
  1588 +@keyframes fadeOutUpBig {
  1589 + 0% {
  1590 + opacity: 1;
  1591 + }
  1592 +
  1593 + 100% {
  1594 + opacity: 0;
  1595 + -webkit-transform: translate3d(0, -2000px, 0);
  1596 + transform: translate3d(0, -2000px, 0);
  1597 + }
  1598 +}
  1599 +
  1600 +.fadeOutUpBig {
  1601 + -webkit-animation-name: fadeOutUpBig;
  1602 + animation-name: fadeOutUpBig;
  1603 +}
  1604 +
  1605 +@-webkit-keyframes flip {
  1606 + 0% {
  1607 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
  1608 + transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
  1609 + -webkit-animation-timing-function: ease-out;
  1610 + animation-timing-function: ease-out;
  1611 + }
  1612 +
  1613 + 40% {
  1614 + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
  1615 + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
  1616 + -webkit-animation-timing-function: ease-out;
  1617 + animation-timing-function: ease-out;
  1618 + }
  1619 +
  1620 + 50% {
  1621 + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
  1622 + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
  1623 + -webkit-animation-timing-function: ease-in;
  1624 + animation-timing-function: ease-in;
  1625 + }
  1626 +
  1627 + 80% {
  1628 + -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
  1629 + transform: perspective(400px) scale3d(.95, .95, .95);
  1630 + -webkit-animation-timing-function: ease-in;
  1631 + animation-timing-function: ease-in;
  1632 + }
  1633 +
  1634 + 100% {
  1635 + -webkit-transform: perspective(400px);
  1636 + transform: perspective(400px);
  1637 + -webkit-animation-timing-function: ease-in;
  1638 + animation-timing-function: ease-in;
  1639 + }
  1640 +}
  1641 +
  1642 +@keyframes flip {
  1643 + 0% {
  1644 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
  1645 + transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
  1646 + -webkit-animation-timing-function: ease-out;
  1647 + animation-timing-function: ease-out;
  1648 + }
  1649 +
  1650 + 40% {
  1651 + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
  1652 + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
  1653 + -webkit-animation-timing-function: ease-out;
  1654 + animation-timing-function: ease-out;
  1655 + }
  1656 +
  1657 + 50% {
  1658 + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
  1659 + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
  1660 + -webkit-animation-timing-function: ease-in;
  1661 + animation-timing-function: ease-in;
  1662 + }
  1663 +
  1664 + 80% {
  1665 + -webkit-transform: perspective(400px) scale3d(.95, .95, .95);
  1666 + transform: perspective(400px) scale3d(.95, .95, .95);
  1667 + -webkit-animation-timing-function: ease-in;
  1668 + animation-timing-function: ease-in;
  1669 + }
  1670 +
  1671 + 100% {
  1672 + -webkit-transform: perspective(400px);
  1673 + transform: perspective(400px);
  1674 + -webkit-animation-timing-function: ease-in;
  1675 + animation-timing-function: ease-in;
  1676 + }
  1677 +}
  1678 +
  1679 +.animated.flip {
  1680 + -webkit-backface-visibility: visible;
  1681 + backface-visibility: visible;
  1682 + -webkit-animation-name: flip;
  1683 + animation-name: flip;
  1684 +}
  1685 +
  1686 +@-webkit-keyframes flipInX {
  1687 + 0% {
  1688 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
  1689 + transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
  1690 + -webkit-transition-timing-function: ease-in;
  1691 + transition-timing-function: ease-in;
  1692 + opacity: 0;
  1693 + }
  1694 +
  1695 + 40% {
  1696 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
  1697 + transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
  1698 + -webkit-transition-timing-function: ease-in;
  1699 + transition-timing-function: ease-in;
  1700 + }
  1701 +
  1702 + 60% {
  1703 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
  1704 + transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
  1705 + opacity: 1;
  1706 + }
  1707 +
  1708 + 80% {
  1709 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  1710 + transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  1711 + }
  1712 +
  1713 + 100% {
  1714 + -webkit-transform: perspective(400px);
  1715 + transform: perspective(400px);
  1716 + }
  1717 +}
  1718 +
  1719 +@keyframes flipInX {
  1720 + 0% {
  1721 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
  1722 + transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
  1723 + -webkit-transition-timing-function: ease-in;
  1724 + transition-timing-function: ease-in;
  1725 + opacity: 0;
  1726 + }
  1727 +
  1728 + 40% {
  1729 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
  1730 + transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
  1731 + -webkit-transition-timing-function: ease-in;
  1732 + transition-timing-function: ease-in;
  1733 + }
  1734 +
  1735 + 60% {
  1736 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
  1737 + transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
  1738 + opacity: 1;
  1739 + }
  1740 +
  1741 + 80% {
  1742 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  1743 + transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  1744 + }
  1745 +
  1746 + 100% {
  1747 + -webkit-transform: perspective(400px);
  1748 + transform: perspective(400px);
  1749 + }
  1750 +}
  1751 +
  1752 +.flipInX {
  1753 + -webkit-backface-visibility: visible !important;
  1754 + backface-visibility: visible !important;
  1755 + -webkit-animation-name: flipInX;
  1756 + animation-name: flipInX;
  1757 +}
  1758 +
  1759 +@-webkit-keyframes flipInY {
  1760 + 0% {
  1761 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  1762 + transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  1763 + -webkit-transition-timing-function: ease-in;
  1764 + transition-timing-function: ease-in;
  1765 + opacity: 0;
  1766 + }
  1767 +
  1768 + 40% {
  1769 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
  1770 + transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
  1771 + -webkit-transition-timing-function: ease-in;
  1772 + transition-timing-function: ease-in;
  1773 + }
  1774 +
  1775 + 60% {
  1776 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
  1777 + transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
  1778 + opacity: 1;
  1779 + }
  1780 +
  1781 + 80% {
  1782 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  1783 + transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  1784 + }
  1785 +
  1786 + 100% {
  1787 + -webkit-transform: perspective(400px);
  1788 + transform: perspective(400px);
  1789 + }
  1790 +}
  1791 +
  1792 +@keyframes flipInY {
  1793 + 0% {
  1794 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  1795 + transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  1796 + -webkit-transition-timing-function: ease-in;
  1797 + transition-timing-function: ease-in;
  1798 + opacity: 0;
  1799 + }
  1800 +
  1801 + 40% {
  1802 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
  1803 + transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
  1804 + -webkit-transition-timing-function: ease-in;
  1805 + transition-timing-function: ease-in;
  1806 + }
  1807 +
  1808 + 60% {
  1809 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
  1810 + transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
  1811 + opacity: 1;
  1812 + }
  1813 +
  1814 + 80% {
  1815 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  1816 + transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  1817 + }
  1818 +
  1819 + 100% {
  1820 + -webkit-transform: perspective(400px);
  1821 + transform: perspective(400px);
  1822 + }
  1823 +}
  1824 +
  1825 +.flipInY {
  1826 + -webkit-backface-visibility: visible !important;
  1827 + backface-visibility: visible !important;
  1828 + -webkit-animation-name: flipInY;
  1829 + animation-name: flipInY;
  1830 +}
  1831 +
  1832 +@-webkit-keyframes flipOutX {
  1833 + 0% {
  1834 + -webkit-transform: perspective(400px);
  1835 + transform: perspective(400px);
  1836 + }
  1837 +
  1838 + 30% {
  1839 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
  1840 + transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
  1841 + opacity: 1;
  1842 + }
  1843 +
  1844 + 100% {
  1845 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
  1846 + transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
  1847 + opacity: 0;
  1848 + }
  1849 +}
  1850 +
  1851 +@keyframes flipOutX {
  1852 + 0% {
  1853 + -webkit-transform: perspective(400px);
  1854 + transform: perspective(400px);
  1855 + }
  1856 +
  1857 + 30% {
  1858 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
  1859 + transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
  1860 + opacity: 1;
  1861 + }
  1862 +
  1863 + 100% {
  1864 + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
  1865 + transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
  1866 + opacity: 0;
  1867 + }
  1868 +}
  1869 +
  1870 +.flipOutX {
  1871 + -webkit-animation-name: flipOutX;
  1872 + animation-name: flipOutX;
  1873 + -webkit-backface-visibility: visible !important;
  1874 + backface-visibility: visible !important;
  1875 +}
  1876 +
  1877 +@-webkit-keyframes flipOutY {
  1878 + 0% {
  1879 + -webkit-transform: perspective(400px);
  1880 + transform: perspective(400px);
  1881 + }
  1882 +
  1883 + 30% {
  1884 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
  1885 + transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
  1886 + opacity: 1;
  1887 + }
  1888 +
  1889 + 100% {
  1890 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  1891 + transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  1892 + opacity: 0;
  1893 + }
  1894 +}
  1895 +
  1896 +@keyframes flipOutY {
  1897 + 0% {
  1898 + -webkit-transform: perspective(400px);
  1899 + transform: perspective(400px);
  1900 + }
  1901 +
  1902 + 30% {
  1903 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
  1904 + transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
  1905 + opacity: 1;
  1906 + }
  1907 +
  1908 + 100% {
  1909 + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  1910 + transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  1911 + opacity: 0;
  1912 + }
  1913 +}
  1914 +
  1915 +.flipOutY {
  1916 + -webkit-backface-visibility: visible !important;
  1917 + backface-visibility: visible !important;
  1918 + -webkit-animation-name: flipOutY;
  1919 + animation-name: flipOutY;
  1920 +}
  1921 +
  1922 +@-webkit-keyframes lightSpeedIn {
  1923 + 0% {
  1924 + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
  1925 + transform: translate3d(100%, 0, 0) skewX(-30deg);
  1926 + opacity: 0;
  1927 + }
  1928 +
  1929 + 60% {
  1930 + -webkit-transform: skewX(20deg);
  1931 + transform: skewX(20deg);
  1932 + opacity: 1;
  1933 + }
  1934 +
  1935 + 80% {
  1936 + -webkit-transform: skewX(-5deg);
  1937 + transform: skewX(-5deg);
  1938 + opacity: 1;
  1939 + }
  1940 +
  1941 + 100% {
  1942 + -webkit-transform: none;
  1943 + transform: none;
  1944 + opacity: 1;
  1945 + }
  1946 +}
  1947 +
  1948 +@keyframes lightSpeedIn {
  1949 + 0% {
  1950 + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
  1951 + transform: translate3d(100%, 0, 0) skewX(-30deg);
  1952 + opacity: 0;
  1953 + }
  1954 +
  1955 + 60% {
  1956 + -webkit-transform: skewX(20deg);
  1957 + transform: skewX(20deg);
  1958 + opacity: 1;
  1959 + }
  1960 +
  1961 + 80% {
  1962 + -webkit-transform: skewX(-5deg);
  1963 + transform: skewX(-5deg);
  1964 + opacity: 1;
  1965 + }
  1966 +
  1967 + 100% {
  1968 + -webkit-transform: none;
  1969 + transform: none;
  1970 + opacity: 1;
  1971 + }
  1972 +}
  1973 +
  1974 +.lightSpeedIn {
  1975 + -webkit-animation-name: lightSpeedIn;
  1976 + animation-name: lightSpeedIn;
  1977 + -webkit-animation-timing-function: ease-out;
  1978 + animation-timing-function: ease-out;
  1979 +}
  1980 +
  1981 +@-webkit-keyframes lightSpeedOut {
  1982 + 0% {
  1983 + opacity: 1;
  1984 + }
  1985 +
  1986 + 100% {
  1987 + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
  1988 + transform: translate3d(100%, 0, 0) skewX(30deg);
  1989 + opacity: 0;
  1990 + }
  1991 +}
  1992 +
  1993 +@keyframes lightSpeedOut {
  1994 + 0% {
  1995 + opacity: 1;
  1996 + }
  1997 +
  1998 + 100% {
  1999 + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
  2000 + transform: translate3d(100%, 0, 0) skewX(30deg);
  2001 + opacity: 0;
  2002 + }
  2003 +}
  2004 +
  2005 +.lightSpeedOut {
  2006 + -webkit-animation-name: lightSpeedOut;
  2007 + animation-name: lightSpeedOut;
  2008 + -webkit-animation-timing-function: ease-in;
  2009 + animation-timing-function: ease-in;
  2010 +}
  2011 +
  2012 +@-webkit-keyframes rotateIn {
  2013 + 0% {
  2014 + -webkit-transform-origin: center;
  2015 + transform-origin: center;
  2016 + -webkit-transform: rotate3d(0, 0, 1, -200deg);
  2017 + transform: rotate3d(0, 0, 1, -200deg);
  2018 + opacity: 0;
  2019 + }
  2020 +
  2021 + 100% {
  2022 + -webkit-transform-origin: center;
  2023 + transform-origin: center;
  2024 + -webkit-transform: none;
  2025 + transform: none;
  2026 + opacity: 1;
  2027 + }
  2028 +}
  2029 +
  2030 +@keyframes rotateIn {
  2031 + 0% {
  2032 + -webkit-transform-origin: center;
  2033 + transform-origin: center;
  2034 + -webkit-transform: rotate3d(0, 0, 1, -200deg);
  2035 + transform: rotate3d(0, 0, 1, -200deg);
  2036 + opacity: 0;
  2037 + }
  2038 +
  2039 + 100% {
  2040 + -webkit-transform-origin: center;
  2041 + transform-origin: center;
  2042 + -webkit-transform: none;
  2043 + transform: none;
  2044 + opacity: 1;
  2045 + }
  2046 +}
  2047 +
  2048 +.rotateIn {
  2049 + -webkit-animation-name: rotateIn;
  2050 + animation-name: rotateIn;
  2051 +}
  2052 +
  2053 +@-webkit-keyframes rotateInDownLeft {
  2054 + 0% {
  2055 + -webkit-transform-origin: left bottom;
  2056 + transform-origin: left bottom;
  2057 + -webkit-transform: rotate3d(0, 0, 1, -45deg);
  2058 + transform: rotate3d(0, 0, 1, -45deg);
  2059 + opacity: 0;
  2060 + }
  2061 +
  2062 + 100% {
  2063 + -webkit-transform-origin: left bottom;
  2064 + transform-origin: left bottom;
  2065 + -webkit-transform: none;
  2066 + transform: none;
  2067 + opacity: 1;
  2068 + }
  2069 +}
  2070 +
  2071 +@keyframes rotateInDownLeft {
  2072 + 0% {
  2073 + -webkit-transform-origin: left bottom;
  2074 + transform-origin: left bottom;
  2075 + -webkit-transform: rotate3d(0, 0, 1, -45deg);
  2076 + transform: rotate3d(0, 0, 1, -45deg);
  2077 + opacity: 0;
  2078 + }
  2079 +
  2080 + 100% {
  2081 + -webkit-transform-origin: left bottom;
  2082 + transform-origin: left bottom;
  2083 + -webkit-transform: none;
  2084 + transform: none;
  2085 + opacity: 1;
  2086 + }
  2087 +}
  2088 +
  2089 +.rotateInDownLeft {
  2090 + -webkit-animation-name: rotateInDownLeft;
  2091 + animation-name: rotateInDownLeft;
  2092 +}
  2093 +
  2094 +@-webkit-keyframes rotateInDownRight {
  2095 + 0% {
  2096 + -webkit-transform-origin: right bottom;
  2097 + transform-origin: right bottom;
  2098 + -webkit-transform: rotate3d(0, 0, 1, 45deg);
  2099 + transform: rotate3d(0, 0, 1, 45deg);
  2100 + opacity: 0;
  2101 + }
  2102 +
  2103 + 100% {
  2104 + -webkit-transform-origin: right bottom;
  2105 + transform-origin: right bottom;
  2106 + -webkit-transform: none;
  2107 + transform: none;
  2108 + opacity: 1;
  2109 + }
  2110 +}
  2111 +
  2112 +@keyframes rotateInDownRight {
  2113 + 0% {
  2114 + -webkit-transform-origin: right bottom;
  2115 + transform-origin: right bottom;
  2116 + -webkit-transform: rotate3d(0, 0, 1, 45deg);
  2117 + transform: rotate3d(0, 0, 1, 45deg);
  2118 + opacity: 0;
  2119 + }
  2120 +
  2121 + 100% {
  2122 + -webkit-transform-origin: right bottom;
  2123 + transform-origin: right bottom;
  2124 + -webkit-transform: none;
  2125 + transform: none;
  2126 + opacity: 1;
  2127 + }
  2128 +}
  2129 +
  2130 +.rotateInDownRight {
  2131 + -webkit-animation-name: rotateInDownRight;
  2132 + animation-name: rotateInDownRight;
  2133 +}
  2134 +
  2135 +@-webkit-keyframes rotateInUpLeft {
  2136 + 0% {
  2137 + -webkit-transform-origin: left bottom;
  2138 + transform-origin: left bottom;
  2139 + -webkit-transform: rotate3d(0, 0, 1, 45deg);
  2140 + transform: rotate3d(0, 0, 1, 45deg);
  2141 + opacity: 0;
  2142 + }
  2143 +
  2144 + 100% {
  2145 + -webkit-transform-origin: left bottom;
  2146 + transform-origin: left bottom;
  2147 + -webkit-transform: none;
  2148 + transform: none;
  2149 + opacity: 1;
  2150 + }
  2151 +}
  2152 +
  2153 +@keyframes rotateInUpLeft {
  2154 + 0% {
  2155 + -webkit-transform-origin: left bottom;
  2156 + transform-origin: left bottom;
  2157 + -webkit-transform: rotate3d(0, 0, 1, 45deg);
  2158 + transform: rotate3d(0, 0, 1, 45deg);
  2159 + opacity: 0;
  2160 + }
  2161 +
  2162 + 100% {
  2163 + -webkit-transform-origin: left bottom;
  2164 + transform-origin: left bottom;
  2165 + -webkit-transform: none;
  2166 + transform: none;
  2167 + opacity: 1;
  2168 + }
  2169 +}
  2170 +
  2171 +.rotateInUpLeft {
  2172 + -webkit-animation-name: rotateInUpLeft;
  2173 + animation-name: rotateInUpLeft;
  2174 +}
  2175 +
  2176 +@-webkit-keyframes rotateInUpRight {
  2177 + 0% {
  2178 + -webkit-transform-origin: right bottom;
  2179 + transform-origin: right bottom;
  2180 + -webkit-transform: rotate3d(0, 0, 1, -90deg);
  2181 + transform: rotate3d(0, 0, 1, -90deg);
  2182 + opacity: 0;
  2183 + }
  2184 +
  2185 + 100% {
  2186 + -webkit-transform-origin: right bottom;
  2187 + transform-origin: right bottom;
  2188 + -webkit-transform: none;
  2189 + transform: none;
  2190 + opacity: 1;
  2191 + }
  2192 +}
  2193 +
  2194 +@keyframes rotateInUpRight {
  2195 + 0% {
  2196 + -webkit-transform-origin: right bottom;
  2197 + transform-origin: right bottom;
  2198 + -webkit-transform: rotate3d(0, 0, 1, -90deg);
  2199 + transform: rotate3d(0, 0, 1, -90deg);
  2200 + opacity: 0;
  2201 + }
  2202 +
  2203 + 100% {
  2204 + -webkit-transform-origin: right bottom;
  2205 + transform-origin: right bottom;
  2206 + -webkit-transform: none;
  2207 + transform: none;
  2208 + opacity: 1;
  2209 + }
  2210 +}
  2211 +
  2212 +.rotateInUpRight {
  2213 + -webkit-animation-name: rotateInUpRight;
  2214 + animation-name: rotateInUpRight;
  2215 +}
  2216 +
  2217 +@-webkit-keyframes rotateOut {
  2218 + 0% {
  2219 + -webkit-transform-origin: center;
  2220 + transform-origin: center;
  2221 + opacity: 1;
  2222 + }
  2223 +
  2224 + 100% {
  2225 + -webkit-transform-origin: center;
  2226 + transform-origin: center;
  2227 + -webkit-transform: rotate3d(0, 0, 1, 200deg);
  2228 + transform: rotate3d(0, 0, 1, 200deg);
  2229 + opacity: 0;
  2230 + }
  2231 +}
  2232 +
  2233 +@keyframes rotateOut {
  2234 + 0% {
  2235 + -webkit-transform-origin: center;
  2236 + transform-origin: center;
  2237 + opacity: 1;
  2238 + }
  2239 +
  2240 + 100% {
  2241 + -webkit-transform-origin: center;
  2242 + transform-origin: center;
  2243 + -webkit-transform: rotate3d(0, 0, 1, 200deg);
  2244 + transform: rotate3d(0, 0, 1, 200deg);
  2245 + opacity: 0;
  2246 + }
  2247 +}
  2248 +
  2249 +.rotateOut {
  2250 + -webkit-animation-name: rotateOut;
  2251 + animation-name: rotateOut;
  2252 +}
  2253 +
  2254 +@-webkit-keyframes rotateOutDownLeft {
  2255 + 0% {
  2256 + -webkit-transform-origin: left bottom;
  2257 + transform-origin: left bottom;
  2258 + opacity: 1;
  2259 + }
  2260 +
  2261 + 100% {
  2262 + -webkit-transform-origin: left bottom;
  2263 + transform-origin: left bottom;
  2264 + -webkit-transform: rotate3d(0, 0, 1, 45deg);
  2265 + transform: rotate3d(0, 0, 1, 45deg);
  2266 + opacity: 0;
  2267 + }
  2268 +}
  2269 +
  2270 +@keyframes rotateOutDownLeft {
  2271 + 0% {
  2272 + -webkit-transform-origin: left bottom;
  2273 + transform-origin: left bottom;
  2274 + opacity: 1;
  2275 + }
  2276 +
  2277 + 100% {
  2278 + -webkit-transform-origin: left bottom;
  2279 + transform-origin: left bottom;
  2280 + -webkit-transform: rotate3d(0, 0, 1, 45deg);
  2281 + transform: rotate3d(0, 0, 1, 45deg);
  2282 + opacity: 0;
  2283 + }
  2284 +}
  2285 +
  2286 +.rotateOutDownLeft {
  2287 + -webkit-animation-name: rotateOutDownLeft;
  2288 + animation-name: rotateOutDownLeft;
  2289 +}
  2290 +
  2291 +@-webkit-keyframes rotateOutDownRight {
  2292 + 0% {
  2293 + -webkit-transform-origin: right bottom;
  2294 + transform-origin: right bottom;
  2295 + opacity: 1;
  2296 + }
  2297 +
  2298 + 100% {
  2299 + -webkit-transform-origin: right bottom;
  2300 + transform-origin: right bottom;
  2301 + -webkit-transform: rotate3d(0, 0, 1, -45deg);
  2302 + transform: rotate3d(0, 0, 1, -45deg);
  2303 + opacity: 0;
  2304 + }
  2305 +}
  2306 +
  2307 +@keyframes rotateOutDownRight {
  2308 + 0% {
  2309 + -webkit-transform-origin: right bottom;
  2310 + transform-origin: right bottom;
  2311 + opacity: 1;
  2312 + }
  2313 +
  2314 + 100% {
  2315 + -webkit-transform-origin: right bottom;
  2316 + transform-origin: right bottom;
  2317 + -webkit-transform: rotate3d(0, 0, 1, -45deg);
  2318 + transform: rotate3d(0, 0, 1, -45deg);
  2319 + opacity: 0;
  2320 + }
  2321 +}
  2322 +
  2323 +.rotateOutDownRight {
  2324 + -webkit-animation-name: rotateOutDownRight;
  2325 + animation-name: rotateOutDownRight;
  2326 +}
  2327 +
  2328 +@-webkit-keyframes rotateOutUpLeft {
  2329 + 0% {
  2330 + -webkit-transform-origin: left bottom;
  2331 + transform-origin: left bottom;
  2332 + opacity: 1;
  2333 + }
  2334 +
  2335 + 100% {
  2336 + -webkit-transform-origin: left bottom;
  2337 + transform-origin: left bottom;
  2338 + -webkit-transform: rotate3d(0, 0, 1, -45deg);
  2339 + transform: rotate3d(0, 0, 1, -45deg);
  2340 + opacity: 0;
  2341 + }
  2342 +}
  2343 +
  2344 +@keyframes rotateOutUpLeft {
  2345 + 0% {
  2346 + -webkit-transform-origin: left bottom;
  2347 + transform-origin: left bottom;
  2348 + opacity: 1;
  2349 + }
  2350 +
  2351 + 100% {
  2352 + -webkit-transform-origin: left bottom;
  2353 + transform-origin: left bottom;
  2354 + -webkit-transform: rotate3d(0, 0, 1, -45deg);
  2355 + transform: rotate3d(0, 0, 1, -45deg);
  2356 + opacity: 0;
  2357 + }
  2358 +}
  2359 +
  2360 +.rotateOutUpLeft {
  2361 + -webkit-animation-name: rotateOutUpLeft;
  2362 + animation-name: rotateOutUpLeft;
  2363 +}
  2364 +
  2365 +@-webkit-keyframes rotateOutUpRight {
  2366 + 0% {
  2367 + -webkit-transform-origin: right bottom;
  2368 + transform-origin: right bottom;
  2369 + opacity: 1;
  2370 + }
  2371 +
  2372 + 100% {
  2373 + -webkit-transform-origin: right bottom;
  2374 + transform-origin: right bottom;
  2375 + -webkit-transform: rotate3d(0, 0, 1, 90deg);
  2376 + transform: rotate3d(0, 0, 1, 90deg);
  2377 + opacity: 0;
  2378 + }
  2379 +}
  2380 +
  2381 +@keyframes rotateOutUpRight {
  2382 + 0% {
  2383 + -webkit-transform-origin: right bottom;
  2384 + transform-origin: right bottom;
  2385 + opacity: 1;
  2386 + }
  2387 +
  2388 + 100% {
  2389 + -webkit-transform-origin: right bottom;
  2390 + transform-origin: right bottom;
  2391 + -webkit-transform: rotate3d(0, 0, 1, 90deg);
  2392 + transform: rotate3d(0, 0, 1, 90deg);
  2393 + opacity: 0;
  2394 + }
  2395 +}
  2396 +
  2397 +.rotateOutUpRight {
  2398 + -webkit-animation-name: rotateOutUpRight;
  2399 + animation-name: rotateOutUpRight;
  2400 +}
  2401 +
  2402 +@-webkit-keyframes hinge {
  2403 + 0% {
  2404 + -webkit-transform-origin: top left;
  2405 + transform-origin: top left;
  2406 + -webkit-animation-timing-function: ease-in-out;
  2407 + animation-timing-function: ease-in-out;
  2408 + }
  2409 +
  2410 + 20%, 60% {
  2411 + -webkit-transform: rotate3d(0, 0, 1, 80deg);
  2412 + transform: rotate3d(0, 0, 1, 80deg);
  2413 + -webkit-transform-origin: top left;
  2414 + transform-origin: top left;
  2415 + -webkit-animation-timing-function: ease-in-out;
  2416 + animation-timing-function: ease-in-out;
  2417 + }
  2418 +
  2419 + 40%, 80% {
  2420 + -webkit-transform: rotate3d(0, 0, 1, 60deg);
  2421 + transform: rotate3d(0, 0, 1, 60deg);
  2422 + -webkit-transform-origin: top left;
  2423 + transform-origin: top left;
  2424 + -webkit-animation-timing-function: ease-in-out;
  2425 + animation-timing-function: ease-in-out;
  2426 + opacity: 1;
  2427 + }
  2428 +
  2429 + 100% {
  2430 + -webkit-transform: translate3d(0, 700px, 0);
  2431 + transform: translate3d(0, 700px, 0);
  2432 + opacity: 0;
  2433 + }
  2434 +}
  2435 +
  2436 +@keyframes hinge {
  2437 + 0% {
  2438 + -webkit-transform-origin: top left;
  2439 + transform-origin: top left;
  2440 + -webkit-animation-timing-function: ease-in-out;
  2441 + animation-timing-function: ease-in-out;
  2442 + }
  2443 +
  2444 + 20%, 60% {
  2445 + -webkit-transform: rotate3d(0, 0, 1, 80deg);
  2446 + transform: rotate3d(0, 0, 1, 80deg);
  2447 + -webkit-transform-origin: top left;
  2448 + transform-origin: top left;
  2449 + -webkit-animation-timing-function: ease-in-out;
  2450 + animation-timing-function: ease-in-out;
  2451 + }
  2452 +
  2453 + 40%, 80% {
  2454 + -webkit-transform: rotate3d(0, 0, 1, 60deg);
  2455 + transform: rotate3d(0, 0, 1, 60deg);
  2456 + -webkit-transform-origin: top left;
  2457 + transform-origin: top left;
  2458 + -webkit-animation-timing-function: ease-in-out;
  2459 + animation-timing-function: ease-in-out;
  2460 + opacity: 1;
  2461 + }
  2462 +
  2463 + 100% {
  2464 + -webkit-transform: translate3d(0, 700px, 0);
  2465 + transform: translate3d(0, 700px, 0);
  2466 + opacity: 0;
  2467 + }
  2468 +}
  2469 +
  2470 +.hinge {
  2471 + -webkit-animation-name: hinge;
  2472 + animation-name: hinge;
  2473 +}
  2474 +
  2475 +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
  2476 +
  2477 +@-webkit-keyframes rollIn {
  2478 + 0% {
  2479 + opacity: 0;
  2480 + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  2481 + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  2482 + }
  2483 +
  2484 + 100% {
  2485 + opacity: 1;
  2486 + -webkit-transform: none;
  2487 + transform: none;
  2488 + }
  2489 +}
  2490 +
  2491 +@keyframes rollIn {
  2492 + 0% {
  2493 + opacity: 0;
  2494 + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  2495 + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  2496 + }
  2497 +
  2498 + 100% {
  2499 + opacity: 1;
  2500 + -webkit-transform: none;
  2501 + transform: none;
  2502 + }
  2503 +}
  2504 +
  2505 +.rollIn {
  2506 + -webkit-animation-name: rollIn;
  2507 + animation-name: rollIn;
  2508 +}
  2509 +
  2510 +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
  2511 +
  2512 +@-webkit-keyframes rollOut {
  2513 + 0% {
  2514 + opacity: 1;
  2515 + }
  2516 +
  2517 + 100% {
  2518 + opacity: 0;
  2519 + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  2520 + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  2521 + }
  2522 +}
  2523 +
  2524 +@keyframes rollOut {
  2525 + 0% {
  2526 + opacity: 1;
  2527 + }
  2528 +
  2529 + 100% {
  2530 + opacity: 0;
  2531 + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  2532 + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  2533 + }
  2534 +}
  2535 +
  2536 +.rollOut {
  2537 + -webkit-animation-name: rollOut;
  2538 + animation-name: rollOut;
  2539 +}
  2540 +
  2541 +@-webkit-keyframes zoomIn {
  2542 + 0% {
  2543 + opacity: 0;
  2544 + -webkit-transform: scale3d(.3, .3, .3);
  2545 + transform: scale3d(.3, .3, .3);
  2546 + }
  2547 +
  2548 + 50% {
  2549 + opacity: 1;
  2550 + }
  2551 +}
  2552 +
  2553 +@keyframes zoomIn {
  2554 + 0% {
  2555 + opacity: 0;
  2556 + -webkit-transform: scale3d(.3, .3, .3);
  2557 + transform: scale3d(.3, .3, .3);
  2558 + }
  2559 +
  2560 + 50% {
  2561 + opacity: 1;
  2562 + }
  2563 +}
  2564 +
  2565 +.zoomIn {
  2566 + -webkit-animation-name: zoomIn;
  2567 + animation-name: zoomIn;
  2568 +}
  2569 +
  2570 +@-webkit-keyframes zoomInDown {
  2571 + 0% {
  2572 + opacity: 0;
  2573 + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
  2574 + transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
  2575 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2576 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2577 + }
  2578 +
  2579 + 60% {
  2580 + opacity: 1;
  2581 + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
  2582 + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
  2583 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2584 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2585 + }
  2586 +}
  2587 +
  2588 +@keyframes zoomInDown {
  2589 + 0% {
  2590 + opacity: 0;
  2591 + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
  2592 + transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
  2593 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2594 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2595 + }
  2596 +
  2597 + 60% {
  2598 + opacity: 1;
  2599 + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
  2600 + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
  2601 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2602 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2603 + }
  2604 +}
  2605 +
  2606 +.zoomInDown {
  2607 + -webkit-animation-name: zoomInDown;
  2608 + animation-name: zoomInDown;
  2609 +}
  2610 +
  2611 +@-webkit-keyframes zoomInLeft {
  2612 + 0% {
  2613 + opacity: 0;
  2614 + -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
  2615 + transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
  2616 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2617 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2618 + }
  2619 +
  2620 + 60% {
  2621 + opacity: 1;
  2622 + -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
  2623 + transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
  2624 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2625 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2626 + }
  2627 +}
  2628 +
  2629 +@keyframes zoomInLeft {
  2630 + 0% {
  2631 + opacity: 0;
  2632 + -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
  2633 + transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
  2634 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2635 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2636 + }
  2637 +
  2638 + 60% {
  2639 + opacity: 1;
  2640 + -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
  2641 + transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
  2642 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2643 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2644 + }
  2645 +}
  2646 +
  2647 +.zoomInLeft {
  2648 + -webkit-animation-name: zoomInLeft;
  2649 + animation-name: zoomInLeft;
  2650 +}
  2651 +
  2652 +@-webkit-keyframes zoomInRight {
  2653 + 0% {
  2654 + opacity: 0;
  2655 + -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
  2656 + transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
  2657 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2658 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2659 + }
  2660 +
  2661 + 60% {
  2662 + opacity: 1;
  2663 + -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
  2664 + transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
  2665 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2666 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2667 + }
  2668 +}
  2669 +
  2670 +@keyframes zoomInRight {
  2671 + 0% {
  2672 + opacity: 0;
  2673 + -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
  2674 + transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
  2675 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2676 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2677 + }
  2678 +
  2679 + 60% {
  2680 + opacity: 1;
  2681 + -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
  2682 + transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
  2683 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2684 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2685 + }
  2686 +}
  2687 +
  2688 +.zoomInRight {
  2689 + -webkit-animation-name: zoomInRight;
  2690 + animation-name: zoomInRight;
  2691 +}
  2692 +
  2693 +@-webkit-keyframes zoomInUp {
  2694 + 0% {
  2695 + opacity: 0;
  2696 + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
  2697 + transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
  2698 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2699 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2700 + }
  2701 +
  2702 + 60% {
  2703 + opacity: 1;
  2704 + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
  2705 + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
  2706 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2707 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2708 + }
  2709 +}
  2710 +
  2711 +@keyframes zoomInUp {
  2712 + 0% {
  2713 + opacity: 0;
  2714 + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
  2715 + transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
  2716 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2717 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2718 + }
  2719 +
  2720 + 60% {
  2721 + opacity: 1;
  2722 + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
  2723 + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
  2724 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2725 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2726 + }
  2727 +}
  2728 +
  2729 +.zoomInUp {
  2730 + -webkit-animation-name: zoomInUp;
  2731 + animation-name: zoomInUp;
  2732 +}
  2733 +
  2734 +@-webkit-keyframes zoomOut {
  2735 + 0% {
  2736 + opacity: 1;
  2737 + }
  2738 +
  2739 + 50% {
  2740 + opacity: 0;
  2741 + -webkit-transform: scale3d(.3, .3, .3);
  2742 + transform: scale3d(.3, .3, .3);
  2743 + }
  2744 +
  2745 + 100% {
  2746 + opacity: 0;
  2747 + }
  2748 +}
  2749 +
  2750 +@keyframes zoomOut {
  2751 + 0% {
  2752 + opacity: 1;
  2753 + }
  2754 +
  2755 + 50% {
  2756 + opacity: 0;
  2757 + -webkit-transform: scale3d(.3, .3, .3);
  2758 + transform: scale3d(.3, .3, .3);
  2759 + }
  2760 +
  2761 + 100% {
  2762 + opacity: 0;
  2763 + }
  2764 +}
  2765 +
  2766 +.zoomOut {
  2767 + -webkit-animation-name: zoomOut;
  2768 + animation-name: zoomOut;
  2769 +}
  2770 +
  2771 +@-webkit-keyframes zoomOutDown {
  2772 + 40% {
  2773 + opacity: 1;
  2774 + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
  2775 + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
  2776 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2777 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2778 + }
  2779 +
  2780 + 100% {
  2781 + opacity: 0;
  2782 + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
  2783 + transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
  2784 + -webkit-transform-origin: center bottom;
  2785 + transform-origin: center bottom;
  2786 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2787 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2788 + }
  2789 +}
  2790 +
  2791 +@keyframes zoomOutDown {
  2792 + 40% {
  2793 + opacity: 1;
  2794 + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
  2795 + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
  2796 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2797 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2798 + }
  2799 +
  2800 + 100% {
  2801 + opacity: 0;
  2802 + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
  2803 + transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
  2804 + -webkit-transform-origin: center bottom;
  2805 + transform-origin: center bottom;
  2806 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2807 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2808 + }
  2809 +}
  2810 +
  2811 +.zoomOutDown {
  2812 + -webkit-animation-name: zoomOutDown;
  2813 + animation-name: zoomOutDown;
  2814 +}
  2815 +
  2816 +@-webkit-keyframes zoomOutLeft {
  2817 + 40% {
  2818 + opacity: 1;
  2819 + -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
  2820 + transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
  2821 + }
  2822 +
  2823 + 100% {
  2824 + opacity: 0;
  2825 + -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
  2826 + transform: scale(.1) translate3d(-2000px, 0, 0);
  2827 + -webkit-transform-origin: left center;
  2828 + transform-origin: left center;
  2829 + }
  2830 +}
  2831 +
  2832 +@keyframes zoomOutLeft {
  2833 + 40% {
  2834 + opacity: 1;
  2835 + -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
  2836 + transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
  2837 + }
  2838 +
  2839 + 100% {
  2840 + opacity: 0;
  2841 + -webkit-transform: scale(.1) translate3d(-2000px, 0, 0);
  2842 + transform: scale(.1) translate3d(-2000px, 0, 0);
  2843 + -webkit-transform-origin: left center;
  2844 + transform-origin: left center;
  2845 + }
  2846 +}
  2847 +
  2848 +.zoomOutLeft {
  2849 + -webkit-animation-name: zoomOutLeft;
  2850 + animation-name: zoomOutLeft;
  2851 +}
  2852 +
  2853 +@-webkit-keyframes zoomOutRight {
  2854 + 40% {
  2855 + opacity: 1;
  2856 + -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
  2857 + transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
  2858 + }
  2859 +
  2860 + 100% {
  2861 + opacity: 0;
  2862 + -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
  2863 + transform: scale(.1) translate3d(2000px, 0, 0);
  2864 + -webkit-transform-origin: right center;
  2865 + transform-origin: right center;
  2866 + }
  2867 +}
  2868 +
  2869 +@keyframes zoomOutRight {
  2870 + 40% {
  2871 + opacity: 1;
  2872 + -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
  2873 + transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
  2874 + }
  2875 +
  2876 + 100% {
  2877 + opacity: 0;
  2878 + -webkit-transform: scale(.1) translate3d(2000px, 0, 0);
  2879 + transform: scale(.1) translate3d(2000px, 0, 0);
  2880 + -webkit-transform-origin: right center;
  2881 + transform-origin: right center;
  2882 + }
  2883 +}
  2884 +
  2885 +.zoomOutRight {
  2886 + -webkit-animation-name: zoomOutRight;
  2887 + animation-name: zoomOutRight;
  2888 +}
  2889 +
  2890 +@-webkit-keyframes zoomOutUp {
  2891 + 40% {
  2892 + opacity: 1;
  2893 + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
  2894 + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
  2895 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2896 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2897 + }
  2898 +
  2899 + 100% {
  2900 + opacity: 0;
  2901 + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
  2902 + transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
  2903 + -webkit-transform-origin: center bottom;
  2904 + transform-origin: center bottom;
  2905 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2906 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2907 + }
  2908 +}
  2909 +
  2910 +@keyframes zoomOutUp {
  2911 + 40% {
  2912 + opacity: 1;
  2913 + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
  2914 + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
  2915 + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2916 + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  2917 + }
  2918 +
  2919 + 100% {
  2920 + opacity: 0;
  2921 + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
  2922 + transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
  2923 + -webkit-transform-origin: center bottom;
  2924 + transform-origin: center bottom;
  2925 + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2926 + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  2927 + }
  2928 +}
  2929 +
  2930 +.zoomOutUp {
  2931 + -webkit-animation-name: zoomOutUp;
  2932 + animation-name: zoomOutUp;
  2933 +}
  2934 +
  2935 +@-webkit-keyframes slideInDown {
  2936 + 0% {
  2937 + -webkit-transform: translate3d(0, -100%, 0);
  2938 + transform: translate3d(0, -100%, 0);
  2939 + visibility: visible;
  2940 + }
  2941 +
  2942 + 100% {
  2943 + -webkit-transform: translate3d(0, 0, 0);
  2944 + transform: translate3d(0, 0, 0);
  2945 + }
  2946 +}
  2947 +
  2948 +@keyframes slideInDown {
  2949 + 0% {
  2950 + -webkit-transform: translate3d(0, -100%, 0);
  2951 + transform: translate3d(0, -100%, 0);
  2952 + visibility: visible;
  2953 + }
  2954 +
  2955 + 100% {
  2956 + -webkit-transform: translate3d(0, 0, 0);
  2957 + transform: translate3d(0, 0, 0);
  2958 + }
  2959 +}
  2960 +
  2961 +.slideInDown {
  2962 + -webkit-animation-name: slideInDown;
  2963 + animation-name: slideInDown;
  2964 +}
  2965 +
  2966 +@-webkit-keyframes slideInLeft {
  2967 + 0% {
  2968 + -webkit-transform: translate3d(-100%, 0, 0);
  2969 + transform: translate3d(-100%, 0, 0);
  2970 + visibility: visible;
  2971 + }
  2972 +
  2973 + 100% {
  2974 + -webkit-transform: translate3d(0, 0, 0);
  2975 + transform: translate3d(0, 0, 0);
  2976 + }
  2977 +}
  2978 +
  2979 +@keyframes slideInLeft {
  2980 + 0% {
  2981 + -webkit-transform: translate3d(-100%, 0, 0);
  2982 + transform: translate3d(-100%, 0, 0);
  2983 + visibility: visible;
  2984 + }
  2985 +
  2986 + 100% {
  2987 + -webkit-transform: translate3d(0, 0, 0);
  2988 + transform: translate3d(0, 0, 0);
  2989 + }
  2990 +}
  2991 +
  2992 +.slideInLeft {
  2993 + -webkit-animation-name: slideInLeft;
  2994 + animation-name: slideInLeft;
  2995 +}
  2996 +
  2997 +@-webkit-keyframes slideInRight {
  2998 + 0% {
  2999 + -webkit-transform: translate3d(100%, 0, 0);
  3000 + transform: translate3d(100%, 0, 0);
  3001 + visibility: visible;
  3002 + }
  3003 +
  3004 + 100% {
  3005 + -webkit-transform: translate3d(0, 0, 0);
  3006 + transform: translate3d(0, 0, 0);
  3007 + }
  3008 +}
  3009 +
  3010 +@keyframes slideInRight {
  3011 + 0% {
  3012 + -webkit-transform: translate3d(100%, 0, 0);
  3013 + transform: translate3d(100%, 0, 0);
  3014 + visibility: visible;
  3015 + }
  3016 +
  3017 + 100% {
  3018 + -webkit-transform: translate3d(0, 0, 0);
  3019 + transform: translate3d(0, 0, 0);
  3020 + }
  3021 +}
  3022 +
  3023 +.slideInRight {
  3024 + -webkit-animation-name: slideInRight;
  3025 + animation-name: slideInRight;
  3026 +}
  3027 +
  3028 +@-webkit-keyframes slideInUp {
  3029 + 0% {
  3030 + -webkit-transform: translate3d(0, 100%, 0);
  3031 + transform: translate3d(0, 100%, 0);
  3032 + visibility: visible;
  3033 + }
  3034 +
  3035 + 100% {
  3036 + -webkit-transform: translate3d(0, 0, 0);
  3037 + transform: translate3d(0, 0, 0);
  3038 + }
  3039 +}
  3040 +
  3041 +@keyframes slideInUp {
  3042 + 0% {
  3043 + -webkit-transform: translate3d(0, 100%, 0);
  3044 + transform: translate3d(0, 100%, 0);
  3045 + visibility: visible;
  3046 + }
  3047 +
  3048 + 100% {
  3049 + -webkit-transform: translate3d(0, 0, 0);
  3050 + transform: translate3d(0, 0, 0);
  3051 + }
  3052 +}
  3053 +
  3054 +.slideInUp {
  3055 + -webkit-animation-name: slideInUp;
  3056 + animation-name: slideInUp;
  3057 +}
  3058 +
  3059 +@-webkit-keyframes slideOutDown {
  3060 + 0% {
  3061 + -webkit-transform: translate3d(0, 0, 0);
  3062 + transform: translate3d(0, 0, 0);
  3063 + }
  3064 +
  3065 + 100% {
  3066 + visibility: hidden;
  3067 + -webkit-transform: translate3d(0, 100%, 0);
  3068 + transform: translate3d(0, 100%, 0);
  3069 + }
  3070 +}
  3071 +
  3072 +@keyframes slideOutDown {
  3073 + 0% {
  3074 + -webkit-transform: translate3d(0, 0, 0);
  3075 + transform: translate3d(0, 0, 0);
  3076 + }
  3077 +
  3078 + 100% {
  3079 + visibility: hidden;
  3080 + -webkit-transform: translate3d(0, 100%, 0);
  3081 + transform: translate3d(0, 100%, 0);
  3082 + }
  3083 +}
  3084 +
  3085 +.slideOutDown {
  3086 + -webkit-animation-name: slideOutDown;
  3087 + animation-name: slideOutDown;
  3088 +}
  3089 +
  3090 +@-webkit-keyframes slideOutLeft {
  3091 + 0% {
  3092 + -webkit-transform: translate3d(0, 0, 0);
  3093 + transform: translate3d(0, 0, 0);
  3094 + }
  3095 +
  3096 + 100% {
  3097 + visibility: hidden;
  3098 + -webkit-transform: translate3d(-100%, 0, 0);
  3099 + transform: translate3d(-100%, 0, 0);
  3100 + }
  3101 +}
  3102 +
  3103 +@keyframes slideOutLeft {
  3104 + 0% {
  3105 + -webkit-transform: translate3d(0, 0, 0);
  3106 + transform: translate3d(0, 0, 0);
  3107 + }
  3108 +
  3109 + 100% {
  3110 + visibility: hidden;
  3111 + -webkit-transform: translate3d(-100%, 0, 0);
  3112 + transform: translate3d(-100%, 0, 0);
  3113 + }
  3114 +}
  3115 +
  3116 +.slideOutLeft {
  3117 + -webkit-animation-name: slideOutLeft;
  3118 + animation-name: slideOutLeft;
  3119 +}
  3120 +
  3121 +@-webkit-keyframes slideOutRight {
  3122 + 0% {
  3123 + -webkit-transform: translate3d(0, 0, 0);
  3124 + transform: translate3d(0, 0, 0);
  3125 + }
  3126 +
  3127 + 100% {
  3128 + visibility: hidden;
  3129 + -webkit-transform: translate3d(100%, 0, 0);
  3130 + transform: translate3d(100%, 0, 0);
  3131 + }
  3132 +}
  3133 +
  3134 +@keyframes slideOutRight {
  3135 + 0% {
  3136 + -webkit-transform: translate3d(0, 0, 0);
  3137 + transform: translate3d(0, 0, 0);
  3138 + }
  3139 +
  3140 + 100% {
  3141 + visibility: hidden;
  3142 + -webkit-transform: translate3d(100%, 0, 0);
  3143 + transform: translate3d(100%, 0, 0);
  3144 + }
  3145 +}
  3146 +
  3147 +.slideOutRight {
  3148 + -webkit-animation-name: slideOutRight;
  3149 + animation-name: slideOutRight;
  3150 +}
  3151 +
  3152 +@-webkit-keyframes slideOutUp {
  3153 + 0% {
  3154 + -webkit-transform: translate3d(0, 0, 0);
  3155 + transform: translate3d(0, 0, 0);
  3156 + }
  3157 +
  3158 + 100% {
  3159 + visibility: hidden;
  3160 + -webkit-transform: translate3d(0, -100%, 0);
  3161 + transform: translate3d(0, -100%, 0);
  3162 + }
  3163 +}
  3164 +
  3165 +@keyframes slideOutUp {
  3166 + 0% {
  3167 + -webkit-transform: translate3d(0, 0, 0);
  3168 + transform: translate3d(0, 0, 0);
  3169 + }
  3170 +
  3171 + 100% {
  3172 + visibility: hidden;
  3173 + -webkit-transform: translate3d(0, -100%, 0);
  3174 + transform: translate3d(0, -100%, 0);
  3175 + }
  3176 +}
  3177 +
  3178 +.slideOutUp {
  3179 + -webkit-animation-name: slideOutUp;
  3180 + animation-name: slideOutUp;
  3181 +}
0 3182 \ No newline at end of file
... ...
public/jquery.noty.packaged.min.js 0 → 100644
... ... @@ -0,0 +1 @@
  1 +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):b(a.jQuery)}(this,function(a){"function"!=typeof Object.create&&(Object.create=function(a){function b(){}return b.prototype=a,new b});var b={init:function(b){return this.options=a.extend({},a.noty.defaults,b),this.options.layout=this.options.custom?a.noty.layouts.inline:a.noty.layouts[this.options.layout],a.noty.themes[this.options.theme]?this.options.theme=a.noty.themes[this.options.theme]:b.themeClassName=this.options.theme,delete b.layout,delete b.theme,this.options=a.extend({},this.options,this.options.layout.options),this.options.id="noty_"+(new Date).getTime()*Math.floor(1e6*Math.random()),this.options=a.extend({},this.options,b),this._build(),this},_build:function(){var b=a('<div class="noty_bar noty_type_'+this.options.type+'"></div>').attr("id",this.options.id);if(b.append(this.options.template).find(".noty_text").html(this.options.text),this.$bar=null!==this.options.layout.parent.object?a(this.options.layout.parent.object).css(this.options.layout.parent.css).append(b):b,this.options.themeClassName&&this.$bar.addClass(this.options.themeClassName).addClass("noty_container_type_"+this.options.type),this.options.buttons){this.options.closeWith=[],this.options.timeout=!1;var c=a("<div/>").addClass("noty_buttons");null!==this.options.layout.parent.object?this.$bar.find(".noty_bar").append(c):this.$bar.append(c);var d=this;a.each(this.options.buttons,function(b,c){var e=a("<button/>").addClass(c.addClass?c.addClass:"gray").html(c.text).attr("id",c.id?c.id:"button-"+b).appendTo(d.$bar.find(".noty_buttons")).on("click",function(b){a.isFunction(c.onClick)&&c.onClick.call(e,d,b)})})}this.$message=this.$bar.find(".noty_message"),this.$closeButton=this.$bar.find(".noty_close"),this.$buttons=this.$bar.find(".noty_buttons"),a.noty.store[this.options.id]=this},show:function(){var b=this;return b.options.custom?b.options.custom.find(b.options.layout.container.selector).append(b.$bar):a(b.options.layout.container.selector).append(b.$bar),b.options.theme&&b.options.theme.style&&b.options.theme.style.apply(b),"function"===a.type(b.options.layout.css)?this.options.layout.css.apply(b.$bar):b.$bar.css(this.options.layout.css||{}),b.$bar.addClass(b.options.layout.addClass),b.options.layout.container.style.apply(a(b.options.layout.container.selector)),b.showing=!0,b.options.theme&&b.options.theme.style&&b.options.theme.callback.onShow.apply(this),a.inArray("click",b.options.closeWith)>-1&&b.$bar.css("cursor","pointer").one("click",function(a){b.stopPropagation(a),b.options.callback.onCloseClick&&b.options.callback.onCloseClick.apply(b),b.close()}),a.inArray("hover",b.options.closeWith)>-1&&b.$bar.one("mouseenter",function(){b.close()}),a.inArray("button",b.options.closeWith)>-1&&b.$closeButton.one("click",function(a){b.stopPropagation(a),b.close()}),-1==a.inArray("button",b.options.closeWith)&&b.$closeButton.remove(),b.options.callback.onShow&&b.options.callback.onShow.apply(b),"string"==typeof b.options.animation.open?(b.$bar.css("height",b.$bar.innerHeight()),b.$bar.show().addClass(b.options.animation.open).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){b.options.callback.afterShow&&b.options.callback.afterShow.apply(b),b.showing=!1,b.shown=!0})):b.$bar.animate(b.options.animation.open,b.options.animation.speed,b.options.animation.easing,function(){b.options.callback.afterShow&&b.options.callback.afterShow.apply(b),b.showing=!1,b.shown=!0}),b.options.timeout&&b.$bar.delay(b.options.timeout).promise().done(function(){b.close()}),this},close:function(){if(!(this.closed||this.$bar&&this.$bar.hasClass("i-am-closing-now"))){var b=this;if(this.showing)return b.$bar.queue(function(){b.close.apply(b)}),void 0;if(!this.shown&&!this.showing){var c=[];return a.each(a.noty.queue,function(a,d){d.options.id!=b.options.id&&c.push(d)}),a.noty.queue=c,void 0}b.$bar.addClass("i-am-closing-now"),b.options.callback.onClose&&b.options.callback.onClose.apply(b),"string"==typeof b.options.animation.close?b.$bar.addClass(b.options.animation.close).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){b.options.callback.afterClose&&b.options.callback.afterClose.apply(b),b.closeCleanUp()}):b.$bar.clearQueue().stop().animate(b.options.animation.close,b.options.animation.speed,b.options.animation.easing,function(){b.options.callback.afterClose&&b.options.callback.afterClose.apply(b)}).promise().done(function(){b.closeCleanUp()})}},closeCleanUp:function(){var b=this;b.options.modal&&(a.notyRenderer.setModalCount(-1),0==a.notyRenderer.getModalCount()&&a(".noty_modal").fadeOut("fast",function(){a(this).remove()})),a.notyRenderer.setLayoutCountFor(b,-1),0==a.notyRenderer.getLayoutCountFor(b)&&a(b.options.layout.container.selector).remove(),"undefined"!=typeof b.$bar&&null!==b.$bar&&("string"==typeof b.options.animation.close?(b.$bar.css("transition","all 100ms ease").css("border",0).css("margin",0).height(0),b.$bar.one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(){b.$bar.remove(),b.$bar=null,b.closed=!0,b.options.theme.callback&&b.options.theme.callback.onClose&&b.options.theme.callback.onClose.apply(b)})):(b.$bar.remove(),b.$bar=null,b.closed=!0)),delete a.noty.store[b.options.id],b.options.theme.callback&&b.options.theme.callback.onClose&&b.options.theme.callback.onClose.apply(b),b.options.dismissQueue||(a.noty.ontap=!0,a.notyRenderer.render()),b.options.maxVisible>0&&b.options.dismissQueue&&a.notyRenderer.render()},setText:function(a){return this.closed||(this.options.text=a,this.$bar.find(".noty_text").html(a)),this},setType:function(a){return this.closed||(this.options.type=a,this.options.theme.style.apply(this),this.options.theme.callback.onShow.apply(this)),this},setTimeout:function(a){if(!this.closed){var b=this;this.options.timeout=a,b.$bar.delay(b.options.timeout).promise().done(function(){b.close()})}return this},stopPropagation:function(a){a=a||window.event,"undefined"!=typeof a.stopPropagation?a.stopPropagation():a.cancelBubble=!0},closed:!1,showing:!1,shown:!1};a.notyRenderer={},a.notyRenderer.init=function(c){var d=Object.create(b).init(c);return d.options.killer&&a.noty.closeAll(),d.options.force?a.noty.queue.unshift(d):a.noty.queue.push(d),a.notyRenderer.render(),"object"==a.noty.returns?d:d.options.id},a.notyRenderer.render=function(){var b=a.noty.queue[0];"object"===a.type(b)?b.options.dismissQueue?b.options.maxVisible>0?a(b.options.layout.container.selector+" li").length<b.options.maxVisible&&a.notyRenderer.show(a.noty.queue.shift()):a.notyRenderer.show(a.noty.queue.shift()):a.noty.ontap&&(a.notyRenderer.show(a.noty.queue.shift()),a.noty.ontap=!1):a.noty.ontap=!0},a.notyRenderer.show=function(b){b.options.modal&&(a.notyRenderer.createModalFor(b),a.notyRenderer.setModalCount(1)),b.options.custom?0==b.options.custom.find(b.options.layout.container.selector).length?b.options.custom.append(a(b.options.layout.container.object).addClass("i-am-new")):b.options.custom.find(b.options.layout.container.selector).removeClass("i-am-new"):0==a(b.options.layout.container.selector).length?a("body").append(a(b.options.layout.container.object).addClass("i-am-new")):a(b.options.layout.container.selector).removeClass("i-am-new"),a.notyRenderer.setLayoutCountFor(b,1),b.show()},a.notyRenderer.createModalFor=function(b){if(0==a(".noty_modal").length){var c=a("<div/>").addClass("noty_modal").addClass(b.options.theme).data("noty_modal_count",0);b.options.theme.modal&&b.options.theme.modal.css&&c.css(b.options.theme.modal.css),c.prependTo(a("body")).fadeIn("fast"),a.inArray("backdrop",b.options.closeWith)>-1&&c.on("click",function(){a.noty.closeAll()})}},a.notyRenderer.getLayoutCountFor=function(b){return a(b.options.layout.container.selector).data("noty_layout_count")||0},a.notyRenderer.setLayoutCountFor=function(b,c){return a(b.options.layout.container.selector).data("noty_layout_count",a.notyRenderer.getLayoutCountFor(b)+c)},a.notyRenderer.getModalCount=function(){return a(".noty_modal").data("noty_modal_count")||0},a.notyRenderer.setModalCount=function(b){return a(".noty_modal").data("noty_modal_count",a.notyRenderer.getModalCount()+b)},a.fn.noty=function(b){return b.custom=a(this),a.notyRenderer.init(b)},a.noty={},a.noty.queue=[],a.noty.ontap=!0,a.noty.layouts={},a.noty.themes={},a.noty.returns="object",a.noty.store={},a.noty.get=function(b){return a.noty.store.hasOwnProperty(b)?a.noty.store[b]:!1},a.noty.close=function(b){return a.noty.get(b)?a.noty.get(b).close():!1},a.noty.setText=function(b,c){return a.noty.get(b)?a.noty.get(b).setText(c):!1},a.noty.setType=function(b,c){return a.noty.get(b)?a.noty.get(b).setType(c):!1},a.noty.clearQueue=function(){a.noty.queue=[]},a.noty.closeAll=function(){a.noty.clearQueue(),a.each(a.noty.store,function(a,b){b.close()})};var c=window.alert;a.noty.consumeAlert=function(b){window.alert=function(c){b?b.text=c:b={text:c},a.notyRenderer.init(b)}},a.noty.stopConsumeAlert=function(){window.alert=c},a.noty.defaults={layout:"top",theme:"defaultTheme",type:"alert",text:"",dismissQueue:!0,template:'<div class="noty_message"><span class="noty_text"></span><div class="noty_close"></div></div>',animation:{open:{height:"toggle"},close:{height:"toggle"},easing:"swing",speed:500},timeout:!1,force:!1,modal:!1,maxVisible:5,killer:!1,closeWith:["click"],callback:{onShow:function(){},afterShow:function(){},onClose:function(){},afterClose:function(){},onCloseClick:function(){}},buttons:!1},a(window).on("resize",function(){a.each(a.noty.layouts,function(b,c){c.container.style.apply(a(c.container.selector))})}),window.noty=function(a){return jQuery.notyRenderer.init(a)},a.noty.layouts.bottom={name:"bottom",options:{},container:{object:'<ul id="noty_bottom_layout_container" />',selector:"ul#noty_bottom_layout_container",style:function(){a(this).css({bottom:0,left:"5%",position:"fixed",width:"90%",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:9999999})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none"},addClass:""},a.noty.layouts.bottomCenter={name:"bottomCenter",options:{},container:{object:'<ul id="noty_bottomCenter_layout_container" />',selector:"ul#noty_bottomCenter_layout_container",style:function(){a(this).css({bottom:20,left:0,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),a(this).css({left:(a(window).width()-a(this).outerWidth(!1))/2+"px"})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""},a.noty.layouts.bottomLeft={name:"bottomLeft",options:{},container:{object:'<ul id="noty_bottomLeft_layout_container" />',selector:"ul#noty_bottomLeft_layout_container",style:function(){a(this).css({bottom:20,left:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),window.innerWidth<600&&a(this).css({left:5})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""},a.noty.layouts.bottomRight={name:"bottomRight",options:{},container:{object:'<ul id="noty_bottomRight_layout_container" />',selector:"ul#noty_bottomRight_layout_container",style:function(){a(this).css({bottom:20,right:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),window.innerWidth<600&&a(this).css({right:5})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""},a.noty.layouts.center={name:"center",options:{},container:{object:'<ul id="noty_center_layout_container" />',selector:"ul#noty_center_layout_container",style:function(){a(this).css({position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7});var b=a(this).clone().css({visibility:"hidden",display:"block",position:"absolute",top:0,left:0}).attr("id","dupe");a("body").append(b),b.find(".i-am-closing-now").remove(),b.find("li").css("display","block");var c=b.height();b.remove(),a(this).hasClass("i-am-new")?a(this).css({left:(a(window).width()-a(this).outerWidth(!1))/2+"px",top:(a(window).height()-c)/2+"px"}):a(this).animate({left:(a(window).width()-a(this).outerWidth(!1))/2+"px",top:(a(window).height()-c)/2+"px"},500)}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""},a.noty.layouts.centerLeft={name:"centerLeft",options:{},container:{object:'<ul id="noty_centerLeft_layout_container" />',selector:"ul#noty_centerLeft_layout_container",style:function(){a(this).css({left:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7});var b=a(this).clone().css({visibility:"hidden",display:"block",position:"absolute",top:0,left:0}).attr("id","dupe");a("body").append(b),b.find(".i-am-closing-now").remove(),b.find("li").css("display","block");var c=b.height();b.remove(),a(this).hasClass("i-am-new")?a(this).css({top:(a(window).height()-c)/2+"px"}):a(this).animate({top:(a(window).height()-c)/2+"px"},500),window.innerWidth<600&&a(this).css({left:5})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""},a.noty.layouts.centerRight={name:"centerRight",options:{},container:{object:'<ul id="noty_centerRight_layout_container" />',selector:"ul#noty_centerRight_layout_container",style:function(){a(this).css({right:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7});var b=a(this).clone().css({visibility:"hidden",display:"block",position:"absolute",top:0,left:0}).attr("id","dupe");a("body").append(b),b.find(".i-am-closing-now").remove(),b.find("li").css("display","block");var c=b.height();b.remove(),a(this).hasClass("i-am-new")?a(this).css({top:(a(window).height()-c)/2+"px"}):a(this).animate({top:(a(window).height()-c)/2+"px"},500),window.innerWidth<600&&a(this).css({right:5})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""},a.noty.layouts.inline={name:"inline",options:{},container:{object:'<ul class="noty_inline_layout_container" />',selector:"ul.noty_inline_layout_container",style:function(){a(this).css({width:"100%",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:9999999})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none"},addClass:""},a.noty.layouts.top={name:"top",options:{},container:{object:'<ul id="noty_top_layout_container" />',selector:"ul#noty_top_layout_container",style:function(){a(this).css({top:0,left:"5%",position:"fixed",width:"90%",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:9999999})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none"},addClass:""},a.noty.layouts.topCenter={name:"topCenter",options:{},container:{object:'<ul id="noty_topCenter_layout_container" />',selector:"ul#noty_topCenter_layout_container",style:function(){a(this).css({top:20,left:0,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),a(this).css({left:(a(window).width()-a(this).outerWidth(!1))/2+"px"})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""},a.noty.layouts.topLeft={name:"topLeft",options:{},container:{object:'<ul id="noty_topLeft_layout_container" />',selector:"ul#noty_topLeft_layout_container",style:function(){a(this).css({top:20,left:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),window.innerWidth<600&&a(this).css({left:5})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""},a.noty.layouts.topRight={name:"topRight",options:{},container:{object:'<ul id="noty_topRight_layout_container" />',selector:"ul#noty_topRight_layout_container",style:function(){a(this).css({top:20,right:20,position:"fixed",width:"310px",height:"auto",margin:0,padding:0,listStyleType:"none",zIndex:1e7}),window.innerWidth<600&&a(this).css({right:5})}},parent:{object:"<li />",selector:"li",css:{}},css:{display:"none",width:"310px"},addClass:""},a.noty.themes.bootstrapTheme={name:"bootstrapTheme",modal:{css:{position:"fixed",width:"100%",height:"100%",backgroundColor:"#000",zIndex:1e4,opacity:.6,display:"none",left:0,top:0}},style:function(){var b=this.options.layout.container.selector;switch(a(b).addClass("list-group"),this.$closeButton.append('<span aria-hidden="true">&times;</span><span class="sr-only">Close</span>'),this.$closeButton.addClass("close"),this.$bar.addClass("list-group-item").css("padding","0px"),this.options.type){case"alert":case"notification":this.$bar.addClass("list-group-item-info");break;case"warning":this.$bar.addClass("list-group-item-warning");break;case"error":this.$bar.addClass("list-group-item-danger");break;case"information":this.$bar.addClass("list-group-item-info");break;case"success":this.$bar.addClass("list-group-item-success")}this.$message.css({fontSize:"13px",lineHeight:"16px",textAlign:"center",padding:"8px 10px 9px",width:"auto",position:"relative"})},callback:{onShow:function(){},onClose:function(){}}},a.noty.themes.defaultTheme={name:"defaultTheme",helpers:{borderFix:function(){if(this.options.dismissQueue){var b=this.options.layout.container.selector+" "+this.options.layout.parent.selector;switch(this.options.layout.name){case"top":a(b).css({borderRadius:"0px 0px 0px 0px"}),a(b).last().css({borderRadius:"0px 0px 5px 5px"});break;case"topCenter":case"topLeft":case"topRight":case"bottomCenter":case"bottomLeft":case"bottomRight":case"center":case"centerLeft":case"centerRight":case"inline":a(b).css({borderRadius:"0px 0px 0px 0px"}),a(b).first().css({"border-top-left-radius":"5px","border-top-right-radius":"5px"}),a(b).last().css({"border-bottom-left-radius":"5px","border-bottom-right-radius":"5px"});break;case"bottom":a(b).css({borderRadius:"0px 0px 0px 0px"}),a(b).first().css({borderRadius:"5px 5px 0px 0px"})}}}},modal:{css:{position:"fixed",width:"100%",height:"100%",backgroundColor:"#000",zIndex:1e4,opacity:.6,display:"none",left:0,top:0}},style:function(){switch(this.$bar.css({overflow:"hidden",background:"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAoCAQAAAClM0ndAAAAhklEQVR4AdXO0QrCMBBE0bttkk38/w8WRERpdyjzVOc+HxhIHqJGMQcFFkpYRQotLLSw0IJ5aBdovruMYDA/kT8plF9ZKLFQcgF18hDj1SbQOMlCA4kao0iiXmah7qBWPdxpohsgVZyj7e5I9KcID+EhiDI5gxBYKLBQYKHAQoGFAoEks/YEGHYKB7hFxf0AAAAASUVORK5CYII=') repeat-x scroll left top #fff"}),this.$message.css({fontSize:"13px",lineHeight:"16px",textAlign:"center",padding:"8px 10px 9px",width:"auto",position:"relative"}),this.$closeButton.css({position:"absolute",top:4,right:4,width:10,height:10,background:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAxUlEQVR4AR3MPUoDURSA0e++uSkkOxC3IAOWNtaCIDaChfgXBMEZbQRByxCwk+BasgQRZLSYoLgDQbARxry8nyumPcVRKDfd0Aa8AsgDv1zp6pYd5jWOwhvebRTbzNNEw5BSsIpsj/kurQBnmk7sIFcCF5yyZPDRG6trQhujXYosaFoc+2f1MJ89uc76IND6F9BvlXUdpb6xwD2+4q3me3bysiHvtLYrUJto7PD/ve7LNHxSg/woN2kSz4txasBdhyiz3ugPGetTjm3XRokAAAAASUVORK5CYII=)",display:"none",cursor:"pointer"}),this.$buttons.css({padding:5,textAlign:"right",borderTop:"1px solid #ccc",backgroundColor:"#fff"}),this.$buttons.find("button").css({marginLeft:5}),this.$buttons.find("button:first").css({marginLeft:0}),this.$bar.on({mouseenter:function(){a(this).find(".noty_close").stop().fadeTo("normal",1)},mouseleave:function(){a(this).find(".noty_close").stop().fadeTo("normal",0)}}),this.options.layout.name){case"top":this.$bar.css({borderRadius:"0px 0px 5px 5px",borderBottom:"2px solid #eee",borderLeft:"2px solid #eee",borderRight:"2px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"});break;case"topCenter":case"center":case"bottomCenter":case"inline":this.$bar.css({borderRadius:"5px",border:"1px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"}),this.$message.css({fontSize:"13px",textAlign:"center"});break;case"topLeft":case"topRight":case"bottomLeft":case"bottomRight":case"centerLeft":case"centerRight":this.$bar.css({borderRadius:"5px",border:"1px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"}),this.$message.css({fontSize:"13px",textAlign:"left"});break;case"bottom":this.$bar.css({borderRadius:"5px 5px 0px 0px",borderTop:"2px solid #eee",borderLeft:"2px solid #eee",borderRight:"2px solid #eee",boxShadow:"0 -2px 4px rgba(0, 0, 0, 0.1)"});break;default:this.$bar.css({border:"2px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"})}switch(this.options.type){case"alert":case"notification":this.$bar.css({backgroundColor:"#FFF",borderColor:"#CCC",color:"#444"});break;case"warning":this.$bar.css({backgroundColor:"#FFEAA8",borderColor:"#FFC237",color:"#826200"}),this.$buttons.css({borderTop:"1px solid #FFC237"});break;case"error":this.$bar.css({backgroundColor:"red",borderColor:"darkred",color:"#FFF"}),this.$message.css({fontWeight:"bold"}),this.$buttons.css({borderTop:"1px solid darkred"});break;case"information":this.$bar.css({backgroundColor:"#57B7E2",borderColor:"#0B90C4",color:"#FFF"}),this.$buttons.css({borderTop:"1px solid #0B90C4"});break;case"success":this.$bar.css({backgroundColor:"lightgreen",borderColor:"#50C24E",color:"darkgreen"}),this.$buttons.css({borderTop:"1px solid #50C24E"});break;default:this.$bar.css({backgroundColor:"#FFF",borderColor:"#CCC",color:"#444"})}},callback:{onShow:function(){a.noty.themes.defaultTheme.helpers.borderFix.apply(this)},onClose:function(){a.noty.themes.defaultTheme.helpers.borderFix.apply(this)}}},a.noty.themes.relax={name:"relax",helpers:{},modal:{css:{position:"fixed",width:"100%",height:"100%",backgroundColor:"#000",zIndex:1e4,opacity:.6,display:"none",left:0,top:0}},style:function(){switch(this.$bar.css({overflow:"hidden",margin:"4px 0",borderRadius:"2px"}),this.$message.css({fontSize:"14px",lineHeight:"16px",textAlign:"center",padding:"10px",width:"auto",position:"relative"}),this.$closeButton.css({position:"absolute",top:4,right:4,width:10,height:10,background:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAxUlEQVR4AR3MPUoDURSA0e++uSkkOxC3IAOWNtaCIDaChfgXBMEZbQRByxCwk+BasgQRZLSYoLgDQbARxry8nyumPcVRKDfd0Aa8AsgDv1zp6pYd5jWOwhvebRTbzNNEw5BSsIpsj/kurQBnmk7sIFcCF5yyZPDRG6trQhujXYosaFoc+2f1MJ89uc76IND6F9BvlXUdpb6xwD2+4q3me3bysiHvtLYrUJto7PD/ve7LNHxSg/woN2kSz4txasBdhyiz3ugPGetTjm3XRokAAAAASUVORK5CYII=)",display:"none",cursor:"pointer"}),this.$buttons.css({padding:5,textAlign:"right",borderTop:"1px solid #ccc",backgroundColor:"#fff"}),this.$buttons.find("button").css({marginLeft:5}),this.$buttons.find("button:first").css({marginLeft:0}),this.$bar.on({mouseenter:function(){a(this).find(".noty_close").stop().fadeTo("normal",1)},mouseleave:function(){a(this).find(".noty_close").stop().fadeTo("normal",0)}}),this.options.layout.name){case"top":this.$bar.css({borderBottom:"2px solid #eee",borderLeft:"2px solid #eee",borderRight:"2px solid #eee",borderTop:"2px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"});break;case"topCenter":case"center":case"bottomCenter":case"inline":this.$bar.css({border:"1px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"}),this.$message.css({fontSize:"13px",textAlign:"center"});break;case"topLeft":case"topRight":case"bottomLeft":case"bottomRight":case"centerLeft":case"centerRight":this.$bar.css({border:"1px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"}),this.$message.css({fontSize:"13px",textAlign:"left"});break;case"bottom":this.$bar.css({borderTop:"2px solid #eee",borderLeft:"2px solid #eee",borderRight:"2px solid #eee",borderBottom:"2px solid #eee",boxShadow:"0 -2px 4px rgba(0, 0, 0, 0.1)"});break;default:this.$bar.css({border:"2px solid #eee",boxShadow:"0 2px 4px rgba(0, 0, 0, 0.1)"})}switch(this.options.type){case"alert":case"notification":this.$bar.css({backgroundColor:"#FFF",borderColor:"#dedede",color:"#444"});break;case"warning":this.$bar.css({backgroundColor:"#FFEAA8",borderColor:"#FFC237",color:"#826200"}),this.$buttons.css({borderTop:"1px solid #FFC237"});break;case"error":this.$bar.css({backgroundColor:"#FF8181",borderColor:"#e25353",color:"#FFF"}),this.$message.css({fontWeight:"bold"}),this.$buttons.css({borderTop:"1px solid darkred"});break;case"information":this.$bar.css({backgroundColor:"#78C5E7",borderColor:"#3badd6",color:"#FFF"}),this.$buttons.css({borderTop:"1px solid #0B90C4"});break;case"success":this.$bar.css({backgroundColor:"#BCF5BC",borderColor:"#7cdd77",color:"darkgreen"}),this.$buttons.css({borderTop:"1px solid #50C24E"});break;default:this.$bar.css({backgroundColor:"#FFF",borderColor:"#CCC",color:"#444"})}},callback:{onShow:function(){},onClose:function(){}}}});
0 2 \ No newline at end of file
... ...
public/main.js 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +var gamificationPlugin = {
  2 +
  3 + display_notification: function(html) {
  4 + var n = noty({
  5 + text: html,
  6 + type: 'success',
  7 + layout: 'center',
  8 + modal: 'true',
  9 + theme: 'relax',
  10 + animation: {
  11 + open : 'animated bounceInLeft',
  12 + close : 'animated bounceOutLeft',
  13 + easing: 'swing',
  14 + speed : 500
  15 + }
  16 + });
  17 + }
  18 +}
... ...
public/style.css 0 → 100644
... ... @@ -0,0 +1,24 @@
  1 +.gamification-notification .badge .image {
  2 + width: 110px;
  3 + height: 80px;
  4 + background: gray;
  5 + margin-left: auto;
  6 + margin-right: auto;
  7 +}
  8 +
  9 +.gamification-notification .badge {
  10 + margin-bottom: 7px;
  11 +}
  12 +
  13 +.gamification-notification .badge .description {
  14 + font-size: 14px;
  15 + font-weight: bold;
  16 +}
  17 +
  18 +.gamification-notification .badge .level {
  19 + font-size: 10px;
  20 +}
  21 +
  22 +.gamification-notification .all-badges {
  23 + font-size: 10px;
  24 +}
... ...
test/functional/gamification_plugin_profile_controller_test.rb
... ... @@ -3,18 +3,17 @@ require_relative &#39;../test_helper&#39;
3 3 class GamificationPluginProfileControllerTest < ActionController::TestCase
4 4  
5 5 def setup
6   - @profile = fast_create(Profile)
7 6 @person = create_user('person').person
8 7 @environment = Environment.default
9 8 login_as(@person.identifier)
10 9 end
11 10  
12   - attr_accessor :profile, :person, :environment
  11 + attr_accessor :person, :environment
13 12  
14 13 should 'display points in gamification info page' do
15 14 person.add_points(20, :category => :comment_author)
16 15 person.add_points(30, :category => :article_author)
17   - get :info, :profile => profile.identifier
  16 + get :info, :profile => person.identifier
18 17 assert_tag :div, :attributes => {:class => 'score article_author'}, :child => {:tag => 'span', :attributes => {:class => 'value'}, :content => '30'}
19 18 assert_tag :div, :attributes => {:class => 'score comment_author'}, :child => {:tag => 'span', :attributes => {:class => 'value'}, :content => '20'}
20 19 assert_tag :div, :attributes => {:class => 'score total'}, :child => {:tag => 'span', :attributes => {:class => 'value'}, :content => '50'}
... ... @@ -22,7 +21,7 @@ class GamificationPluginProfileControllerTest &lt; ActionController::TestCase
22 21  
23 22 should 'display level in gamification info page' do
24 23 person.update_attribute(:level, 12)
25   - get :info, :profile => profile.identifier
  24 + get :info, :profile => person.identifier
26 25 assert_tag :span, :attributes => {:class => 'level'}, :content => '12'
27 26 end
28 27  
... ... @@ -33,7 +32,7 @@ class GamificationPluginProfileControllerTest &lt; ActionController::TestCase
33 32  
34 33 person.add_badge(badge1.id)
35 34 person.add_badge(badge2.id)
36   - get :info, :profile => profile.identifier
  35 + get :info, :profile => person.identifier
37 36 assert_select '.badges .badge-list .badge', 2
38 37 end
39 38  
... ...
test/unit/badge_test.rb
... ... @@ -28,4 +28,13 @@ class BadgeTest &lt; ActiveSupport::TestCase
28 28 assert_equal [], person.reload.badges.compact
29 29 end
30 30  
  31 + should 'list pending badges from a person' do
  32 + badge1 = GamificationPlugin::Badge.create!(:owner => environment)
  33 + person.add_badge(badge1.id)
  34 + person.sash.notify_all_badges_from_user
  35 + badge2 = GamificationPlugin::Badge.create!(:owner => environment)
  36 + person.add_badge(badge2.id)
  37 + assert_equal [badge2], person.badges.notification_pending
  38 + end
  39 +
31 40 end
... ...
views/gamification/display_achievements.html.erb
... ... @@ -1,7 +0,0 @@
1   -<script>
2   -<% if current_person.present? %>
3   - <% current_person.badges.each do |badge| %>
4   - <%= "console.log(#{badge.name})" %>
5   - <% end %>
6   -<% end %>
7   -</script>
views/gamification/display_notifications.html.erb 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +<%= stylesheet_link_tag '/plugins/gamification/animate.css' %>
  2 +
  3 +<script>
  4 +<% badges.each do |badge| %>
  5 + <% html = render :file => 'gamification/notification_badge', :locals => {:badge => badge} %>
  6 + <%= "gamificationPlugin.display_notification('#{j html}');" %>
  7 +<% end %>
  8 +</script>
... ...
views/gamification/notification_badge.html.erb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +<div class="gamification-notification">
  2 + <h2 class="message"><%= _('You earn a new badge!') %></h2>
  3 + <div class="badge">
  4 + <div class="image <%= badge.name %>"></div>
  5 + <div class="description"><%= badge.description %></div>
  6 + <div class="level"><%= _('Level %s' % badge.level) %></div>
  7 + </div>
  8 + <div class="all-badges"><%= link_to _('My Badges'), {:controller => 'gamification_plugin_profile', :action => :info, :profile => current_person.identifier } %></div>
  9 +</div>
... ...