hexo-theme-linen 1.0.21 → 1.0.23

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 (46) hide show
  1. package/languages/en.yml +3 -0
  2. package/languages/zh-CN.yml +4 -1
  3. package/layout/footer.ejs +62 -0
  4. package/layout/layout.ejs +22 -9
  5. package/layout/partials/header.ejs +1 -1
  6. package/layout/partials/post-item.ejs +5 -5
  7. package/layout/partials/related-posts.ejs +1 -1
  8. package/layout/post.ejs +362 -24
  9. package/layout/series.ejs +277 -4
  10. package/package.json +1 -1
  11. package/scripts/font-version.js +5 -3
  12. package/scripts/helpers/tools.js +187 -191
  13. package/scripts/lazyload/client.js +11 -2
  14. package/scripts/lazyload/index.js +7 -5
  15. package/scripts/lazyload/inject.js +8 -0
  16. package/scripts/lazyload/process.js +202 -163
  17. package/scripts/markdown-it-image-grid.js +74 -10
  18. package/source/linen-theme/css/{mediaquery.scss → _mediaquery.scss} +183 -12
  19. package/source/linen-theme/css/atom.xsl +37 -0
  20. package/source/linen-theme/css/font-version.scss +1 -1
  21. package/source/linen-theme/css/images/layers-2x.png +0 -0
  22. package/source/linen-theme/css/images/layers.png +0 -0
  23. package/source/linen-theme/css/images/marker-icon-2x.png +0 -0
  24. package/source/linen-theme/css/images/marker-icon.png +0 -0
  25. package/source/linen-theme/css/images/marker-shadow.png +0 -0
  26. package/source/linen-theme/css/leaflet.css +661 -0
  27. package/source/linen-theme/css/linen.scss +1198 -114
  28. package/source/linen-theme/css/linkcard.scss +53 -11
  29. package/source/linen-theme/css/noscript.css +70 -0
  30. package/source/linen-theme/css/photoswipe-dynamic-caption-plugin.css +1 -1
  31. package/source/linen-theme/css/photoswipe.css +166 -1
  32. package/source/linen-theme/css/rss-en.xsl +1 -1
  33. package/source/linen-theme/css/rss-zh.xsl +1 -1
  34. package/source/linen-theme/css/vars.scss +1 -1
  35. package/source/linen-theme/img/pattern-randomized.svg +1 -0
  36. package/source/linen-theme/img/travel-map-fallback.svg +30 -0
  37. package/source/linen-theme/js/hdr.js +42 -12
  38. package/source/linen-theme/js/lazyload.js +11 -2
  39. package/source/linen-theme/js/leaflet.js +6 -0
  40. package/source/linen-theme/js/linen.js +114 -83
  41. package/source/linen-theme/js/photoswipe/photoswipe.esm.min.js +13 -0
  42. package/source/linen-theme/js/replace-emoji.js +2 -4
  43. package/source/linen-theme/js/toc.js +71 -121
  44. package/layout/partials/footer.ejs +0 -12
  45. package/source/linen-theme/img/icons/backref.svg +0 -1
  46. package/source/linen-theme/img/icons/more.svg +0 -4
@@ -1,7 +1,9 @@
1
+ @use "sass:color";
1
2
  @use "./normalize.css" as *;
2
3
  @use "./vars.scss" as *;
3
4
  @use "./highlight-github.scss" as *;
4
5
  @use "./font-version.scss" as *;
6
+ @use "./mediaquery.scss" as mq;
5
7
 
6
8
  @font-face {
7
9
  font-family: "source han serif cn";
@@ -9,8 +11,7 @@
9
11
  local("Source Han Serif CN"),
10
12
  local("Source Han Serif SC"),
11
13
  local("Songti SC"),
12
- url("../fonts/SourceHanSerifSC-Regular.woff2?v=#{$font-version}")
13
- format("woff2");
14
+ url("../fonts/SourceHanSerifSC-Regular.woff2?v=#{$font-version}") format("woff2");
14
15
  font-display: swap;
15
16
  unicode-range: U+4E00-9FFF;
16
17
  }
@@ -24,17 +25,15 @@
24
25
 
25
26
  @font-face {
26
27
  font-family: "source-serif";
27
- src: url("../fonts/SourceSerif4-Regular.ttf.woff2?v=#{$font-version}")
28
- format("woff2");
28
+ src: url("../fonts/SourceSerif4-Regular.ttf.woff2?v=#{$font-version}") format("woff2");
29
29
  unicode-range:
30
- U+0-7F, U+A0, U+B7, U+200A, U+2014, U+2018, U+2019, U+201C, U+201D, U+2022,
31
- U+2026, U+00B0, U+0043;
30
+ U+0-7F, U+A0, U+B7, U+200A, U+2014, U+2018, U+2019, U+201C, U+201D, U+2022, U+2026, U+00B0,
31
+ U+0043;
32
32
  font-display: swap;
33
33
  }
34
34
  @font-face {
35
35
  font-family: "Source Sans Pro";
36
- src: url("../fonts/Source-Sans-Pro-Regular-2.woff2?v=#{$font-version}")
37
- format("woff2");
36
+ src: url("../fonts/Source-Sans-Pro-Regular-2.woff2?v=#{$font-version}") format("woff2");
38
37
  font-display: swap;
39
38
  }
40
39
 
@@ -67,16 +66,15 @@ a {
67
66
  }
68
67
  .item-body {
69
68
  width: 100%;
70
- display: flex;
71
- justify-content: space-between;
69
+ display: block;
70
+ &::after {
71
+ content: "";
72
+ display: table;
73
+ clear: both;
74
+ }
72
75
  }
73
76
  .title-excerpt {
74
- width: 0;
75
- flex: 1 1 auto;
76
- margin-right: 15px;
77
- display: flex;
78
- flex-direction: column;
79
- justify-content: space-between;
77
+ display: block;
80
78
  }
81
79
  .title {
82
80
  color: $darkText;
@@ -95,7 +93,6 @@ a {
95
93
  cursor: text;
96
94
  margin: 0.5rem 0;
97
95
  color: $grayerText;
98
- @include ellipsis(2);
99
96
  white-space: wrap;
100
97
  }
101
98
  .post-meta {
@@ -121,8 +118,9 @@ a {
121
118
  }
122
119
  }
123
120
  .cover-img {
124
- flex: 0 0 auto;
121
+ float: right;
125
122
  width: 25%;
123
+ margin-left: 15px;
126
124
  height: fit-content;
127
125
  position: relative;
128
126
  border: 1px solid rgba(0, 0, 0, 0.15);
@@ -141,6 +139,23 @@ a {
141
139
  height: 100%;
142
140
  object-fit: cover;
143
141
  }
142
+ .post-list-cover-lazy {
143
+ position: absolute;
144
+ inset: 0;
145
+ width: 100%;
146
+ height: 100%;
147
+ border-radius: 0;
148
+ .placeholder {
149
+ width: 100%;
150
+ height: 100%;
151
+ padding-bottom: 0 !important;
152
+ background-size: cover;
153
+ background-position: center;
154
+ }
155
+ img {
156
+ object-fit: cover;
157
+ }
158
+ }
144
159
  }
145
160
  .tags {
146
161
  white-space: nowrap;
@@ -240,6 +255,11 @@ body {
240
255
  height: 42px;
241
256
  background-image: url("../img/logo.svg");
242
257
  background-size: cover;
258
+ -webkit-tap-highlight-color: transparent;
259
+ &:active {
260
+ opacity: 1;
261
+ filter: none;
262
+ }
243
263
  }
244
264
  .right {
245
265
  flex: 1 1 auto;
@@ -453,11 +473,7 @@ body {
453
473
  padding: 2px 4px;
454
474
  border-radius: 2px;
455
475
  color: #fff;
456
- background-image: linear-gradient(
457
- to top,
458
- rgba(0, 0, 0, 0.1),
459
- rgba(0, 0, 0, 0)
460
- );
476
+ background-image: linear-gradient(to top, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));
461
477
  .series-name {
462
478
  margin: 0;
463
479
  display: block;
@@ -528,6 +544,22 @@ body {
528
544
  video {
529
545
  max-width: 100%;
530
546
  }
547
+ .diagram-scroll {
548
+ max-width: 100%;
549
+ overflow-x: auto;
550
+ overflow-y: hidden;
551
+
552
+ img {
553
+ width: auto;
554
+ max-width: none;
555
+ height: 100%;
556
+ }
557
+ }
558
+ @media (max-width: 767px) {
559
+ .diagram-scroll img {
560
+ height: min(60vh, 420px);
561
+ }
562
+ }
531
563
  iframe {
532
564
  border: none;
533
565
  }
@@ -1335,6 +1367,54 @@ body {
1335
1367
  color: #d8d8d8;
1336
1368
  }
1337
1369
  }
1370
+ &.about {
1371
+ margin-bottom: 10px;
1372
+ color: $green;
1373
+ font-size: 14px;
1374
+ a {
1375
+ &:hover {
1376
+ text-decoration: underline;
1377
+ }
1378
+ }
1379
+ .about-this-site {
1380
+ display: inline-block;
1381
+ position: relative;
1382
+ bottom: 1px;
1383
+ white-space: nowrap;
1384
+ color: inherit;
1385
+ margin-right: 12px;
1386
+ i.about-icon {
1387
+ width: 18px;
1388
+ height: 18px;
1389
+ background-image: url("../img/icons/about.svg");
1390
+ background-size: cover;
1391
+ display: inline-block;
1392
+ vertical-align: middle;
1393
+ margin-bottom: 2px;
1394
+ opacity: 0.7;
1395
+ margin-right: 2px;
1396
+ }
1397
+ }
1398
+ .whats-new {
1399
+ margin-right: 0;
1400
+ display: inline-block;
1401
+ position: relative;
1402
+ bottom: 1px;
1403
+ white-space: nowrap;
1404
+ i.new-icon {
1405
+ width: 18px;
1406
+ height: 18px;
1407
+ background-image: url("../img/icons/new.svg");
1408
+ background-size: cover;
1409
+ display: inline-block;
1410
+ vertical-align: middle;
1411
+ margin-bottom: 2px;
1412
+ margin-right: 2px;
1413
+ }
1414
+ font-size: 14px;
1415
+ color: $linkColor;
1416
+ }
1417
+ }
1338
1418
  }
1339
1419
  }
1340
1420
  }
@@ -1368,11 +1448,7 @@ body {
1368
1448
  display: block;
1369
1449
  width: 100%;
1370
1450
  height: 35%;
1371
- background-image: linear-gradient(
1372
- to bottom,
1373
- rgba(255, 255, 255, 0),
1374
- rgba(255, 255, 255, 1)
1375
- );
1451
+ background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
1376
1452
  }
1377
1453
  }
1378
1454
 
@@ -1481,6 +1557,10 @@ body {
1481
1557
  .gt-comment-username {
1482
1558
  color: $darkText;
1483
1559
  }
1560
+ .gt-header-avatar,
1561
+ .gt-comment-avatar {
1562
+ background-color: #f5f5f5;
1563
+ }
1484
1564
  .user-mention {
1485
1565
  color: $darkText;
1486
1566
  text-decoration: underline;
@@ -1635,6 +1715,23 @@ body {
1635
1715
  height: 100%;
1636
1716
  object-fit: cover;
1637
1717
  }
1718
+ .post-list-cover-lazy {
1719
+ position: absolute;
1720
+ inset: 0;
1721
+ width: 100%;
1722
+ height: 100%;
1723
+ border-radius: 0;
1724
+ .placeholder {
1725
+ width: 100%;
1726
+ height: 100%;
1727
+ padding-bottom: 0 !important;
1728
+ background-size: cover;
1729
+ background-position: center;
1730
+ }
1731
+ img {
1732
+ object-fit: cover;
1733
+ }
1734
+ }
1638
1735
  }
1639
1736
  &:first-child {
1640
1737
  margin-right: 0;
@@ -1675,7 +1772,7 @@ body {
1675
1772
  .series-nav {
1676
1773
  background-color: #f5f5f5;
1677
1774
  width: calc(100% - min(6vw, 30px));
1678
- margin: 0 auto 1em auto;
1775
+ margin: $postWidgetGap auto 1em auto;
1679
1776
  padding: 1em;
1680
1777
  padding-top: 0.65em;
1681
1778
  border-radius: 2px;
@@ -1777,6 +1874,13 @@ body {
1777
1874
  .series-items {
1778
1875
  flex: 1 1 auto;
1779
1876
  overflow-y: auto;
1877
+ .series-year-divider {
1878
+ color: $moreGrayText;
1879
+ font-size: 12px;
1880
+ font-weight: bold;
1881
+ line-height: 1;
1882
+ padding: 1em $commonPadding 0.35em;
1883
+ }
1780
1884
  .series-item-link {
1781
1885
  padding: 0.5em $commonPadding;
1782
1886
  display: block;
@@ -1806,64 +1910,421 @@ body {
1806
1910
  }
1807
1911
 
1808
1912
  #footer {
1809
- padding: 0 26px;
1810
1913
  background-color: #fff;
1914
+ border-top: 1px solid rgba(0, 0, 0, 0.08);
1811
1915
  @include pageXPadding;
1916
+ padding-top: 36px;
1917
+ padding-bottom: 36px;
1918
+ margin-top: 30px;
1919
+
1812
1920
  .footerInner {
1813
- border-top: 1px solid rgba(0, 0, 0, 0.15);
1921
+ max-width: max(1032px, min(1192px, 68vw));
1922
+ margin: 0 auto;
1923
+ display: flex;
1924
+ flex-direction: column;
1925
+ }
1926
+
1927
+ .footerTop {
1928
+ display: flex;
1929
+ justify-content: space-between;
1930
+ align-items: flex-start;
1931
+ flex-wrap: wrap;
1932
+ gap: 30px;
1933
+ width: 100%;
1934
+ }
1935
+
1936
+ .footerBrand {
1937
+ max-width: 300px;
1938
+ display: flex;
1939
+ flex-direction: column;
1940
+ gap: 12px;
1941
+
1942
+ .footerLogo {
1943
+ height: 32px;
1944
+ width: auto;
1945
+ align-self: flex-start;
1946
+ opacity: 0.85;
1947
+ transition: opacity 0.3s ease;
1948
+ &:hover {
1949
+ opacity: 1;
1950
+ }
1951
+ }
1952
+
1953
+ .footerDesc {
1954
+ font-size: 13px;
1955
+ color: $moreGrayText;
1956
+ line-height: 1.6;
1957
+ margin: 0;
1958
+ font-weight: 400;
1959
+ }
1960
+ }
1961
+
1962
+ .footerLinks {
1814
1963
  display: flex;
1964
+ gap: 60px;
1965
+ flex-wrap: wrap;
1966
+ flex: 1 1 auto;
1815
1967
  justify-content: flex-end;
1816
- padding: 20px 0;
1817
- .footerItems {
1818
- display: flex;
1819
- justify-content: flex-end;
1820
- align-items: center;
1821
- flex-wrap: wrap;
1968
+ }
1969
+
1970
+ .footerLinkCol {
1971
+ display: flex;
1972
+ flex-direction: column;
1973
+ gap: 10px;
1974
+ min-width: 120px;
1975
+
1976
+ h4 {
1977
+ font-size: 12px;
1978
+ text-transform: uppercase;
1979
+ letter-spacing: 1px;
1980
+ color: $darkText;
1981
+ margin: 0 0 4px 0;
1982
+ font-weight: 600;
1983
+
1984
+ a {
1985
+ color: inherit;
1986
+ text-decoration: none;
1987
+ transition: color 0.2s ease;
1988
+
1989
+ &:hover {
1990
+ color: $green;
1991
+ }
1992
+ }
1822
1993
  }
1823
- .footerItem {
1994
+
1995
+ a {
1996
+ font-size: 13px;
1997
+ color: $grayerText;
1998
+ text-decoration: none;
1999
+ transition:
2000
+ color 0.2s ease,
2001
+ transform 0.2s ease;
1824
2002
  display: inline-flex;
1825
2003
  align-items: center;
1826
- color: $grayerText;
1827
- -webkit-touch-callout: none;
1828
- a {
1829
- color: $grayerText;
1830
- &:hover {
1831
- text-decoration: underline;
2004
+ gap: 6px;
2005
+
2006
+ &:hover {
2007
+ color: $green;
2008
+ transform: translateX(2px);
2009
+ }
2010
+ }
2011
+
2012
+ .footerRssLink {
2013
+ color: #bd5300;
2014
+ font-weight: 500;
2015
+
2016
+ .rssSvg {
2017
+ transition: transform 0.2s ease;
2018
+ }
2019
+
2020
+ &:hover {
2021
+ color: #994300;
2022
+ .rssSvg {
2023
+ transform: scale(1.15);
1832
2024
  }
1833
- &:hover {
1834
- color: $grayerText;
2025
+ }
2026
+ }
2027
+
2028
+ &.footerMetaCol {
2029
+ min-width: 200px;
2030
+
2031
+ .footerMetaText {
2032
+ font-size: 13px;
2033
+ color: $moreGrayText;
2034
+ line-height: 1.5;
2035
+
2036
+ a {
2037
+ font-size: 13px;
2038
+ color: $moreGrayText;
2039
+ border-bottom: 1px dashed transparent;
2040
+ padding: 0;
2041
+ display: inline;
2042
+ transition:
2043
+ color 0.2s ease,
2044
+ border-color 0.2s ease;
2045
+
2046
+ &:hover {
2047
+ color: $darkText;
2048
+ border-bottom-color: $darkText;
2049
+ transform: none;
2050
+ }
2051
+ }
2052
+
2053
+ &.copyright {
2054
+ .copyright-popover-container {
2055
+ position: relative;
2056
+ display: inline-block;
2057
+
2058
+ .copyright-trigger {
2059
+ cursor: pointer;
2060
+ font-style: normal;
2061
+ display: inline-flex;
2062
+ align-items: center;
2063
+ justify-content: center;
2064
+ width: 18px;
2065
+ height: 18px;
2066
+ border-radius: 50%;
2067
+ background-color: rgba(0, 0, 0, 0.05);
2068
+ color: $moreGrayText;
2069
+ font-size: 11px;
2070
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
2071
+ user-select: none;
2072
+ outline: none;
2073
+ vertical-align: middle;
2074
+ margin-top: -2px;
2075
+
2076
+ &:hover,
2077
+ &:focus {
2078
+ background-color: rgba(15, 115, 12, 0.1);
2079
+ color: $green;
2080
+ transform: scale(1.1);
2081
+ }
2082
+ }
2083
+
2084
+ .copyright-popover-content {
2085
+ position: absolute;
2086
+ bottom: 100%;
2087
+ right: -15px;
2088
+ margin-bottom: 10px;
2089
+ width: 280px;
2090
+ max-width: calc(100vw - 32px);
2091
+ padding: 12px 14px;
2092
+ background-color: #ffffff;
2093
+ border: 1px solid rgba(0, 0, 0, 0.08);
2094
+ border-radius: 8px;
2095
+ box-shadow:
2096
+ 0 4px 20px rgba(0, 0, 0, 0.08),
2097
+ 0 2px 6px rgba(0, 0, 0, 0.03);
2098
+ z-index: 100;
2099
+ pointer-events: none;
2100
+ opacity: 0;
2101
+ visibility: hidden;
2102
+ transform: translateY(8px);
2103
+ transition:
2104
+ opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),
2105
+ transform 0.25s cubic-bezier(0.4, 0, 0.2, 1),
2106
+ visibility 0.25s;
2107
+
2108
+ .copyright-popover-header {
2109
+ display: flex;
2110
+ align-items: center;
2111
+ gap: 6px;
2112
+ margin-bottom: 6px;
2113
+ color: $darkText;
2114
+ font-weight: 600;
2115
+ font-size: 12px;
2116
+
2117
+ .copyright-popover-icon {
2118
+ color: $green;
2119
+ flex-shrink: 0;
2120
+ }
2121
+
2122
+ .copyright-popover-title {
2123
+ font-size: 12px;
2124
+ color: $darkText;
2125
+ font-weight: 600;
2126
+ margin: 0;
2127
+ line-height: 1;
2128
+ }
2129
+ }
2130
+
2131
+ .copyright-popover-text {
2132
+ display: block;
2133
+ font-size: 11px;
2134
+ line-height: 1.5;
2135
+ color: $grayerText;
2136
+ font-weight: normal;
2137
+ text-align: left;
2138
+ white-space: normal;
2139
+ }
2140
+
2141
+ .copyright-popover-arrow {
2142
+ position: absolute;
2143
+ bottom: -5px;
2144
+ right: 20px;
2145
+ transform: rotate(45deg);
2146
+ width: 8px;
2147
+ height: 8px;
2148
+ background-color: #ffffff;
2149
+ border-right: 1px solid rgba(0, 0, 0, 0.08);
2150
+ border-bottom: 1px solid rgba(0, 0, 0, 0.08);
2151
+ }
2152
+ }
2153
+
2154
+ &:hover,
2155
+ &:focus-within {
2156
+ .copyright-popover-content {
2157
+ pointer-events: auto;
2158
+ opacity: 1;
2159
+ visibility: visible;
2160
+ transform: translateY(0);
2161
+ }
2162
+ }
2163
+ }
1835
2164
  }
1836
2165
  }
1837
- &:not(:last-child) {
1838
- &::after {
1839
- content: "";
1840
- display: block;
1841
- width: 4px;
1842
- height: 4px;
1843
- border-radius: 50%;
1844
- background-color: $grayerText;
1845
- margin: 0 10px;
2166
+ }
2167
+ }
2168
+ }
2169
+
2170
+ @media (max-width: 768px) {
2171
+ #footer {
2172
+ padding-top: 24px;
2173
+ padding-bottom: 24px;
2174
+ margin-top: 20px;
2175
+ padding-left: 12px;
2176
+ padding-right: 12px;
2177
+
2178
+ .footerBrand {
2179
+ body:not(.is-post) & {
2180
+ display: none;
2181
+ }
2182
+
2183
+ body.is-post & {
2184
+ display: inline-flex;
2185
+ flex-direction: row;
2186
+ align-items: center;
2187
+ gap: 12px;
2188
+ margin-bottom: 4px;
2189
+ width: 100%;
2190
+
2191
+ .footerLogo {
2192
+ height: 22px;
2193
+ width: auto;
2194
+ margin: 0;
2195
+ }
2196
+
2197
+ .footerDesc {
2198
+ font-size: 12px;
2199
+ margin: 0;
2200
+ border-left: 1px solid rgba(0, 0, 0, 0.08);
2201
+ padding-left: 12px;
2202
+ line-height: 1.2;
1846
2203
  }
1847
2204
  }
1848
2205
  }
2206
+
2207
+ .footerTop {
2208
+ flex-direction: column;
2209
+ align-items: stretch;
2210
+ gap: 24px;
2211
+ }
2212
+
2213
+ .footerLinks {
2214
+ flex-direction: row;
2215
+ flex-wrap: nowrap;
2216
+ gap: 0 12px;
2217
+ justify-content: space-between;
2218
+ }
2219
+
2220
+ .footerLinkCol {
2221
+ min-width: unset;
2222
+ gap: 6px;
2223
+
2224
+ &.footerMetaCol {
2225
+ min-width: unset;
2226
+ width: auto;
2227
+ margin-top: 0;
2228
+ }
2229
+ }
1849
2230
  }
1850
2231
  }
1851
2232
 
1852
2233
  #paginator {
1853
- background-color: #fff;
1854
- margin: calc(30px - $postItemGap) 0 30px 0;
2234
+ background-color: transparent;
2235
+ margin: 16px 0 0 0;
1855
2236
  display: flex;
1856
- justify-content: space-evenly;
1857
- a {
2237
+ justify-content: center;
2238
+ align-items: center;
2239
+ flex-wrap: wrap;
2240
+ gap: 8px;
2241
+ user-select: none;
2242
+
2243
+ @media (max-width: 768px) {
2244
+ margin: 12px 0 0 0;
2245
+ gap: 6px;
2246
+ }
2247
+
2248
+ a,
2249
+ span {
2250
+ display: inline-flex;
2251
+ align-items: center;
2252
+ justify-content: center;
2253
+ min-width: 36px;
2254
+ height: 36px;
2255
+ padding: 0 6px;
2256
+ border-radius: 4px;
2257
+ font-size: 14px;
2258
+ font-weight: 500;
1858
2259
  color: $grayerText;
2260
+ border: 1px solid rgba(0, 0, 0, 0.05);
2261
+ background-color: #fff;
2262
+ transition: all 0.2s ease;
2263
+ text-decoration: none;
2264
+ box-sizing: border-box;
2265
+
2266
+ @media (max-width: 768px) {
2267
+ min-width: 30px;
2268
+ height: 30px;
2269
+ padding: 0 4px;
2270
+ border-radius: 3px;
2271
+ font-size: 13px;
2272
+ }
2273
+
1859
2274
  &:hover {
1860
- opacity: 0.7;
2275
+ background-color: #f5f5f5;
2276
+ color: $darkText;
2277
+ border-color: rgba(0, 0, 0, 0.1);
2278
+ transform: translateY(-1px);
2279
+ }
2280
+
2281
+ &:active {
2282
+ transform: translateY(0);
1861
2283
  }
1862
2284
  }
1863
- .page-number {
1864
- &.current {
1865
- color: $green;
1866
- font-weight: bold;
2285
+
2286
+ .page-number.current {
2287
+ background-color: $green;
2288
+ color: #fff;
2289
+ border-color: $green;
2290
+ font-weight: bold;
2291
+ box-shadow: 0 3px 8px rgba(15, 115, 12, 0.18);
2292
+ cursor: default;
2293
+
2294
+ @media (max-width: 768px) {
2295
+ box-shadow: 0 2px 6px rgba(15, 115, 12, 0.15);
2296
+ }
2297
+
2298
+ &:hover {
2299
+ background-color: $green;
2300
+ color: #fff;
2301
+ border-color: $green;
2302
+ transform: none;
2303
+ }
2304
+ }
2305
+
2306
+ .space {
2307
+ background-color: transparent;
2308
+ border-color: transparent;
2309
+ color: $moreGrayText;
2310
+ cursor: default;
2311
+
2312
+ &:hover {
2313
+ background-color: transparent;
2314
+ border-color: transparent;
2315
+ color: $moreGrayText;
2316
+ transform: none;
2317
+ }
2318
+ }
2319
+
2320
+ .extend {
2321
+ font-size: 13px;
2322
+ padding: 0 12px;
2323
+ font-weight: 500;
2324
+
2325
+ @media (max-width: 768px) {
2326
+ font-size: 12px;
2327
+ padding: 0 10px;
1867
2328
  }
1868
2329
  }
1869
2330
  }
@@ -2031,16 +2492,26 @@ body {
2031
2492
  margin-bottom: 4px;
2032
2493
  }
2033
2494
  }
2034
- .series-item-link:not(.active) {
2495
+ .series-item-link:not(.active),
2496
+ .series-year-divider:not(.active) {
2035
2497
  opacity: 0.1;
2036
2498
  transition: ease opacity 0.3s;
2037
2499
  }
2038
2500
  &:hover {
2039
- .series-item-link:not(.active) {
2501
+ .series-item-link:not(.active),
2502
+ .series-year-divider:not(.active) {
2040
2503
  opacity: 1;
2041
2504
  }
2042
2505
  }
2043
2506
  .series-items {
2507
+ .series-year-divider {
2508
+ color: $moreGrayText;
2509
+ font-size: 12px;
2510
+ font-weight: bold;
2511
+ line-height: 1;
2512
+ margin-top: 18px;
2513
+ padding: 0 15px;
2514
+ }
2044
2515
  .series-item-link {
2045
2516
  padding: 0 15px;
2046
2517
  display: block;
@@ -2141,7 +2612,7 @@ html[lang="zh-CN"] {
2141
2612
  }
2142
2613
 
2143
2614
  #related-posts {
2144
- padding: 0 $commonPadding;
2615
+ @include pageXPadding;
2145
2616
  border-top: solid 1px #f5f5f5;
2146
2617
  .related-posts-title {
2147
2618
  margin: 1em 0;
@@ -2260,12 +2731,402 @@ html[lang="zh-CN"] {
2260
2731
  margin-right: 4px;
2261
2732
  margin-bottom: -1px;
2262
2733
  }
2263
- }
2264
2734
 
2265
- .lazyload-outer-wrap {
2266
- .gallery-item {
2267
- width: 100%;
2268
- display: inline-block;
2735
+ .travel-map-section {
2736
+ margin: 24px 0 30px;
2737
+ }
2738
+
2739
+ .travel-map-panel {
2740
+ display: grid;
2741
+ grid-template-columns: minmax(180px, 0.3fr) minmax(0, 0.7fr);
2742
+ min-height: 360px;
2743
+ overflow: hidden;
2744
+ border: 1px solid rgba(0, 0, 0, 0.08);
2745
+ background:
2746
+ linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(239, 246, 246, 0.94)), #f4f8f8;
2747
+ }
2748
+
2749
+ .travel-map-copy {
2750
+ display: flex;
2751
+ flex-direction: column;
2752
+ justify-content: space-between;
2753
+ padding: 34px 24px;
2754
+ color: $darkText;
2755
+ border-right: 1px solid rgba(0, 0, 0, 0.07);
2756
+ h2 {
2757
+ margin: 10px 0 auto;
2758
+ font-size: 30px;
2759
+ line-height: 1.15;
2760
+ letter-spacing: 0;
2761
+ }
2762
+ }
2763
+
2764
+ .travel-map-eyebrow {
2765
+ @include defaultFont;
2766
+ color: $metaText;
2767
+ font-size: 13px;
2768
+ letter-spacing: 0;
2769
+ }
2770
+
2771
+ .travel-map-stats {
2772
+ @include defaultFont;
2773
+ margin-top: 34px;
2774
+ color: $grayerText;
2775
+ font-size: 14px;
2776
+ span {
2777
+ display: block;
2778
+ color: $darkText;
2779
+ font-family: "source-serif", "source han serif cn", serif;
2780
+ font-size: 48px;
2781
+ line-height: 1;
2782
+ }
2783
+ }
2784
+
2785
+ .travel-map-canvas {
2786
+ position: relative;
2787
+ min-height: 360px;
2788
+ background: #e9f4f6;
2789
+ }
2790
+
2791
+ .travel-map-loading {
2792
+ @include defaultFont;
2793
+ display: flex;
2794
+ align-items: center;
2795
+ justify-content: center;
2796
+ height: 100%;
2797
+ min-height: 360px;
2798
+ color: $grayerText;
2799
+ background: #edf3f3;
2800
+ }
2801
+
2802
+ .travel-map-fallback-img {
2803
+ display: block;
2804
+ width: 100%;
2805
+ height: 100%;
2806
+ min-height: 360px;
2807
+ object-fit: cover;
2808
+ }
2809
+
2810
+ .travel-leaflet-marker {
2811
+ span {
2812
+ position: relative;
2813
+ display: block;
2814
+ width: 18px;
2815
+ height: 18px;
2816
+ border: 3px solid rgba(255, 255, 255, 0.95);
2817
+ border-radius: 50%;
2818
+ background: $green;
2819
+ box-shadow:
2820
+ rgba(0, 0, 0, 0.12) 0 4px 10px,
2821
+ rgba(15, 115, 12, 0.25) 0 0 0 6px;
2822
+ transition:
2823
+ transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
2824
+ box-shadow 0.25s ease,
2825
+ background-color 0.25s ease;
2826
+ }
2827
+ strong {
2828
+ @include defaultFont;
2829
+ position: absolute;
2830
+ right: -7px;
2831
+ top: -7px;
2832
+ min-width: 15px;
2833
+ height: 15px;
2834
+ padding: 0 4px;
2835
+ border-radius: 999px;
2836
+ background: #fff;
2837
+ color: $green;
2838
+ font-weight: bold;
2839
+ font-size: 10px;
2840
+ line-height: 15px;
2841
+ text-align: center;
2842
+ box-shadow: rgba(0, 0, 0, 0.15) 0 2px 6px;
2843
+ }
2844
+ &.active {
2845
+ span {
2846
+ width: 22px;
2847
+ height: 22px;
2848
+ transform: translate(-2px, -2px) scale(1.1);
2849
+ background: color.adjust($green, $lightness: -5%);
2850
+ box-shadow:
2851
+ rgba(0, 0, 0, 0.18) 0 8px 18px,
2852
+ rgba(15, 115, 12, 0.35) 0 0 0 8px;
2853
+ }
2854
+ }
2855
+ }
2856
+
2857
+ .travel-map-popup-list {
2858
+ min-width: 180px;
2859
+ max-width: 240px;
2860
+ }
2861
+
2862
+ .travel-map-popup-record {
2863
+ display: flex;
2864
+ align-items: flex-start;
2865
+ gap: 10px;
2866
+ color: $darkText;
2867
+ &:not(:first-child) {
2868
+ margin-top: 8px;
2869
+ padding-top: 8px;
2870
+ border-top: 1px solid rgba(0, 0, 0, 0.08);
2871
+ }
2872
+ .travel-map-popup-cover {
2873
+ width: 44px;
2874
+ height: 44px;
2875
+ object-fit: cover;
2876
+ border-radius: 4px;
2877
+ flex-shrink: 0;
2878
+ background-color: #edf1ef;
2879
+ border: 1px solid rgba(0, 0, 0, 0.05);
2880
+ }
2881
+ .travel-map-popup-content {
2882
+ flex: 1;
2883
+ min-width: 0;
2884
+ min-height: 44px;
2885
+ padding: 4px 0;
2886
+ display: flex;
2887
+ flex-direction: column;
2888
+ justify-content: space-between;
2889
+ span {
2890
+ display: block;
2891
+ font-weight: bold;
2892
+ font-size: 13px;
2893
+ line-height: 1.3;
2894
+ }
2895
+ .travel-map-popup-subtitle {
2896
+ display: inline;
2897
+ margin-left: 4px;
2898
+ color: $metaText;
2899
+ font-size: 11px;
2900
+ font-weight: normal;
2901
+ }
2902
+ small {
2903
+ @include defaultFont;
2904
+ display: block;
2905
+ margin-top: 3px;
2906
+ color: $metaText;
2907
+ font-size: 11px;
2908
+ line-height: 1.3;
2909
+ }
2910
+ }
2911
+ }
2912
+
2913
+ .leaflet-container {
2914
+ font-family: inherit;
2915
+ }
2916
+
2917
+ .leaflet-control-attribution {
2918
+ @include defaultFont;
2919
+ background: rgba(255, 255, 255, 0.75) !important;
2920
+ backdrop-filter: blur(8px);
2921
+ color: $moreGrayText !important;
2922
+ font-size: 10px !important;
2923
+ padding: 2px 6px !important;
2924
+ border-radius: 6px 0 0 0 !important;
2925
+ border-top: 1px solid rgba(0, 0, 0, 0.04) !important;
2926
+ border-left: 1px solid rgba(0, 0, 0, 0.04) !important;
2927
+
2928
+ a {
2929
+ color: $moreGrayText !important;
2930
+ text-decoration: none !important;
2931
+
2932
+ &:hover {
2933
+ color: $green !important;
2934
+ text-decoration: underline !important;
2935
+ }
2936
+ }
2937
+ }
2938
+
2939
+ .leaflet-bar {
2940
+ border: none !important;
2941
+ box-shadow:
2942
+ 0 6px 16px rgba(0, 0, 0, 0.08),
2943
+ 0 1px 4px rgba(0, 0, 0, 0.02) !important;
2944
+ border-radius: 6px !important;
2945
+ overflow: hidden;
2946
+
2947
+ a {
2948
+ width: 32px !important;
2949
+ height: 32px !important;
2950
+ line-height: 32px !important;
2951
+ background-color: #ffffff !important;
2952
+ color: $darkText !important;
2953
+ border-bottom: 1px solid rgba(0, 0, 0, 0.06) !important;
2954
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
2955
+ font-size: 16px !important;
2956
+ font-weight: 500 !important;
2957
+
2958
+ &:last-child {
2959
+ border-bottom: none !important;
2960
+ }
2961
+
2962
+ &:hover,
2963
+ &:focus {
2964
+ background-color: rgba(15, 115, 12, 0.08) !important;
2965
+ color: $green !important;
2966
+ }
2967
+
2968
+ &.leaflet-disabled {
2969
+ background-color: #f9f9f9 !important;
2970
+ color: #cccccc !important;
2971
+ cursor: not-allowed !important;
2972
+ pointer-events: none !important;
2973
+ }
2974
+ }
2975
+ }
2976
+
2977
+ .leaflet-popup-content-wrapper {
2978
+ border-radius: 8px !important;
2979
+ box-shadow:
2980
+ 0 10px 30px rgba(0, 0, 0, 0.08),
2981
+ 0 1px 8px rgba(0, 0, 0, 0.02) !important;
2982
+ border: 1px solid rgba(0, 0, 0, 0.04) !important;
2983
+ }
2984
+
2985
+ .leaflet-popup-tip {
2986
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08) !important;
2987
+ }
2988
+
2989
+ .leaflet-popup-content {
2990
+ margin: 12px 14px;
2991
+ }
2992
+
2993
+ .travel-place-list {
2994
+ display: grid;
2995
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2996
+ gap: 14px;
2997
+ margin-top: 14px;
2998
+ }
2999
+
3000
+ .travel-place-card {
3001
+ display: grid;
3002
+ grid-template-columns: 132px minmax(0, 1fr);
3003
+ min-height: 132px;
3004
+ overflow: hidden;
3005
+ border: 1px solid rgba(0, 0, 0, 0.08);
3006
+ background-color: #fff;
3007
+ transition:
3008
+ border-color 0.2s ease,
3009
+ box-shadow 0.2s ease,
3010
+ transform 0.2s ease;
3011
+ &.active,
3012
+ &:hover {
3013
+ border-color: rgba(168, 69, 46, 0.28);
3014
+ box-shadow: rgba(100, 97, 88, 0.12) 0 12px 26px;
3015
+ transform: translateY(-1px);
3016
+ }
3017
+ }
3018
+
3019
+ .travel-place-cover {
3020
+ display: block;
3021
+ position: relative;
3022
+ width: 132px;
3023
+ aspect-ratio: 1;
3024
+ min-height: 132px;
3025
+ overflow: hidden;
3026
+ background-color: #edf1ef;
3027
+ background-position: center;
3028
+ background-size: cover;
3029
+ .cover-img,
3030
+ noscript,
3031
+ img,
3032
+ .lazyload-wrap {
3033
+ display: block;
3034
+ width: 100%;
3035
+ height: 100%;
3036
+ }
3037
+ .cover-img {
3038
+ position: absolute;
3039
+ inset: 0;
3040
+ z-index: 1;
3041
+ }
3042
+ img {
3043
+ display: block;
3044
+ position: absolute;
3045
+ top: 0;
3046
+ left: 0;
3047
+ width: 100%;
3048
+ height: 100%;
3049
+ object-fit: cover;
3050
+ }
3051
+ .lazyload-wrap,
3052
+ .post-list-cover-lazy {
3053
+ position: absolute;
3054
+ inset: 0;
3055
+ border-radius: 0;
3056
+ .placeholder {
3057
+ width: 100%;
3058
+ height: 100%;
3059
+ padding-bottom: 0 !important;
3060
+ background-size: cover;
3061
+ background-position: center;
3062
+ }
3063
+ }
3064
+ }
3065
+
3066
+ .travel-place-body {
3067
+ min-width: 0;
3068
+ padding: 10px 16px 10px;
3069
+ }
3070
+
3071
+ .travel-place-index {
3072
+ @include defaultFont;
3073
+ position: absolute;
3074
+ top: 8px;
3075
+ left: 8px;
3076
+ z-index: 2;
3077
+ min-width: 28px;
3078
+ padding: 4px 6px;
3079
+ background: rgba(255, 255, 255, 0.86);
3080
+ backdrop-filter: blur(6px);
3081
+ -webkit-backdrop-filter: blur(6px);
3082
+ color: #a8452e;
3083
+ font-size: 12px;
3084
+ line-height: 1;
3085
+ text-align: center;
3086
+ border-radius: 1px;
3087
+ }
3088
+
3089
+ .travel-place-title {
3090
+ display: block;
3091
+ color: $darkText;
3092
+ font-size: 18px;
3093
+ font-weight: bold;
3094
+ line-height: 1.25;
3095
+ &:hover {
3096
+ opacity: 0.72;
3097
+ }
3098
+ .sub-title {
3099
+ @include subTitle;
3100
+ }
3101
+ }
3102
+
3103
+ .travel-place-meta {
3104
+ @include defaultFont;
3105
+ display: flex;
3106
+ flex-wrap: wrap;
3107
+ gap: 6px 10px;
3108
+ margin-top: 6px;
3109
+ color: $metaText;
3110
+ font-size: 12px;
3111
+ }
3112
+
3113
+ .travel-place-excerpt {
3114
+ display: -webkit-box;
3115
+ margin-top: 8px;
3116
+ overflow: hidden;
3117
+ color: $grayerText;
3118
+ font-size: 14px;
3119
+ line-height: 1.45;
3120
+ -webkit-box-orient: vertical;
3121
+ -webkit-line-clamp: 2;
3122
+ font-family: "source-serif", "source han serif cn", serif;
3123
+ }
3124
+ }
3125
+
3126
+ .lazyload-outer-wrap {
3127
+ .gallery-item {
3128
+ width: 100%;
3129
+ display: inline-block;
2269
3130
  vertical-align: middle;
2270
3131
  }
2271
3132
  }
@@ -2300,6 +3161,9 @@ html[lang="zh-CN"] {
2300
3161
  width: 0;
2301
3162
  flex: 1 1 auto;
2302
3163
  margin-right: var(--image-grid-gap);
3164
+ .lazyload-wrap:has(iframe) {
3165
+ aspect-ratio: unset !important;
3166
+ }
2303
3167
  }
2304
3168
  .lazyload-outer-wrap {
2305
3169
  margin-top: 0;
@@ -2375,22 +3239,64 @@ html[lang="zh-CN"] {
2375
3239
  object-fit: cover;
2376
3240
  }
2377
3241
  .grid-item:nth-of-type(1) {
2378
- width: calc(
2379
- (100% - var(--image-grid-gap)) / (4 + 3 * 3 / 4) * 4
2380
- ) !important;
3242
+ width: calc((100% - var(--image-grid-gap)) / (4 + 3 * 3 / 4) * 4) !important;
2381
3243
  .lazyload-wrap .placeholder {
2382
3244
  padding-bottom: 75% !important;
2383
3245
  }
2384
3246
  }
2385
3247
  .grid-item:nth-of-type(2) {
2386
- width: calc(
2387
- (100% - var(--image-grid-gap)) / (4 + 3 * 3 / 4) * (3 * 3 / 4)
2388
- ) !important;
3248
+ width: calc((100% - var(--image-grid-gap)) / (4 + 3 * 3 / 4) * (3 * 3 / 4)) !important;
2389
3249
  .lazyload-wrap .placeholder {
2390
3250
  padding-bottom: calc(400% / 3) !important;
2391
3251
  }
2392
3252
  }
2393
3253
  }
3254
+ &.rLeftWide {
3255
+ .lazyload-wrap .placeholder {
3256
+ background-size: cover;
3257
+ background-position: center;
3258
+ }
3259
+ .lazyload-wrap img {
3260
+ width: 100%;
3261
+ height: auto;
3262
+ object-fit: cover;
3263
+ }
3264
+ .grid-item:nth-of-type(1) {
3265
+ width: calc((100% - var(--image-grid-gap)) / (16 + 9 * 9 / 16) * 16) !important;
3266
+ .lazyload-wrap .placeholder {
3267
+ padding-bottom: 56.25% !important;
3268
+ }
3269
+ }
3270
+ .grid-item:nth-of-type(2) {
3271
+ width: calc((100% - var(--image-grid-gap)) / (16 + 9 * 9 / 16) * (9 * 9 / 16)) !important;
3272
+ .lazyload-wrap .placeholder {
3273
+ padding-bottom: calc(1600% / 9) !important;
3274
+ }
3275
+ }
3276
+ }
3277
+ &.rRightWide {
3278
+ .lazyload-wrap .placeholder {
3279
+ background-size: cover;
3280
+ background-position: center;
3281
+ }
3282
+ .lazyload-wrap img {
3283
+ width: 100%;
3284
+ height: auto;
3285
+ object-fit: cover;
3286
+ }
3287
+ .grid-item:nth-of-type(2) {
3288
+ width: calc((100% - var(--image-grid-gap)) / (16 + 9 * 9 / 16) * 16) !important;
3289
+ .lazyload-wrap .placeholder {
3290
+ padding-bottom: 56.25% !important;
3291
+ }
3292
+ }
3293
+ .grid-item:nth-of-type(1) {
3294
+ width: calc((100% - var(--image-grid-gap)) / (16 + 9 * 9 / 16) * (9 * 9 / 16)) !important;
3295
+ .lazyload-wrap .placeholder {
3296
+ padding-bottom: calc(1600% / 9) !important;
3297
+ }
3298
+ }
3299
+ }
2394
3300
  &.r46 {
2395
3301
  .lazyload-wrap .placeholder {
2396
3302
  background-size: cover;
@@ -2402,17 +3308,13 @@ html[lang="zh-CN"] {
2402
3308
  object-fit: cover;
2403
3309
  }
2404
3310
  .grid-item:nth-of-type(2) {
2405
- width: calc(
2406
- (100% - var(--image-grid-gap)) / (4 + 3 * 3 / 4) * 4
2407
- ) !important;
3311
+ width: calc((100% - var(--image-grid-gap)) / (4 + 3 * 3 / 4) * 4) !important;
2408
3312
  .lazyload-wrap .placeholder {
2409
3313
  padding-bottom: 75% !important;
2410
3314
  }
2411
3315
  }
2412
3316
  .grid-item:nth-of-type(1) {
2413
- width: calc(
2414
- (100% - var(--image-grid-gap)) / (4 + 3 * 3 / 4) * (3 * 3 / 4)
2415
- ) !important;
3317
+ width: calc((100% - var(--image-grid-gap)) / (4 + 3 * 3 / 4) * (3 * 3 / 4)) !important;
2416
3318
  .lazyload-wrap .placeholder {
2417
3319
  padding-bottom: calc(400% / 3) !important;
2418
3320
  }
@@ -2429,17 +3331,13 @@ html[lang="zh-CN"] {
2429
3331
  object-fit: cover;
2430
3332
  }
2431
3333
  .grid-item:nth-of-type(1) {
2432
- width: calc(
2433
- (100% - var(--image-grid-gap)) / (3 + 2 / 1.5) * 3
2434
- ) !important;
3334
+ width: calc((100% - var(--image-grid-gap)) / (3 + 2 / 1.5) * 3) !important;
2435
3335
  .lazyload-wrap .placeholder {
2436
3336
  padding-bottom: calc(200% / 3) !important;
2437
3337
  }
2438
3338
  }
2439
3339
  .grid-item:nth-of-type(2) {
2440
- width: calc(
2441
- (100% - var(--image-grid-gap)) / (3 + 2 / 1.5) * 2 / 1.5
2442
- ) !important;
3340
+ width: calc((100% - var(--image-grid-gap)) / (3 + 2 / 1.5) * 2 / 1.5) !important;
2443
3341
  .lazyload-wrap .placeholder {
2444
3342
  padding-bottom: 150% !important;
2445
3343
  }
@@ -2456,22 +3354,203 @@ html[lang="zh-CN"] {
2456
3354
  object-fit: cover;
2457
3355
  }
2458
3356
  .grid-item:nth-of-type(1) {
2459
- width: calc(
2460
- (100% - var(--image-grid-gap)) / (3 + 2 / 1.5) * 2 / 1.5
2461
- ) !important;
3357
+ width: calc((100% - var(--image-grid-gap)) / (3 + 2 / 1.5) * 2 / 1.5) !important;
2462
3358
  .lazyload-wrap .placeholder {
2463
3359
  padding-bottom: 150% !important;
2464
3360
  }
2465
3361
  }
2466
3362
  .grid-item:nth-of-type(2) {
2467
- width: calc(
2468
- (100% - var(--image-grid-gap)) / (3 + 2 / 1.5) * 3
2469
- ) !important;
3363
+ width: calc((100% - var(--image-grid-gap)) / (3 + 2 / 1.5) * 3) !important;
2470
3364
  .lazyload-wrap .placeholder {
2471
3365
  padding-bottom: calc(200% / 3) !important;
2472
3366
  }
2473
3367
  }
2474
3368
  }
3369
+ &.scroll,
3370
+ &.slider {
3371
+ display: flex;
3372
+ gap: var(--image-grid-gap);
3373
+ overflow-x: auto;
3374
+ overscroll-behavior-inline: contain;
3375
+ scroll-snap-type: x mandatory;
3376
+ scroll-padding-inline: 0;
3377
+ -webkit-overflow-scrolling: touch;
3378
+ scrollbar-width: thin;
3379
+
3380
+ .grid-item {
3381
+ flex: 0 0 min(86%, 760px) !important;
3382
+ width: min(86%, 760px) !important;
3383
+ margin-right: 0 !important;
3384
+ scroll-snap-align: center;
3385
+ }
3386
+
3387
+ .lazyload-outer-wrap,
3388
+ .gallery-item,
3389
+ .lazyload-wrap {
3390
+ display: block;
3391
+ width: 100%;
3392
+ }
3393
+ }
3394
+ &.switcher {
3395
+ @include defaultFont;
3396
+ display: grid;
3397
+ grid-template-columns: minmax(0, 1fr);
3398
+ gap: 18px;
3399
+ margin: 1.5em 0;
3400
+ padding: 0;
3401
+ box-sizing: border-box;
3402
+ border-radius: 0;
3403
+ overflow: hidden;
3404
+
3405
+ .grid-item {
3406
+ display: block;
3407
+ grid-column: 1;
3408
+ grid-row: 1;
3409
+ width: 100% !important;
3410
+ flex: none;
3411
+ margin-right: 0;
3412
+ opacity: 0;
3413
+ visibility: hidden;
3414
+ pointer-events: none;
3415
+ will-change: opacity;
3416
+ transition:
3417
+ opacity 0.85s cubic-bezier(0.4, 0, 0.2, 1),
3418
+ visibility 0s linear 0.85s;
3419
+
3420
+ &.active {
3421
+ opacity: 1;
3422
+ visibility: visible;
3423
+ pointer-events: auto;
3424
+ transition:
3425
+ opacity 0.85s cubic-bezier(0.4, 0, 0.2, 1),
3426
+ visibility 0s;
3427
+ }
3428
+
3429
+ .lazyload-outer-wrap,
3430
+ .gallery-item,
3431
+ .lazyload-wrap {
3432
+ display: block;
3433
+ width: 100%;
3434
+ }
3435
+
3436
+ .lazyload-wrap {
3437
+ position: relative;
3438
+ overflow: hidden;
3439
+ }
3440
+
3441
+ .lazyload-wrap .placeholder {
3442
+ background-size: cover;
3443
+ background-position: center;
3444
+ }
3445
+
3446
+ .lazyload-wrap .inner-wrap {
3447
+ position: absolute;
3448
+ inset: 0;
3449
+ width: 100%;
3450
+ height: 100%;
3451
+ }
3452
+
3453
+ img,
3454
+ iframe {
3455
+ display: block;
3456
+ width: 100%;
3457
+ height: 100% !important;
3458
+ }
3459
+
3460
+ img {
3461
+ object-fit: cover;
3462
+ }
3463
+
3464
+ .caption,
3465
+ .pswp-caption-content {
3466
+ display: none;
3467
+ }
3468
+ }
3469
+
3470
+ .image-grid-switcher-controls {
3471
+ grid-column: 1;
3472
+ grid-row: 2;
3473
+ justify-self: center;
3474
+ display: flex;
3475
+ align-items: center;
3476
+ position: relative;
3477
+ width: 100%;
3478
+ max-width: 100%;
3479
+ overflow-x: auto;
3480
+ border: 1px solid rgba(0, 0, 0, 0.08);
3481
+ border-radius: 8px;
3482
+ background: rgba(245, 245, 245, 0.86);
3483
+ padding: 4px;
3484
+ box-sizing: border-box;
3485
+ scrollbar-width: none;
3486
+
3487
+ &::-webkit-scrollbar {
3488
+ display: none;
3489
+ }
3490
+
3491
+ &::before {
3492
+ content: "";
3493
+ position: absolute;
3494
+ top: 4px;
3495
+ bottom: 4px;
3496
+ left: 4px;
3497
+ width: calc((100% - 8px) / var(--switcher-item-count, 1));
3498
+ border-radius: 6px;
3499
+ background: #fff;
3500
+ box-shadow:
3501
+ 0 1px 2px rgba(0, 0, 0, 0.08),
3502
+ 0 0 0 1px rgba(0, 0, 0, 0.04);
3503
+ opacity: 0;
3504
+ transform: translateX(calc(var(--switcher-active-index, 0) * 100%));
3505
+ transition: transform 0.45s cubic-bezier(0.2, 0.8, 0.2, 1);
3506
+ will-change: transform;
3507
+ pointer-events: none;
3508
+ }
3509
+
3510
+ &.is-ready::before {
3511
+ opacity: 1;
3512
+ }
3513
+ }
3514
+
3515
+ .image-grid-switcher-button {
3516
+ @include defaultFont;
3517
+ flex: 1 1 0;
3518
+ position: relative;
3519
+ z-index: 1;
3520
+ min-width: 76px;
3521
+ min-height: 36px;
3522
+ border: 0;
3523
+ border-radius: 6px;
3524
+ padding: 0 18px;
3525
+ color: $grayerText;
3526
+ background: transparent;
3527
+ font-size: 15px;
3528
+ line-height: 1;
3529
+ cursor: pointer;
3530
+ white-space: nowrap;
3531
+ outline: none;
3532
+ user-select: none;
3533
+ -webkit-tap-highlight-color: transparent;
3534
+ -webkit-touch-callout: none;
3535
+ appearance: none;
3536
+ -webkit-appearance: none;
3537
+ transition:
3538
+ color 0.2s ease,
3539
+ background-color 0.2s ease;
3540
+
3541
+ &:hover {
3542
+ color: $darkText;
3543
+ }
3544
+
3545
+ &:focus-visible {
3546
+ outline: none;
3547
+ }
3548
+
3549
+ &.active {
3550
+ color: #1d1d1f;
3551
+ }
3552
+ }
3553
+ }
2475
3554
  }
2476
3555
 
2477
3556
  details {
@@ -2532,23 +3611,28 @@ ul {
2532
3611
  }
2533
3612
  }
2534
3613
 
2535
- .footnote-anchor-wrap {
2536
- .footnote-href{
2537
- color: $green;
2538
- }
2539
- }
2540
- .footnote-backref{
2541
- width: 0.8em;
2542
- height: 0.8em;
2543
- background-image: url("../img/icons/backref.svg");
2544
- background-size: contain;
2545
- display: inline-block;
2546
- &:not(:first-child) {
2547
- display: none;
3614
+ @include mq.rules;
3615
+
3616
+ @media (max-width: 900px) {
3617
+ .post-item {
3618
+ .title-row {
3619
+ display: inline;
3620
+ }
3621
+ .title {
3622
+ display: inline !important;
3623
+ }
3624
+ .tags {
3625
+ display: inline !important;
3626
+ white-space: normal !important;
3627
+ overflow: visible !important;
3628
+ margin: 0 0 0 8px !important;
3629
+ vertical-align: middle;
3630
+
3631
+ .tag-item {
3632
+ display: inline-block !important;
3633
+ margin-bottom: 4px !important;
3634
+ vertical-align: middle;
3635
+ }
3636
+ }
2548
3637
  }
2549
3638
  }
2550
- .footnotes {
2551
- ol {
2552
- padding-left: calc(40px - $commonPadding);
2553
- }
2554
- }