jekyll-theme-chirpy 5.0.2 → 6.2.2

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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +64 -74
  3. data/_data/locales/ar.yml +91 -0
  4. data/_data/locales/bg-BG.yml +81 -0
  5. data/_data/locales/cs-CZ.yml +89 -0
  6. data/_data/locales/de-DE.yml +80 -0
  7. data/_data/locales/el-GR.yml +91 -0
  8. data/_data/locales/en.yml +23 -23
  9. data/_data/locales/es-ES.yml +77 -0
  10. data/_data/locales/fi-FI.yml +90 -0
  11. data/_data/locales/fr-FR.yml +77 -0
  12. data/_data/locales/hu-HU.yml +79 -0
  13. data/_data/locales/id-ID.yml +5 -19
  14. data/_data/locales/it-IT.yml +90 -0
  15. data/_data/locales/ko-KR.yml +12 -19
  16. data/_data/locales/my-MM.yml +77 -0
  17. data/_data/locales/pt-BR.yml +77 -0
  18. data/_data/locales/ru-RU.yml +77 -0
  19. data/_data/locales/sl-SI.yml +91 -0
  20. data/_data/locales/sv-SE.yml +91 -0
  21. data/_data/locales/th.yml +91 -0
  22. data/_data/locales/tr-TR.yml +77 -0
  23. data/_data/locales/uk-UA.yml +77 -0
  24. data/_data/locales/vi-VN.yml +76 -0
  25. data/_data/locales/zh-CN.yml +13 -20
  26. data/_data/locales/zh-TW.yml +83 -0
  27. data/_data/origin/basic.yml +48 -0
  28. data/_data/origin/cors.yml +59 -0
  29. data/_includes/comments/disqus.html +27 -31
  30. data/_includes/comments/giscus.html +64 -0
  31. data/_includes/comments/utterances.html +2 -2
  32. data/_includes/datetime.html +20 -0
  33. data/_includes/embed/twitch.html +4 -0
  34. data/_includes/embed/youtube.html +6 -0
  35. data/_includes/footer.html +31 -32
  36. data/_includes/head.html +66 -46
  37. data/_includes/js-selector.html +83 -45
  38. data/_includes/jsdelivr-combine.html +26 -0
  39. data/_includes/lang.html +1 -1
  40. data/_includes/mermaid.html +30 -29
  41. data/_includes/metadata-hook.html +1 -0
  42. data/_includes/mode-toggle.html +66 -51
  43. data/_includes/notification.html +24 -0
  44. data/_includes/origin-type.html +13 -0
  45. data/_includes/post-nav.html +26 -22
  46. data/_includes/post-paginator.html +79 -76
  47. data/_includes/post-sharing.html +27 -16
  48. data/_includes/read-time.html +17 -10
  49. data/_includes/refactor-content.html +129 -73
  50. data/_includes/related-posts.html +48 -58
  51. data/_includes/search-loader.html +32 -31
  52. data/_includes/search-results.html +4 -5
  53. data/_includes/sidebar.html +79 -67
  54. data/_includes/toc.html +4 -7
  55. data/_includes/topbar.html +62 -56
  56. data/_includes/trending-tags.html +15 -19
  57. data/_includes/update-list.html +14 -15
  58. data/_layouts/archives.html +25 -29
  59. data/_layouts/categories.html +97 -58
  60. data/_layouts/category.html +8 -10
  61. data/_layouts/default.html +67 -31
  62. data/_layouts/home.html +67 -56
  63. data/_layouts/page.html +20 -58
  64. data/_layouts/post.html +85 -94
  65. data/_layouts/tag.html +8 -10
  66. data/_layouts/tags.html +6 -5
  67. data/_sass/addon/commons.scss +679 -878
  68. data/_sass/addon/module.scss +70 -23
  69. data/_sass/addon/syntax.scss +127 -110
  70. data/_sass/addon/variables.scss +16 -18
  71. data/_sass/colors/syntax-dark.scss +138 -0
  72. data/_sass/colors/syntax-light.scss +179 -0
  73. data/_sass/colors/{dark-typography.scss → typography-dark.scss} +58 -56
  74. data/_sass/colors/typography-light.scss +110 -0
  75. data/_sass/layout/archives.scss +86 -89
  76. data/_sass/layout/categories.scss +29 -13
  77. data/_sass/layout/category-tag.scss +9 -10
  78. data/_sass/layout/home.scss +132 -114
  79. data/_sass/layout/post.scss +213 -173
  80. data/_sass/layout/tags.scss +1 -1
  81. data/_sass/main.scss +13 -0
  82. data/assets/404.html +1 -20
  83. data/assets/css/jekyll-theme-chirpy.scss +6 -0
  84. data/assets/feed.xml +2 -2
  85. data/assets/js/data/search.json +8 -5
  86. data/assets/js/data/swcache.js +14 -29
  87. data/assets/js/dist/categories.min.js +2 -4
  88. data/assets/js/dist/commons.min.js +2 -4
  89. data/assets/js/dist/home.min.js +2 -4
  90. data/assets/js/dist/misc.min.js +4 -0
  91. data/assets/js/dist/page.min.js +2 -4
  92. data/assets/js/dist/post.min.js +2 -4
  93. data/assets/js/pwa/app.js +42 -4
  94. data/assets/js/pwa/sw.js +46 -44
  95. data/assets/js/pwa/unregister.js +12 -0
  96. metadata +64 -32
  97. data/_config.yml +0 -175
  98. data/_data/contact.yml +0 -30
  99. data/_data/share.yml +0 -27
  100. data/_includes/css-selector.html +0 -15
  101. data/_includes/no-zero-date.html +0 -13
  102. data/_includes/timeago.html +0 -26
  103. data/_plugins/posts-lastmod-hook.rb +0 -14
  104. data/_sass/colors/dark-syntax.scss +0 -87
  105. data/_sass/colors/light-syntax.scss +0 -79
  106. data/_sass/colors/light-typography.scss +0 -81
  107. data/_sass/jekyll-theme-chirpy.scss +0 -24
  108. data/_tabs/about.md +0 -8
  109. data/_tabs/archives.md +0 -7
  110. data/_tabs/categories.md +0 -6
  111. data/_tabs/tags.md +0 -6
  112. data/assets/css/style.scss +0 -12
  113. data/assets/js/dist/pvreport.min.js +0 -6
  114. data/index.html +0 -4
@@ -1,109 +1,159 @@
1
1
  /*
2
2
  The common styles
3
3
  */
4
- @import url('https://fonts.googleapis.com/css2?family=Lato&family=Source+Sans+Pro:wght@400;600;900&display=swap');
5
4
 
6
- @mixin mode-toggle($dark-mode: false) {
7
- @if $dark-mode {
8
- @include dark-scheme;
9
- } @else {
10
- @include light-scheme;
11
- }
12
- }
13
-
14
- html:not([mode]),
15
- html[mode=light] {
16
- @include mode-toggle();
17
- }
18
-
19
- html[mode=dark] {
20
- @include mode-toggle(true);
21
- }
5
+ html {
6
+ @media (prefers-color-scheme: light) {
7
+ &:not([data-mode]),
8
+ &[data-mode='light'] {
9
+ @include light-scheme;
10
+ }
22
11
 
23
- @media (prefers-color-scheme: dark) {
24
- html:not([mode]),
25
- html[mode=dark] {
26
- @include mode-toggle(true);
12
+ &[data-mode='dark'] {
13
+ @include dark-scheme;
14
+ }
27
15
  }
28
16
 
29
- html[mode=light] {
30
- @include mode-toggle();
17
+ @media (prefers-color-scheme: dark) {
18
+ &:not([data-mode]),
19
+ &[data-mode='dark'] {
20
+ @include dark-scheme;
21
+ }
22
+
23
+ &[data-mode='light'] {
24
+ @include light-scheme;
25
+ }
31
26
  }
32
- }
33
27
 
34
- :root {
35
28
  font-size: 16px;
36
29
  }
37
30
 
38
31
  body {
39
- line-height: 1.75rem;
40
- background: var(--body-bg);
32
+ background: var(--main-bg);
33
+ padding: env(safe-area-inset-top) env(safe-area-inset-right)
34
+ env(safe-area-inset-bottom) env(safe-area-inset-left);
41
35
  color: var(--text-color);
42
36
  -webkit-font-smoothing: antialiased;
43
- font-family: 'Source Sans Pro', 'Microsoft Yahei', sans-serif;
37
+ font-family: $font-family-base;
44
38
  }
45
39
 
46
40
  /* --- Typography --- */
47
41
 
48
- h1 {
49
- @extend %heading;
42
+ @for $i from 1 through 5 {
43
+ h#{$i} {
44
+ @extend %heading;
50
45
 
51
- font-size: 1.9rem;
52
- }
46
+ @if $i > 1 {
47
+ @extend %section;
48
+ @extend %anchor;
49
+ }
50
+
51
+ @if $i < 5 {
52
+ $factor: 0.18rem;
53
53
 
54
- h2 {
55
- @extend %heading;
56
- @extend %section;
57
- @extend %anchor-relative;
54
+ @if $i == 1 {
55
+ $factor: 0.23rem;
56
+ }
58
57
 
59
- font-size: 1.5rem;
58
+ font-size: 1rem + (5 - $i) * $factor;
59
+ } @else {
60
+ font-size: 1rem;
61
+ }
62
+ }
60
63
  }
61
64
 
62
- h3 {
63
- @extend %heading;
64
- @extend %section;
65
- @extend %anchor;
65
+ a {
66
+ @extend %link-color;
66
67
 
67
- font-size: 1.2rem;
68
+ text-decoration: none;
68
69
  }
69
70
 
70
- h4 {
71
- @extend %heading;
72
- @extend %section;
73
- @extend %anchor;
71
+ img {
72
+ max-width: 100%;
73
+ height: auto;
74
+ transition: all 0.35s ease-in-out;
75
+
76
+ &[data-src] {
77
+ &[data-lqip='true'] {
78
+ &.lazyload,
79
+ &.lazyloading {
80
+ -webkit-filter: blur(20px);
81
+ filter: blur(20px);
82
+ }
83
+ }
74
84
 
75
- font-size: 1.15rem;
76
- }
85
+ &:not([data-lqip='true']) {
86
+ &.lazyload,
87
+ &.lazyloading {
88
+ background: var(--img-bg);
89
+ }
77
90
 
78
- h5 {
79
- @extend %heading;
80
- @extend %section;
81
- @extend %anchor;
91
+ &.lazyloaded {
92
+ -webkit-animation: fade-in 0.35s ease-in;
93
+ animation: fade-in 0.35s ease-in;
94
+ }
95
+ }
82
96
 
83
- font-size: 1.1rem;
84
- }
97
+ &.shadow {
98
+ -webkit-filter: drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.08));
99
+ filter: drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.08));
100
+ box-shadow: none !important; /* cover the Bootstrap 4.6.1 styles */
101
+ }
85
102
 
86
- ol,
87
- ul {
88
- ol,
89
- ul {
90
- margin-bottom: 1rem;
103
+ @extend %img-caption;
91
104
  }
92
- }
93
105
 
94
- a {
95
- @extend %link-color;
96
- }
106
+ @-webkit-keyframes fade-in {
107
+ from {
108
+ opacity: 0;
109
+ }
110
+ to {
111
+ opacity: 1;
112
+ }
113
+ }
97
114
 
98
- img {
99
- max-width: 100%;
100
- height: auto;
115
+ @keyframes fade-in {
116
+ from {
117
+ opacity: 0;
118
+ }
119
+ to {
120
+ opacity: 1;
121
+ }
122
+ }
101
123
  }
102
124
 
103
125
  blockquote {
104
126
  border-left: 5px solid var(--blockquote-border-color);
105
127
  padding-left: 1rem;
106
128
  color: var(--blockquote-text-color);
129
+
130
+ &[class^='prompt-'] {
131
+ border-left: 0;
132
+ position: relative;
133
+ padding: 1rem 1rem 1rem 3rem;
134
+ color: var(--prompt-text-color);
135
+
136
+ @extend %rounded;
137
+
138
+ &::before {
139
+ text-align: center;
140
+ width: 3rem;
141
+ position: absolute;
142
+ left: 0.25rem;
143
+ margin-top: 0.4rem;
144
+ text-rendering: auto;
145
+ -webkit-font-smoothing: antialiased;
146
+ }
147
+
148
+ > p:last-child {
149
+ margin-bottom: 0;
150
+ }
151
+ }
152
+
153
+ @include prompt('tip', '\f0eb', 'regular');
154
+ @include prompt('info', '\f06a');
155
+ @include prompt('warning', '\f06a');
156
+ @include prompt('danger', '\f071');
107
157
  }
108
158
 
109
159
  kbd {
@@ -123,92 +173,50 @@ kbd {
123
173
  }
124
174
 
125
175
  footer {
126
- position: absolute;
127
- bottom: 0;
128
- padding: 0 1rem;
129
- height: $footer-height;
130
176
  font-size: 0.8rem;
177
+ background-color: var(--main-bg);
178
+ height: $footer-height;
179
+ border-top: 1px solid var(--main-border-color);
131
180
 
132
- > div.d-flex {
133
- line-height: 1.2rem;
134
- width: 95%;
135
- max-width: 1045px;
136
- border-top: 1px solid var(--main-border-color);
137
- margin-bottom: 1rem;
138
-
139
- > div {
140
- width: 350px;
141
- }
142
- }
181
+ @extend %text-color;
143
182
 
144
183
  a {
145
- @extend %text-color;
146
-
147
- &:link {
148
- @include no-text-decoration;
149
- }
184
+ @extend %text-highlight;
150
185
 
151
186
  &:hover {
152
187
  @extend %link-hover;
153
-
154
- @include no-text-decoration;
155
188
  }
156
189
  }
157
190
 
158
- .footer-right {
159
- text-align: right;
191
+ p {
192
+ line-height: 1.75;
193
+ text-align: center;
194
+ margin-bottom: 0;
160
195
  }
161
196
  }
162
197
 
163
- i { // fontawesome icons
198
+ /* fontawesome icons */
199
+ i {
164
200
  &.far,
165
201
  &.fas {
166
202
  @extend %no-cursor;
167
203
  }
168
204
  }
169
205
 
170
- @keyframes fade-in {
171
- from { opacity: 0; }
172
- to { opacity: 1; }
173
- }
174
-
175
- img[data-src] {
176
- margin: 0.5rem 0;
177
-
178
- &[data-loaded=true] {
179
- animation: fade-in linear 0.5s;
180
- }
181
-
182
- &.left {
183
- float: left;
184
- margin: 0.75rem 1rem 1rem 0;
185
- }
186
-
187
- &.right {
188
- float: right;
189
- margin: 0.75rem 0 1rem 1rem;
190
- }
191
-
192
- &.shadow {
193
- filter: drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.08));
194
- }
195
- }
196
-
197
206
  /* --- Panels --- */
198
207
 
199
208
  .access {
200
209
  top: 2rem;
201
210
  transition: top 0.2s ease-in-out;
202
- margin-right: 1.5rem;
203
211
  margin-top: 3rem;
204
212
  margin-bottom: 4rem;
205
213
 
206
214
  &:only-child {
207
- position: -webkit-sticky; /* Safari */
215
+ position: -webkit-sticky;
208
216
  position: sticky;
209
217
  }
210
218
 
211
- > div {
219
+ > section {
212
220
  padding-left: 1rem;
213
221
  border-left: 1px solid var(--main-border-color);
214
222
 
@@ -217,52 +225,34 @@ img[data-src] {
217
225
  }
218
226
  }
219
227
 
220
- .post-content {
228
+ .content {
221
229
  font-size: 0.9rem;
222
230
  }
223
-
224
231
  }
225
232
 
226
233
  #panel-wrapper {
227
- // the headings
234
+ /* the headings */
228
235
  .panel-heading {
236
+ font-family: inherit;
237
+ line-height: inherit;
238
+
229
239
  @include label(inherit);
230
240
  }
231
241
 
232
242
  .post-tag {
233
- display: inline-block;
234
- line-height: 1rem;
243
+ line-height: 1.05rem;
235
244
  font-size: 0.85rem;
236
- background: none;
237
- border: 1px solid var(--btn-border-color);
238
245
  border-radius: 0.8rem;
239
246
  padding: 0.3rem 0.5rem;
240
247
  margin: 0 0.35rem 0.5rem 0;
241
248
 
242
249
  &:hover {
243
- background-color: #2a408e;
244
- border-color: #2a408e;
245
- color: #fff;
246
- transition: none;
250
+ transition: all 0.3s ease-in;
247
251
  }
248
252
  }
249
-
250
- &.topbar-down > div {
251
- top: 6rem;
252
- }
253
253
  }
254
254
 
255
255
  #access-lastmod {
256
- li {
257
- height: 1.8rem;
258
- overflow: hidden;
259
- text-overflow: ellipsis;
260
- display: -webkit-box;
261
- -webkit-line-clamp: 1;
262
- -webkit-box-orient: vertical;
263
- list-style: none;
264
- }
265
-
266
256
  a {
267
257
  &:hover {
268
258
  @extend %link-hover;
@@ -272,7 +262,6 @@ img[data-src] {
272
262
 
273
263
  color: inherit;
274
264
  }
275
-
276
265
  }
277
266
 
278
267
  .footnotes > ol {
@@ -289,15 +278,6 @@ img[data-src] {
289
278
  margin-top: 0;
290
279
  margin-bottom: 0;
291
280
  }
292
-
293
- // [scroll-focus] added by `smooth-scroll.js`
294
- &:target:not([scroll-focus]),
295
- &[scroll-focus=true] > p {
296
- background-color: var(--footnote-target-bg);
297
- width: fit-content;
298
- -webkit-transition: background-color 1.5s ease-in-out; /* Safari prior 6.1 */
299
- transition: background-color 1.5s ease-in-out;
300
- }
301
281
  }
302
282
  }
303
283
 
@@ -307,15 +287,8 @@ img[data-src] {
307
287
  @include pl-pr(2px);
308
288
 
309
289
  border-bottom-style: none !important;
310
- -webkit-transition: background-color 1.5s ease-in-out; /* Safari prior 6.1 */
311
290
  transition: background-color 1.5s ease-in-out;
312
291
  }
313
-
314
- // [scroll-focus] added by `smooth-scroll.js`
315
- @at-root sup:target:not([scroll-focus]),
316
- sup[scroll-focus=true] > a#{&} {
317
- background-color: var(--footnote-target-bg);
318
- }
319
292
  }
320
293
 
321
294
  .reversefootnote {
@@ -331,7 +304,7 @@ img[data-src] {
331
304
 
332
305
  /* --- Begin of Markdown table style --- */
333
306
 
334
- // it will be created by Liquid
307
+ /* it will be created by Liquid */
335
308
  .table-wrapper {
336
309
  overflow-x: auto;
337
310
  margin-bottom: 1.5rem;
@@ -365,55 +338,70 @@ img[data-src] {
365
338
  @extend %table-cell;
366
339
  }
367
340
  }
368
- } // tbody
369
- }// table
341
+ } /* tbody */
342
+ } /* table */
370
343
  }
371
344
 
372
345
  /* --- post --- */
373
346
 
374
- .post {
375
- h1 {
376
- margin-top: 3rem;
377
- margin-bottom: 1.5rem;
347
+ .post-preview {
348
+ @extend %rounded;
349
+
350
+ border: 0;
351
+ background: var(--card-bg);
352
+ box-shadow: var(--card-shadow);
353
+
354
+ &::before {
355
+ @extend %rounded;
356
+
357
+ content: '';
358
+ width: 100%;
359
+ height: 100%;
360
+ position: absolute;
361
+ background-color: var(--card-hovor-bg);
362
+ opacity: 0;
363
+ transition: opacity 0.35s ease-in-out;
378
364
  }
379
365
 
380
- a {
381
- &.img-link {
382
- @extend %no-cursor;
366
+ &:hover {
367
+ &::before {
368
+ opacity: 0.3;
383
369
  }
370
+ }
371
+ }
384
372
 
385
- // created by `_includes/img-extra.html`
386
- &.popup {
387
- cursor: zoom-in;
373
+ main {
374
+ line-height: 1.75;
375
+ min-height: calc(100vh - $topbar-height - $footer-height);
376
+
377
+ h1 {
378
+ margin-top: 2rem;
379
+ margin-bottom: 1.5rem;
380
+ }
388
381
 
389
- > img[data-src]:not(.normal):not(.left):not(.right) {
382
+ p {
383
+ > img[data-src],
384
+ > a.popup {
385
+ &:not(.normal):not(.left):not(.right) {
390
386
  @include align-center;
391
387
  }
392
388
  }
389
+ }
393
390
 
394
- &:hover {
395
- code {
396
- @extend %link-hover;
397
- }
391
+ .categories,
392
+ #tags,
393
+ #archives {
394
+ a:not(:hover) {
395
+ @extend %no-bottom-border;
398
396
  }
399
- } // a
400
-
401
- }
402
-
403
- .pageviews .fa-spinner {
404
- font-size: 80%;
397
+ }
405
398
  }
406
399
 
407
400
  .post-meta {
408
401
  font-size: 0.85rem;
409
- word-spacing: 1px;
410
402
 
411
403
  a {
412
- &:not(:last-child) {
413
- margin-right: 2px;
414
- }
415
-
416
- &:hover {
404
+ &:not([class]):hover {
417
405
  @extend %link-hover;
418
406
  }
419
407
  }
@@ -423,14 +411,20 @@ img[data-src] {
423
411
  }
424
412
  }
425
413
 
426
- .post-content {
414
+ .content {
427
415
  font-size: 1.08rem;
428
- line-height: 1.8;
429
416
  margin-top: 2rem;
430
417
  overflow-wrap: break-word;
431
- word-wrap: break-word;
432
418
 
433
419
  a {
420
+ &.popup {
421
+ @extend %no-cursor;
422
+ @extend %img-caption;
423
+ @include mt-mb(0.5rem);
424
+
425
+ cursor: zoom-in;
426
+ }
427
+
434
428
  &:not(.img-link) {
435
429
  @extend %link-underline;
436
430
 
@@ -438,26 +432,41 @@ img[data-src] {
438
432
  @extend %link-hover;
439
433
  }
440
434
  }
435
+ }
441
436
 
442
- &.img-link + em {
443
- display: block;
444
- text-align: center;
445
- font-style: normal;
446
- font-size: 80%;
447
- padding: 0;
448
- color: #6d6c6c;
449
- }
437
+ ol,
438
+ ul {
439
+ &:not([class]),
440
+ &.task-list {
441
+ -webkit-padding-start: 1.75rem;
442
+ padding-inline-start: 1.75rem;
443
+
444
+ li {
445
+ margin: 0.25rem 0;
446
+ padding-left: 0.25rem;
447
+ }
450
448
 
449
+ ol,
450
+ ul {
451
+ -webkit-padding-start: 1.25rem;
452
+ padding-inline-start: 1.25rem;
453
+ margin: 0.5rem 0;
454
+ }
455
+ }
451
456
  }
452
457
 
453
- ul {
454
- // attribute 'hide-bullet' was added by liquid
455
- .task-list-item[hide-bullet] {
458
+ ul.task-list {
459
+ -webkit-padding-start: 1.25rem;
460
+ padding-inline-start: 1.25rem;
461
+
462
+ li {
456
463
  list-style-type: none;
464
+ padding-left: 0;
457
465
 
458
- > i { // checkbox icon
459
- margin: 0 0.4rem 0.2rem -1.4rem;
460
- vertical-align: middle;
466
+ /* checkbox icon */
467
+ > i {
468
+ width: 2rem;
469
+ margin-left: -1.25rem;
461
470
  color: var(--checkbox-color);
462
471
 
463
472
  &.checked {
@@ -465,40 +474,26 @@ img[data-src] {
465
474
  }
466
475
  }
467
476
 
477
+ ul {
478
+ -webkit-padding-start: 1.75rem;
479
+ padding-inline-start: 1.75rem;
480
+ }
468
481
  }
469
482
 
470
- input[type=checkbox] {
483
+ input[type='checkbox'] {
471
484
  margin: 0 0.5rem 0.2rem -1.3rem;
472
485
  vertical-align: middle;
473
486
  }
474
-
475
- } // ul
476
-
477
- > ol,
478
- > ul {
479
- padding-left: 2rem;
480
-
481
- li {
482
- ol,
483
- ul { // sub list
484
- padding-left: 2rem;
485
- margin-top: 0.3rem;
486
- }
487
- }
488
-
489
- }
490
-
491
- > ol {
492
- li {
493
- padding-left: 0.25em;
494
- }
495
- }
487
+ } /* ul */
496
488
 
497
489
  dl > dd {
498
490
  margin-left: 1rem;
499
491
  }
500
492
 
501
- } // .post-content
493
+ ::marker {
494
+ color: var(--text-muted-color);
495
+ }
496
+ } /* .content */
502
497
 
503
498
  .tag:hover {
504
499
  @extend %tag-hover;
@@ -508,22 +503,73 @@ img[data-src] {
508
503
  display: inline-block;
509
504
  min-width: 2rem;
510
505
  text-align: center;
511
- background: var(--tag-bg);
512
- border-radius: 0.3rem;
506
+ border-radius: 0.5rem;
507
+ border: 1px solid var(--btn-border-color);
513
508
  padding: 0 0.4rem;
514
- color: inherit;
509
+ color: var(--text-muted-color);
515
510
  line-height: 1.3rem;
516
511
 
517
512
  &:not(:last-child) {
518
513
  margin-right: 0.2rem;
519
514
  }
515
+ }
520
516
 
521
- &:hover {
522
- @extend %tag-hover;
517
+ .rounded-10 {
518
+ border-radius: 10px !important;
519
+ }
523
520
 
524
- border-bottom: none;
525
- text-decoration: none;
526
- color: #d2603a;
521
+ .img-link {
522
+ color: transparent;
523
+ display: inline-flex;
524
+ }
525
+
526
+ .shimmer {
527
+ overflow: hidden;
528
+ position: relative;
529
+ background: var(--img-bg);
530
+
531
+ &::before {
532
+ content: '';
533
+ position: absolute;
534
+ background: var(--shimmer-bg);
535
+ height: 100%;
536
+ width: 100%;
537
+ -webkit-animation: shimmer 1s infinite;
538
+ animation: shimmer 1s infinite;
539
+ }
540
+
541
+ @-webkit-keyframes shimmer {
542
+ 0% {
543
+ transform: translateX(-100%);
544
+ }
545
+ 100% {
546
+ transform: translateX(100%);
547
+ }
548
+ }
549
+
550
+ @keyframes shimmer {
551
+ 0% {
552
+ transform: translateX(-100%);
553
+ }
554
+ 100% {
555
+ transform: translateX(100%);
556
+ }
557
+ }
558
+ }
559
+
560
+ .embed-video {
561
+ width: 100%;
562
+ height: 100%;
563
+ margin-bottom: 1rem;
564
+
565
+ @extend %rounded;
566
+
567
+ &.youtube {
568
+ aspect-ratio: 16 / 9;
569
+ }
570
+
571
+ &.twitch {
572
+ aspect-ratio: 310 / 189;
527
573
  }
528
574
  }
529
575
 
@@ -562,28 +608,32 @@ img[data-src] {
562
608
  }
563
609
 
564
610
  .flex-grow-1 {
565
- -ms-flex-positive: 1 !important;
566
611
  flex-grow: 1 !important;
567
612
  }
568
613
 
569
614
  .btn-box-shadow {
570
- box-shadow: 0 0 8px 0 var(--btn-box-shadow) !important;
571
- }
572
-
573
- .topbar-up {
574
- top: -3rem !important; /* same as topbar height. */
615
+ box-shadow: var(--card-shadow);
575
616
  }
576
617
 
577
- .no-text-decoration {
578
- @include no-text-decoration;
618
+ /* overwrite bootstrap muted */
619
+ .text-muted {
620
+ color: var(--text-muted-color) !important;
579
621
  }
580
622
 
581
- .tooltip-inner { /* Overrided BS4 Tooltip */
623
+ /* Overwrite bootstrap tooltip */
624
+ .tooltip-inner {
582
625
  font-size: 0.7rem;
583
626
  max-width: 220px;
584
627
  text-align: left;
585
628
  }
586
629
 
630
+ /* Overwrite bootstrap outline button */
631
+ .btn.btn-outline-primary {
632
+ &:not(.disabled):hover {
633
+ border-color: #007bff !important;
634
+ }
635
+ }
636
+
587
637
  .disabled {
588
638
  color: rgb(206, 196, 196);
589
639
  pointer-events: auto;
@@ -601,23 +651,47 @@ img[data-src] {
601
651
  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
602
652
  }
603
653
 
654
+ .left {
655
+ float: left;
656
+ margin: 0.75rem 1rem 1rem 0 !important;
657
+ }
658
+
659
+ .right {
660
+ float: right;
661
+ margin: 0.75rem 0 1rem 1rem !important;
662
+ }
663
+
604
664
  /* --- Overriding --- */
605
665
 
606
- // magnific-popup
666
+ /* magnific-popup */
667
+
607
668
  figure .mfp-title {
608
669
  text-align: center;
609
670
  padding-right: 0;
610
671
  margin-top: 0.5rem;
611
672
  }
612
673
 
613
- // mermaid
674
+ .mfp-img {
675
+ transition: none;
676
+ }
677
+
678
+ /* mermaid */
614
679
  .mermaid {
615
680
  text-align: center;
616
681
  }
617
682
 
683
+ /* MathJax */
684
+ mjx-container {
685
+ overflow-y: hidden;
686
+ min-width: auto !important;
687
+ }
688
+
618
689
  /* --- sidebar layout --- */
619
690
 
620
- $sidebar-display: "sidebar-display";
691
+ $sidebar-display: 'sidebar-display';
692
+ $btn-gap: 0.8rem; // for the bottom icons
693
+ $btn-border-width: 3px;
694
+ $btn-mb: 0.5rem;
621
695
 
622
696
  #sidebar {
623
697
  @include pl-pr(0);
@@ -630,6 +704,7 @@ $sidebar-display: "sidebar-display";
630
704
  width: $sidebar-width;
631
705
  z-index: 99;
632
706
  background: var(--sidebar-bg);
707
+ border-right: 1px solid var(--sidebar-border-color);
633
708
 
634
709
  /* Hide scrollbar for Chrome, Safari and Opera */
635
710
  &::-webkit-scrollbar {
@@ -637,229 +712,204 @@ $sidebar-display: "sidebar-display";
637
712
  }
638
713
 
639
714
  /* Hide scrollbar for IE, Edge and Firefox */
640
- -ms-overflow-style: none; /* IE and Edge */
641
- scrollbar-width: none; /* Firefox */
642
-
643
- a {
644
- @extend %sidebar-links;
715
+ -ms-overflow-style: none; /* IE and Edge */
716
+ scrollbar-width: none; /* Firefox */
645
717
 
718
+ %sidebar-link-hover {
646
719
  &:hover {
647
- @include no-text-decoration;
648
-
649
- color: var(--sidebar-active-color) !important;
720
+ color: var(--sidebar-active-color);
650
721
  }
651
722
  }
652
723
 
653
- #avatar {
654
- > a {
655
- display: block;
656
- width: 6rem;
657
- height: 6rem;
658
- border-radius: 50%;
659
- border: 2px solid rgba(222, 222, 222, 0.7);
660
- overflow: hidden;
661
- transform: translateZ(0); // fixed the zoom in Safari
662
- -webkit-transition: border-color 0.35s ease-in-out;
663
- -moz-transition: border-color 0.35s ease-in-out;
664
- transition: border-color 0.35s ease-in-out;
724
+ a {
725
+ @extend %sidebar-links;
726
+ }
665
727
 
666
- &:hover {
667
- border-color: white;
668
- }
669
- }
728
+ #avatar {
729
+ display: block;
730
+ width: 7rem;
731
+ height: 7rem;
732
+ overflow: hidden;
733
+ box-shadow: var(--avatar-border-color) 0 0 0 2px;
734
+ transform: translateZ(0); /* fixed the zoom in Safari */
670
735
 
671
736
  img {
672
- width: 100%;
673
- height: 100%;
674
- -webkit-transition: transform 0.5s;
675
- -moz-transition: transform 0.5s;
676
737
  transition: transform 0.5s;
677
738
 
678
739
  &:hover {
679
- -ms-transform: scale(1.2);
680
- -moz-transform: scale(1.2);
681
- -webkit-transform: scale(1.2);
682
740
  transform: scale(1.2);
683
741
  }
684
742
  }
685
- } // #avatar
743
+ }
744
+
745
+ .profile-wrapper {
746
+ @include mt-mb(2.5rem);
747
+ @extend %clickable-transition;
748
+
749
+ padding-left: 2.5rem;
750
+ padding-right: 1.25rem;
751
+ width: 100%;
752
+ }
686
753
 
687
754
  .site-title {
755
+ font-family: inherit;
756
+ font-weight: 900;
757
+ font-size: 1.75rem;
758
+ line-height: 1.2;
759
+ letter-spacing: 0.25px;
760
+ margin-top: 1.25rem;
761
+ margin-bottom: 0.5rem;
762
+
688
763
  a {
689
764
  @extend %clickable-transition;
765
+ @extend %sidebar-link-hover;
690
766
 
691
- font-weight: 900;
692
- font-size: 1.5rem;
693
- letter-spacing: 0.5px;
694
- color: rgba(134, 133, 133, 99%);
767
+ color: var(--site-title-color);
695
768
  }
696
769
  }
697
770
 
698
771
  .site-subtitle {
699
772
  font-size: 95%;
700
- color: var(--sidebar-muted-color);
701
- line-height: 1.2rem;
773
+ color: var(--site-subtitle-color);
774
+ margin-top: 0.25rem;
702
775
  word-spacing: 1px;
703
- margin: 0.5rem 1.5rem 0.5rem 1.5rem;
704
- min-height: 3rem; // avoid vertical shifting in multi-line words
776
+ -webkit-user-select: none;
777
+ -moz-user-select: none;
778
+ -ms-user-select: none;
705
779
  user-select: none;
706
780
  }
707
781
 
708
- .nav-link {
709
- border-radius: 0;
710
- font-size: 0.95rem;
711
- font-weight: 600;
712
- letter-spacing: 1px;
713
- display: table-cell;
714
- vertical-align: middle;
715
- }
716
-
717
- .nav-item {
718
- text-align: center;
719
- display: table;
720
- height: $tab-height;
721
-
722
- &.active {
723
- .nav-link {
724
- color: var(--sidebar-active-color);
725
- }
726
- }
727
-
728
- &:not(.active) > a {
729
- @extend %clickable-transition;
730
- }
731
- }
732
-
733
782
  ul {
734
- height: $tab-height * $tab-count;
735
783
  margin-bottom: 2rem;
736
- padding-left: 0;
737
784
 
738
- li {
785
+ li.nav-item {
786
+ opacity: 0.9;
739
787
  width: 100%;
788
+ padding-left: 1.5rem;
789
+ padding-right: 1.5rem;
790
+
791
+ a.nav-link {
792
+ @include pt-pb(0.6rem);
740
793
 
741
- &:last-child {
742
- a {
743
- position: relative;
744
- left: $cursor-width / 2;
745
- width: 100%;
794
+ display: flex;
795
+ align-items: center;
796
+ border-radius: 0.75rem;
797
+ font-weight: 600;
798
+
799
+ &:hover {
800
+ background-color: var(--sidebar-hover-bg);
746
801
  }
747
802
 
748
- &::after { // the cursor
749
- display: table;
750
- visibility: hidden;
751
- content: "";
752
- position: relative;
753
- right: 1px;
754
- width: $cursor-width;
755
- height: $tab-cursor-height;
756
- border-radius: 1px;
757
- background-color: var(--nav-cursor-color);
758
- pointer-events: none;
803
+ i {
804
+ font-size: 95%;
805
+ opacity: 0.8;
806
+ margin-right: 1.5rem;
759
807
  }
760
- }
761
- } // li
762
808
 
763
- @mixin fix-cursor($top) {
764
- top: $top;
765
- visibility: visible;
766
- }
809
+ span {
810
+ font-size: 90%;
811
+ letter-spacing: 0.2px;
812
+ }
813
+ }
767
814
 
768
- @for $i from 1 through $tab-count {
769
- $offset: $tab-count - $i;
770
- $top: -$offset * $tab-height + ($tab-height - $tab-cursor-height) / 2;
815
+ &.active {
816
+ .nav-link {
817
+ color: var(--sidebar-active-color);
818
+ background-color: var(--sidebar-hover-bg);
771
819
 
772
- @if $i < $tab-count {
773
- > li.active:nth-child(#{$i}),
774
- > li.nav-item:nth-child(#{$i}):hover {
775
- ~ li:last-child::after {
776
- @include fix-cursor($top);
820
+ span {
821
+ opacity: 1;
777
822
  }
778
823
  }
779
- } @else {
780
- > li.active:nth-child(#{$i}):last-child::after,
781
- > li.nav-item:nth-child(#{$i}):last-child:hover::after {
782
- @include fix-cursor($top);
783
- }
784
824
  }
785
825
 
786
- } // @for
787
-
788
- } // ul
826
+ &:not(:first-child) {
827
+ margin-top: 0.25rem;
828
+ }
829
+ }
830
+ }
789
831
 
790
832
  .sidebar-bottom {
791
- margin-bottom: 2.1rem;
792
-
793
- @include ml-mr(auto);
794
- @include pl-pr(1rem);
833
+ padding-left: 2rem;
834
+ padding-right: 1rem;
835
+ margin-bottom: 1.5rem;
795
836
 
796
- %icon {
797
- width: 2.4rem;
837
+ %button {
838
+ width: 1.75rem;
839
+ height: 1.75rem;
840
+ margin-bottom: $btn-mb; // multi line gap
841
+ border-radius: 50%;
842
+ color: var(--sidebar-btn-color);
843
+ background-color: var(--sidebar-btn-bg);
798
844
  text-align: center;
845
+ display: flex;
846
+ align-items: center;
847
+ justify-content: center;
848
+ box-shadow: var(--sidebar-border-color) 0 0 0 1px;
849
+
850
+ &:hover {
851
+ background-color: var(--sidebar-hover-bg);
852
+ }
799
853
  }
800
854
 
801
855
  a {
802
- @extend %icon;
856
+ @extend %button;
857
+ @extend %sidebar-link-hover;
803
858
  @extend %clickable-transition;
859
+
860
+ &:not(:last-child) {
861
+ margin-right: $btn-gap;
862
+ }
804
863
  }
805
864
 
806
865
  i {
807
- font-size: 1.2rem;
808
866
  line-height: 1.75rem;
809
867
  }
810
868
 
811
869
  .mode-toggle {
812
870
  padding: 0;
813
871
  border: 0;
814
- margin-bottom: 1px;
815
- background-color: transparent;
816
872
 
817
- @extend %icon;
873
+ @extend %button;
818
874
  @extend %sidebar-links;
819
-
820
- > i {
821
- @extend %clickable-transition;
822
- }
823
-
824
- &:hover > i {
825
- color: var(--sidebar-active-color);
826
- }
875
+ @extend %sidebar-link-hover;
827
876
  }
828
877
 
829
878
  .icon-border {
830
879
  @extend %no-cursor;
880
+ @include ml-mr(calc(($btn-gap - $btn-border-width) / 2));
831
881
 
832
- background-color: var(--sidebar-muted-color);
833
- content: "";
834
- width: 3px;
835
- height: 3px;
882
+ background-color: var(--sidebar-btn-color);
883
+ content: '';
884
+ width: $btn-border-width;
885
+ height: $btn-border-width;
836
886
  border-radius: 50%;
887
+ margin-bottom: $btn-mb;
837
888
  }
838
-
839
- } // .sidebar-bottom
840
-
841
- } // #sidebar
889
+ } /* .sidebar-bottom */
890
+ } /* #sidebar */
842
891
 
843
892
  @media (hover: hover) {
844
893
  #sidebar ul > li:last-child::after {
845
- -webkit-transition: top 0.5s ease;
846
- -moz-transition: top 0.5s ease;
847
- -o-transition: top 0.5s ease;
848
894
  transition: top 0.5s ease;
849
895
  }
850
- }
851
896
 
852
- .profile-wrapper {
853
- margin-top: 2rem;
854
- width: 100%;
897
+ .nav-link {
898
+ transition: background-color 0.3s ease-in-out;
899
+ }
900
+
901
+ .post-preview {
902
+ transition: background-color 0.35s ease-in-out;
903
+ }
855
904
  }
856
905
 
857
906
  #search-result-wrapper {
858
907
  display: none;
859
908
  height: 100%;
909
+ width: 100%;
860
910
  overflow: auto;
861
911
 
862
- .post-content {
912
+ .content {
863
913
  margin-top: 2rem;
864
914
  }
865
915
  }
@@ -868,24 +918,17 @@ $sidebar-display: "sidebar-display";
868
918
 
869
919
  #topbar-wrapper {
870
920
  height: $topbar-height;
871
- position: fixed;
872
- top: 0;
873
- left: $sidebar-width; /* same as sidebar width */
874
- right: 0;
875
- transition: top 0.2s ease-in-out;
876
- z-index: 50;
877
- border-bottom: 1px solid rgba(0, 0, 0, 0.07);
878
- background-color: var(--topbar-wrapper-bg);
921
+ background-color: var(--topbar-bg);
879
922
  }
880
923
 
881
924
  #topbar {
882
- i { // icons
883
- color: #999;
925
+ button i {
926
+ color: #999999;
884
927
  }
885
928
 
886
929
  #breadcrumb {
887
930
  font-size: 1rem;
888
- color: gray;
931
+ color: var(--text-muted-color);
889
932
  padding-left: 0.5rem;
890
933
 
891
934
  a:hover {
@@ -895,25 +938,60 @@ $sidebar-display: "sidebar-display";
895
938
  span {
896
939
  &:not(:last-child) {
897
940
  &::after {
898
- content: "";
941
+ content: '';
899
942
  padding: 0 0.3rem;
900
943
  }
901
944
  }
902
945
  }
903
946
  }
904
- } // #topbar
947
+ } /* #topbar */
905
948
 
906
- #sidebar-trigger,
907
- #search-trigger {
908
- display: none;
949
+ ::-webkit-input-placeholder {
950
+ @include placeholder;
951
+ }
952
+
953
+ ::-moz-placeholder {
954
+ @include placeholder;
955
+ }
956
+
957
+ :-ms-input-placeholder {
958
+ @include placeholder;
959
+ }
960
+
961
+ ::-ms-input-placeholder {
962
+ @include placeholder;
963
+ }
964
+
965
+ ::placeholder {
966
+ @include placeholder;
967
+ }
968
+
969
+ :focus::-webkit-input-placeholder {
970
+ @include placeholder-focus;
971
+ }
972
+
973
+ :focus::-moz-placeholder {
974
+ @include placeholder-focus;
909
975
  }
910
976
 
911
- #search-wrapper {
977
+ :focus:-ms-input-placeholder {
978
+ @include placeholder-focus;
979
+ }
980
+
981
+ :focus::-ms-input-placeholder {
982
+ @include placeholder-focus;
983
+ }
984
+
985
+ :focus::placeholder {
986
+ @include placeholder-focus;
987
+ }
988
+
989
+ search {
912
990
  display: flex;
913
- width: 85%;
991
+ width: 100%;
914
992
  border-radius: 1rem;
915
- border: 1px solid var(--search-wrapper-border-color);
916
- background: var(--search-wrapper-bg);
993
+ border: 1px solid var(--search-border-color);
994
+ background: var(--main-bg);
917
995
  padding: 0 0.5rem;
918
996
 
919
997
  i {
@@ -921,18 +999,18 @@ $sidebar-display: "sidebar-display";
921
999
  font-size: 0.9rem;
922
1000
  color: var(--search-icon-color);
923
1001
  }
1002
+ }
924
1003
 
925
- .fa-times-circle { /* button 'clean up' */
926
- @extend %cursor-pointer;
927
-
928
- visibility: hidden;
929
- }
1004
+ #sidebar-trigger,
1005
+ #search-trigger {
1006
+ display: none;
930
1007
  }
931
1008
 
932
- #search-cancel { /* 'Cancel' link */
1009
+ /* 'Cancel' link */
1010
+ #search-cancel {
933
1011
  color: var(--link-color);
934
- margin-left: 1rem;
935
1012
  display: none;
1013
+ white-space: nowrap;
936
1014
 
937
1015
  @extend %cursor-pointer;
938
1016
  }
@@ -943,17 +1021,10 @@ $sidebar-display: "sidebar-display";
943
1021
  border-radius: 0;
944
1022
  padding: 0.18rem 0.3rem;
945
1023
  color: var(--text-color);
1024
+ height: auto;
946
1025
 
947
1026
  &:focus {
948
1027
  box-shadow: none;
949
- background: center;
950
-
951
- &.form-control {
952
- &::-webkit-input-placeholder { @include input-placeholder; }
953
- &::-moz-placeholder { @include input-placeholder; }
954
- &:-ms-input-placeholder { @include input-placeholder; }
955
- &::placeholder { @include input-placeholder; }
956
- }
957
1028
  }
958
1029
  }
959
1030
 
@@ -974,7 +1045,7 @@ $sidebar-display: "sidebar-display";
974
1045
  margin: 0 1.25rem 1rem 0;
975
1046
 
976
1047
  &::before {
977
- content: "#";
1048
+ content: '#';
978
1049
  color: var(--text-muted-color);
979
1050
  padding-right: 0.2rem;
980
1051
  }
@@ -984,7 +1055,7 @@ $sidebar-display: "sidebar-display";
984
1055
  }
985
1056
 
986
1057
  #search-results {
987
- padding-bottom: 6rem;
1058
+ padding-bottom: 3rem;
988
1059
 
989
1060
  a {
990
1061
  &:hover {
@@ -999,14 +1070,15 @@ $sidebar-display: "sidebar-display";
999
1070
  line-height: 2.5rem;
1000
1071
  }
1001
1072
 
1002
- > div {
1073
+ > article {
1003
1074
  width: 100%;
1004
1075
 
1005
1076
  &:not(:last-child) {
1006
1077
  margin-bottom: 1rem;
1007
1078
  }
1008
1079
 
1009
- i { // icons
1080
+ /* icons */
1081
+ i {
1010
1082
  color: #818182;
1011
1083
  margin-right: 0.15rem;
1012
1084
  font-size: 80%;
@@ -1020,7 +1092,7 @@ $sidebar-display: "sidebar-display";
1020
1092
  -webkit-box-orient: vertical;
1021
1093
  }
1022
1094
  }
1023
- } // #search-results
1095
+ } /* #search-results */
1024
1096
 
1025
1097
  #topbar-title {
1026
1098
  display: none;
@@ -1036,25 +1108,10 @@ $sidebar-display: "sidebar-display";
1036
1108
  white-space: nowrap;
1037
1109
  }
1038
1110
 
1039
- #core-wrapper {
1040
- min-height: calc(100vh - #{$topbar-height} - #{$footer-height} - #{$bottom-min-height}) !important;
1041
-
1042
- .categories,
1043
- #tags,
1044
- #archives {
1045
- a:not(:hover) {
1046
- @extend %no-bottom-border;
1047
- }
1048
- }
1049
- }
1050
-
1051
1111
  #mask {
1052
1112
  display: none;
1053
1113
  position: fixed;
1054
- top: 0;
1055
- right: 0;
1056
- bottom: 0;
1057
- left: 0;
1114
+ inset: 0 0 0 0;
1058
1115
  height: 100%;
1059
1116
  width: 100%;
1060
1117
  z-index: 1;
@@ -1067,36 +1124,13 @@ $sidebar-display: "sidebar-display";
1067
1124
  /* --- main wrapper --- */
1068
1125
 
1069
1126
  #main-wrapper {
1070
- background-color: var(--main-wrapper-bg);
1071
1127
  position: relative;
1072
- min-height: 100vh;
1073
- padding-bottom: $footer-height;
1074
1128
 
1075
1129
  @include pl-pr(0);
1076
1130
  }
1077
1131
 
1078
- #main {
1079
- .row:first-child {
1080
- > div {
1081
- &:nth-child(1),
1082
- &:nth-child(2) {
1083
- margin-top: $topbar-height; /* same as the height of topbar */
1084
- }
1085
-
1086
- &:first-child {
1087
- /* 3rem for topbar, 6rem for footer */
1088
- min-height: calc(100vh - #{$topbar-height} - #{$footer-height} - #{$bottom-min-height});
1089
- }
1090
- }
1091
- }
1092
-
1093
- div.row:first-of-type:last-of-type { // alone
1094
- margin-bottom: 4rem;
1095
- }
1096
- }
1097
-
1098
1132
  #topbar-wrapper.row,
1099
- #main > .row,
1133
+ #main-wrapper > .container > .row,
1100
1134
  #search-result-wrapper > .row {
1101
1135
  @include ml-mr(0);
1102
1136
  }
@@ -1104,112 +1138,147 @@ $sidebar-display: "sidebar-display";
1104
1138
  /* --- button back-to-top --- */
1105
1139
 
1106
1140
  #back-to-top {
1107
- $size: 2.7em;
1108
-
1109
1141
  display: none;
1110
1142
  z-index: 1;
1111
1143
  cursor: pointer;
1112
1144
  position: fixed;
1145
+ right: 1rem;
1146
+ bottom: calc($footer-height-large - $back2top-size / 2);
1113
1147
  background: var(--button-bg);
1114
1148
  color: var(--btn-backtotop-color);
1115
1149
  padding: 0;
1116
- width: $size;
1117
- height: $size;
1150
+ width: $back2top-size;
1151
+ height: $back2top-size;
1118
1152
  border-radius: 50%;
1119
1153
  border: 1px solid var(--btn-backtotop-border-color);
1120
1154
  transition: transform 0.2s ease-out;
1121
1155
  -webkit-transition: transform 0.2s ease-out;
1122
1156
 
1157
+ &:hover {
1158
+ transform: translate3d(0, -5px, 0);
1159
+ -webkit-transform: translate3d(0, -5px, 0);
1160
+ }
1161
+
1123
1162
  i {
1124
- line-height: $size;
1163
+ line-height: $back2top-size;
1125
1164
  position: relative;
1126
1165
  bottom: 2px;
1127
1166
  }
1128
1167
  }
1129
1168
 
1130
- #back-to-top:hover {
1131
- transform: translate3d(0, -5px, 0);
1132
- -webkit-transform: translate3d(0, -5px, 0);
1169
+ #notification {
1170
+ @-webkit-keyframes popup {
1171
+ from {
1172
+ opacity: 0;
1173
+ bottom: 0;
1174
+ }
1175
+ }
1176
+
1177
+ @keyframes popup {
1178
+ from {
1179
+ opacity: 0;
1180
+ bottom: 0;
1181
+ }
1182
+ }
1183
+
1184
+ .toast-header {
1185
+ background: none;
1186
+ border-bottom: none;
1187
+ color: inherit;
1188
+ }
1189
+
1190
+ .toast-body {
1191
+ font-family: Lato, sans-serif;
1192
+ line-height: 1.25rem;
1193
+
1194
+ button {
1195
+ font-size: 90%;
1196
+ min-width: 4rem;
1197
+ }
1198
+ }
1199
+
1200
+ &.toast {
1201
+ &.show {
1202
+ display: block;
1203
+ min-width: 20rem;
1204
+ border-radius: 0.5rem;
1205
+ -webkit-backdrop-filter: blur(10px);
1206
+ backdrop-filter: blur(10px);
1207
+ background-color: rgba(255, 255, 255, 0.5);
1208
+ color: #1b1b1eba;
1209
+ position: fixed;
1210
+ left: 50%;
1211
+ bottom: 20%;
1212
+ transform: translateX(-50%);
1213
+ -webkit-animation: popup 0.8s;
1214
+ animation: popup 0.8s;
1215
+ }
1216
+ }
1133
1217
  }
1134
1218
 
1135
1219
  /*
1136
1220
  Responsive Design:
1137
1221
 
1138
- {sidebar, content, panel} >= 1120px screen width
1222
+ {sidebar, content, panel} >= 1200px screen width
1139
1223
  {sidebar, content} >= 850px screen width
1140
1224
  {content} <= 849px screen width
1141
1225
 
1142
1226
  */
1143
1227
 
1144
1228
  @media all and (max-width: 576px) {
1229
+ main {
1230
+ .content {
1231
+ > blockquote[class^='prompt-'] {
1232
+ @include ml-mr(-1rem);
1145
1233
 
1146
- $footer-height: $footer-height-mobile; // overwrite
1147
-
1148
- #main > div.row:first-child > div:first-child {
1149
- min-height: calc(100vh - #{$topbar-height} - #{$footer-height});
1150
- }
1151
-
1152
- #core-wrapper {
1153
- min-height: calc(100vh - #{$topbar-height} - #{$footer-height} - #{$bottom-min-height}) !important;
1154
-
1155
- h1 {
1156
- margin-top: 2.2rem;
1157
- font-size: 1.75rem;
1234
+ border-radius: 0;
1235
+ max-width: none;
1236
+ }
1158
1237
  }
1159
1238
  }
1160
1239
 
1161
- #avatar > a {
1240
+ #avatar {
1162
1241
  width: 5rem;
1163
1242
  height: 5rem;
1164
1243
  }
1244
+ }
1165
1245
 
1166
- .site-subtitle {
1167
- @include ml-mr(1.8rem);
1246
+ @media all and (max-width: 768px) {
1247
+ %full-width {
1248
+ max-width: 100%;
1168
1249
  }
1169
1250
 
1170
- #main-wrapper {
1171
- padding-bottom: $footer-height;
1251
+ #topbar {
1252
+ @extend %full-width;
1172
1253
  }
1173
1254
 
1174
- footer {
1175
- height: $footer-height;
1176
-
1177
- > div.d-flex {
1178
- width: 100%;
1179
- padding: 1.5rem 0;
1180
- margin-bottom: 0.3rem;
1181
- flex-wrap: wrap;
1182
- -ms-flex-pack: distribute !important;
1183
- justify-content: space-around !important;
1184
- }
1185
-
1186
- .footer-left,
1187
- .footer-right {
1188
- text-align: center;
1189
- }
1255
+ #main-wrapper > .container {
1256
+ @extend %full-width;
1257
+ @include pl-pr(0);
1190
1258
  }
1191
-
1192
1259
  }
1193
1260
 
1194
1261
  /* hide sidebar and panel */
1195
1262
  @media all and (max-width: 849px) {
1196
- %slide {
1197
- -webkit-transition: transform 0.4s ease;
1198
- transition: transform 0.4s ease;
1263
+ @mixin slide($append: null) {
1264
+ $basic: transform 0.4s ease;
1265
+
1266
+ @if $append {
1267
+ transition: $basic, $append;
1268
+ } @else {
1269
+ transition: $basic;
1270
+ }
1199
1271
  }
1200
1272
 
1201
- html,
1202
- body {
1203
- overflow-x: hidden;
1273
+ main {
1274
+ min-height: calc(100vh - $topbar-height - $footer-height-large);
1204
1275
  }
1205
1276
 
1206
- .footnotes ol > li {
1207
- padding-top: 3.5rem;
1208
- margin-top: -3.2rem;
1277
+ footer {
1278
+ @include slide;
1209
1279
 
1210
- &:first-child {
1211
- margin-top: -3.5rem;
1212
- }
1280
+ height: $footer-height-large;
1281
+ padding: 1.5rem 0;
1213
1282
  }
1214
1283
 
1215
1284
  [#{$sidebar-display}] {
@@ -1217,30 +1286,29 @@ $sidebar-display: "sidebar-display";
1217
1286
  transform: translateX(0);
1218
1287
  }
1219
1288
 
1220
- #topbar-wrapper,
1221
1289
  #main-wrapper {
1222
1290
  transform: translateX(#{$sidebar-width});
1223
1291
  }
1224
1292
 
1293
+ #back-to-top {
1294
+ visibility: hidden;
1295
+ }
1225
1296
  }
1226
1297
 
1227
1298
  #sidebar {
1228
- @extend %slide;
1299
+ @include slide;
1229
1300
 
1230
- transform: translateX(-#{$sidebar-width}); // hide
1301
+ transform: translateX(-#{$sidebar-width}); /* hide */
1231
1302
  -webkit-transform: translateX(-#{$sidebar-width});
1232
-
1233
- .cursor {
1234
- -webkit-transition: none;
1235
- -moz-transition: none;
1236
- transition: none;
1237
- }
1238
1303
  }
1239
1304
 
1240
1305
  #main-wrapper {
1241
- @extend %slide;
1306
+ @include slide;
1307
+ }
1242
1308
 
1243
- padding-top: $topbar-height;
1309
+ #topbar,
1310
+ #main-wrapper > .container {
1311
+ max-width: 100%;
1244
1312
  }
1245
1313
 
1246
1314
  #search-result-wrapper {
@@ -1248,22 +1316,18 @@ $sidebar-display: "sidebar-display";
1248
1316
  }
1249
1317
 
1250
1318
  #breadcrumb,
1251
- #search-wrapper {
1319
+ search {
1252
1320
  display: none;
1253
1321
  }
1254
1322
 
1255
1323
  #topbar-wrapper {
1256
- @extend %slide;
1324
+ @include slide(top 0.2s ease);
1257
1325
 
1258
1326
  left: 0;
1259
1327
  }
1260
1328
 
1261
- .topbar-up {
1262
- top: 0 !important;
1263
- }
1264
-
1265
- #main > div.row:first-child > div:nth-child(1),
1266
- #main > div.row:first-child > div:nth-child(2) {
1329
+ main,
1330
+ #panel-wrapper {
1267
1331
  margin-top: 0;
1268
1332
  }
1269
1333
 
@@ -1273,47 +1337,22 @@ $sidebar-display: "sidebar-display";
1273
1337
  display: block;
1274
1338
  }
1275
1339
 
1276
- #search-wrapper {
1277
- &.loaded ~ a {
1278
- margin-right: 1rem;
1279
- }
1280
-
1281
- .fa-times-circle {
1282
- right: 5.2rem;
1283
- }
1284
- }
1285
-
1286
- #search-input {
1287
- margin-left: 0;
1288
- width: 95%;
1289
- }
1290
-
1291
- #search-result-wrapper .post-content {
1340
+ #search-result-wrapper .content {
1292
1341
  letter-spacing: 0;
1293
1342
  }
1294
1343
 
1295
1344
  #tags {
1296
- -webkit-box-pack: center !important;
1297
- -ms-flex-pack: center !important;
1298
1345
  justify-content: center !important;
1299
1346
  }
1300
1347
 
1301
1348
  h1.dynamic-title {
1302
1349
  display: none;
1303
1350
 
1304
- ~ .post-content {
1305
- margin-top: 3rem;
1351
+ ~ .content {
1352
+ margin-top: 2.5rem;
1306
1353
  }
1307
1354
  }
1308
-
1309
- } // max-width: 849px
1310
-
1311
- /* Phone & Pad */
1312
- @media all and (min-width: 577px) and (max-width: 1199px) {
1313
- footer > .d-flex > div {
1314
- width: 312px;
1315
- }
1316
- }
1355
+ } /* max-width: 849px */
1317
1356
 
1318
1357
  /* Sidebar is visible */
1319
1358
  @media all and (min-width: 850px) {
@@ -1326,52 +1365,49 @@ $sidebar-display: "sidebar-display";
1326
1365
  margin-left: $sidebar-width;
1327
1366
  }
1328
1367
 
1329
- .profile-wrapper {
1330
- margin-top: 3rem;
1331
- }
1332
-
1333
- #search-wrapper {
1334
- width: 22%;
1335
- min-width: 150px;
1368
+ #sidebar {
1369
+ .profile-wrapper {
1370
+ margin-top: 3rem;
1371
+ }
1336
1372
  }
1337
1373
 
1338
1374
  #search-hints {
1339
1375
  display: none;
1340
1376
  }
1341
1377
 
1378
+ search {
1379
+ max-width: $search-max-width;
1380
+ }
1381
+
1342
1382
  #search-result-wrapper {
1343
- margin-top: 3rem;
1383
+ max-width: $main-content-max-width;
1384
+ justify-content: start !important;
1344
1385
  }
1345
1386
 
1346
- div.post-content .table-wrapper > table {
1387
+ main {
1388
+ h1 {
1389
+ margin-top: 3rem;
1390
+ }
1391
+ }
1392
+
1393
+ div.content .table-wrapper > table {
1347
1394
  min-width: 70%;
1348
1395
  }
1349
1396
 
1350
1397
  /* button 'back-to-Top' position */
1351
1398
  #back-to-top {
1352
- bottom: 5.5rem;
1353
- right: 1.2rem;
1354
- }
1355
-
1356
- .topbar-up {
1357
- box-shadow: none !important;
1399
+ right: 5%;
1400
+ bottom: calc($footer-height - $back2top-size / 2);
1358
1401
  }
1359
1402
 
1360
1403
  #topbar-title {
1361
1404
  text-align: left;
1362
1405
  }
1363
-
1364
- footer > div.d-flex {
1365
- width: 92%;
1366
- }
1367
-
1368
1406
  }
1369
1407
 
1370
1408
  /* Pad horizontal */
1371
1409
  @media all and (min-width: 992px) and (max-width: 1199px) {
1372
- #main .col-lg-11 {
1373
- -webkit-box-flex: 0;
1374
- -ms-flex: 0 0 96%;
1410
+ #main-wrapper > .container .col-lg-11 {
1375
1411
  flex: 0 0 96%;
1376
1412
  max-width: 96%;
1377
1413
  }
@@ -1379,49 +1415,10 @@ $sidebar-display: "sidebar-display";
1379
1415
 
1380
1416
  /* Compact icons in sidebar & panel hidden */
1381
1417
  @media all and (min-width: 850px) and (max-width: 1199px) {
1382
- #sidebar {
1383
- width: $sidebar-width-small;
1384
-
1385
- .site-subtitle {
1386
- margin-left: 1rem;
1387
- margin-right: 1rem;
1388
- }
1389
-
1390
- .sidebar-bottom {
1391
- a,
1392
- span {
1393
- width: 2rem;
1394
- }
1395
-
1396
- .icon-border {
1397
- left: -3px;
1398
- }
1399
- }
1400
- }
1401
-
1402
- #topbar-wrapper {
1403
- left: 210px;
1404
- }
1405
-
1406
1418
  #search-results > div {
1407
1419
  max-width: 700px;
1408
1420
  }
1409
1421
 
1410
- .site-title {
1411
- font-size: 1.3rem;
1412
- margin-left: 0 !important;
1413
- }
1414
-
1415
- .site-subtitle {
1416
- @include ml-mr(1rem);
1417
-
1418
- font-size: 90%;
1419
- }
1420
-
1421
- #main-wrapper {
1422
- margin-left: 210px;
1423
- }
1424
-
1425
1422
  #breadcrumb {
1426
1423
  width: 65%;
1427
1424
  overflow: hidden;
@@ -1429,7 +1426,6 @@ $sidebar-display: "sidebar-display";
1429
1426
  word-break: keep-all;
1430
1427
  white-space: nowrap;
1431
1428
  }
1432
-
1433
1429
  }
1434
1430
 
1435
1431
  /* panel hidden */
@@ -1438,13 +1434,7 @@ $sidebar-display: "sidebar-display";
1438
1434
  display: none;
1439
1435
  }
1440
1436
 
1441
- #topbar {
1442
- padding: 0;
1443
- }
1444
-
1445
- #main > div.row {
1446
- -webkit-box-pack: center !important;
1447
- -ms-flex-pack: center !important;
1437
+ #main-wrapper > .container > div.row {
1448
1438
  justify-content: center !important;
1449
1439
  }
1450
1440
  }
@@ -1452,35 +1442,16 @@ $sidebar-display: "sidebar-display";
1452
1442
  /* --- desktop mode, both sidebar and panel are visible --- */
1453
1443
 
1454
1444
  @media all and (min-width: 1200px) {
1455
- #main > div.row > div.col-xl-8 {
1456
- -webkit-box-flex: 0;
1457
- -ms-flex: 0 0 75%;
1458
- flex: 0 0 75%;
1459
- max-width: 75%;
1460
- padding-left: 3%;
1461
- }
1462
-
1463
- #topbar {
1464
- padding: 0;
1465
- max-width: 1070px;
1466
- }
1467
-
1468
- #panel-wrapper {
1469
- max-width: $panel-max-width;
1470
- }
1471
-
1472
- #back-to-top {
1473
- bottom: 6.5rem;
1474
- right: 4.3rem;
1445
+ search {
1446
+ margin-right: 4rem;
1475
1447
  }
1476
1448
 
1477
1449
  #search-input {
1478
- -webkit-transition: all 0.3s ease-in-out;
1479
1450
  transition: all 0.3s ease-in-out;
1480
1451
  }
1481
1452
 
1482
- #search-results > div {
1483
- width: 46%;
1453
+ #search-results > article {
1454
+ width: 45%;
1484
1455
 
1485
1456
  &:nth-child(odd) {
1486
1457
  margin-right: 1.5rem;
@@ -1496,249 +1467,79 @@ $sidebar-display: "sidebar-display";
1496
1467
  }
1497
1468
  }
1498
1469
 
1499
- .post-content {
1470
+ .content {
1500
1471
  font-size: 1.03rem;
1501
1472
  }
1502
-
1503
- footer > div.d-felx {
1504
- width: 85%;
1505
- }
1506
-
1507
1473
  }
1508
1474
 
1509
1475
  @media all and (min-width: 1400px) {
1510
- #main > div.row {
1511
- padding-left: calc((100% - #{$main-content-max-width}) / 2);
1512
-
1513
- > div.col-xl-8 {
1514
- max-width: 850px;
1515
- }
1516
- }
1517
-
1518
- #search-result-wrapper {
1519
- padding-right: 2rem;
1520
-
1521
- > div {
1522
- max-width: 1110px;
1523
- }
1524
- }
1525
-
1526
- #search-wrapper .fa-times-circle {
1527
- right: 2.6rem;
1528
- }
1529
-
1530
- }
1531
-
1532
- @media all and (min-width: 1400px) and (max-width: 1650px) {
1533
- #topbar {
1534
- padding-right: 2rem;
1476
+ #back-to-top {
1477
+ right: calc((100vw - #{$sidebar-width} - 1140px) / 2 + 3rem);
1535
1478
  }
1536
1479
  }
1537
1480
 
1538
1481
  @media all and (min-width: 1650px) {
1539
- #breadcrumb {
1540
- padding-left: 0;
1541
- }
1542
-
1543
- #main > div.row > div.col-xl-8 {
1544
- padding-left: 0;
1545
-
1546
- > div:first-child {
1547
- padding-left: 0.55rem !important;
1548
- padding-right: 1.9rem !important;
1549
- }
1550
- }
1482
+ $icon-gap: 1rem;
1551
1483
 
1552
1484
  #main-wrapper {
1553
1485
  margin-left: $sidebar-width-large;
1554
1486
  }
1555
1487
 
1556
- #panel-wrapper {
1557
- margin-left: calc((100% - #{$main-content-max-width}) / 10);
1558
- }
1559
-
1560
1488
  #topbar-wrapper {
1561
1489
  left: $sidebar-width-large;
1562
1490
  }
1563
1491
 
1564
- #topbar {
1565
- max-width: #{$main-content-max-width};
1492
+ search {
1493
+ margin-right: calc(
1494
+ #{$main-content-max-width} * 0.25 - #{$search-max-width} - 0.75rem
1495
+ );
1566
1496
  }
1567
1497
 
1568
- #search-wrapper {
1569
- margin-right: 3%;
1498
+ #main-wrapper > .container {
1499
+ max-width: $main-content-max-width;
1500
+ padding-left: 1.75rem !important;
1501
+ padding-right: 1.75rem !important;
1570
1502
  }
1571
1503
 
1572
- #sidebar {
1573
- width: $sidebar-width-large;
1574
-
1575
- .profile-wrapper {
1576
- margin-top: 4rem;
1577
- margin-bottom: 1rem;
1578
-
1579
- &.text-center {
1580
- text-align: left !important;
1581
- }
1582
-
1583
- %profile-ml {
1584
- margin-left: 4.5rem;
1585
- }
1586
-
1587
- #avatar {
1588
- @extend %profile-ml;
1589
-
1590
- > a {
1591
- width: 6.2rem;
1592
- height: 6.2rem;
1593
-
1594
- &.mx-auto {
1595
- margin-left: 0 !important;
1596
- }
1597
- }
1598
- }
1599
-
1600
- .site-title {
1601
- @extend %profile-ml;
1504
+ main.col-12,
1505
+ #tail-wrapper {
1506
+ padding-right: 4.5rem !important;
1507
+ }
1602
1508
 
1603
- a {
1604
- font-size: 1.7rem;
1605
- letter-spacing: 1px;
1606
- }
1607
- }
1509
+ #back-to-top {
1510
+ right: calc(
1511
+ (100vw - #{$sidebar-width-large} - #{$main-content-max-width}) / 2 + 2rem
1512
+ );
1513
+ }
1608
1514
 
1609
- .site-subtitle {
1610
- @extend %profile-ml;
1515
+ #sidebar {
1516
+ width: $sidebar-width-large;
1611
1517
 
1612
- word-spacing: 0;
1613
- margin-top: 0.3rem;
1614
- }
1518
+ $icon-gap: 1rem; // for the bottom icons
1615
1519
 
1616
- } // .profile-wrapper (min-width: 1650px)
1520
+ .profile-wrapper {
1521
+ margin-top: 3.5rem;
1522
+ margin-bottom: 2.5rem;
1523
+ padding-left: 3.5rem;
1524
+ }
1617
1525
 
1618
1526
  ul {
1619
- padding-left: 2.5rem;
1620
-
1621
- > li:last-child {
1622
- > a {
1623
- position: static;
1624
- }
1625
- }
1626
-
1627
- .nav-item {
1628
- text-align: left;
1629
-
1630
- .nav-link {
1631
- > span {
1632
- letter-spacing: 2px;
1633
- }
1634
-
1635
- > i {
1636
- &.unloaded {
1637
- display: inline-block !important;
1638
- }
1639
- }
1640
- }
1641
-
1527
+ li.nav-item {
1528
+ @include pl-pr(2.75rem);
1642
1529
  }
1643
1530
  }
1644
1531
 
1645
1532
  .sidebar-bottom {
1646
- padding-left: 3.5rem;
1647
- width: 100%;
1533
+ padding-left: 2.75rem;
1534
+ margin-bottom: 1.75rem;
1648
1535
 
1649
- $icon-block-size: 2rem;
1650
-
1651
- &.justify-content-center {
1652
- -webkit-box-pack: start !important;
1653
- -ms-flex-pack: start !important;
1654
- justify-content: flex-start !important;
1655
- }
1656
-
1657
- > span,
1658
- > button.mode-toggle,
1659
- > a {
1660
- @include ml-mr(0.15rem);
1661
-
1662
- height: $icon-block-size;
1663
- margin-bottom: 0.5rem; // wrap line
1664
- }
1665
-
1666
- i {
1667
- background-color: var(--sidebar-btn-bg);
1668
- font-size: 1rem;
1669
- width: $icon-block-size;
1670
- height: $icon-block-size;
1671
- border-radius: 50%;
1672
- position: relative;
1673
-
1674
- &::before {
1675
- position: absolute;
1676
- top: 50%;
1677
- left: 50%;
1678
- transform: translate(-50%, -50%);
1679
- }
1536
+ a:not(:last-child) {
1537
+ margin-right: $icon-gap;
1680
1538
  }
1681
1539
 
1682
1540
  .icon-border {
1683
- top: 0.9rem;
1541
+ @include ml-mr(calc(($icon-gap - $btn-border-width) / 2));
1684
1542
  }
1685
-
1686
- } // .sidebar-bottom
1687
-
1688
- } // #sidebar
1689
-
1690
- footer > div.d-flex {
1691
- width: 92%;
1692
- max-width: 1140px;
1693
- }
1694
-
1695
- #search-result-wrapper {
1696
- > div {
1697
- max-width: #{$main-content-max-width};
1698
1543
  }
1699
1544
  }
1700
-
1701
- } // min-width: 1650px
1702
-
1703
- @media all and (min-width: 1700px) {
1704
- #topbar-wrapper {
1705
- /* 100% - 350px - (1920px - 350px); */
1706
- padding-right: calc(100% - #{$sidebar-width-large} - (1920px - #{$sidebar-width-large}));
1707
- }
1708
-
1709
- #topbar {
1710
- max-width: calc(#{$main-content-max-width} + 20px);
1711
- }
1712
-
1713
- #main > div.row {
1714
- padding-left: calc((100% - #{$main-content-max-width} - 2%) / 2);
1715
- }
1716
-
1717
- #panel-wrapper {
1718
- margin-left: 3%;
1719
- }
1720
-
1721
- footer {
1722
- padding-left: 0;
1723
- padding-right: calc(100% - #{$sidebar-width-large} - 1180px);
1724
- }
1725
-
1726
- #back-to-top {
1727
- right: calc(100% - 1920px + 15rem);
1728
- }
1729
-
1730
- }
1731
-
1732
- @media (min-width: 1920px) {
1733
- #main > div.row {
1734
- padding-left: 190px;
1735
- }
1736
-
1737
- #search-result-wrapper {
1738
- padding-right: calc(100% - #{$sidebar-width-large} - 1180px);
1739
- }
1740
-
1741
- #panel-wrapper {
1742
- margin-left: 41px;
1743
- }
1744
- }
1545
+ } /* min-width: 1650px */