doc-theme 0.1.0

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