jekyll-theme-switch 0.1.1 → 0.5.1.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +18 -22
  3. data/_includes/footer.html +27 -2
  4. data/_includes/head.html +34 -5
  5. data/_includes/post_meta.html +44 -7
  6. data/_includes/rss/post.html +4 -0
  7. data/_layouts/archive.html +1 -1
  8. data/_layouts/category_page.html +30 -10
  9. data/_layouts/default.html +1 -4
  10. data/_layouts/holidays.html +1 -1
  11. data/_layouts/home.html +37 -11
  12. data/_layouts/monthly_archive.html +2 -2
  13. data/_layouts/page.html +29 -7
  14. data/_layouts/post.html +53 -23
  15. data/_layouts/rss.html +32 -0
  16. data/_layouts/series_index.html +1 -1
  17. data/_layouts/series_post.html +3 -3
  18. data/_layouts/tag_page.html +30 -10
  19. data/_layouts/wrapped.html +6 -0
  20. data/_layouts/yearly_archive.html +2 -2
  21. data/_plugins/blog_series_plugin.rb +16 -0
  22. data/_plugins/category_tag_filter.rb +36 -0
  23. data/_plugins/filesize_filter.rb +13 -0
  24. data/_plugins/normalize_whitespace_filter.rb +10 -0
  25. data/_plugins/songlink_tag_plugin.rb +18 -0
  26. data/_plugins/video_tag_plugin.rb +62 -0
  27. data/_plugins/vimeo_tag_plugin.rb +23 -0
  28. data/_plugins/yearly_archive_plugin.rb +81 -0
  29. data/_sass/jekyll-theme-switch/_base.scss +1 -1
  30. data/_sass/jekyll-theme-switch/_dark.scss +51 -5
  31. data/_sass/jekyll-theme-switch/_layout.scss +157 -20
  32. data/_sass/jekyll-theme-switch/_syntax-highlighting.scss +0 -1
  33. data/assets/css/jekyll-theme-switch.scss +5 -5
  34. data/assets/image/arnaud-jaegers-OkXIepDkNBE-unsplash.jpg +0 -0
  35. data/assets/image/fabian-betto-d3npqyXkaGI-unsplash.jpg +0 -0
  36. data/assets/image/jonatan-pie-g6tqHx0ME1o-unsplash.jpg +0 -0
  37. data/assets/image/marek-piwnicki-NPct-Mxw-64-unsplash.jpg +0 -0
  38. metadata +21 -34
@@ -1,5 +1,5 @@
1
1
  ---
2
- layout: default
2
+ layout: wrapped
3
3
  ---
4
4
 
5
5
  <div class="tag-index">
@@ -7,16 +7,36 @@ layout: default
7
7
 
8
8
  <ul class="post-list">
9
9
  {% for post in page.posts %}
10
- <li {% if post.lead_image %}style="background-image: linear-gradient(90deg, rgba(255,255,255,1) 50%, rgba(255,255,255,0.7) 80%), url('{{ post.lead_image }}'); background-size: contain;"{% endif %}>
11
- {% include post_meta.html post=post %}
10
+ {% if post.lead_image %}
11
+ <style type="text/css" scoped>
12
+ li#post-{{ post.id | slugify }} {
13
+ background-image: linear-gradient(90deg, rgba(255,255,255,1) 50%, rgba(255,255,255,0.7) 80%),
14
+ url('{{ post.lead_image | prepend: site.baseurl | prepend: site.url }}');
15
+ background-size: cover;
16
+ background-repeat: no-repeat;
17
+ background-position-x: right;
18
+ }
12
19
 
13
- <h2>
14
- <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
15
- </h2>
16
- <div>
17
- {{ post.excerpt }}
18
- </div>
19
- <a href="{{ post.url | prepend: site.baseurl }}">lees verder</a>
20
+ @media (prefers-color-scheme: dark) {
21
+ li#post-{{ post.id | slugify }} {
22
+ background-image: linear-gradient(90deg, rgba(31,31,31,1) 50%, rgba(31,31,31,0.7) 80%),
23
+ url('{{ post.lead_image | prepend: site.baseurl | prepend: site.url }}');
24
+ }
25
+ }
26
+ </style>
27
+ {% endif %}
28
+ <li id="post-{{ post.id | slugify }}">
29
+ <article>
30
+ {% include post_meta.html post=post %}
31
+
32
+ <h2>
33
+ <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
34
+ </h2>
35
+ <div>
36
+ {{ post.excerpt }}
37
+ </div>
38
+ <a href="{{ post.url | prepend: site.baseurl }}">lees verder</a>
39
+ </article>
20
40
  </li>
21
41
  {% endfor %}
22
42
  </ul>
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ <div class="wrapper">
5
+ {{ content }}
6
+ </div>
@@ -1,5 +1,5 @@
1
1
  ---
2
- layout: default
2
+ layout: wrapped
3
3
  ---
4
4
  <div class="yearly-archive">
5
5
  <div>
@@ -12,7 +12,7 @@ layout: default
12
12
  <dl>
13
13
  {% for post in group.items reversed %}
14
14
  <dt>{% include date.html date=post.date %}</dt>
15
- <dd><a href="{{ post.url }}"><span>{{ post.title }}</span></a></dd>
15
+ <dd><a href="{{ post.url | prepend: site.baseurl }}"><span>{{ post.title }}</span></a></dd>
16
16
  {% endfor %}
17
17
  </dl>
18
18
  {% endfor %}
@@ -0,0 +1,16 @@
1
+
2
+
3
+ Jekyll::Hooks.register :site, :pre_render do |site|
4
+
5
+ seriesIndexes = site.posts.docs
6
+ .select { |p| p.data.key? 'series_slug' }
7
+ .reduce(Hash.new {|h,k| h[k] = []} ) { |series, post| series[post.data['series_slug']] << post; series }
8
+
9
+ seriesPosts = site.posts.docs
10
+ .select { |p| p.data.key? 'series' }
11
+ .reduce(Hash.new {|h,k| h[k] = []}) { |series, post| series[post.data['series']] << post; series }
12
+
13
+ seriesIndexes.each { |slug, posts| posts.each {|post| post.data['series_posts'] = seriesPosts[slug] }}
14
+ seriesPosts.each { |slug, posts| posts.each {|post| post.data['series_index'] = seriesIndexes[slug] }}
15
+ end
16
+
@@ -0,0 +1,36 @@
1
+
2
+ module Jekyll
3
+ module CategoryTagFilter
4
+ def taglinks(input)
5
+ site = @context.registers[:site]
6
+ input.map do |tag|
7
+ "<a href=\"#{site.baseurl}/#{site.config['tag_dir']}/#{tag}\">#{tag}</a>"
8
+ end
9
+ end
10
+
11
+ def categorylinks(input)
12
+ site = @context.registers[:site]
13
+ input.map do |cat|
14
+ "<a href=\"#{site.baseurl}/#{site.config['category_dir']}/#{cat}\">#{cat}</a>"
15
+ end
16
+ end
17
+ end
18
+
19
+ class CategoryLinkTag < Liquid::Tag
20
+ def initialize(tag_name, text, tokens)
21
+ super
22
+ @text = text
23
+ end
24
+
25
+ def render(context)
26
+ @context = context
27
+ site = context.registers[:site]
28
+ dir = site.config['category_dir'] || 'categories'
29
+
30
+ "/#{dir}/#{@text}"
31
+ end
32
+ end
33
+ end
34
+
35
+ Liquid::Template.register_tag('category_link', Jekyll::CategoryLinkTag)
36
+ Liquid::Template.register_filter(Jekyll::CategoryTagFilter)
@@ -0,0 +1,13 @@
1
+
2
+ module Jekyll
3
+ module FilesizeFilter
4
+ def filesize(input)
5
+ site = @context.registers[:site]
6
+ file = site.static_files.find {|f| f.path.end_with?(input) }
7
+
8
+ File.size(file.path)
9
+ end
10
+ end
11
+ end
12
+
13
+ Liquid::Template.register_filter(Jekyll::FilesizeFilter)
@@ -0,0 +1,10 @@
1
+
2
+ module Jekyll
3
+ module NormalizeWhitespaceFilter
4
+ def normalize_whitespace(input)
5
+ input.gsub(/\s+/, ' ')
6
+ end
7
+ end
8
+ end
9
+
10
+ Liquid::Template.register_filter(Jekyll::NormalizeWhitespaceFilter)
@@ -0,0 +1,18 @@
1
+
2
+ module Jekyll
3
+ class SonglinkTag < Liquid::Tag
4
+ @songlink = ''
5
+
6
+ def initialize(tag_name, markup, tokens)
7
+ @songlink = markup.split(' ').first
8
+ end
9
+
10
+ def render(context)
11
+ output = super
12
+ url = "https://embed.song.link/?url=#{@songlink}&theme=light"
13
+ songlink = "<iframe width='100%' height='414' src='#{url}' frameborder='0' allowfullscreen sandbox='allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox'></iframe>"
14
+ end
15
+ end
16
+ end
17
+
18
+ Liquid::Template.register_tag('songlink', Jekyll::SonglinkTag)
@@ -0,0 +1,62 @@
1
+ # Title: Simple Video tag for Jekyll
2
+ # Author: Brandon Mathis http://brandonmathis.com
3
+ # Description: Easily output MPEG4 HTML5 video with a flash backup.
4
+ #
5
+ # Syntax {% video url/to/video [width height] [url/to/poster] %}
6
+ #
7
+ # Example:
8
+ # {% video http://site.com/video.mp4 720 480 http://site.com/poster-frame.jpg %}
9
+ #
10
+ # Output:
11
+ # <video width='720' height='480' preload='none' controls poster='http://site.com/poster-frame.jpg'>
12
+ # <source src='http://site.com/video.mp4' type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'/>
13
+ # </video>
14
+ #
15
+
16
+ module Jekyll
17
+
18
+ class VideoTag < Liquid::Tag
19
+ @video = nil
20
+ @poster = ''
21
+ @height = ''
22
+ @width = ''
23
+
24
+ def initialize(tag_name, markup, tokens)
25
+ @videos = markup.scan(/((https?:\/\/|\/)\S+\.(webm|ogv|mp4)\S*)/i).map(&:first).compact
26
+ @poster = markup.scan(/((https?:\/\/|\/)\S+\.(png|gif|jpe?g)\S*)/i).map(&:first).compact.first
27
+ @sizes = markup.scan(/\s(\d\S+)/i).map(&:first).compact
28
+ super
29
+ end
30
+
31
+ def render(context)
32
+ output = super
33
+ types = {
34
+ '.mp4' => "type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'",
35
+ '.ogv' => "type='video/ogg; codecs=theora, vorbis'",
36
+ '.webm' => "type='video/webm; codecs=vp8, vorbis'"
37
+ }
38
+ if @videos.size > 0
39
+ video = "<video #{sizes} preload='metadata' controls #{poster}>"
40
+ @videos.each do |v|
41
+ video << "<source src='#{v}' #{types[File.extname(v)]}>"
42
+ end
43
+ video += "</video>"
44
+ else
45
+ "Error processing input, expected syntax: {% video url/to/video [url/to/video] [url/to/video] [width height] [url/to/poster] %}"
46
+ end
47
+ end
48
+
49
+ def poster
50
+ "poster='#{@poster}'" if @poster
51
+ end
52
+
53
+ def sizes
54
+ attrs = "width='#{@sizes[0]}'" if @sizes[0]
55
+ attrs += " height='#{@sizes[1]}'" if @sizes[1]
56
+ attrs
57
+ end
58
+ end
59
+ end
60
+
61
+ Liquid::Template.register_tag('video', Jekyll::VideoTag)
62
+
@@ -0,0 +1,23 @@
1
+
2
+ class VimeoEmbed < Liquid::Tag
3
+
4
+ def initialize(tagName, content, tokens)
5
+ super
6
+ @content = content
7
+ content[/([0-9]+)/]
8
+ @vimeo_id = $1
9
+ end
10
+
11
+ def render(context)
12
+ tmpl_path = File.join Dir.pwd, "_includes", "vimeo.html"
13
+ if File.exist?(tmpl_path)
14
+ tmpl = File.read tmpl_path
15
+ site = context.registers[:site]
16
+ tmpl = (Liquid::Template.parse tmpl).render site.site_payload.merge!({"vimeo_id" => @vimeo_id})
17
+ else
18
+ %Q{<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style><div class='embed-container'> <iframe title="vimeo video player" width="640" height="390" src="//www.vimeo.com/embed/#{ @vimeo_id }" frameborder="0" allowfullscreen></iframe></div>}
19
+ end
20
+ end
21
+
22
+ Liquid::Template.register_tag "vimeo", self
23
+ end
@@ -0,0 +1,81 @@
1
+ # Jekyll Module to create yearly archive pages
2
+ #
3
+ # Shigeya Suzuki, November 2013
4
+ # Copyright notice (MIT License) attached at the end of this file
5
+ #
6
+
7
+ #
8
+ # This code is based on the following works:
9
+ # https://gist.github.com/ilkka/707909
10
+ # https://gist.github.com/ilkka/707020
11
+ # https://gist.github.com/nlindley/6409459
12
+ #
13
+
14
+ #
15
+ # Archive will be written as #{archive_path}/#{year}/#{month}/index.html
16
+ # archive_path can be configured in 'path' key in 'yearly_archive' of
17
+ # site configuration file. 'path' is default null.
18
+ #
19
+
20
+ module Jekyll
21
+
22
+ module YearlyArchiveUtil
23
+ def self.archive_base(site)
24
+ site.config['yearly_archive'] && site.config['yearly_archive']['path'] || ''
25
+ end
26
+ end
27
+
28
+ # Generator class invoked from Jekyll
29
+ class YearlyArchiveGenerator < Generator
30
+ def generate(site)
31
+ posts_by_year = posts_group_by_year(site)
32
+ site.pages << ArchivePage.new(site, YearlyArchiveUtil.archive_base(site), posts_by_year)
33
+ end
34
+
35
+ def posts_group_by_year(site)
36
+ site.posts.docs.each.group_by { |post| post.date.year }
37
+ end
38
+
39
+ end
40
+
41
+ class ArchivePage < Page
42
+ def initialize(site, dir, posts_by_year)
43
+ @site = site
44
+ @dir = dir
45
+ @years = posts_by_year
46
+ @layout = 'archive'
47
+ self.ext = '.html'
48
+ self.basename = 'archive'
49
+ self.data = {
50
+ 'layout' => @layout,
51
+ 'type' => 'archive',
52
+ 'title' => 'Archieven',
53
+ 'site_header' => 'Archieven',
54
+ 'years' => @years,
55
+ 'url' => File.join('/', YearlyArchiveUtil.archive_base(site), 'archives.html')
56
+ }
57
+ end
58
+ end
59
+ end
60
+
61
+ # The MIT License (MIT)
62
+ #
63
+ # Copyright (c) 2013 Shigeya Suzuki
64
+ #
65
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
66
+ # of this software and associated documentation files (the "Software"), to deal
67
+ # in the Software without restriction, including without limitation the rights
68
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
69
+ # copies of the Software, and to permit persons to whom the Software is
70
+ # furnished to do so, subject to the following conditions:
71
+ #
72
+ # The above copyright notice and this permission notice shall be included in all
73
+ # copies or substantial portions of the Software.
74
+ #
75
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
76
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
77
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
78
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
79
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
80
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
81
+ # SOFTWARE.
@@ -126,7 +126,7 @@ a {
126
126
  color: $brand-color;
127
127
 
128
128
  &:visited {
129
- color: darken($brand-color, 15%);
129
+ color: adjust-hue($brand-color, +120deg);
130
130
  }
131
131
 
132
132
  &:hover {
@@ -1,26 +1,72 @@
1
-
2
1
  @media (prefers-color-scheme: dark) {
3
2
  body {
4
3
  color: $text-color-dark;
5
4
  }
6
5
 
6
+ .post-meta ul li {
7
+ .meta-text {
8
+ color: $grey-color-dark;
9
+ }
10
+
11
+ .meta-icon svg {
12
+ fill: $grey-color-dark;
13
+ }
14
+ }
15
+
7
16
  body,
8
17
  .page-content,
9
18
  .post-content,
19
+ {
20
+ background-color: $background-color-dark;
21
+ }
22
+
23
+ body > header,
24
+ body > footer,
25
+ article div.series-header,
26
+ article div.series-footer,
10
27
  .pagination,
28
+ .post-list > li,
11
29
  .site-nav,
12
30
  .section-nav,
13
31
  .post-nav,
14
- .post-list li
15
- {
16
- background-color: $background-color-dark;
32
+ .post-content tbody tr:nth-child(odd) {
33
+ background-color: lighten($background-color-dark, 5%);
34
+ }
35
+
36
+ .post-content {
37
+ td, th {
38
+ border-bottom-color: $brand-color-dark;
39
+ }
40
+
41
+ q {
42
+ background-color: lighten($background-color-dark, 10);
43
+ }
44
+ }
45
+
46
+ .pagination,
47
+ .post-nav,
48
+ .section-nav {
49
+ .button {
50
+ border-color: $grey-color-dark;
51
+
52
+ &.disabled {
53
+ color: $grey-color-dark;
54
+ }
55
+ }
56
+ }
57
+
58
+ .highlight,
59
+ pre,
60
+ code {
61
+ background-color: lighten($background-color-dark, 10%);
62
+ border-color: $grey-color-dark;
17
63
  }
18
64
 
19
65
  a {
20
66
  color: $brand-color-dark;
21
67
 
22
68
  &:visited {
23
- color: lighten($brand-color-dark, 15%);
69
+ color: adjust-hue($brand-color-dark, -120deg);
24
70
  }
25
71
 
26
72
  &:hover {
@@ -4,6 +4,7 @@
4
4
  .site-header {
5
5
  border-top: 5px solid $grey-color-dark;
6
6
  min-height: 56px;
7
+ z-index: 100;
7
8
 
8
9
  // Positioning context for the mobile navigation icon
9
10
  position: relative;
@@ -101,6 +102,10 @@
101
102
  margin-left: 0;
102
103
  }
103
104
 
105
+ .footer-wide {
106
+ text-align: center;
107
+ }
108
+
104
109
  .footer-col-wrapper {
105
110
  font-size: 15px;
106
111
  color: $grey-color;
@@ -189,6 +194,33 @@
189
194
  .post-meta {
190
195
  font-size: $small-font-size;
191
196
  color: $grey-color;
197
+
198
+ ul {
199
+ display: flex;
200
+ flex-wrap: wrap;
201
+ list-style: none;
202
+ margin: 0;
203
+
204
+ li {
205
+ display: flex;
206
+ flex-shrink: 0;
207
+ flex-wrap: nowrap;
208
+ align-items: center;
209
+
210
+ .meta-icon {
211
+ line-height: 0.8;
212
+
213
+ svg {
214
+ fill: $grey-color;
215
+ height: 24px;
216
+ }
217
+ }
218
+
219
+ .meta-text {
220
+ margin: 4px;
221
+ }
222
+ }
223
+ }
192
224
  }
193
225
 
194
226
  .post-link {
@@ -240,6 +272,20 @@
240
272
  }
241
273
  }
242
274
 
275
+ q {
276
+ font-style: italic;
277
+ background-color: darken($background-color, 10);
278
+ quotes: "«" "»" "‹" "›";
279
+
280
+ &:before {
281
+ content: open-quote;
282
+ }
283
+
284
+ &:after {
285
+ content: close-quote;
286
+ }
287
+ }
288
+
243
289
  table {
244
290
  width: 100%;
245
291
  border-collapse: collapse;
@@ -252,18 +298,60 @@
252
298
  border-bottom: thin solid $brand-color;
253
299
  }
254
300
 
255
- tbody tr:nth-child(odd) {background-color: #f2f2f2;}
301
+ tbody tr:nth-child(odd) {
302
+ background-color: darken($background-color, 5%);
303
+ }
256
304
  }
257
305
 
258
306
  .pagination,
259
307
  .post-nav,
260
308
  .section-nav {
261
- text-align: center;
262
- background-color: white;
263
- padding: $spacing-unit;
264
- margin: $spacing-unit 0;
309
+ display: flex;
310
+ justify-content: space-between;
311
+ text-align: center;
312
+ background-color: white;
313
+ padding: $spacing-unit;
314
+ margin: $spacing-unit 0;
315
+ border-radius: 4px;
316
+ @include BoxShadow(1);
317
+
318
+ .button {
319
+ display: flex;
320
+ align-items: center;
321
+
322
+ min-width: 64px;
323
+ height: 36px;
324
+ padding: 0 16px 0 12px;
325
+
326
+ font-size: 14px;
327
+ font-weight: bold;
328
+
329
+ text-decoration: none;
330
+ text-transform: uppercase;
331
+
265
332
  border-radius: 4px;
266
- @include BoxShadow(1);
333
+ border: thin solid $grey-color-light;
334
+
335
+ &.disabled {
336
+ color: $grey-color-light;
337
+ }
338
+
339
+ &.previous {
340
+ padding: 0 16px 0 12px;
341
+
342
+ .material-icons {
343
+ padding-right: 8px;
344
+ }
345
+ }
346
+
347
+ &.next {
348
+ padding: 0 12px 0 16px;
349
+
350
+ .material-icons {
351
+ padding-left: 8px;
352
+ }
353
+ }
354
+ }
267
355
  }
268
356
 
269
357
  .post-nav + h3 {
@@ -287,13 +375,8 @@ span.button,
287
375
  padding: 5pt 15pt;
288
376
  }
289
377
 
290
- div.post-nav .button,
291
- div.pagination span.button,
292
- div.pagination a.button {
293
- margin: 0 5%;
294
- }
295
-
296
378
  a.button:hover,
379
+ .pagination a:hover,
297
380
  .post-nav a:hover,
298
381
  .section-nav a:hover {
299
382
  background: lightgray;
@@ -343,14 +426,16 @@ article div.comment
343
426
  article div.series-header,
344
427
  article div.series-footer
345
428
  {
346
- border: thin dotted lightgrey;
347
- padding: 1em;
348
- margin: 1em 0;
349
- clear: both;
350
-
351
- :last-child {
352
- margin-bottom: 0;
353
- }
429
+ background-color: white;
430
+ padding: $spacing-unit;
431
+ margin: $spacing-unit 0;
432
+ border-radius: 4px;
433
+ @include BoxShadow(1);
434
+ clear: both;
435
+
436
+ :last-child {
437
+ margin-bottom: 0;
438
+ }
354
439
  }
355
440
 
356
441
  .yearly-archive dl h2 {
@@ -387,3 +472,55 @@ article div.series-footer
387
472
  grid-template-columns: 12em 1fr;
388
473
  margin-bottom: 1em;
389
474
  }
475
+
476
+ .page-content .post {
477
+ .lead-image {
478
+ position: relative;
479
+ top: -1.5em;
480
+ display: flex;
481
+ flex-direction: column;
482
+ background-size: cover;
483
+ background-position: 50%;
484
+ background-color: #707070;
485
+ background-blend-mode: color-dodge;
486
+ box-shadow: inset 0 -8px 10px 1px rgba(0, 0, 0, .14),
487
+ inset 0 -3px 14px 2px rgba(0, 0, 0, .12),
488
+ inset 0 -5px 5px -3px rgba(0, 0, 0, .20);
489
+
490
+ header {
491
+ text-align: center;
492
+ align-self: center;
493
+ padding-top: 100px;
494
+ padding-bottom: 60px;
495
+ color: black;
496
+ max-width: 90vw;
497
+ display: flex;
498
+ flex-direction: column;
499
+ justify-content: space-around;
500
+ gap: 4px;
501
+
502
+ .post-title {
503
+ font-size: 7vw;
504
+ margin-bottom: 0;
505
+ }
506
+
507
+ ul {
508
+ justify-content: center;
509
+ gap: 16px;
510
+
511
+ li {
512
+ background-color: rgba(255, 255, 255, 0.9);
513
+ border-radius: 4px;
514
+ padding: 4px;
515
+ align-items: center;
516
+ }
517
+ }
518
+ }
519
+ }
520
+
521
+ .lead-image-credit {
522
+ text-align: center;
523
+ font-style: italic;
524
+ color: $grey-color;
525
+ }
526
+ }
@@ -2,7 +2,6 @@
2
2
  * Syntax highlighting styles
3
3
  */
4
4
  .highlight {
5
- background: #fff;
6
5
  @extend %vertical-rhythm;
7
6
 
8
7
  .c { color: #998; font-style: italic } // Comment