jekyll-theme-coo 6.3.9

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