slide-em-up 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. data/README.md +16 -23
  2. data/lib/slide-em-up.rb +1 -0
  3. data/lib/slide-em-up/markdown.rb +41 -0
  4. data/lib/slide-em-up/presentation.rb +14 -32
  5. data/lib/slide-em-up/remote_api.rb +2 -1
  6. data/lib/slide-em-up/version.rb +1 -1
  7. data/themes/CSSS/css/slideshow.css +69 -123
  8. data/themes/CSSS/css/theme.css +11 -36
  9. data/themes/CSSS/index.erb +1 -0
  10. data/themes/CSSS/js/prefixfree.min.js +13 -0
  11. data/themes/CSSS/js/slideshow.js +319 -234
  12. data/themes/common/css/pygments/manni.css +61 -0
  13. data/themes/common/fonts/Lato-BoldItalic.woff +0 -0
  14. data/themes/common/fonts/Lato-Italic.woff +0 -0
  15. data/themes/common/fonts/Lato-bold.woff +0 -0
  16. data/themes/common/fonts/Lato.woff +0 -0
  17. data/themes/common/fonts/OpenSans-Bold.woff +0 -0
  18. data/themes/common/fonts/OpenSans-BoldItalic.woff +0 -0
  19. data/themes/common/fonts/OpenSans-Italic.woff +0 -0
  20. data/themes/common/fonts/OpenSans.woff +0 -0
  21. data/themes/common/fonts/PTMono.woff +0 -0
  22. data/themes/common/fonts/PTSans.Bold.Italic.woff +0 -0
  23. data/themes/common/fonts/PTSans.Bold.woff +0 -0
  24. data/themes/common/fonts/PTSans.Italic.woff +0 -0
  25. data/themes/common/fonts/PTSans.Narrow.Bold.woff +0 -0
  26. data/themes/common/fonts/PTSans.Narrow.woff +0 -0
  27. data/themes/common/fonts/PTSans.woff +0 -0
  28. data/themes/io2012/README +2 -0
  29. data/themes/io2012/css/default.css +1481 -0
  30. data/themes/io2012/css/fonts.css +24 -0
  31. data/themes/io2012/css/phone.css +27 -0
  32. data/themes/io2012/images/google_developers_icon_128.png +0 -0
  33. data/themes/io2012/images/io2012_logo.png +0 -0
  34. data/themes/io2012/index.erb +73 -0
  35. data/themes/io2012/js/hammer.js +586 -0
  36. data/themes/io2012/js/modernizr.custom.45394.js +4 -0
  37. data/themes/io2012/js/order.js +8 -0
  38. data/themes/io2012/js/polyfills/classList.min.js +2 -0
  39. data/themes/io2012/js/polyfills/dataset.min.js +2 -0
  40. data/themes/io2012/js/polyfills/history.min.js +1 -0
  41. data/themes/io2012/js/prettify/lang-apollo.js +2 -0
  42. data/themes/io2012/js/prettify/lang-clj.js +18 -0
  43. data/themes/io2012/js/prettify/lang-css.js +2 -0
  44. data/themes/io2012/js/prettify/lang-go.js +1 -0
  45. data/themes/io2012/js/prettify/lang-hs.js +2 -0
  46. data/themes/io2012/js/prettify/lang-lisp.js +3 -0
  47. data/themes/io2012/js/prettify/lang-lua.js +2 -0
  48. data/themes/io2012/js/prettify/lang-ml.js +2 -0
  49. data/themes/io2012/js/prettify/lang-n.js +4 -0
  50. data/themes/io2012/js/prettify/lang-proto.js +1 -0
  51. data/themes/io2012/js/prettify/lang-scala.js +2 -0
  52. data/themes/io2012/js/prettify/lang-sql.js +2 -0
  53. data/themes/io2012/js/prettify/lang-tex.js +1 -0
  54. data/themes/io2012/js/prettify/lang-vb.js +2 -0
  55. data/themes/io2012/js/prettify/lang-vhdl.js +3 -0
  56. data/themes/io2012/js/prettify/lang-wiki.js +2 -0
  57. data/themes/io2012/js/prettify/lang-xq.js +3 -0
  58. data/themes/io2012/js/prettify/lang-yaml.js +2 -0
  59. data/themes/io2012/js/prettify/prettify.css +1 -0
  60. data/themes/io2012/js/prettify/prettify.js +28 -0
  61. data/themes/io2012/js/require-1.0.8.min.js +33 -0
  62. data/themes/io2012/js/slide-controller.js +109 -0
  63. data/themes/io2012/js/slide-deck.js +768 -0
  64. data/themes/io2012/js/slides.js +5 -0
  65. data/themes/memories/css/slideshow.css +191 -50
  66. data/themes/memories/css/theme.css +10 -4
  67. data/themes/memories/index.erb +2 -0
  68. data/themes/memories/js/prefixfree.min.js +13 -0
  69. data/themes/memories/js/slideshow.js +526 -371
  70. data/themes/reveal/README +2 -0
  71. data/themes/reveal/css/main.css +1029 -0
  72. data/themes/reveal/css/reset.css +57 -0
  73. data/themes/reveal/index.erb +102 -0
  74. data/themes/reveal/js/classList.js +2 -0
  75. data/themes/reveal/js/head.min.js +8 -0
  76. data/themes/reveal/js/reveal.js +951 -0
  77. data/themes/shower/css/fonts.css +39 -7
  78. data/themes/shower/css/reset.css +21 -21
  79. data/themes/shower/css/style.css +108 -75
  80. data/themes/shower/index.erb +3 -0
  81. data/themes/shower/js/script.js +160 -92
  82. metadata +80 -18
data/README.md CHANGED
@@ -38,6 +38,15 @@ How to do your first presentation with Slide'em up?
38
38
  8. Use the arrows keys to navigate between the slides
39
39
 
40
40
 
41
+ Themes
42
+ ------
43
+
44
+ Several themes are available: `io2012`, `shower`, `3d_slideshow`, `reveal`,
45
+ `html5rocks`, `CSSS` and `memories`. To choose the theme for your
46
+ presentation, edit the `presentation.json` file and change the `"theme"`
47
+ element.
48
+
49
+
41
50
  Markup for the slides
42
51
  ---------------------
43
52
 
@@ -82,14 +91,6 @@ like this:
82
91
  ```
83
92
 
84
93
 
85
- Themes
86
- ------
87
-
88
- Several themes are available: shower, 3d_slideshow, html5rocks, CSSS
89
- and memories. To choose the theme for your presentation, edit the
90
- `presentation.json` file and change the `"theme"` element.
91
-
92
-
93
94
  Remote Control
94
95
  --------------
95
96
 
@@ -111,16 +112,6 @@ setting the `APIKEY` environment variable:
111
112
  APIKEY=foobar slide-em-up
112
113
 
113
114
 
114
- TODO
115
- ----
116
-
117
- * Same command line stuff than showoff
118
- * Add a showoff theme for compatibility
119
- * Many more themes and features
120
- * Favicon
121
- * Optimize process_code (pygments.rb?)
122
-
123
-
124
115
  Issues or Suggestions
125
116
  ---------------------
126
117
 
@@ -129,21 +120,23 @@ Found an issue or have a suggestion? Please report it on
129
120
 
130
121
  If you wants to make a pull request, please check the specs before:
131
122
 
132
- ./spec/slide-em-up_spec.rb
123
+ bundle exec spec/slide-em-up_spec.rb
133
124
 
134
125
 
135
126
  Credits
136
127
  -------
137
128
 
138
129
  Scott Chacon is the guy who made [ShowOff](https://github.com/schacon/showoff).
139
- Slide'em up is only a copy of ShowOff, where sinatra was replaced by Goliath.
130
+ Slide'em up is only a copy of ShowOff with multiple themes and sinatra
131
+ replaced by Goliath.
140
132
 
141
133
  Themes were picked from the internet. Thanks to:
142
134
 
143
- - Hakim El Hattab for 3d_slideshow
135
+ - Hakim El Hattab for 3d_slideshow and reveal
144
136
  - Google for html5rocks
145
137
  - Vadim Makeev for shower
146
- - Lea Verou for CSSS
138
+ - Lea Verou for CSSS (and its modified version, memories)
139
+ - Google for io2012
147
140
 
148
- Copyright (c) 2011 Bruno Michel <bruno.michel@af83.com>
141
+ ♡2011 by Bruno Michel. Copying is an act of love. Please copy and share.
149
142
  Released under the MIT license
data/lib/slide-em-up.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  module SlideEmUp
2
+ autoload :Markdown, "slide-em-up/markdown"
2
3
  autoload :Presentation, "slide-em-up/presentation"
3
4
  autoload :SlidesAPI, "slide-em-up/slides_api"
4
5
  autoload :RemoteAPI, "slide-em-up/remote_api"
@@ -0,0 +1,41 @@
1
+ # Encoding: utf-8
2
+ require "albino"
3
+ require "redcarpet"
4
+
5
+
6
+ module SlideEmUp
7
+ class Markdown < Redcarpet::Render::HTML
8
+ PARSER_OPTIONS = {
9
+ :no_intra_emphasis => true,
10
+ :tables => true,
11
+ :fenced_code_blocks => true,
12
+ :autolink => true,
13
+ :strikethrough => true,
14
+ :superscript => true
15
+ }
16
+
17
+ def self.render(text)
18
+ text ||= ""
19
+ markdown = Redcarpet::Markdown.new(self, PARSER_OPTIONS)
20
+ markdown.render(text)
21
+ end
22
+
23
+ def block_code(code, lang)
24
+ colorized = Albino.new(code, lang || "text").colorize(:P => "nowrap")
25
+ "<pre><code class=\"#{lang}\">#{colorized}</code></pre>"
26
+ end
27
+
28
+ def strikethrough(text)
29
+ "<s>#{text}</s>"
30
+ end
31
+
32
+ def normal_text(text)
33
+ text.gsub!('« ', '«&nbsp;')
34
+ text.gsub!(/ ([:;»!?])/, '&nbsp;\1')
35
+ text.gsub!(' -- ', '—')
36
+ text.gsub!('...', '…')
37
+ text
38
+ end
39
+
40
+ end
41
+ end
@@ -1,23 +1,27 @@
1
- require "albino"
2
- require "digest/sha1"
3
1
  require "erubis"
4
- require "redcarpet"
5
2
  require "yajl"
6
3
 
7
4
 
8
5
  module SlideEmUp
9
6
  class Presentation
10
- Meta = Struct.new(:title, :dir, :css, :js, :duration)
7
+ Meta = Struct.new(:title, :dir, :css, :js, :author, :duration)
11
8
  Theme = Struct.new(:title, :dir, :css, :js)
12
9
  Section = Struct.new(:number, :title, :dir, :slides)
13
- Slide = Struct.new(:number, :classes, :markdown, :html)
10
+
11
+ class Slide < Struct.new(:number, :classes, :html)
12
+ def extract_title
13
+ return @title if @title
14
+ html.sub!(/<h(\d)>(.*)<\/h\1>/) { @title = $2; "" }
15
+ @title
16
+ end
17
+ end
14
18
 
15
19
  attr_accessor :meta, :theme, :common, :parts
16
20
 
17
21
  def initialize(dir)
18
22
  infos = extract_normal_infos(dir) || extract_infos_from_showoff(dir) || {}
19
23
  infos = { "title" => "No title", "theme" => "shower", "duration" => 60 }.merge(infos)
20
- @meta = build_meta(infos["title"], dir, infos["duration"])
24
+ @meta = build_meta(infos["title"], dir, infos["author"], infos["duration"])
21
25
  @theme = build_theme(infos["theme"])
22
26
  @common = build_theme("common")
23
27
  @parts = infos["sections"] || raise(Exception, "check your presentation.json or showoff.json file")
@@ -52,7 +56,7 @@ module SlideEmUp
52
56
  { "title" => infos["name"], "theme" => "showoff", "sections" => sections }
53
57
  end
54
58
 
55
- def build_meta(title, dir, duration)
59
+ def build_meta(title, dir, author, duration)
56
60
  Meta.new.tap do |m|
57
61
  m.title = title
58
62
  m.dir = dir
@@ -60,6 +64,7 @@ module SlideEmUp
60
64
  m.css = Dir["**/*.css"]
61
65
  m.js = Dir["**/*.js"]
62
66
  end
67
+ m.author = author
63
68
  m.duration = duration
64
69
  end
65
70
  end
@@ -83,34 +88,11 @@ module SlideEmUp
83
88
  slides = parts.map.with_index do |slide,j|
84
89
  @codemap = {}
85
90
  classes, md = slide.split("\n", 2)
86
- tmp = extract_code(md)
87
- html = Redcarpet.new(tmp).to_html
88
- html = process_code(html)
89
- Slide.new(j, classes, md, html)
91
+ html = Markdown.render(md)
92
+ Slide.new(j, classes, html)
90
93
  end
91
94
  Section.new(i, title, dir, slides)
92
95
  end
93
96
  end
94
-
95
- # Code taken from gollum (http://github.com/github/gollum)
96
- def extract_code(md)
97
- md.gsub(/^``` ?(.+?)\r?\n(.+?)\r?\n```\r?$/m) do
98
- id = Digest::SHA1.hexdigest($2)
99
- @codemap[id] = { :lang => $1, :code => $2 }
100
- id
101
- end
102
- end
103
-
104
- def process_code(data)
105
- @codemap.each do |id, spec|
106
- lang, code = spec[:lang], spec[:code]
107
- if code.lines.all? { |line| line =~ /\A\r?\n\Z/ || line =~ /^( |\t)/ }
108
- code.gsub!(/^( |\t)/m, '')
109
- end
110
- output = Albino.new(code, lang).colorize(:P => "nowrap")
111
- data.gsub!(id, "<pre><code class=\"#{lang}\">#{output}</code></pre>")
112
- end
113
- data
114
- end
115
97
  end
116
98
  end
@@ -1,5 +1,6 @@
1
1
  require "goliath/api"
2
2
 
3
+
3
4
  module SlideEmUp
4
5
  class RemoteAPI < Goliath::API
5
6
  def initialize(key)
@@ -39,7 +40,7 @@ module SlideEmUp
39
40
  env['subscription'] = @chan.subscribe do |msg|
40
41
  env.stream_send("data: #{msg}\n\n")
41
42
  end
42
- streaming_response(200, {"Content-Type" => "text/event-stream"})
43
+ streaming_response(202, {"Content-Type" => "text/event-stream"})
43
44
  end
44
45
 
45
46
  def forbidden
@@ -1,3 +1,3 @@
1
1
  module SlideEmUp
2
- VERSION = "0.2.4"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -10,16 +10,8 @@
10
10
  .slide,
11
11
  .delayed,
12
12
  .delayed-children > * {
13
- -webkit-transition:1s;
14
- -ms-transition:1s;
15
- -moz-transition:1s;
16
- -o-transition:1s;
17
- transition:1s;
18
- -moz-transition-property: -webkit-transform, opacity, left, top, right, bottom;
19
- -ms-transition-property: -webkit-transform, opacity, left, top, right, bottom;
20
- -o-transition-property: -webkit-transform, opacity, left, top, right, bottom;
21
- -webkit-transition-property: -webkit-transform, opacity, left, top, right, bottom;
22
- transition-property: -webkit-transform, opacity, left, top, right, bottom;
13
+ transition:.5s;
14
+ transition-property: transform, opacity, left, top, right, bottom, background;
23
15
  }
24
16
 
25
17
  /**
@@ -31,50 +23,40 @@
31
23
  }
32
24
 
33
25
  body {
34
- counter-reset: slide;
35
26
  margin: 0;
36
27
  }
37
28
 
38
- .slide {
39
- visibility: hidden;
40
- position:absolute;
41
- top:0;
42
- right:0;
43
- bottom:0;
44
- left:0;
45
- z-index:1;
46
-
47
- font-size:250%;
48
- line-height:1.6;
49
-
50
- opacity:0;
51
- height:0;
52
- width:0;
53
- overflow:hidden;
54
-
55
- counter-increment: slide;
56
- }
29
+ .slide {
30
+ display: none;
31
+ position:absolute;
32
+ top:0;
33
+ right:0;
34
+ bottom:0;
35
+ left:0;
36
+ z-index:1;
37
+
38
+ font-size:250%;
39
+ line-height:1.6;
40
+ }
57
41
 
58
42
  .slide.previous,
59
43
  .slide:target,
60
- .slide:target + .slide, /* just in case, not really needed */
61
44
  .slide.next {
62
- visibility: visible;
45
+ display: block;
46
+ opacity:0;
47
+ overflow:hidden;
63
48
  }
64
49
 
65
50
  .slide:target {
66
51
  z-index:100;
67
52
  opacity:1;
68
- height:auto;
69
- width: auto;
70
53
  overflow: visible;
71
54
  }
72
55
 
73
56
  /**
74
57
  Slide numbers
75
58
  */
76
- .slide:target::before {
77
- content: counter(slide);
59
+ #indicator {
78
60
  position: absolute;
79
61
  top: .05in;
80
62
  right: .5em;
@@ -88,12 +70,7 @@
88
70
  text-align: center;
89
71
  padding: .1em .3em 0;
90
72
  min-width: 1.6em;
91
- -moz-box-sizing: border-box;
92
- -webkit-box-sizing: border-box;
93
73
  box-sizing: border-box;
94
-
95
- -moz-border-radius: 999px;
96
- -webkit-border-radius: 999px;
97
74
  border-radius: 999px;
98
75
  }
99
76
 
@@ -116,10 +93,48 @@
116
93
  .delayed.current,
117
94
  .delayed-children > .current,
118
95
  .delayed.displayed.non-dismissable,
119
- .delayed-children > .displayed.non-dismissable {
96
+ .delayed-children > .displayed.non-dismissable, /* non-dismissable name is deprecated */
97
+ .delayed.displayed.persistent,
98
+ .delayed-children > .displayed.persistent,
99
+ .delayed-children.persistent > .displayed {
120
100
  opacity: 1;
121
101
  }
122
102
 
103
+ /**
104
+ iframe slides
105
+ */
106
+ .iframe.slide {
107
+ padding: 0 !important;
108
+ text-align: center;
109
+ }
110
+
111
+ .iframe.slide > h1 {
112
+ position: absolute;
113
+ bottom: 0; right: 0; left: 0;
114
+ background: rgba(0,0,0,.5);
115
+ font-size: 100%;
116
+ }
117
+
118
+ .iframe.slide > h1 > a {
119
+ display: inline-block;
120
+ padding: .2em .5em;
121
+
122
+ color: white;
123
+ text-align: center;
124
+ text-decoration: none;
125
+ text-shadow: 0 -.05em .05em black;
126
+ }
127
+
128
+ .slide > iframe:only-of-type {
129
+ position: absolute;
130
+ top: 0;
131
+ left: 0;
132
+ border: 0;
133
+ width: 100%;
134
+ height: 100%;
135
+ margin: 0;
136
+ }
137
+
123
138
  /**
124
139
  Show thumbnails
125
140
  */
@@ -132,9 +147,6 @@
132
147
  .presenter .slide.next {
133
148
  width: 1024px;
134
149
  height: 768px;
135
-
136
- -moz-box-sizing: border-box;
137
- -webkit-box-sizing: border-box;
138
150
  box-sizing: border-box;
139
151
 
140
152
  float: left;
@@ -144,14 +156,7 @@
144
156
  margin:-292px -395px;
145
157
  cursor: pointer;
146
158
 
147
- -moz-transform: scale(.2, .2);
148
- -o-transform: scale(.2, .2);
149
- -webkit-transform: scale(.2, .2);
150
159
  transform: scale(.2, .2);
151
-
152
- -webkit-transition:1s -webkit-transform;
153
- -moz-transition:1s -moz-transform;
154
- -o-transition:1s -o-transform;
155
160
  transition:1s transform;
156
161
  }
157
162
 
@@ -172,7 +177,7 @@
172
177
  .show-thumbnails .slide:target,
173
178
  .presenter .slide:target + .slide {
174
179
  outline: 20px solid rgba(255, 255, 255, .6);
175
- -moz-outline-radius:5px;
180
+ outline-radius:5px;
176
181
 
177
182
  box-shadow: 5px 5px 10px black;
178
183
  }
@@ -198,46 +203,15 @@
198
203
  font-size: 250%;
199
204
  text-align: center;
200
205
  text-shadow: .05em .05em .1em black;
201
-
202
- -moz-transform: none;
203
- -ms-transform: none;
204
- -o-transform: none;
205
- -webkit-transform: none;
206
206
  transform: none;
207
207
  }
208
208
 
209
209
  /* Hide all elements in slide by hitting Ctrl + J or Shift + J */
210
210
  .hide-elements .slide:target > * {
211
211
  opacity: 0;
212
-
213
- -moz-transition:.5s;
214
- -webkit-transition:.5s;
215
- -o-transition:.5s;
216
212
  transition:.5s;
217
213
  }
218
214
 
219
- /* Mark slides as incomplete to spot them easier */
220
- .incomplete.slide::after {
221
- content: 'INCOMPLETE';
222
- font-weight: bold;
223
- position: absolute;
224
- top: 40%;
225
- left: 30%;
226
- padding: .1em .4em 0;
227
- border: .1em solid;
228
- color: rgba(255, 0, 0, .8);
229
- font-size: 140%;
230
-
231
- -moz-border-radius: .2em;
232
- -webkit-border-radius: .2em;
233
- border-radius: .2em;
234
-
235
- -moz-transform: rotate(30deg);
236
- -o-transform: rotate(30deg);
237
- -webkit-transform: rotate(30deg);
238
- transform: rotate(30deg);
239
- }
240
-
241
215
  /* Timer */
242
216
 
243
217
  #timer {
@@ -252,50 +226,25 @@
252
226
  background:rgba(0,0,0,.5);
253
227
  overflow: hidden;
254
228
  text-align: right;
255
-
256
- -moz-box-sizing: border-box;
257
- -webkit-box-sizing: border-box;
258
229
  box-sizing: border-box;
230
+ transition: linear;
259
231
  }
260
232
 
261
- #timer:before {
262
- content: 'Progress ';
263
- text-transform: uppercase;
264
- color: white;
265
- font-size: 9px;
266
- }
233
+ #timer:before {
234
+ content: 'Progress ';
235
+ text-transform: uppercase;
236
+ color: white;
237
+ font-size: 9px;
238
+ }
267
239
 
268
240
  #timer.end {
269
241
  width: 100%;
270
242
  }
271
243
 
272
- /* Ribbon */
273
- [data-type].slide:not(.hide-ribbon):after {
274
- content: attr(data-type);
275
- position: fixed;
276
- top: 0;
244
+ #timer.end.overtime {
245
+ width: 0%;
246
+ left: auto;
277
247
  right: 0;
278
- color: white;
279
- font-size: 50%;
280
- text-align: center;
281
- text-transform: uppercase;
282
- font-weight: bold;
283
- background: hsl(40,100%,50%);
284
- background-image: -webkit-linear-gradient(rgba(255, 255, 255, .3), rgba(255, 255, 255, 0));
285
- background-image: -moz-linear-gradient(rgba(255, 255, 255, .3), rgba(255, 255, 255, 0));
286
- background-image: -o-linear-gradient(rgba(255, 255, 255, .3), rgba(255, 255, 255, 0));
287
- line-height: 1.6;
288
- min-width: 20em;
289
-
290
- -moz-box-shadow: 0 10px 5px -5px rgba(0,0,0,.3);
291
- -webkit-box-shadow: 0 10px 5px -5px rgba(0,0,0,.3);
292
- box-shadow: 0 10px 5px -5px rgba(0,0,0,.3);
293
-
294
- -moz-transform: rotate(45deg) translate(6em, -2em);
295
- -ms-transform: rotate(45deg) translate(6em, -2em);
296
- -webkit-transform: rotate(45deg) translate(6em, -2em);
297
- -o-transform: rotate(45deg) translate(6em, -2em);
298
- transform: rotate(45deg) translate(6em, -2em);
299
248
  }
300
249
 
301
250
  /* Presenter & projector views */
@@ -320,9 +269,6 @@
320
269
  background: rgba(255, 255, 255, .5);
321
270
  color: black;
322
271
  text-shadow: 0 1px white;
323
-
324
- -moz-box-shadow: .1em .1em .3em rgba(0,0,0,.5) inset;
325
- -webkit-box-shadow: .1em .1em .3em rgba(0,0,0,.5) inset;
326
272
  box-shadow: .1em .1em .3em rgba(0,0,0,.5) inset;
327
273
  }
328
274
 
@@ -337,4 +283,4 @@
337
283
 
338
284
  .presenter .slide:target > .presenter-notes {
339
285
  display: block;
340
- }
286
+ }