slash_admin 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +95 -0
  3. data/app/assets/config/relax_admin_manifest.js +2 -0
  4. data/app/assets/images/slash_admin/en.png +0 -0
  5. data/app/assets/images/slash_admin/favicon.png +0 -0
  6. data/app/assets/images/slash_admin/fr.png +0 -0
  7. data/app/assets/javascripts/slash_admin/application.js +344 -0
  8. data/app/assets/javascripts/slash_admin/custom.js +0 -0
  9. data/app/assets/stylesheets/slash_admin/alert.scss +29 -0
  10. data/app/assets/stylesheets/slash_admin/application.scss +1469 -0
  11. data/app/assets/stylesheets/slash_admin/colors.scss +17 -0
  12. data/app/assets/stylesheets/slash_admin/custom.scss +0 -0
  13. data/app/controllers/slash_admin/application_controller.rb +17 -0
  14. data/app/controllers/slash_admin/base_controller.rb +45 -0
  15. data/app/controllers/slash_admin/batch_actions_controller.rb +17 -0
  16. data/app/controllers/slash_admin/dashboard_controller.rb +11 -0
  17. data/app/controllers/slash_admin/models_controller.rb +325 -0
  18. data/app/controllers/slash_admin/security/sessions_controller.rb +29 -0
  19. data/app/controllers/slash_admin/selectize_controller.rb +49 -0
  20. data/app/helpers/slash_admin/application_helper.rb +212 -0
  21. data/app/helpers/slash_admin/menu_helper.rb +14 -0
  22. data/app/helpers/slash_admin/widgets_helper.rb +7 -0
  23. data/app/jobs/slash_admin/application_job.rb +4 -0
  24. data/app/mailers/slash_admin/application_mailer.rb +6 -0
  25. data/app/models/slash_admin/admin.rb +46 -0
  26. data/app/models/slash_admin/admin_ability.rb +11 -0
  27. data/app/models/slash_admin/application_record.rb +5 -0
  28. data/app/views/layouts/slash_admin/admin_user.html.erb +16 -0
  29. data/app/views/layouts/slash_admin/application.html.erb +40 -0
  30. data/app/views/slash_admin/base/_data_belongs_to.html.erb +37 -0
  31. data/app/views/slash_admin/base/_data_list.html.erb +276 -0
  32. data/app/views/slash_admin/base/_data_nestable.html.erb +33 -0
  33. data/app/views/slash_admin/base/_data_new.html.erb +16 -0
  34. data/app/views/slash_admin/base/_data_show.html.erb +72 -0
  35. data/app/views/slash_admin/base/_filters.html.erb +60 -0
  36. data/app/views/slash_admin/base/_translatable_fields.html.erb +23 -0
  37. data/app/views/slash_admin/base/edit.html.erb +26 -0
  38. data/app/views/slash_admin/base/index.html.erb +47 -0
  39. data/app/views/slash_admin/base/index.xls.erb +27 -0
  40. data/app/views/slash_admin/base/nestable.html.erb +28 -0
  41. data/app/views/slash_admin/base/new.html.erb +26 -0
  42. data/app/views/slash_admin/base/show.html.erb +22 -0
  43. data/app/views/slash_admin/custom_fields/_color.html.erb +2 -0
  44. data/app/views/slash_admin/custom_fields/_email.html.erb +2 -0
  45. data/app/views/slash_admin/custom_fields/_google_map.html.erb +72 -0
  46. data/app/views/slash_admin/custom_fields/_nested_belongs_to.html.erb +55 -0
  47. data/app/views/slash_admin/custom_fields/_password.html.erb +2 -0
  48. data/app/views/slash_admin/custom_fields/_select.html.erb +2 -0
  49. data/app/views/slash_admin/custom_fields/_tags.html.erb +2 -0
  50. data/app/views/slash_admin/custom_fields/_wysiwyg.html.erb +2 -0
  51. data/app/views/slash_admin/dashboard/home.html.erb +5 -0
  52. data/app/views/slash_admin/dashboard/widgets/_statistic_chart.html.erb +0 -0
  53. data/app/views/slash_admin/dashboard/widgets/_statistic_progress_tile.html.erb +29 -0
  54. data/app/views/slash_admin/fields/_belongs_to.html.erb +9 -0
  55. data/app/views/slash_admin/fields/_boolean.html.erb +2 -0
  56. data/app/views/slash_admin/fields/_carrierwave.html.erb +15 -0
  57. data/app/views/slash_admin/fields/_date.html.erb +2 -0
  58. data/app/views/slash_admin/fields/_decimal.html.erb +2 -0
  59. data/app/views/slash_admin/fields/_form_group.html.erb +12 -0
  60. data/app/views/slash_admin/fields/_has_many.html.erb +12 -0
  61. data/app/views/slash_admin/fields/_has_many_row.html.erb +18 -0
  62. data/app/views/slash_admin/fields/_has_one.html.erb +24 -0
  63. data/app/views/slash_admin/fields/_integer.html.erb +2 -0
  64. data/app/views/slash_admin/fields/_json.html.erb +14 -0
  65. data/app/views/slash_admin/fields/_nested_has_many.html.erb +14 -0
  66. data/app/views/slash_admin/fields/_number.html.erb +2 -0
  67. data/app/views/slash_admin/fields/_string.html.erb +2 -0
  68. data/app/views/slash_admin/fields/_text.html.erb +2 -0
  69. data/app/views/slash_admin/security/sessions/new.html.erb +30 -0
  70. data/app/views/slash_admin/shared/_batch_actions.html.erb +21 -0
  71. data/app/views/slash_admin/shared/_better_paginate.html.erb +30 -0
  72. data/app/views/slash_admin/shared/_breadcrumb.html.erb +30 -0
  73. data/app/views/slash_admin/shared/_debug.html.erb +24 -0
  74. data/app/views/slash_admin/shared/_errors_data_new.html.erb +12 -0
  75. data/app/views/slash_admin/shared/_header.html.erb +38 -0
  76. data/app/views/slash_admin/shared/_menu.html.erb +57 -0
  77. data/app/views/slash_admin/shared/_new_form_buttons.html.erb +9 -0
  78. data/app/views/slash_admin/shared/_sub_header.html.erb +11 -0
  79. data/config/initializers/validators.rb +13 -0
  80. data/config/locales/slash_admin.en.yml +67 -0
  81. data/config/locales/slash_admin.fr.yml +72 -0
  82. data/config/routes.rb +16 -0
  83. data/db/migrate/20170512104248_create_slash_admin_admins.rb +19 -0
  84. data/lib/batch_translation.rb +19 -0
  85. data/lib/generators/slash_admin/controllers/controllers_generator.rb +16 -0
  86. data/lib/generators/slash_admin/controllers/templates/controllers.erb +9 -0
  87. data/lib/generators/slash_admin/install/install_generator.rb +13 -0
  88. data/lib/generators/slash_admin/install/templates/install.erb +14 -0
  89. data/lib/generators/slash_admin/override_admin/override_admin_generator.rb +13 -0
  90. data/lib/generators/slash_admin/override_admin/templates/admin.erb +46 -0
  91. data/lib/generators/slash_admin/override_session/override_session_generator.rb +13 -0
  92. data/lib/generators/slash_admin/override_session/templates/session.erb +27 -0
  93. data/lib/generators/slash_admin/permissions/permissions_generator.rb +13 -0
  94. data/lib/generators/slash_admin/permissions/templates/permissions.erb +11 -0
  95. data/lib/slash_admin.rb +29 -0
  96. data/lib/slash_admin/engine.rb +8 -0
  97. data/lib/slash_admin/version.rb +3 -0
  98. data/lib/tasks/slash_admin_tasks.rake +4 -0
  99. data/vendor/assets/javascripts/bootstrap-material-datetimepicker.js +1295 -0
  100. data/vendor/assets/javascripts/codemirror/codemirror.js +9657 -0
  101. data/vendor/assets/javascripts/codemirror/lint/json-lint.js +37 -0
  102. data/vendor/assets/javascripts/codemirror/lint/jsonlint.js +432 -0
  103. data/vendor/assets/javascripts/codemirror/lint/lint.js +252 -0
  104. data/vendor/assets/javascripts/codemirror/mode/javascript.js +865 -0
  105. data/vendor/assets/javascripts/jquery.nestable.js +910 -0
  106. data/vendor/assets/javascripts/jquery.tagsinput-revisited.min.js +5 -0
  107. data/vendor/assets/javascripts/toastr.js +6 -0
  108. data/vendor/assets/stylesheets/animate.css +1579 -0
  109. data/vendor/assets/stylesheets/bootstrap-material-datetimepicker.css +82 -0
  110. data/vendor/assets/stylesheets/codemirror/codemirror.css +346 -0
  111. data/vendor/assets/stylesheets/codemirror/lint/lint.css +73 -0
  112. data/vendor/assets/stylesheets/codemirror/theme/relax-seti.css +41 -0
  113. data/vendor/assets/stylesheets/jquery.nestable.css +121 -0
  114. data/vendor/assets/stylesheets/jquery.tagsinput-revisited.min.css +1 -0
  115. data/vendor/assets/stylesheets/sweetalert.css +935 -0
  116. data/vendor/assets/stylesheets/toastr.css +1 -0
  117. metadata +509 -0
@@ -0,0 +1,41 @@
1
+ /*
2
+ Name: relax-seti
3
+ Author: Nicolas Kovacs
4
+
5
+ Original seti color scheme by Jesse Weed (https://github.com/jesseweed/seti-syntax)
6
+ */
7
+
8
+ .cm-s-relax-seti.CodeMirror {
9
+ background-color: #26344b!important;
10
+ color: #CFD2D1 !important;
11
+ border: none;
12
+ }
13
+ .cm-s-relax-seti .CodeMirror-gutters {
14
+ color: #4d5d7c;
15
+ background-color: #1f2b3d;
16
+ border: none;
17
+ }
18
+ .cm-s-relax-seti .CodeMirror-cursor { border-left: solid thin #f8f8f0; }
19
+ .cm-s-relax-seti .CodeMirror-linenumber { color: #4d5d7c; }
20
+ .cm-s-relax-seti.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }
21
+ .cm-s-relax-seti .CodeMirror-line::selection, .cm-s-relax-seti .CodeMirror-line > span::selection, .cm-s-relax-seti .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }
22
+ .cm-s-relax-seti .CodeMirror-line::-moz-selection, .cm-s-relax-seti .CodeMirror-line > span::-moz-selection, .cm-s-relax-seti .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }
23
+ .cm-s-relax-seti span.cm-comment { color: #4d5d7c; }
24
+ .cm-s-relax-seti span.cm-string, .cm-s-relax-seti span.cm-string-2 { color: #18cdc4; }
25
+ .cm-s-relax-seti span.cm-number { color: #cd3f45; }
26
+ .cm-s-relax-seti span.cm-variable { color: #18cdc4; }
27
+ .cm-s-relax-seti span.cm-variable-2 { color: #a074c4; }
28
+ .cm-s-relax-seti span.cm-def { color: #18cdc4; }
29
+ .cm-s-relax-seti span.cm-keyword { color: #ff79c6; }
30
+ .cm-s-relax-seti span.cm-operator { color: #9fca56; }
31
+ .cm-s-relax-seti span.cm-keyword { color: #e6cd69; }
32
+ .cm-s-relax-seti span.cm-atom { color: #cd3f45; }
33
+ .cm-s-relax-seti span.cm-meta { color: #18cdc4; }
34
+ .cm-s-relax-seti span.cm-tag { color: #18cdc4; }
35
+ .cm-s-relax-seti span.cm-attribute { color: #9fca56; }
36
+ .cm-s-relax-seti span.cm-qualifier { color: #9fca56; }
37
+ .cm-s-relax-seti span.cm-property { color: #a074c4; }
38
+ .cm-s-relax-seti span.cm-variable-3, .cm-s-relax-seti span.cm-type { color: #9fca56; }
39
+ .cm-s-relax-seti span.cm-builtin { color: #9fca56; }
40
+ .cm-s-relax-seti .CodeMirror-activeline-background { background: #101213; }
41
+ .cm-s-relax-seti .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
@@ -0,0 +1,121 @@
1
+ .dd {
2
+ position: relative;
3
+ display: block;
4
+ margin: 0;
5
+ padding: 0;
6
+ max-width: 600px;
7
+ list-style: none;
8
+ font-size: 13px;
9
+ line-height: 20px;
10
+ }
11
+ .dd-list {
12
+ display: block;
13
+ position: relative;
14
+ margin: 0;
15
+ padding: 0;
16
+ list-style: none;
17
+ }
18
+ .dd-list .dd-list {
19
+ padding-left: 30px;
20
+ }
21
+ .dd-item,
22
+ .dd-empty,
23
+ .dd-placeholder {
24
+ display: block;
25
+ position: relative;
26
+ margin: 0;
27
+ padding: 0;
28
+ min-height: 20px;
29
+ font-size: 13px;
30
+ line-height: 20px;
31
+ }
32
+ .dd-handle {
33
+ display: block;
34
+ height: 30px;
35
+ margin: 5px 0;
36
+ padding: 5px 10px;
37
+ color: #333;
38
+ text-decoration: none;
39
+ font-weight: bold;
40
+ border: 1px solid #ccc;
41
+ background: #fafafa;
42
+ border-radius: 3px;
43
+ box-sizing: border-box;
44
+ }
45
+ .dd-handle:hover {
46
+ color: #2ea8e5;
47
+ background: #fff;
48
+ }
49
+ .dd-item > button {
50
+ position: relative;
51
+ cursor: pointer;
52
+ float: left;
53
+ width: 25px;
54
+ height: 20px;
55
+ margin: 5px 0;
56
+ padding: 0;
57
+ text-indent: 100%;
58
+ white-space: nowrap;
59
+ overflow: hidden;
60
+ border: 0;
61
+ background: transparent;
62
+ font-size: 12px;
63
+ line-height: 1;
64
+ text-align: center;
65
+ font-weight: bold;
66
+ }
67
+ .dd-item > button:before {
68
+ display: block;
69
+ position: absolute;
70
+ width: 100%;
71
+ text-align: center;
72
+ text-indent: 0;
73
+ }
74
+ .dd-item > button.dd-expand:before {
75
+ content: '+';
76
+ }
77
+ .dd-item > button.dd-collapse:before {
78
+ content: '-';
79
+ }
80
+ .dd-expand {
81
+ display: none;
82
+ }
83
+ .dd-collapsed .dd-list,
84
+ .dd-collapsed .dd-collapse {
85
+ display: none;
86
+ }
87
+ .dd-collapsed .dd-expand {
88
+ display: block;
89
+ }
90
+ .dd-empty,
91
+ .dd-placeholder {
92
+ margin: 5px 0;
93
+ padding: 0;
94
+ min-height: 30px;
95
+ background: #f2fbff;
96
+ border: 1px dashed #b6bcbf;
97
+ box-sizing: border-box;
98
+ -moz-box-sizing: border-box;
99
+ }
100
+ .dd-empty {
101
+ border: 1px dashed #bbb;
102
+ min-height: 100px;
103
+ background-color: #e5e5e5;
104
+ background-size: 60px 60px;
105
+ background-position: 0 0, 30px 30px;
106
+ }
107
+ .dd-dragel {
108
+ position: absolute;
109
+ pointer-events: none;
110
+ z-index: 9999;
111
+ }
112
+ .dd-dragel > .dd-item .dd-handle {
113
+ margin-top: 0;
114
+ }
115
+ .dd-dragel .dd-handle {
116
+ box-shadow: 2px 4px 6px 0 rgba(0,0,0,.1);
117
+ }
118
+
119
+ .dd-nochildren .dd-placeholder {
120
+ display: none;
121
+ }
@@ -0,0 +1 @@
1
+ .tagsinput,.tagsinput *{box-sizing:border-box}.tagsinput{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background:#fff;font-family:sans-serif;font-size:14px;line-height:20px;color:#556270;padding:5px 5px 0;border:1px solid #e6e6e6;border-radius:2px}.tagsinput.focus{border-color:#ccc}.tagsinput .tag{position:relative;background:#556270;display:block;max-width:100%;word-wrap:break-word;color:#fff;padding:5px 30px 5px 5px;border-radius:2px;margin:0 5px 5px 0}.tagsinput .tag a{position:absolute;display:block;width:30px;height:30px;top:0;right:0;text-decoration:none;text-align:center;color:#ff6b6b;line-height:30px}.tagsinput .tag a:after,.tagsinput .tag a:before{background:#ff6b6b;position:absolute;display:block;width:10px;height:2px;top:14px;left:10px;content:''}.tagsinput .tag a:before{-webkit-transform:rotateZ(45deg);transform:rotateZ(45deg)}.tagsinput .tag a:after{-webkit-transform:rotateZ(-45deg);transform:rotateZ(-45deg)}.tagsinput div{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tagsinput div input{background:0 0;display:block;width:100%;font-size:14px;line-height:20px;padding:5px;border:0;margin:0 5px 5px 0}.tagsinput div input.error{color:#ff6b6b}.tagsinput div input::-ms-clear{display:none}.tagsinput div input::-webkit-input-placeholder{color:#ccc;opacity:1}.tagsinput div input:-moz-placeholder{color:#ccc;opacity:1}.tagsinput div input::-moz-placeholder{color:#ccc;opacity:1}.tagsinput div input:-ms-input-placeholder{color:#ccc;opacity:1}
@@ -0,0 +1,935 @@
1
+ body.stop-scrolling {
2
+ height: 100%;
3
+ overflow: hidden; }
4
+
5
+ .sweet-overlay {
6
+ background-color: black;
7
+ /* IE8 */
8
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
9
+ /* IE8 */
10
+ background-color: rgba(0, 0, 0, 0.4);
11
+ position: fixed;
12
+ left: 0;
13
+ right: 0;
14
+ top: 0;
15
+ bottom: 0;
16
+ display: none;
17
+ z-index: 10000; }
18
+
19
+ .sweet-alert {
20
+ background-color: white;
21
+ font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
22
+ width: 478px;
23
+ padding: 17px;
24
+ border-radius: 5px;
25
+ text-align: center;
26
+ position: fixed;
27
+ left: 50%;
28
+ top: 50%;
29
+ margin-left: -256px;
30
+ margin-top: -200px;
31
+ overflow: hidden;
32
+ display: none;
33
+ z-index: 99999; }
34
+ @media all and (max-width: 540px) {
35
+ .sweet-alert {
36
+ width: auto;
37
+ margin-left: 0;
38
+ margin-right: 0;
39
+ left: 15px;
40
+ right: 15px; } }
41
+ .sweet-alert h2 {
42
+ color: #575757;
43
+ font-size: 30px;
44
+ text-align: center;
45
+ font-weight: 600;
46
+ text-transform: none;
47
+ position: relative;
48
+ margin: 25px 0;
49
+ padding: 0;
50
+ line-height: 40px;
51
+ display: block; }
52
+ .sweet-alert p {
53
+ color: #797979;
54
+ font-size: 16px;
55
+ text-align: center;
56
+ font-weight: 300;
57
+ position: relative;
58
+ text-align: inherit;
59
+ float: none;
60
+ margin: 0;
61
+ padding: 0;
62
+ line-height: normal; }
63
+ .sweet-alert fieldset {
64
+ border: none;
65
+ position: relative; }
66
+ .sweet-alert .sa-error-container {
67
+ background-color: #f1f1f1;
68
+ margin-left: -17px;
69
+ margin-right: -17px;
70
+ overflow: hidden;
71
+ padding: 0 10px;
72
+ max-height: 0;
73
+ webkit-transition: padding 0.15s, max-height 0.15s;
74
+ transition: padding 0.15s, max-height 0.15s; }
75
+ .sweet-alert .sa-error-container.show {
76
+ padding: 10px 0;
77
+ max-height: 100px;
78
+ webkit-transition: padding 0.2s, max-height 0.2s;
79
+ transition: padding 0.25s, max-height 0.25s; }
80
+ .sweet-alert .sa-error-container .icon {
81
+ display: inline-block;
82
+ width: 24px;
83
+ height: 24px;
84
+ border-radius: 50%;
85
+ background-color: #ea7d7d;
86
+ color: white;
87
+ line-height: 24px;
88
+ text-align: center;
89
+ margin-right: 3px; }
90
+ .sweet-alert .sa-error-container p {
91
+ display: inline-block; }
92
+ .sweet-alert .sa-input-error {
93
+ position: absolute;
94
+ top: 29px;
95
+ right: 26px;
96
+ width: 20px;
97
+ height: 20px;
98
+ opacity: 0;
99
+ -webkit-transform: scale(0.5);
100
+ transform: scale(0.5);
101
+ -webkit-transform-origin: 50% 50%;
102
+ transform-origin: 50% 50%;
103
+ -webkit-transition: all 0.1s;
104
+ transition: all 0.1s; }
105
+ .sweet-alert .sa-input-error::before, .sweet-alert .sa-input-error::after {
106
+ content: "";
107
+ width: 20px;
108
+ height: 6px;
109
+ background-color: #f06e57;
110
+ border-radius: 3px;
111
+ position: absolute;
112
+ top: 50%;
113
+ margin-top: -4px;
114
+ left: 50%;
115
+ margin-left: -9px; }
116
+ .sweet-alert .sa-input-error::before {
117
+ -webkit-transform: rotate(-45deg);
118
+ transform: rotate(-45deg); }
119
+ .sweet-alert .sa-input-error::after {
120
+ -webkit-transform: rotate(45deg);
121
+ transform: rotate(45deg); }
122
+ .sweet-alert .sa-input-error.show {
123
+ opacity: 1;
124
+ -webkit-transform: scale(1);
125
+ transform: scale(1); }
126
+ .sweet-alert input {
127
+ width: 100%;
128
+ box-sizing: border-box;
129
+ border-radius: 3px;
130
+ border: 1px solid #d7d7d7;
131
+ height: 43px;
132
+ margin-top: 10px;
133
+ margin-bottom: 17px;
134
+ font-size: 18px;
135
+ box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.06);
136
+ padding: 0 12px;
137
+ display: none;
138
+ -webkit-transition: all 0.3s;
139
+ transition: all 0.3s; }
140
+ .sweet-alert input:focus {
141
+ outline: none;
142
+ box-shadow: 0px 0px 3px #c4e6f5;
143
+ border: 1px solid #b4dbed; }
144
+ .sweet-alert input:focus::-moz-placeholder {
145
+ transition: opacity 0.3s 0.03s ease;
146
+ opacity: 0.5; }
147
+ .sweet-alert input:focus:-ms-input-placeholder {
148
+ transition: opacity 0.3s 0.03s ease;
149
+ opacity: 0.5; }
150
+ .sweet-alert input:focus::-webkit-input-placeholder {
151
+ transition: opacity 0.3s 0.03s ease;
152
+ opacity: 0.5; }
153
+ .sweet-alert input::-moz-placeholder {
154
+ color: #bdbdbd; }
155
+ .sweet-alert input::-ms-clear {
156
+ display: none; }
157
+ .sweet-alert input:-ms-input-placeholder {
158
+ color: #bdbdbd; }
159
+ .sweet-alert input::-webkit-input-placeholder {
160
+ color: #bdbdbd; }
161
+ .sweet-alert.show-input input {
162
+ display: block; }
163
+ .sweet-alert .sa-confirm-button-container {
164
+ display: inline-block;
165
+ position: relative; }
166
+ .sweet-alert .la-ball-fall {
167
+ position: absolute;
168
+ left: 50%;
169
+ top: 50%;
170
+ margin-left: -27px;
171
+ margin-top: 4px;
172
+ opacity: 0;
173
+ visibility: hidden; }
174
+ .sweet-alert button {
175
+ background-color: #8CD4F5;
176
+ color: white;
177
+ border: none;
178
+ box-shadow: none;
179
+ font-size: 17px;
180
+ font-weight: 500;
181
+ -webkit-border-radius: 4px;
182
+ border-radius: 5px;
183
+ padding: 10px 32px;
184
+ margin: 26px 5px 0 5px;
185
+ cursor: pointer; }
186
+ .sweet-alert button:focus {
187
+ outline: none;
188
+ box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); }
189
+ .sweet-alert button:hover {
190
+ background-color: #7ecff4; }
191
+ .sweet-alert button:active {
192
+ background-color: #5dc2f1; }
193
+ .sweet-alert button.cancel {
194
+ background-color: #C1C1C1; }
195
+ .sweet-alert button.cancel:hover {
196
+ background-color: #b9b9b9; }
197
+ .sweet-alert button.cancel:active {
198
+ background-color: #a8a8a8; }
199
+ .sweet-alert button.cancel:focus {
200
+ box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; }
201
+ .sweet-alert button[disabled] {
202
+ opacity: .6;
203
+ cursor: default; }
204
+ .sweet-alert button.confirm[disabled] {
205
+ color: transparent; }
206
+ .sweet-alert button.confirm[disabled] ~ .la-ball-fall {
207
+ opacity: 1;
208
+ visibility: visible;
209
+ transition-delay: 0s; }
210
+ .sweet-alert button::-moz-focus-inner {
211
+ border: 0; }
212
+ .sweet-alert[data-has-cancel-button=false] button {
213
+ box-shadow: none !important; }
214
+ .sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] {
215
+ padding-bottom: 40px; }
216
+ .sweet-alert .sa-icon {
217
+ width: 80px;
218
+ height: 80px;
219
+ border: 4px solid gray;
220
+ -webkit-border-radius: 40px;
221
+ border-radius: 40px;
222
+ border-radius: 50%;
223
+ margin: 20px auto;
224
+ padding: 0;
225
+ position: relative;
226
+ box-sizing: content-box; }
227
+ .sweet-alert .sa-icon.sa-error {
228
+ border-color: #F27474; }
229
+ .sweet-alert .sa-icon.sa-error .sa-x-mark {
230
+ position: relative;
231
+ display: block; }
232
+ .sweet-alert .sa-icon.sa-error .sa-line {
233
+ position: absolute;
234
+ height: 5px;
235
+ width: 47px;
236
+ background-color: #F27474;
237
+ display: block;
238
+ top: 37px;
239
+ border-radius: 2px; }
240
+ .sweet-alert .sa-icon.sa-error .sa-line.sa-left {
241
+ -webkit-transform: rotate(45deg);
242
+ transform: rotate(45deg);
243
+ left: 17px; }
244
+ .sweet-alert .sa-icon.sa-error .sa-line.sa-right {
245
+ -webkit-transform: rotate(-45deg);
246
+ transform: rotate(-45deg);
247
+ right: 16px; }
248
+ .sweet-alert .sa-icon.sa-warning {
249
+ border-color: #F8BB86; }
250
+ .sweet-alert .sa-icon.sa-warning .sa-body {
251
+ position: absolute;
252
+ width: 5px;
253
+ height: 47px;
254
+ left: 50%;
255
+ top: 10px;
256
+ -webkit-border-radius: 2px;
257
+ border-radius: 2px;
258
+ margin-left: -2px;
259
+ background-color: #F8BB86; }
260
+ .sweet-alert .sa-icon.sa-warning .sa-dot {
261
+ position: absolute;
262
+ width: 7px;
263
+ height: 7px;
264
+ -webkit-border-radius: 50%;
265
+ border-radius: 50%;
266
+ margin-left: -3px;
267
+ left: 50%;
268
+ bottom: 10px;
269
+ background-color: #F8BB86; }
270
+ .sweet-alert .sa-icon.sa-info {
271
+ border-color: #C9DAE1; }
272
+ .sweet-alert .sa-icon.sa-info::before {
273
+ content: "";
274
+ position: absolute;
275
+ width: 5px;
276
+ height: 29px;
277
+ left: 50%;
278
+ bottom: 17px;
279
+ border-radius: 2px;
280
+ margin-left: -2px;
281
+ background-color: #C9DAE1; }
282
+ .sweet-alert .sa-icon.sa-info::after {
283
+ content: "";
284
+ position: absolute;
285
+ width: 7px;
286
+ height: 7px;
287
+ border-radius: 50%;
288
+ margin-left: -3px;
289
+ top: 19px;
290
+ background-color: #C9DAE1;
291
+ left: 50%; }
292
+ .sweet-alert .sa-icon.sa-success {
293
+ border-color: #A5DC86; }
294
+ .sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after {
295
+ content: '';
296
+ -webkit-border-radius: 40px;
297
+ border-radius: 40px;
298
+ border-radius: 50%;
299
+ position: absolute;
300
+ width: 60px;
301
+ height: 120px;
302
+ background: white;
303
+ -webkit-transform: rotate(45deg);
304
+ transform: rotate(45deg); }
305
+ .sweet-alert .sa-icon.sa-success::before {
306
+ -webkit-border-radius: 120px 0 0 120px;
307
+ border-radius: 120px 0 0 120px;
308
+ top: -7px;
309
+ left: -33px;
310
+ -webkit-transform: rotate(-45deg);
311
+ transform: rotate(-45deg);
312
+ -webkit-transform-origin: 60px 60px;
313
+ transform-origin: 60px 60px; }
314
+ .sweet-alert .sa-icon.sa-success::after {
315
+ -webkit-border-radius: 0 120px 120px 0;
316
+ border-radius: 0 120px 120px 0;
317
+ top: -11px;
318
+ left: 30px;
319
+ -webkit-transform: rotate(-45deg);
320
+ transform: rotate(-45deg);
321
+ -webkit-transform-origin: 0px 60px;
322
+ transform-origin: 0px 60px; }
323
+ .sweet-alert .sa-icon.sa-success .sa-placeholder {
324
+ width: 80px;
325
+ height: 80px;
326
+ border: 4px solid rgba(165, 220, 134, 0.2);
327
+ -webkit-border-radius: 40px;
328
+ border-radius: 40px;
329
+ border-radius: 50%;
330
+ box-sizing: content-box;
331
+ position: absolute;
332
+ left: -4px;
333
+ top: -4px;
334
+ z-index: 2; }
335
+ .sweet-alert .sa-icon.sa-success .sa-fix {
336
+ width: 5px;
337
+ height: 90px;
338
+ background-color: white;
339
+ position: absolute;
340
+ left: 28px;
341
+ top: 8px;
342
+ z-index: 1;
343
+ -webkit-transform: rotate(-45deg);
344
+ transform: rotate(-45deg); }
345
+ .sweet-alert .sa-icon.sa-success .sa-line {
346
+ height: 5px;
347
+ background-color: #A5DC86;
348
+ display: block;
349
+ border-radius: 2px;
350
+ position: absolute;
351
+ z-index: 2; }
352
+ .sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
353
+ width: 25px;
354
+ left: 14px;
355
+ top: 46px;
356
+ -webkit-transform: rotate(45deg);
357
+ transform: rotate(45deg); }
358
+ .sweet-alert .sa-icon.sa-success .sa-line.sa-long {
359
+ width: 47px;
360
+ right: 8px;
361
+ top: 38px;
362
+ -webkit-transform: rotate(-45deg);
363
+ transform: rotate(-45deg); }
364
+ .sweet-alert .sa-icon.sa-custom {
365
+ background-size: contain;
366
+ border-radius: 0;
367
+ border: none;
368
+ background-position: center center;
369
+ background-repeat: no-repeat; }
370
+
371
+ /*
372
+ * Animations
373
+ */
374
+ @-webkit-keyframes showSweetAlert {
375
+ 0% {
376
+ transform: scale(0.7);
377
+ -webkit-transform: scale(0.7); }
378
+ 45% {
379
+ transform: scale(1.05);
380
+ -webkit-transform: scale(1.05); }
381
+ 80% {
382
+ transform: scale(0.95);
383
+ -webkit-transform: scale(0.95); }
384
+ 100% {
385
+ transform: scale(1);
386
+ -webkit-transform: scale(1); } }
387
+
388
+ @keyframes showSweetAlert {
389
+ 0% {
390
+ transform: scale(0.7);
391
+ -webkit-transform: scale(0.7); }
392
+ 45% {
393
+ transform: scale(1.05);
394
+ -webkit-transform: scale(1.05); }
395
+ 80% {
396
+ transform: scale(0.95);
397
+ -webkit-transform: scale(0.95); }
398
+ 100% {
399
+ transform: scale(1);
400
+ -webkit-transform: scale(1); } }
401
+
402
+ @-webkit-keyframes hideSweetAlert {
403
+ 0% {
404
+ transform: scale(1);
405
+ -webkit-transform: scale(1); }
406
+ 100% {
407
+ transform: scale(0.5);
408
+ -webkit-transform: scale(0.5); } }
409
+
410
+ @keyframes hideSweetAlert {
411
+ 0% {
412
+ transform: scale(1);
413
+ -webkit-transform: scale(1); }
414
+ 100% {
415
+ transform: scale(0.5);
416
+ -webkit-transform: scale(0.5); } }
417
+
418
+ @-webkit-keyframes slideFromTop {
419
+ 0% {
420
+ top: 0%; }
421
+ 100% {
422
+ top: 50%; } }
423
+
424
+ @keyframes slideFromTop {
425
+ 0% {
426
+ top: 0%; }
427
+ 100% {
428
+ top: 50%; } }
429
+
430
+ @-webkit-keyframes slideToTop {
431
+ 0% {
432
+ top: 50%; }
433
+ 100% {
434
+ top: 0%; } }
435
+
436
+ @keyframes slideToTop {
437
+ 0% {
438
+ top: 50%; }
439
+ 100% {
440
+ top: 0%; } }
441
+
442
+ @-webkit-keyframes slideFromBottom {
443
+ 0% {
444
+ top: 70%; }
445
+ 100% {
446
+ top: 50%; } }
447
+
448
+ @keyframes slideFromBottom {
449
+ 0% {
450
+ top: 70%; }
451
+ 100% {
452
+ top: 50%; } }
453
+
454
+ @-webkit-keyframes slideToBottom {
455
+ 0% {
456
+ top: 50%; }
457
+ 100% {
458
+ top: 70%; } }
459
+
460
+ @keyframes slideToBottom {
461
+ 0% {
462
+ top: 50%; }
463
+ 100% {
464
+ top: 70%; } }
465
+
466
+ .showSweetAlert[data-animation=pop] {
467
+ -webkit-animation: showSweetAlert 0.3s;
468
+ animation: showSweetAlert 0.3s; }
469
+
470
+ .showSweetAlert[data-animation=none] {
471
+ -webkit-animation: none;
472
+ animation: none; }
473
+
474
+ .showSweetAlert[data-animation=slide-from-top] {
475
+ -webkit-animation: slideFromTop 0.3s;
476
+ animation: slideFromTop 0.3s; }
477
+
478
+ .showSweetAlert[data-animation=slide-from-bottom] {
479
+ -webkit-animation: slideFromBottom 0.3s;
480
+ animation: slideFromBottom 0.3s; }
481
+
482
+ .hideSweetAlert[data-animation=pop] {
483
+ -webkit-animation: hideSweetAlert 0.2s;
484
+ animation: hideSweetAlert 0.2s; }
485
+
486
+ .hideSweetAlert[data-animation=none] {
487
+ -webkit-animation: none;
488
+ animation: none; }
489
+
490
+ .hideSweetAlert[data-animation=slide-from-top] {
491
+ -webkit-animation: slideToTop 0.4s;
492
+ animation: slideToTop 0.4s; }
493
+
494
+ .hideSweetAlert[data-animation=slide-from-bottom] {
495
+ -webkit-animation: slideToBottom 0.3s;
496
+ animation: slideToBottom 0.3s; }
497
+
498
+ @-webkit-keyframes animateSuccessTip {
499
+ 0% {
500
+ width: 0;
501
+ left: 1px;
502
+ top: 19px; }
503
+ 54% {
504
+ width: 0;
505
+ left: 1px;
506
+ top: 19px; }
507
+ 70% {
508
+ width: 50px;
509
+ left: -8px;
510
+ top: 37px; }
511
+ 84% {
512
+ width: 17px;
513
+ left: 21px;
514
+ top: 48px; }
515
+ 100% {
516
+ width: 25px;
517
+ left: 14px;
518
+ top: 45px; } }
519
+
520
+ @keyframes animateSuccessTip {
521
+ 0% {
522
+ width: 0;
523
+ left: 1px;
524
+ top: 19px; }
525
+ 54% {
526
+ width: 0;
527
+ left: 1px;
528
+ top: 19px; }
529
+ 70% {
530
+ width: 50px;
531
+ left: -8px;
532
+ top: 37px; }
533
+ 84% {
534
+ width: 17px;
535
+ left: 21px;
536
+ top: 48px; }
537
+ 100% {
538
+ width: 25px;
539
+ left: 14px;
540
+ top: 45px; } }
541
+
542
+ @-webkit-keyframes animateSuccessLong {
543
+ 0% {
544
+ width: 0;
545
+ right: 46px;
546
+ top: 54px; }
547
+ 65% {
548
+ width: 0;
549
+ right: 46px;
550
+ top: 54px; }
551
+ 84% {
552
+ width: 55px;
553
+ right: 0px;
554
+ top: 35px; }
555
+ 100% {
556
+ width: 47px;
557
+ right: 8px;
558
+ top: 38px; } }
559
+
560
+ @keyframes animateSuccessLong {
561
+ 0% {
562
+ width: 0;
563
+ right: 46px;
564
+ top: 54px; }
565
+ 65% {
566
+ width: 0;
567
+ right: 46px;
568
+ top: 54px; }
569
+ 84% {
570
+ width: 55px;
571
+ right: 0px;
572
+ top: 35px; }
573
+ 100% {
574
+ width: 47px;
575
+ right: 8px;
576
+ top: 38px; } }
577
+
578
+ @-webkit-keyframes rotatePlaceholder {
579
+ 0% {
580
+ transform: rotate(-45deg);
581
+ -webkit-transform: rotate(-45deg); }
582
+ 5% {
583
+ transform: rotate(-45deg);
584
+ -webkit-transform: rotate(-45deg); }
585
+ 12% {
586
+ transform: rotate(-405deg);
587
+ -webkit-transform: rotate(-405deg); }
588
+ 100% {
589
+ transform: rotate(-405deg);
590
+ -webkit-transform: rotate(-405deg); } }
591
+
592
+ @keyframes rotatePlaceholder {
593
+ 0% {
594
+ transform: rotate(-45deg);
595
+ -webkit-transform: rotate(-45deg); }
596
+ 5% {
597
+ transform: rotate(-45deg);
598
+ -webkit-transform: rotate(-45deg); }
599
+ 12% {
600
+ transform: rotate(-405deg);
601
+ -webkit-transform: rotate(-405deg); }
602
+ 100% {
603
+ transform: rotate(-405deg);
604
+ -webkit-transform: rotate(-405deg); } }
605
+
606
+ .animateSuccessTip {
607
+ -webkit-animation: animateSuccessTip 0.75s;
608
+ animation: animateSuccessTip 0.75s; }
609
+
610
+ .animateSuccessLong {
611
+ -webkit-animation: animateSuccessLong 0.75s;
612
+ animation: animateSuccessLong 0.75s; }
613
+
614
+ .sa-icon.sa-success.animate::after {
615
+ -webkit-animation: rotatePlaceholder 4.25s ease-in;
616
+ animation: rotatePlaceholder 4.25s ease-in; }
617
+
618
+ @-webkit-keyframes animateErrorIcon {
619
+ 0% {
620
+ transform: rotateX(100deg);
621
+ -webkit-transform: rotateX(100deg);
622
+ opacity: 0; }
623
+ 100% {
624
+ transform: rotateX(0deg);
625
+ -webkit-transform: rotateX(0deg);
626
+ opacity: 1; } }
627
+
628
+ @keyframes animateErrorIcon {
629
+ 0% {
630
+ transform: rotateX(100deg);
631
+ -webkit-transform: rotateX(100deg);
632
+ opacity: 0; }
633
+ 100% {
634
+ transform: rotateX(0deg);
635
+ -webkit-transform: rotateX(0deg);
636
+ opacity: 1; } }
637
+
638
+ .animateErrorIcon {
639
+ -webkit-animation: animateErrorIcon 0.5s;
640
+ animation: animateErrorIcon 0.5s; }
641
+
642
+ @-webkit-keyframes animateXMark {
643
+ 0% {
644
+ transform: scale(0.4);
645
+ -webkit-transform: scale(0.4);
646
+ margin-top: 26px;
647
+ opacity: 0; }
648
+ 50% {
649
+ transform: scale(0.4);
650
+ -webkit-transform: scale(0.4);
651
+ margin-top: 26px;
652
+ opacity: 0; }
653
+ 80% {
654
+ transform: scale(1.15);
655
+ -webkit-transform: scale(1.15);
656
+ margin-top: -6px; }
657
+ 100% {
658
+ transform: scale(1);
659
+ -webkit-transform: scale(1);
660
+ margin-top: 0;
661
+ opacity: 1; } }
662
+
663
+ @keyframes animateXMark {
664
+ 0% {
665
+ transform: scale(0.4);
666
+ -webkit-transform: scale(0.4);
667
+ margin-top: 26px;
668
+ opacity: 0; }
669
+ 50% {
670
+ transform: scale(0.4);
671
+ -webkit-transform: scale(0.4);
672
+ margin-top: 26px;
673
+ opacity: 0; }
674
+ 80% {
675
+ transform: scale(1.15);
676
+ -webkit-transform: scale(1.15);
677
+ margin-top: -6px; }
678
+ 100% {
679
+ transform: scale(1);
680
+ -webkit-transform: scale(1);
681
+ margin-top: 0;
682
+ opacity: 1; } }
683
+
684
+ .animateXMark {
685
+ -webkit-animation: animateXMark 0.5s;
686
+ animation: animateXMark 0.5s; }
687
+
688
+ @-webkit-keyframes pulseWarning {
689
+ 0% {
690
+ border-color: #F8D486; }
691
+ 100% {
692
+ border-color: #F8BB86; } }
693
+
694
+ @keyframes pulseWarning {
695
+ 0% {
696
+ border-color: #F8D486; }
697
+ 100% {
698
+ border-color: #F8BB86; } }
699
+
700
+ .pulseWarning {
701
+ -webkit-animation: pulseWarning 0.75s infinite alternate;
702
+ animation: pulseWarning 0.75s infinite alternate; }
703
+
704
+ @-webkit-keyframes pulseWarningIns {
705
+ 0% {
706
+ background-color: #F8D486; }
707
+ 100% {
708
+ background-color: #F8BB86; } }
709
+
710
+ @keyframes pulseWarningIns {
711
+ 0% {
712
+ background-color: #F8D486; }
713
+ 100% {
714
+ background-color: #F8BB86; } }
715
+
716
+ .pulseWarningIns {
717
+ -webkit-animation: pulseWarningIns 0.75s infinite alternate;
718
+ animation: pulseWarningIns 0.75s infinite alternate; }
719
+
720
+ @-webkit-keyframes rotate-loading {
721
+ 0% {
722
+ transform: rotate(0deg); }
723
+ 100% {
724
+ transform: rotate(360deg); } }
725
+
726
+ @keyframes rotate-loading {
727
+ 0% {
728
+ transform: rotate(0deg); }
729
+ 100% {
730
+ transform: rotate(360deg); } }
731
+
732
+ /* Internet Explorer 9 has some special quirks that are fixed here */
733
+ /* The icons are not animated. */
734
+ /* This file is automatically merged into sweet-alert.min.js through Gulp */
735
+ /* Error icon */
736
+ .sweet-alert .sa-icon.sa-error .sa-line.sa-left {
737
+ -ms-transform: rotate(45deg) \9; }
738
+
739
+ .sweet-alert .sa-icon.sa-error .sa-line.sa-right {
740
+ -ms-transform: rotate(-45deg) \9; }
741
+
742
+ /* Success icon */
743
+ .sweet-alert .sa-icon.sa-success {
744
+ border-color: transparent\9; }
745
+
746
+ .sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
747
+ -ms-transform: rotate(45deg) \9; }
748
+
749
+ .sweet-alert .sa-icon.sa-success .sa-line.sa-long {
750
+ -ms-transform: rotate(-45deg) \9; }
751
+
752
+ /*!
753
+ * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)
754
+ * Copyright 2015 Daniel Cardoso <@DanielCardoso>
755
+ * Licensed under MIT
756
+ */
757
+ .la-ball-fall,
758
+ .la-ball-fall > div {
759
+ position: relative;
760
+ -webkit-box-sizing: border-box;
761
+ -moz-box-sizing: border-box;
762
+ box-sizing: border-box; }
763
+
764
+ .la-ball-fall {
765
+ display: block;
766
+ font-size: 0;
767
+ color: #fff; }
768
+
769
+ .la-ball-fall.la-dark {
770
+ color: #333; }
771
+
772
+ .la-ball-fall > div {
773
+ display: inline-block;
774
+ float: none;
775
+ background-color: currentColor;
776
+ border: 0 solid currentColor; }
777
+
778
+ .la-ball-fall {
779
+ width: 54px;
780
+ height: 18px; }
781
+
782
+ .la-ball-fall > div {
783
+ width: 10px;
784
+ height: 10px;
785
+ margin: 4px;
786
+ border-radius: 100%;
787
+ opacity: 0;
788
+ -webkit-animation: ball-fall 1s ease-in-out infinite;
789
+ -moz-animation: ball-fall 1s ease-in-out infinite;
790
+ -o-animation: ball-fall 1s ease-in-out infinite;
791
+ animation: ball-fall 1s ease-in-out infinite; }
792
+
793
+ .la-ball-fall > div:nth-child(1) {
794
+ -webkit-animation-delay: -200ms;
795
+ -moz-animation-delay: -200ms;
796
+ -o-animation-delay: -200ms;
797
+ animation-delay: -200ms; }
798
+
799
+ .la-ball-fall > div:nth-child(2) {
800
+ -webkit-animation-delay: -100ms;
801
+ -moz-animation-delay: -100ms;
802
+ -o-animation-delay: -100ms;
803
+ animation-delay: -100ms; }
804
+
805
+ .la-ball-fall > div:nth-child(3) {
806
+ -webkit-animation-delay: 0ms;
807
+ -moz-animation-delay: 0ms;
808
+ -o-animation-delay: 0ms;
809
+ animation-delay: 0ms; }
810
+
811
+ .la-ball-fall.la-sm {
812
+ width: 26px;
813
+ height: 8px; }
814
+
815
+ .la-ball-fall.la-sm > div {
816
+ width: 4px;
817
+ height: 4px;
818
+ margin: 2px; }
819
+
820
+ .la-ball-fall.la-2x {
821
+ width: 108px;
822
+ height: 36px; }
823
+
824
+ .la-ball-fall.la-2x > div {
825
+ width: 20px;
826
+ height: 20px;
827
+ margin: 8px; }
828
+
829
+ .la-ball-fall.la-3x {
830
+ width: 162px;
831
+ height: 54px; }
832
+
833
+ .la-ball-fall.la-3x > div {
834
+ width: 30px;
835
+ height: 30px;
836
+ margin: 12px; }
837
+
838
+ /*
839
+ * Animation
840
+ */
841
+ @-webkit-keyframes ball-fall {
842
+ 0% {
843
+ opacity: 0;
844
+ -webkit-transform: translateY(-145%);
845
+ transform: translateY(-145%); }
846
+ 10% {
847
+ opacity: .5; }
848
+ 20% {
849
+ opacity: 1;
850
+ -webkit-transform: translateY(0);
851
+ transform: translateY(0); }
852
+ 80% {
853
+ opacity: 1;
854
+ -webkit-transform: translateY(0);
855
+ transform: translateY(0); }
856
+ 90% {
857
+ opacity: .5; }
858
+ 100% {
859
+ opacity: 0;
860
+ -webkit-transform: translateY(145%);
861
+ transform: translateY(145%); } }
862
+
863
+ @-moz-keyframes ball-fall {
864
+ 0% {
865
+ opacity: 0;
866
+ -moz-transform: translateY(-145%);
867
+ transform: translateY(-145%); }
868
+ 10% {
869
+ opacity: .5; }
870
+ 20% {
871
+ opacity: 1;
872
+ -moz-transform: translateY(0);
873
+ transform: translateY(0); }
874
+ 80% {
875
+ opacity: 1;
876
+ -moz-transform: translateY(0);
877
+ transform: translateY(0); }
878
+ 90% {
879
+ opacity: .5; }
880
+ 100% {
881
+ opacity: 0;
882
+ -moz-transform: translateY(145%);
883
+ transform: translateY(145%); } }
884
+
885
+ @-o-keyframes ball-fall {
886
+ 0% {
887
+ opacity: 0;
888
+ -o-transform: translateY(-145%);
889
+ transform: translateY(-145%); }
890
+ 10% {
891
+ opacity: .5; }
892
+ 20% {
893
+ opacity: 1;
894
+ -o-transform: translateY(0);
895
+ transform: translateY(0); }
896
+ 80% {
897
+ opacity: 1;
898
+ -o-transform: translateY(0);
899
+ transform: translateY(0); }
900
+ 90% {
901
+ opacity: .5; }
902
+ 100% {
903
+ opacity: 0;
904
+ -o-transform: translateY(145%);
905
+ transform: translateY(145%); } }
906
+
907
+ @keyframes ball-fall {
908
+ 0% {
909
+ opacity: 0;
910
+ -webkit-transform: translateY(-145%);
911
+ -moz-transform: translateY(-145%);
912
+ -o-transform: translateY(-145%);
913
+ transform: translateY(-145%); }
914
+ 10% {
915
+ opacity: .5; }
916
+ 20% {
917
+ opacity: 1;
918
+ -webkit-transform: translateY(0);
919
+ -moz-transform: translateY(0);
920
+ -o-transform: translateY(0);
921
+ transform: translateY(0); }
922
+ 80% {
923
+ opacity: 1;
924
+ -webkit-transform: translateY(0);
925
+ -moz-transform: translateY(0);
926
+ -o-transform: translateY(0);
927
+ transform: translateY(0); }
928
+ 90% {
929
+ opacity: .5; }
930
+ 100% {
931
+ opacity: 0;
932
+ -webkit-transform: translateY(145%);
933
+ -moz-transform: translateY(145%);
934
+ -o-transform: translateY(145%);
935
+ transform: translateY(145%); } }