jekyll-theme-chirpy 5.0.2 → 6.2.2

Sign up to get free protection for your applications and to get access to all the features.
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 */