level_up 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/CHANGELOG.txt +2 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.md +190 -0
  4. data/Rakefile +40 -0
  5. data/app/assets/images/level_up/search.png +0 -0
  6. data/app/assets/javascripts/level_up/application.js +15 -0
  7. data/app/assets/javascripts/level_up/home.js +2 -0
  8. data/app/assets/javascripts/level_up/jobs.js +2 -0
  9. data/app/assets/stylesheets/level_up/application.css.scss +446 -0
  10. data/app/assets/stylesheets/level_up/home.css.scss +119 -0
  11. data/app/assets/stylesheets/level_up/jobs.css.scss +159 -0
  12. data/app/assets/stylesheets/level_up/rwdgrid.css +403 -0
  13. data/app/controllers/level_up/application_controller.rb +4 -0
  14. data/app/controllers/level_up/home_controller.rb +22 -0
  15. data/app/controllers/level_up/jobs_controller.rb +117 -0
  16. data/app/helpers/level_up/application_helper.rb +7 -0
  17. data/app/helpers/level_up/home_helper.rb +7 -0
  18. data/app/helpers/level_up/jobs_helper.rb +4 -0
  19. data/app/models/level_up/job.rb +212 -0
  20. data/app/models/level_up/state/cancel.rb +7 -0
  21. data/app/models/level_up/state/end.rb +7 -0
  22. data/app/models/level_up/state/start.rb +9 -0
  23. data/app/models/level_up/state.rb +53 -0
  24. data/app/views/layouts/level_up/_footer.html.erb +9 -0
  25. data/app/views/layouts/level_up/_header.html.erb +23 -0
  26. data/app/views/layouts/level_up/application.html.erb +36 -0
  27. data/app/views/level_up/home/index.html.erb +85 -0
  28. data/app/views/level_up/home/workflow.html.erb +5 -0
  29. data/app/views/level_up/jobs/edit.html.erb +65 -0
  30. data/app/views/level_up/jobs/index.html.erb +73 -0
  31. data/app/views/level_up/jobs/show.html.erb +93 -0
  32. data/config/routes.rb +13 -0
  33. data/db/migrate/20130212111454_create_level_up_jobs.rb +27 -0
  34. data/lib/level_up/configuration.rb +27 -0
  35. data/lib/level_up/engine.rb +17 -0
  36. data/lib/level_up/version.rb +3 -0
  37. data/lib/level_up.rb +7 -0
  38. data/lib/tasks/level_up_tasks.rake +4 -0
  39. data/test/dummy/README.rdoc +261 -0
  40. data/test/dummy/Rakefile +7 -0
  41. data/test/dummy/app/assets/javascripts/application.js +15 -0
  42. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  43. data/test/dummy/app/controllers/application_controller.rb +3 -0
  44. data/test/dummy/app/helpers/application_helper.rb +2 -0
  45. data/test/dummy/app/jobs/account_banish.rb +18 -0
  46. data/test/dummy/app/jobs/account_downgrade.rb +13 -0
  47. data/test/dummy/app/jobs/account_upgrade.rb +15 -0
  48. data/test/dummy/app/jobs/mailing_list_subscription.rb +15 -0
  49. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  50. data/test/dummy/config/application.rb +59 -0
  51. data/test/dummy/config/boot.rb +10 -0
  52. data/test/dummy/config/database.yml +25 -0
  53. data/test/dummy/config/environment.rb +5 -0
  54. data/test/dummy/config/environments/development.rb +41 -0
  55. data/test/dummy/config/environments/production.rb +67 -0
  56. data/test/dummy/config/environments/test.rb +37 -0
  57. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  58. data/test/dummy/config/initializers/inflections.rb +15 -0
  59. data/test/dummy/config/initializers/mime_types.rb +5 -0
  60. data/test/dummy/config/initializers/secret_token.rb +7 -0
  61. data/test/dummy/config/initializers/session_store.rb +8 -0
  62. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  63. data/test/dummy/config/locales/en.yml +5 -0
  64. data/test/dummy/config/routes.rb +4 -0
  65. data/test/dummy/config.ru +4 -0
  66. data/test/dummy/db/migrate/20130212113009_create_delayed_jobs.rb +22 -0
  67. data/test/dummy/db/migrate/20130215111404_create_level_up_jobs.level_up.rb +28 -0
  68. data/test/dummy/db/schema.rb +57 -0
  69. data/test/dummy/public/404.html +26 -0
  70. data/test/dummy/public/422.html +26 -0
  71. data/test/dummy/public/500.html +25 -0
  72. data/test/dummy/public/favicon.ico +0 -0
  73. data/test/dummy/script/delayed_job +5 -0
  74. data/test/dummy/script/rails +6 -0
  75. data/test/fixtures/level_up/jobs.yml +11 -0
  76. data/test/functional/level_up/home_controller_test.rb +9 -0
  77. data/test/functional/level_up/jobs_controller_test.rb +9 -0
  78. data/test/integration/navigation_test.rb +10 -0
  79. data/test/level_up_test.rb +7 -0
  80. data/test/test_helper.rb +15 -0
  81. data/test/unit/helpers/level_up/home_helper_test.rb +6 -0
  82. data/test/unit/helpers/level_up/jobs_helper_test.rb +6 -0
  83. data/test/unit/level_up/job_test.rb +208 -0
  84. metadata +333 -0
@@ -0,0 +1,446 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
11
+ *= require ./rwdgrid
12
+ *= require_self
13
+ *= require ./home
14
+ *= require ./jobs
15
+ */
16
+
17
+ @import url(http://fonts.googleapis.com/css?family=Ubuntu:400,500,700);
18
+
19
+ body {
20
+ font-family: Ubuntu, sans-serif;
21
+ font-weight: normal;
22
+ font-style: normal;
23
+ font-size: 16px;
24
+ -webkit-font-smoothing: antialiased;
25
+ background-color: #e9eaed;
26
+ color: #31353e;
27
+ }
28
+
29
+ header {
30
+
31
+ .top-bar{
32
+ background-color: #000;
33
+ color: #fff;
34
+ }
35
+
36
+ .top-bar {
37
+ background-color: #000;
38
+ border-bottom: 1px solid #25252d;
39
+ border-top: 7px solid #3b5998;
40
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.7);
41
+ margin-bottom: 20px;
42
+
43
+ h1 {
44
+ padding-top: 7px;
45
+ box-sizing: border-box;
46
+ font-size: 28px;
47
+ text-transform: uppercase;
48
+ margin: 0;
49
+ .colored-part {
50
+ color: #b40d28;
51
+ font-weight: bold;
52
+ }
53
+
54
+ }
55
+
56
+ ul {
57
+ li {
58
+ margin: 0;
59
+ display: block;
60
+ float: left;
61
+ padding-top: 7px;
62
+ -webkit-box-sizing: border-box;
63
+ -moz-box-sizing: border-box;
64
+ box-sizing: border-box;
65
+ width: 50%;
66
+
67
+ &:first-child {
68
+ a.app-link {
69
+ margin-left: 0;
70
+ border-top-left-radius: 3px;
71
+ border-bottom-left-radius: 3px;
72
+ }
73
+ }
74
+
75
+ &:last-child {
76
+ a.app-link {
77
+ border-top-right-radius: 3px;
78
+ border-bottom-right-radius: 3px;
79
+ border-right: 0;
80
+ }
81
+ }
82
+
83
+ a.app-link, a.app-link:visited {
84
+ box-shadow: inset rgba(255, 255, 255, 1) 0 1px 0px;
85
+ font-weight: bold;
86
+ font-size: 14px;
87
+ text-transform: uppercase;
88
+ color: #31353e;
89
+ text-shadow: 0px 1px #fff;
90
+ display: block;
91
+ padding: 0px 1em;
92
+ height: 28px;
93
+ line-height: 28px;
94
+ background-color: #dfdfdf;
95
+ text-decoration: none;
96
+ border-right: 1px solid #bbb;
97
+ text-align: center;
98
+ }
99
+
100
+ a.app-link:hover {
101
+ background-color: #ccc;
102
+ }
103
+ }
104
+ }
105
+
106
+ .search-bar {
107
+ padding: 7px 0;
108
+ background: url("search.png") 10px 50% no-repeat;
109
+ padding-left: 45px;
110
+ overflow: hidden;
111
+
112
+ input[type="text"] {
113
+ border: 1px solid #fff;
114
+ height: 30px;
115
+ display: block;
116
+ float: left;
117
+ width: 75%;
118
+ padding-left: 10px;
119
+ font-size: 16px;
120
+ outline: none;
121
+ border-top-left-radius: 3px;
122
+ border-bottom-left-radius: 3px;
123
+ -webkit-box-sizing: border-box;
124
+ -moz-box-sizing: border-box;
125
+ box-sizing: border-box;
126
+
127
+ &:focus {
128
+ border-color: #858585;
129
+ }
130
+ }
131
+
132
+ input[type="submit"] {
133
+ width: 25%;
134
+ display: block;
135
+ float: left;
136
+ height: 30px;
137
+ background-color: #dfdfdf;
138
+ color: #31353e;
139
+ border: 0;
140
+ border-left: 1px solid #d1d1d1;
141
+ cursor: pointer;
142
+ border-top-right-radius: 3px;
143
+ border-bottom-right-radius: 3px;
144
+ box-shadow: inset rgba(255, 255, 255, 1) 0 1px 0px;
145
+ text-shadow: 0px 1px #fff;
146
+ text-transform: uppercase;
147
+ font-size: 14px;
148
+ font-weight: bold;
149
+ -webkit-box-sizing: border-box;
150
+ -moz-box-sizing: border-box;
151
+ box-sizing: border-box;
152
+
153
+ &:hover {
154
+ background-color: #ccc;
155
+ }
156
+ }
157
+ }
158
+ }
159
+ }
160
+
161
+ .breadcrumbs {
162
+ margin-bottom: 20px;
163
+ padding-left: 10px;
164
+
165
+ ul {
166
+ li {
167
+ margin: 0;
168
+ display: inline-block;
169
+
170
+ a, a:visited, a:hover, {
171
+ color: #3b5998;
172
+ text-decoration: none;
173
+ }
174
+
175
+ a:hover {
176
+ text-decoration: underline;
177
+ }
178
+ }
179
+ }
180
+ }
181
+
182
+ table.table-bordered {
183
+ width: 100%;
184
+ margin-bottom: 20px;
185
+
186
+ thead {
187
+ border-bottom: 1px solid #25252d;
188
+
189
+ tr {
190
+ th {
191
+ font-weight: bold;
192
+ font-size: 12px;
193
+ padding: 0px 10px;
194
+ border-right: 1px solid #25252d;
195
+ text-align: center;
196
+ color: #fff;
197
+ }
198
+
199
+ line-height: 30px;
200
+
201
+ &:last-child th:last-child{
202
+ border-right: 0;
203
+ }
204
+ }
205
+
206
+ background-color: #31353e;
207
+ }
208
+
209
+ tbody {
210
+ border: 1px solid #d7d8d9;
211
+ tr {
212
+ &.tooltip td {
213
+ text-align: center;
214
+ }
215
+
216
+ td {
217
+ vertical-align: middle;
218
+ padding: 7px 10px;
219
+ border-left: 1px solid #d1d1d1;
220
+ text-align: center;
221
+
222
+ &:first-child {
223
+ border-left: 0;
224
+ }
225
+
226
+ a, a:hover, a:visited {
227
+ color: #31353e;
228
+ text-decoration: underline;
229
+ }
230
+ }
231
+ }
232
+
233
+ tr:nth-child(even) {background: #eaeaea;}
234
+ tr:nth-child(odd) {background: #fafcfb;}
235
+
236
+ tr.white {
237
+ background-color: #dedede;
238
+ font-weight: bold;
239
+ td {border-top: 1px dotted #bbb;}
240
+ }
241
+ }
242
+ }
243
+
244
+ .search-form {
245
+ background-color: #fafcfb;
246
+ padding: 10px;
247
+ margin-bottom: 20px;
248
+ overflow: hidden;
249
+ border: 1px solid #d7d8d9;
250
+
251
+ .search-field {
252
+ display: block;
253
+ float: left;
254
+ border: 1px solid #d1d1d1;
255
+ line-height: 40px;
256
+ height: 40px;
257
+ padding-left: 5px;
258
+ font-size: 18px;
259
+ width: 85%;
260
+ outline: 0;
261
+ margin-bottom: 15px;
262
+ -webkit-box-sizing: border-box;
263
+ -moz-box-sizing: border-box;
264
+ box-sizing: border-box;
265
+ border-top-left-radius: 3px;
266
+ border-bottom-left-radius: 3px;
267
+ }
268
+
269
+ .search-button {
270
+ -webkit-box-sizing: border-box;
271
+ -moz-box-sizing: border-box;
272
+ box-sizing: border-box;
273
+ width: 15%;
274
+ display: block;
275
+ float: right;
276
+ background-color: #dfdfdf;
277
+ box-shadow: inset rgba(255, 255, 255, 1) 0 1px 0px;
278
+ text-shadow: 0px 1px #fff;
279
+ border: 1px solid #d1d1d1;
280
+ color: #31353e;
281
+ font-size: 16px;
282
+ font-weight: bold;
283
+ cursor: pointer;
284
+ border-left: 0;
285
+ height: 40px;
286
+ border-top-right-radius: 3px;
287
+ border-bottom-right-radius: 3px;
288
+ text-transform: uppercase;
289
+ border-top-right-radius: 3px;
290
+ border-bottom-right-radius: 3px;
291
+ box-shadow: inset rgba(255, 255, 255, 1) 0 1px 0px;
292
+ text-shadow: 0px 1px #fff;
293
+ text-transform: uppercase;
294
+
295
+ &:hover {
296
+ background-color: #ccc;
297
+ }
298
+ }
299
+
300
+ .filters {
301
+ clear: both;
302
+ margin-top: 10px;
303
+
304
+ select {
305
+ position: relative;
306
+ top: -2px;
307
+ }
308
+
309
+ .reset-link {
310
+ margin-left: 10px;
311
+ color: #31353e;
312
+ }
313
+ }
314
+ }
315
+
316
+ .status_tag {
317
+ text-transform: uppercase;
318
+ color: #fff;
319
+ padding: 2px 10px;
320
+ font-size: 13px;
321
+ font-weight: bold;
322
+
323
+ &.blue {
324
+ background-color: #0048ac;
325
+ }
326
+
327
+ &.purple {
328
+ background-color: #482869;
329
+ }
330
+
331
+ &.green {
332
+ background-color: #57A957;
333
+ }
334
+
335
+ &.orange {
336
+ background-color: #e29b20;
337
+ }
338
+
339
+ &.red {
340
+ background-color: #b40d28;
341
+ }
342
+
343
+ &.gray {
344
+ background-color: #999;
345
+ }
346
+ }
347
+
348
+ nav.pagination {
349
+ position: relative;
350
+ text-align: center;
351
+ margin-bottom: 20px;
352
+ border: 1px solid #d7d8d9;
353
+ display: block;
354
+ width: 100%;
355
+ height: 35px;
356
+ background-color: #fafcfb;
357
+
358
+ a {
359
+ display: block;
360
+ color: #31353e;
361
+ text-decoration: none;
362
+ &:hover {
363
+ text-decoration: underline;
364
+ }
365
+ }
366
+
367
+ .first, .prev {
368
+ display: inline-block;
369
+ padding: 0 10px;
370
+ line-height: 35px;
371
+ border-right: 1px solid #d1d1d1;
372
+ font-weight: bold;
373
+ }
374
+ .first {
375
+ width: 50px;
376
+ position: absolute;
377
+ left: 0;
378
+ }
379
+ .prev {
380
+ width: 90px;
381
+ position: absolute;
382
+ left: 72px;
383
+ }
384
+
385
+ .last, .next {
386
+ display: inline-block;
387
+ padding: 0 10px;
388
+ line-height: 35px;
389
+ border-left: 1px solid #d1d1d1;
390
+ font-weight: bold;
391
+ }
392
+ .last {
393
+ width: 50px;
394
+ position: absolute;
395
+ right: 0;
396
+ }
397
+ .next {
398
+ width: 90px;
399
+ position: absolute;
400
+ right: 72px;
401
+ }
402
+
403
+
404
+ .page {
405
+ display: inline-block;
406
+ width: 35px;
407
+ line-height: 35px;
408
+ }
409
+
410
+ .current {
411
+ background-color: #31353e;
412
+ border: 1px solid #31353e;
413
+
414
+ color: #fff;
415
+ font-weight: bold;
416
+ line-height: 33px;
417
+ }
418
+ }
419
+
420
+ .simple-panel {
421
+ h2 {
422
+ background-color: #fff;
423
+ color: #31353e;
424
+ padding: 10px;
425
+ font-weight: bold;
426
+ border-bottom: 1px solid #f0f1f5;
427
+ margin: 0;
428
+ }
429
+ border: 1px solid #d7d8d9;
430
+ margin-bottom: 20px;
431
+ background-color: #fafbfb;
432
+ }
433
+
434
+ footer {
435
+ .powered-by {
436
+ padding: 10px;
437
+ margin-bottom: 20px;
438
+ background-color: #fafcfb;
439
+ border: 1px solid #d7d8d9;
440
+
441
+ a, a:visited, a:hover {
442
+ color: #3b5998;
443
+ }
444
+ }
445
+ }
446
+
@@ -0,0 +1,119 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
5
+
6
+ #general-stats {
7
+ padding: 10px;
8
+ background-color: #fff;
9
+ border: 1px solid #ccc;
10
+ }
11
+
12
+ .job-status-stats {
13
+ margin-bottom: 20px;
14
+ background-color: #fafcfb;
15
+ border: 1px solid #d7d8d9;
16
+
17
+ .title {
18
+
19
+
20
+ h2 {
21
+ color: #fff;
22
+ font-weight: bold;
23
+ display: block;
24
+ padding: 10px;
25
+
26
+
27
+ border-bottom: 1px solid #f0f1f5;
28
+ background-color: #fff;
29
+ .bullet {
30
+ height: 10px;
31
+ width: 10px;
32
+ display: inline-block;
33
+ border-radius: 50%;
34
+ margin-right: 5px;
35
+ }
36
+ }
37
+ }
38
+
39
+ .number {
40
+ font-size: 100px;
41
+ background-color: #fafbfb;
42
+ text-align: center;
43
+ border-bottom: 1px solid #f0f1f5;
44
+ a {
45
+ text-decoration: none;
46
+ }
47
+ }
48
+
49
+ &.queued {
50
+ h2 {
51
+ color: #482869;
52
+ .bullet {
53
+ background-color: #482869;
54
+ }
55
+ }
56
+ .number a {
57
+ color: #482869;
58
+ }
59
+ }
60
+
61
+ &.timer {
62
+ h2 {
63
+ color: #0048ac;
64
+ .bullet {
65
+ background-color: #0048ac;
66
+ }
67
+ }
68
+ .number a {
69
+ color: #0048ac;
70
+ }
71
+ }
72
+
73
+ &.task {
74
+ h2 {
75
+ color: #F89406;
76
+ .bullet {
77
+ background-color: #F89406;
78
+ }
79
+ }
80
+ .number a {
81
+ color: #F89406;
82
+ }
83
+ }
84
+
85
+ &.error {
86
+ h2 {
87
+ color: #b40d28;
88
+ .bullet {
89
+ background-color: #b40d28;
90
+ }
91
+ }
92
+ .number a {
93
+ color: #b40d28;
94
+ }
95
+ }
96
+
97
+ .stats {
98
+ border-top: #fdfefe;
99
+ background-color: #fafbfb;
100
+ padding: 5px;
101
+
102
+ li {
103
+ padding: 3px;
104
+ label {
105
+ display: inline-block;
106
+ width: 100px;
107
+ }
108
+
109
+ a, a:visited, a:hover {
110
+ color: #31353e;
111
+ text-decoration: underline;
112
+ }
113
+ }
114
+ }
115
+ }
116
+
117
+ #job-metrics {
118
+ padding: 10px;
119
+ }
@@ -0,0 +1,159 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
5
+
6
+ .jobs {
7
+ tbody {
8
+ font-size: 14px;
9
+ }
10
+ }
11
+ .svg-graph {
12
+ text-align: center;
13
+ padding: 30px;
14
+ }
15
+
16
+ ul.attributes-table {
17
+ li {
18
+ padding: 10px;
19
+ border-bottom: 1px solid #f0f1f5;
20
+ border-top: 1px solid #fdfefe;
21
+
22
+ &:first-child {
23
+ border-top: 0;
24
+ }
25
+
26
+ &:last-child {
27
+ border-bottom: 0;
28
+ }
29
+
30
+ label {
31
+ display: inline-block;
32
+ width: 150px;
33
+ font-weight: bold;
34
+ }
35
+
36
+ ul {
37
+ display: inline-block;
38
+ }
39
+ }
40
+ }
41
+
42
+ ul.attributes-table.form {
43
+ li {
44
+ line-height: 30px;
45
+ overflow: hidden;
46
+ }
47
+
48
+ input[type="text"] {
49
+ border: 1px solid #d1d1d1;
50
+ width: 500px;
51
+ padding: 7px 0;
52
+ padding-left: 5px;
53
+ display: inline-block;
54
+ margin: 0;
55
+ outline: none;
56
+ }
57
+
58
+ input[type="submit"] {
59
+ width: 25%;
60
+ display: block;
61
+ height: 30px;
62
+ background-color: #31353e;
63
+ color: #fff;
64
+ border: 0;
65
+ cursor: pointer;
66
+ border: 1px solid #000;
67
+ border-radius: 3px;
68
+ text-shadow: 0px 1px #000;
69
+ text-transform: uppercase;
70
+ font-size: 14px;
71
+ font-weight: bold;
72
+
73
+ }
74
+ }
75
+
76
+ .job-error-log {
77
+ h2 {
78
+ color: #b40d28;
79
+ }
80
+
81
+ ul.attributes-table {
82
+ li {
83
+ &.no-border {
84
+ border-bottom: 0;
85
+ }
86
+ }
87
+ }
88
+ }
89
+
90
+ .job-commands {
91
+ .command {
92
+ margin: 0;
93
+ border-bottom: 1px solid #f0f1f5;
94
+ border-top: 1px solid #fdfefe;
95
+
96
+ &:first-child {
97
+ border-top: 0;
98
+ }
99
+ &:last-child {
100
+ border-bottom: 0;
101
+ }
102
+ }
103
+ input[type="submit"] {
104
+ background-color: #fafbfb;
105
+ border: 0;
106
+ width: 100%;
107
+ padding: 10px 0;
108
+ text-align: center;
109
+ font-size: 16px;
110
+ display: block;
111
+ margin: 0;
112
+ font-size: 14px;
113
+ color: #31353e;
114
+
115
+ &:hover {
116
+ background-color: #31353e;
117
+ color: #fff;
118
+ cursor: pointer;
119
+ }
120
+ }
121
+ }
122
+
123
+ .job-actions {
124
+ margin-bottom: 20px;
125
+
126
+
127
+
128
+ .action {
129
+ display: block;
130
+ padding: 15px;
131
+ text-decoration: none;
132
+ text-align: center;
133
+ text-transform: uppercase;
134
+ font-size: 14px;
135
+ font-weight: bold;
136
+ margin-bottom: 20px;
137
+ border: 1px solid #d7d8d9;
138
+ background-color: #fafbfb;
139
+ color: #31353e;
140
+
141
+ &:last-child {
142
+ margin-bottom: 0;
143
+ }
144
+
145
+ &:hover {
146
+ background-color: #31353e;
147
+ color: #fff;
148
+ }
149
+ }
150
+
151
+ .action.delete {
152
+ color: #b40d28;
153
+
154
+ &:hover {
155
+ background-color: #b40d28;
156
+ color: #fff;
157
+ }
158
+ }
159
+ }