hexo-theme-gnix 6.2.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +6 -2
  2. package/include/hexo/encrypt.js +42 -0
  3. package/include/hexo/feed.js +329 -0
  4. package/include/util/common.js +7 -9
  5. package/languages/en.yml +6 -3
  6. package/languages/zh-CN.yml +6 -3
  7. package/layout/archive.jsx +86 -65
  8. package/layout/comment/twikoo.jsx +2 -11
  9. package/layout/comment/waline.jsx +2 -2
  10. package/layout/common/article.jsx +5 -8
  11. package/layout/common/article_cover.jsx +11 -1
  12. package/layout/common/article_media.jsx +2 -4
  13. package/layout/common/footer.jsx +11 -31
  14. package/layout/common/head.jsx +6 -14
  15. package/layout/common/navbar.jsx +4 -4
  16. package/layout/common/scripts.jsx +6 -6
  17. package/layout/common/theme_selector.jsx +5 -6
  18. package/layout/common/toc.jsx +8 -14
  19. package/layout/index.jsx +2 -4
  20. package/layout/misc/article_licensing.jsx +4 -2
  21. package/layout/misc/open_graph.jsx +4 -4
  22. package/layout/misc/paginator.jsx +10 -4
  23. package/layout/misc/structured_data.jsx +3 -4
  24. package/layout/plugin/busuanzi.jsx +1 -1
  25. package/layout/plugin/cookie_consent.jsx +40 -31
  26. package/layout/plugin/swup.jsx +2 -22
  27. package/layout/search/insight.jsx +16 -3
  28. package/package.json +12 -8
  29. package/scripts/hot-reload.js +92 -0
  30. package/scripts/index.js +2 -0
  31. package/source/css/archive.css +251 -0
  32. package/source/css/default.css +250 -284
  33. package/source/css/encrypt.css +55 -0
  34. package/source/css/responsive/desktop.css +0 -119
  35. package/source/css/responsive/mobile.css +7 -23
  36. package/source/css/responsive/touch.css +9 -103
  37. package/source/css/shiki/shiki.css +7 -22
  38. package/source/css/twikoo.css +290 -830
  39. package/source/img/og_image.webp +0 -0
  40. package/source/js/archive-breadcrumb.js +132 -0
  41. package/source/js/busuanzi.js +1 -12
  42. package/source/js/components/accordion.js +192 -0
  43. package/source/js/components/chat.js +239 -0
  44. package/source/js/components/device-carousel.js +260 -0
  45. package/source/js/components/image-carousel.js +410 -0
  46. package/source/js/components/text-image-section.js +180 -0
  47. package/source/js/components/theme-stacked.js +526 -0
  48. package/source/js/components/tree.js +437 -0
  49. package/source/js/decrypt.js +112 -0
  50. package/source/js/insight.js +75 -65
  51. package/source/js/main.js +192 -99
  52. package/source/js/mdit/mermaid.js +12 -4
  53. package/source/js/swup.bundle.js +1 -0
  54. package/source/js/theme-selector.js +94 -113
  55. package/source/img/og_image.png +0 -0
  56. package/source/js/host/swup/Swup.umd.min.js +0 -1
  57. package/source/js/host/swup/head-plugin.umd.min.js +0 -1
  58. package/source/js/host/swup/scripts-plugin.umd.min.js +0 -2
  59. package/source/js/mdit/shiki.js +0 -158
@@ -1,12 +1,20 @@
1
1
  @charset "UTF-8";
2
2
 
3
3
  :root {
4
- --font-serif: Georgia, "Times New Roman", Times, "Songti SC", "STSong", serif;
4
+ --subtext1: color-mix(in oklch, var(--text) 90%, var(--mantle));
5
+ --subtext0: color-mix(in oklch, var(--text) 80%, var(--mantle));
6
+ --surface0: color-mix(in oklch, var(--base) 80%, var(--text));
7
+ --surface1: color-mix(in oklch, var(--base) 78%, var(--text));
8
+ --surface2: color-mix(in oklch, var(--base) 67%, var(--text));
9
+ --overlay0: color-mix(in oklch, var(--base) 56%, var(--text));
10
+ --overlay1: color-mix(in oklch, var(--base) 45%, var(--text));
11
+ --overlay2: color-mix(in oklch, var(--base) 34%, var(--text));
12
+
13
+ --font-serif: STFangsong, STSong, New York, Songti SC, Georgia, serif;
5
14
  --font-sans-serif: system-ui, sans-serif;
6
- --font-mono: "RecMonoCasual Nerd Font", "Maple Mono NF CN Local", "Maple Mono NF CN", "SF Mono", "SF Pro", Monaco, Consolas, monospace;
15
+ --font-mono: "SF Mono", "SF Pro", "Maple Mono NF CN Local", "Maple Mono NF CN", Monaco, Consolas, monospace;
7
16
  --font-handwriting: "Bradley Hand", "homemade-apple", cursive;
8
17
  --radius: 12px;
9
- --spaceing: 0.25rem;
10
18
  }
11
19
 
12
20
  /* #region Color */
@@ -27,14 +35,6 @@
27
35
  --blue: #1e66f5;
28
36
  --lavender: #7287fd;
29
37
  --text: #4c4f69;
30
- --subtext1: #5c5f77;
31
- --subtext0: #6c6f85;
32
- --overlay2: #7c7f93;
33
- --overlay1: #8c8fa1;
34
- --overlay0: #9ca0b0;
35
- --surface2: #acb0be;
36
- --surface1: #bcc0cc;
37
- --surface0: #ccd0da;
38
38
  --base: #eff1f5;
39
39
  --mantle: #e6e9ef;
40
40
  --crust: #dce0e8;
@@ -57,14 +57,6 @@
57
57
  --blue: #9ccfd8;
58
58
  --lavender: #c4a7e7;
59
59
  --text: #e0def4;
60
- --subtext1: #908caa;
61
- --subtext0: #6e6a86;
62
- --overlay2: #57526e;
63
- --overlay1: #454158;
64
- --overlay0: #3c3b4d;
65
- --surface2: #302d41;
66
- --surface1: #26233a;
67
- --surface0: #1f1d2e;
68
60
  --base: #191726;
69
61
  --mantle: #161422;
70
62
  --crust: #11111b;
@@ -87,14 +79,6 @@
87
79
  --blue: #81a1c1;
88
80
  --lavender: #5e81ac;
89
81
  --text: #4c566a;
90
- --subtext1: #3b4252;
91
- --subtext0: #434c5e;
92
- --overlay2: #4c566a;
93
- --overlay1: #5a657a;
94
- --overlay0: #686e7e;
95
- --surface2: #76809f;
96
- --surface1: #7d8fa3;
97
- --surface0: #8fa3b0;
98
82
  --base: #eceff4;
99
83
  --mantle: #e5e9f0;
100
84
  --crust: #d8dee9;
@@ -117,14 +101,6 @@
117
101
  --blue: #89b4fa;
118
102
  --lavender: #b4befe;
119
103
  --text: #cdd6f4;
120
- --subtext1: #bac2de;
121
- --subtext0: #a6adc8;
122
- --overlay2: #9399b2;
123
- --overlay1: #7f849c;
124
- --overlay0: #6c7086;
125
- --surface2: #585b70;
126
- --surface1: #45475a;
127
- --surface0: #313244;
128
104
  --base: #1e1e2e;
129
105
  --mantle: #181825;
130
106
  --crust: #11111b;
@@ -147,14 +123,6 @@
147
123
  --blue: #7aa2f7;
148
124
  --lavender: #82aaff;
149
125
  --text: #c0caf5;
150
- --subtext1: #a9b1d6;
151
- --subtext0: #9aa5ce;
152
- --overlay2: #787c99;
153
- --overlay1: #565f89;
154
- --overlay0: #414868;
155
- --surface2: #414868;
156
- --surface1: #33467c;
157
- --surface0: #24283b;
158
126
  --base: #1a1b26;
159
127
  --mantle: #16161e;
160
128
  --crust: #101014;
@@ -177,14 +145,6 @@
177
145
  --blue: #5e81ac;
178
146
  --lavender: #81a1c1;
179
147
  --text: #eceff4;
180
- --subtext1: #e5e9f0;
181
- --subtext0: #d8dee9;
182
- --overlay2: #4c566a;
183
- --overlay1: #434c5e;
184
- --overlay0: #3b4252;
185
- --surface2: #434c5e;
186
- --surface1: #3b4252;
187
- --surface0: #3b4252;
188
148
  --base: #2e3440;
189
149
  --mantle: #292e39;
190
150
  --crust: #242933;
@@ -192,7 +152,14 @@
192
152
 
193
153
  body {
194
154
  background: var(--mantle);
195
- color: var(--text);
155
+ color: var(--subtext1);
156
+ min-height: 100%;
157
+ line-height: 1.5;
158
+ display: flex;
159
+ flex-direction: column;
160
+ /* Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-autospace */
161
+ text-autospace: normal;
162
+ font-family: var(--font-sans-serif);
196
163
  }
197
164
 
198
165
  .article-licensing {
@@ -233,7 +200,11 @@ mark {
233
200
  }
234
201
 
235
202
  hr {
236
- background-color: var(--surface0);
203
+ border: none;
204
+ display: block;
205
+ margin: 1.5rem 0;
206
+ background: transparent;
207
+ border-top: 2px dotted var(--surface0);
237
208
  }
238
209
 
239
210
  .searchbox-result-item.active span {
@@ -254,6 +225,13 @@ hr {
254
225
  src: local("MapleMono-NF-CN-Regular");
255
226
  }
256
227
 
228
+ @font-face {
229
+ font-family: "NewYork";
230
+ src: local("New York"), local("New York Text"), local("New York Display");
231
+ font-weight: 400 700;
232
+ font-style: normal;
233
+ }
234
+
257
235
  @font-face {
258
236
  font-family: doto;
259
237
  font-style: normal;
@@ -274,6 +252,7 @@ hr {
274
252
 
275
253
  @font-face {
276
254
  font-family: homemade-apple;
255
+ font-display: swap;
277
256
  src:
278
257
  local("Homemade Apple"),
279
258
  local("HomemadeApple-Regular"),
@@ -293,7 +272,6 @@ h3,
293
272
  h4,
294
273
  h5,
295
274
  h6,
296
- hr,
297
275
  html,
298
276
  iframe,
299
277
  legend,
@@ -325,34 +303,18 @@ html {
325
303
  overflow-y: scroll;
326
304
  }
327
305
 
328
- body {
329
- min-height: 100%;
330
- line-height: 1.5;
331
- display: flex;
332
- flex-direction: column;
333
- }
334
-
335
- .toc-text,
336
- .footer-grid,
337
- .widget {
338
- font-family: var(--font-sans-serif);
339
- }
340
-
341
306
  .card {
342
307
  max-width: 100%;
343
308
  position: relative;
344
309
  overflow: visible;
345
- border-radius: var(--radius);
346
- border: 0.5px dashed var(--surface0);
310
+ border: 0.5px solid var(--surface0);
347
311
  }
348
-
349
312
  .card + .card {
350
- margin-top: 1.5rem;
313
+ border-top: none;
351
314
  }
352
315
 
353
316
  .card-content {
354
317
  padding: 1.25rem;
355
- border-radius: 0;
356
318
  }
357
319
 
358
320
  /* #region Navbar */
@@ -364,7 +326,6 @@ body {
364
326
  left: 0;
365
327
  right: 0;
366
328
  z-index: 100;
367
- font-family: var(--font-sans-serif);
368
329
  border-bottom: 0.5px solid var(--surface0);
369
330
  }
370
331
 
@@ -390,7 +351,6 @@ body {
390
351
  color: var(--subtext1);
391
352
  align-items: center;
392
353
  display: flex;
393
- font-size: 1.1rem;
394
354
  padding: 0 0.5rem;
395
355
  position: relative;
396
356
  flex-grow: 0;
@@ -403,8 +363,6 @@ body {
403
363
  }
404
364
 
405
365
  .navbar-item:hover {
406
- scale: 1.1;
407
- transition: all 0.2s ease;
408
366
  color: var(--lavender);
409
367
  }
410
368
  }
@@ -413,55 +371,38 @@ body {
413
371
 
414
372
  /* #region Theme Selector */
415
373
 
416
- #theme-selector-modal {
417
- position: fixed;
418
- inset: 0;
419
- z-index: 100;
420
- display: flex;
421
- align-items: center;
422
- justify-content: center;
423
- visibility: hidden;
424
- pointer-events: none;
425
- backdrop-filter: blur(8px);
374
+ #theme-selector-popover:focus {
375
+ outline: none;
426
376
  }
427
377
 
428
378
  .theme-selector-list {
429
- background-color: hsl(from var(--mantle) h s l / 0.8);
430
- border-radius: var(--radius);
431
- border: 2px solid var(--mauve);
432
- width: 90%;
379
+ width: 90vw;
433
380
  max-width: 480px;
434
381
  display: flex;
435
382
  flex-direction: column;
436
- gap: 0.5rem;
437
383
  padding: 0.5rem;
438
- }
439
-
440
- #theme-selector-modal.is-active {
441
- visibility: visible;
442
- pointer-events: auto;
384
+ overflow: hidden;
443
385
  }
444
386
 
445
387
  .theme-option {
446
- display: flex;
447
- align-items: center;
448
- text-align: center;
449
- padding: 1rem 1.25rem;
450
- border-radius: 6px;
388
+ background-color: inherit;
389
+ border: none;
390
+ outline: none;
391
+ color: var(--text);
392
+ padding: 0.75rem 1.25rem;
451
393
  cursor: pointer;
452
- position: relative;
394
+ font-size: 2rem;
395
+ font-family: system-ui;
396
+ font-variation-settings:
397
+ "wght" 200,
398
+ "wdth" 400;
453
399
 
454
400
  &.is-focused,
455
401
  &:hover {
456
402
  color: var(--rosewater);
457
403
  }
458
-
459
- .theme-name {
460
- flex: 1;
461
- font-size: 1.5rem;
462
- word-spacing: 0.5rem;
463
- letter-spacing: 0.05rem;
464
- font-family: var(--font-serif);
404
+ &.is-active {
405
+ color: var(--blue);
465
406
  }
466
407
  }
467
408
 
@@ -473,12 +414,13 @@ body {
473
414
  .pagination-list {
474
415
  align-items: center;
475
416
  display: flex;
476
- justify-content: center;
477
417
  text-align: center;
418
+ font-family: var(--font-mono);
478
419
  }
479
420
 
480
421
  .pagination-link.is-current {
481
- color: var(--lavender);
422
+ color: var(--text);
423
+ font-weight: bold;
482
424
  }
483
425
 
484
426
  .pagination-ellipsis,
@@ -486,21 +428,22 @@ body {
486
428
  .pagination-next,
487
429
  .pagination-previous {
488
430
  user-select: none;
489
- height: 2.5em;
490
- border-radius: 10px;
491
- font-weight: bold;
492
- color: var(--text);
493
- margin: 0.25rem;
431
+ color: var(--subtext0);
494
432
  padding: 0 0.5em;
495
- justify-content: center;
496
- text-align: center;
497
- align-items: center;
498
433
  display: inline-flex;
499
- position: relative;
500
- vertical-align: top;
501
434
  min-width: 1.5em;
502
435
  }
503
436
 
437
+ .pagination-previous {
438
+ margin-right: auto;
439
+ margin-left: 0.5rem;
440
+ }
441
+
442
+ .pagination-next {
443
+ margin-left: auto;
444
+ margin-right: 0.5rem;
445
+ }
446
+
504
447
  .pagination-list {
505
448
  flex-wrap: wrap;
506
449
  }
@@ -515,41 +458,33 @@ body {
515
458
  }
516
459
 
517
460
  .tabs-tabs-header {
518
- display: flex;
519
- padding: 0 10px;
461
+ padding: 0 0.5rem;
462
+ white-space: nowrap;
463
+ overflow-x: auto;
464
+ overflow-y: hidden;
520
465
  }
521
466
 
522
467
  .tabs-tab-button {
523
- flex: 1;
524
- padding: 0.5em 0;
468
+ padding: 0.5em 1rem;
525
469
  border: none;
470
+ border-bottom: 2px solid transparent;
526
471
  background: 0 0;
527
472
  font-size: 1em;
528
- font-weight: bold;
529
473
  cursor: pointer;
530
474
  position: relative;
531
475
  transition: color 0.3s ease;
532
476
  outline: 0;
533
- font-family: var(--font-sans-serif);
534
- color: var(--text);
477
+ color: var(--subtext0);
478
+ flex: 0 0 auto;
479
+ white-space: nowrap;
535
480
 
536
481
  &:hover,
537
482
  &.active {
538
- color: var(--lavender);
483
+ color: var(--text);
484
+ border-color: var(--text);
539
485
  }
540
486
  }
541
487
 
542
- .tabs-tab-button.active::after {
543
- content: "";
544
- position: absolute;
545
- bottom: 0;
546
- left: 0;
547
- width: 100%;
548
- height: 2px;
549
- background-color: var(--lavender);
550
- animation: slideIn 0.3s ease;
551
- }
552
-
553
488
  .tabs-tabs-container {
554
489
  padding: 0.8em 0 10px 0;
555
490
  }
@@ -576,7 +511,7 @@ body {
576
511
  flex-grow: 1;
577
512
  margin: 0 auto;
578
513
  position: relative;
579
- max-width: 1080px;
514
+ max-width: 960px;
580
515
  }
581
516
 
582
517
  /* #region Footer */
@@ -585,6 +520,7 @@ body {
585
520
  user-select: none;
586
521
  padding: 3rem 1.5rem 6rem;
587
522
  position: relative;
523
+ border-top: 0.5px solid var(--surface0);
588
524
 
589
525
  iconify-icon {
590
526
  font-size: 1.2rem;
@@ -605,11 +541,10 @@ body {
605
541
  }
606
542
 
607
543
  .footer-title {
608
- font-weight: bolder;
609
- font-size: 1.1rem;
610
- margin-bottom: 0.25rem;
544
+ font-family: homemade-apple, var(--font-handwriting);
611
545
  }
612
546
 
547
+ .footer-title,
613
548
  .footer-heading {
614
549
  font-weight: bolder;
615
550
  font-size: 1.1rem;
@@ -652,10 +587,8 @@ body {
652
587
  .content {
653
588
  overflow: auto;
654
589
  word-wrap: break-word;
655
- font-family: var(--font-sans-serif);
656
590
  font-size: 1rem;
657
- line-height: 1.5;
658
- letter-spacing: -0.003em;
591
+ color: var(--subtext1);
659
592
 
660
593
  ::selection {
661
594
  color: inherit;
@@ -665,6 +598,7 @@ body {
665
598
 
666
599
  a.header-anchor {
667
600
  color: var(--text);
601
+ font-family: var(--font-serif);
668
602
 
669
603
  &:hover::after {
670
604
  margin-left: 0.2em;
@@ -672,12 +606,23 @@ body {
672
606
  }
673
607
  }
674
608
 
609
+ sup.footnote-ref > a,
610
+ li.footnote-item,
611
+ a.footnote-backref,
612
+ a.header-anchor,
613
+ h2,
614
+ h3,
615
+ h4,
616
+ h5,
617
+ h6 {
618
+ scroll-margin-top: 5rem;
619
+ scroll-behavior: smooth;
620
+ text-decoration: none;
621
+ }
622
+
675
623
  h2 {
676
- font-size: 2.25em;
677
- font-weight: 700;
678
- line-height: 1.25;
679
- letter-spacing: -0.02em;
680
- margin: 1rem 0 1rem;
624
+ font-size: 2em;
625
+ margin: 1rem 0;
681
626
  border-bottom: 0.8px solid var(--surface0);
682
627
 
683
628
  > a.header-anchor:hover::after {
@@ -686,10 +631,7 @@ body {
686
631
  }
687
632
 
688
633
  h3 {
689
- font-size: 1.875em;
690
- font-weight: 700;
691
- line-height: 1.25;
692
- letter-spacing: -0.015em;
634
+ font-size: 1.75em;
693
635
  margin: 1.2rem 0 1rem;
694
636
 
695
637
  > a.header-anchor:hover::after {
@@ -699,9 +641,6 @@ body {
699
641
 
700
642
  h4 {
701
643
  font-size: 1.5em;
702
- font-weight: 600;
703
- line-height: 1.25;
704
- letter-spacing: -0.01em;
705
644
  margin: 1.2rem 0 1rem;
706
645
 
707
646
  > a.header-anchor:hover::after {
@@ -710,10 +649,7 @@ body {
710
649
  }
711
650
 
712
651
  h5 {
713
- font-size: 1.35em;
714
- font-weight: 600;
715
- line-height: 1.25;
716
- letter-spacing: -0.005em;
652
+ font-size: 1.25em;
717
653
  margin: 1.2rem 0 1rem;
718
654
 
719
655
  > a.header-anchor:hover::after {
@@ -723,8 +659,6 @@ body {
723
659
 
724
660
  h6 {
725
661
  font-size: 1.1em;
726
- font-weight: 600;
727
- line-height: 1.25;
728
662
  margin: 1.2rem 0 1rem;
729
663
 
730
664
  > a.header-anchor:hover::after {
@@ -732,10 +666,6 @@ body {
732
666
  }
733
667
  }
734
668
 
735
- .p:not(:last-child) {
736
- margin-bottom: 1rem;
737
- }
738
-
739
669
  p,
740
670
  ol,
741
671
  dl,
@@ -744,12 +674,17 @@ body {
744
674
  margin-bottom: 1rem;
745
675
  }
746
676
 
677
+ li {
678
+ margin-bottom: 0.5rem;
679
+ }
680
+
747
681
  p:last-child,
748
682
  .tabs-tabs-wrapper:last-child {
749
683
  margin-bottom: 0;
750
684
  }
751
685
 
752
686
  img,
687
+ iframe,
753
688
  video {
754
689
  display: block;
755
690
  max-width: 100%;
@@ -768,7 +703,8 @@ body {
768
703
  button.physical-btn,
769
704
  kbd {
770
705
  display: inline-block;
771
- padding: 0.1em 0.3em;
706
+ padding: 0 0.3em;
707
+ margin: 0 0.3em;
772
708
  font-family: var(--font-mono);
773
709
  font-size: 0.85em;
774
710
  color: var(--subtext0);
@@ -782,11 +718,10 @@ body {
782
718
  top: -3px;
783
719
  transition:
784
720
  top 0.1s ease,
785
- border-bottom-width 0.1s ease,
786
- box-shadow 0.1s ease;
721
+ border-bottom-width 0.1s ease;
787
722
 
788
723
  &:active {
789
- top: 0px;
724
+ top: 0;
790
725
  }
791
726
  }
792
727
 
@@ -819,10 +754,6 @@ body {
819
754
  margin-bottom: 1rem;
820
755
  }
821
756
 
822
- iframe {
823
- overflow: auto;
824
- }
825
-
826
757
  figure {
827
758
  margin: 1em 2.5rem;
828
759
  text-align: center;
@@ -845,7 +776,6 @@ body {
845
776
  }
846
777
 
847
778
  pre {
848
- -webkit-overflow-scrolling: touch;
849
779
  overflow-x: auto;
850
780
  font-size: 0.85em;
851
781
  padding: 1rem;
@@ -877,30 +807,13 @@ body {
877
807
  position: relative;
878
808
  }
879
809
 
880
- a[href*="apple"]::before,
881
- a[href*="github"]::before,
882
- a[href*="wikipedia"]::before,
883
- a[href*="youtube"]::before {
884
- font-family: var(--font-mono);
885
- font-size: 1em;
886
- padding-left: 0.5em;
887
- color: var(--lavender);
888
- }
889
-
890
- a[href*="github"]::before {
891
- content: " ";
892
- }
893
-
894
- a[href*="wikipedia"]::before {
895
- content: "󰖬 ";
896
- }
897
-
898
- a[href*="youtube"]::before {
899
- content: " ";
900
- }
901
-
902
- a[href*="apple"]::before {
903
- content: " ";
810
+ a {
811
+ text-decoration: underline;
812
+ text-decoration-color: var(--subtext1);
813
+ color: var(--text);
814
+ &:hover {
815
+ text-decoration-thickness: 2px;
816
+ }
904
817
  }
905
818
  }
906
819
 
@@ -922,6 +835,9 @@ td,
922
835
  th {
923
836
  vertical-align: middle;
924
837
  padding: 0.75em 1em;
838
+ &:not([align]) {
839
+ text-align: left;
840
+ }
925
841
  }
926
842
 
927
843
  thead th {
@@ -930,11 +846,6 @@ thead th {
930
846
  padding: 1em;
931
847
  }
932
848
 
933
- td:not([align]),
934
- th:not([align]) {
935
- text-align: left;
936
- }
937
-
938
849
  tbody tr td {
939
850
  border-bottom: 1px solid var(--surface0);
940
851
  }
@@ -945,11 +856,10 @@ tbody tr:last-child td {
945
856
 
946
857
  blockquote {
947
858
  position: relative;
948
- padding: 1.5rem 2rem 1.5rem 3rem;
859
+ padding: 0.7rem 2.5rem;
949
860
  margin: 1.5rem 0;
950
861
  border-left: 2px solid var(--red);
951
- border-radius: 0 8px 8px 0;
952
- font-family: var(--font-serif);
862
+ font-family: Georgia, Kai, var(--font-serif);
953
863
 
954
864
  &:before {
955
865
  content: "”";
@@ -962,16 +872,24 @@ blockquote {
962
872
  opacity: 0.3;
963
873
  line-height: 1;
964
874
  }
875
+
876
+ cite {
877
+ display: block;
878
+ text-align: right;
879
+ margin-top: 0.5em;
880
+ color: var(--subtext0);
881
+ font-style: italic;
882
+ }
965
883
  }
966
884
 
967
885
  ul.contains-task-list {
968
886
  list-style-type: none;
887
+ padding-left: 0.5rem;
969
888
  }
970
889
 
971
890
  li.task-list-item {
972
891
  position: relative;
973
892
  padding-left: 1.75rem;
974
- font-size: 1rem;
975
893
  list-style: none;
976
894
  }
977
895
 
@@ -985,18 +903,17 @@ input.task-list-item-checkbox {
985
903
  position: absolute;
986
904
  left: 0;
987
905
  top: 0.15rem;
988
- }
989
-
990
- input.task-list-item-checkbox:checked::before {
991
- content: "";
992
- font-family: var(--font-mono);
993
- color: var(--base);
994
- position: absolute;
995
- top: 50%;
996
- left: 40%;
997
- transform: translate(-50%, -50%);
998
- font-size: 0.9rem;
999
- font-weight: 700;
906
+ &:checked::before {
907
+ content: "";
908
+ font-family: var(--font-mono);
909
+ color: var(--base);
910
+ position: absolute;
911
+ top: 50%;
912
+ left: 40%;
913
+ transform: translate(-50%, -50%);
914
+ font-size: 0.9rem;
915
+ font-weight: 700;
916
+ }
1000
917
  }
1001
918
 
1002
919
  .medium-zoom-overlay {
@@ -1013,23 +930,14 @@ input.task-list-item-checkbox:checked::before {
1013
930
  .heimu {
1014
931
  color: var(--text);
1015
932
  background-color: var(--text);
1016
- }
1017
-
1018
- .heimu:hover {
1019
- color: var(--base);
933
+ &:hover {
934
+ color: var(--base);
935
+ }
1020
936
  }
1021
937
 
1022
938
  strong {
1023
939
  font-weight: bolder;
1024
940
  padding: 0 0.15em;
1025
- /* color: var(--maroon); */
1026
- }
1027
-
1028
- hr {
1029
- border: none;
1030
- display: block;
1031
- height: 0.1em;
1032
- margin: 1.5rem 0;
1033
941
  }
1034
942
 
1035
943
  a strong {
@@ -1047,10 +955,6 @@ small {
1047
955
 
1048
956
  /* #endregion Content */
1049
957
 
1050
- :target {
1051
- scroll-margin-top: 5rem;
1052
- }
1053
-
1054
958
  article,
1055
959
  aside,
1056
960
  figure,
@@ -1068,16 +972,13 @@ section {
1068
972
  /* #region Article Meta*/
1069
973
 
1070
974
  .article-title {
1071
- font-family: var(--font-sans-serif);
1072
- font-size: 2.75em;
1073
- font-weight: bold;
975
+ font-size: 2.25em;
976
+ font-family: var(--font-serif);
1074
977
  line-height: 1.2;
1075
- letter-spacing: -0.02em;
1076
978
  margin-bottom: 0.3em;
1077
- color: var(--text);
1078
979
 
1079
980
  > a {
1080
- color: inherit;
981
+ color: var(--text);
1081
982
  }
1082
983
  }
1083
984
 
@@ -1092,7 +993,7 @@ section {
1092
993
  align-items: center;
1093
994
  flex-wrap: wrap;
1094
995
  gap: 0.5rem;
1095
- font-size: 0.875rem;
996
+ font-size: 0.75rem;
1096
997
 
1097
998
  a {
1098
999
  color: var(--subtext0);
@@ -1108,17 +1009,17 @@ section {
1108
1009
  display: flex;
1109
1010
  align-items: center;
1110
1011
  flex-wrap: wrap;
1111
- gap: 0.3rem;
1012
+ gap: 0.2rem;
1112
1013
  }
1113
1014
 
1114
1015
  .article-tags-inline {
1115
1016
  /* Push to the right */
1017
+ gap: 0.8rem;
1116
1018
  margin-left: auto;
1117
1019
  }
1118
1020
 
1119
1021
  .meta-separator {
1120
1022
  color: var(--overlay0);
1121
- padding: 0 0.1em;
1122
1023
  }
1123
1024
 
1124
1025
  /* #endregion Article Meta */
@@ -1132,7 +1033,6 @@ section {
1132
1033
  padding: 1.25rem;
1133
1034
  z-index: 0;
1134
1035
  border-radius: 0 0 24px 24px;
1135
- box-shadow: none;
1136
1036
  overflow: hidden;
1137
1037
  justify-content: space-between;
1138
1038
  }
@@ -1157,8 +1057,9 @@ section {
1157
1057
  }
1158
1058
 
1159
1059
  .licensing-meta {
1160
- .level-item {
1060
+ .level-item p {
1161
1061
  margin-right: 1.5rem;
1062
+ margin-bottom: 0;
1162
1063
  font-size: 0.75rem;
1163
1064
  }
1164
1065
 
@@ -1176,26 +1077,6 @@ section {
1176
1077
 
1177
1078
  /* #region Search */
1178
1079
 
1179
- .searchbox {
1180
- position: fixed;
1181
- top: 0;
1182
- left: 0;
1183
- width: 100%;
1184
- height: 100%;
1185
- z-index: 100;
1186
- font-family: var(--font-mono);
1187
- line-height: 0;
1188
- opacity: 0;
1189
- visibility: hidden;
1190
- display: flex;
1191
-
1192
- &.show {
1193
- opacity: 1;
1194
- visibility: visible;
1195
- backdrop-filter: blur(5px);
1196
- }
1197
- }
1198
-
1199
1080
  input.searchbox-input {
1200
1081
  color: inherit;
1201
1082
  background-color: inherit;
@@ -1289,7 +1170,6 @@ input.searchbox-input {
1289
1170
  position: relative;
1290
1171
  display: block;
1291
1172
  overflow: hidden;
1292
- border-radius: var(--radius) var(--radius) 0 0;
1293
1173
  height: 380px;
1294
1174
 
1295
1175
  img {
@@ -1313,23 +1193,109 @@ input.searchbox-input {
1313
1193
  }
1314
1194
  }
1315
1195
 
1316
- /* html.is-changing .transition-fade {
1317
- view-transition-name: main;
1318
- }
1196
+ /* #region TOC */
1319
1197
 
1320
- ::view-transition-old(main) {
1321
- animation: fade 0.5s ease-in-out both;
1198
+ .toc-button {
1199
+ position: fixed;
1200
+ top: 7rem;
1201
+ left: 2rem;
1202
+ width: 3rem;
1203
+ height: 3rem;
1204
+ border-radius: 50%;
1205
+ background-color: transparent;
1206
+ border: none;
1207
+ cursor: pointer;
1208
+
1209
+ > span {
1210
+ background-color: hsl(from var(--text) h s l / 0.5);
1211
+ height: 2px;
1212
+ left: calc(50% - 8px);
1213
+ position: absolute;
1214
+ width: 1rem;
1215
+
1216
+ &:nth-child(1) {
1217
+ top: calc(50% - 6px);
1218
+ }
1219
+
1220
+ &:nth-child(2) {
1221
+ width: 0.75rem;
1222
+ top: calc(50% - 1px);
1223
+ }
1224
+
1225
+ &:nth-child(3) {
1226
+ top: calc(50% + 4px);
1227
+ }
1228
+ }
1322
1229
  }
1323
1230
 
1324
- ::view-transition-new(main) {
1325
- animation: fade 0.5s ease-in-out both reverse;
1231
+ :popover-open {
1232
+ position: fixed;
1233
+ width: 100%;
1234
+ height: 100%;
1235
+ inset: 0;
1236
+ margin: 0;
1237
+ border: none;
1238
+ background: hsl(from var(--mantle) h s l / 0.7);
1239
+ backdrop-filter: blur(10px);
1240
+ &.toc-body {
1241
+ display: flex;
1242
+ flex-direction: column;
1243
+ align-items: center;
1244
+ justify-content: center;
1245
+ font-weight: 600;
1246
+ }
1247
+
1248
+ &.searchbox {
1249
+ font-family: var(--font-mono);
1250
+ line-height: 0;
1251
+ display: flex;
1252
+ }
1253
+ &#theme-selector-popover {
1254
+ display: flex;
1255
+ align-items: center;
1256
+ justify-content: center;
1257
+ }
1326
1258
  }
1327
1259
 
1328
- @keyframes fade {
1329
- from {
1330
- opacity: 1;
1260
+ #icarus-toc-container {
1261
+ .toc {
1262
+ max-height: 80vh;
1263
+ overflow-y: auto;
1264
+ padding: 0;
1265
+ list-style: none;
1266
+ }
1267
+
1268
+ .toc-item {
1269
+ margin-bottom: 0.5rem;
1331
1270
  }
1332
- to {
1333
- opacity: 0;
1271
+
1272
+ .toc-child {
1273
+ padding-left: 1.5rem;
1274
+ list-style: none;
1334
1275
  }
1335
- } */
1276
+
1277
+ .toc-text {
1278
+ display: inline;
1279
+ color: var(--subtext0);
1280
+
1281
+ .toc-level-2 & {
1282
+ color: var(--text);
1283
+ font-size: 1.8rem;
1284
+ }
1285
+ .toc-level-3 & {
1286
+ color: var(--subtext1);
1287
+ font-size: 1.5rem;
1288
+ }
1289
+ .toc-level-4 & {
1290
+ font-size: 1.25rem;
1291
+ }
1292
+ .toc-level-6 & {
1293
+ font-size: 0.875rem;
1294
+ }
1295
+ &:hover {
1296
+ color: var(--mauve);
1297
+ }
1298
+ }
1299
+ }
1300
+
1301
+ /* #endregion TOC */