jekyll-theme-resuchirp 0.2.0

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