hexo-theme-nblog 1.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.
@@ -0,0 +1,2057 @@
1
+ :root {
2
+ --primary-color: #FF7F78;
3
+ --primary-light: #FFE8E6;
4
+ --primary-dark: #D6665F;
5
+ --secondary-color: #625B71;
6
+ --surface-color: rgba(255, 255, 255, 0.45);
7
+ --surface-color-rgb: 255, 255, 255;
8
+ --surface-dark: rgba(30, 30, 30, 0.45);
9
+ --background-color: #F7F2FA;
10
+ --background-dark: #1C1B1F;
11
+ --text-primary: #1C1B1F;
12
+ --text-secondary: #49454F;
13
+ --text-on-dark: #E6E1E5;
14
+ --error-color: #B3261E;
15
+ --success-color: #2E7D32;
16
+ --warning-color: #F57C00;
17
+ --info-color: #0288D1;
18
+ --border-radius: 16px;
19
+ --border-radius-sm: 8px;
20
+ --border-radius-lg: 24px;
21
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.08);
22
+ --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
23
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.12);
24
+ --glass-blur: blur(16px) saturate(180%);
25
+ --transition-fast: 0.15s ease;
26
+ --transition-normal: 0.3s ease;
27
+ --transition-slow: 0.5s ease;
28
+ --font-family: 'Roboto', 'Noto Sans SC', sans-serif;
29
+ --font-mono: 'Fira Code', 'Consolas', monospace;
30
+ --header-height: 64px;
31
+ --sidebar-width: 280px;
32
+ --content-max-width: 1200px;
33
+ --border-color: rgba(0, 0, 0, 0.1);
34
+ --btn-plain-bg-hover: rgba(255, 127, 120, 0.5);
35
+ }
36
+
37
+ [data-theme="dark"] {
38
+ --primary-color: #FF9B95;
39
+ --primary-light: #8C3D37;
40
+ --primary-dark: #FFE8E6;
41
+ --surface-color: rgba(30, 30, 30, 0.45);
42
+ --surface-color-rgb: 30, 30, 30;
43
+ --background-color: #1C1B1F;
44
+ --text-primary: #E6E1E5;
45
+ --text-secondary: #CAC4D0;
46
+ --border-color: rgba(255, 255, 255, 0.15);
47
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.15);
48
+ --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.2);
49
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.25);
50
+ }
51
+
52
+ * {
53
+ margin: 0;
54
+ padding: 0;
55
+ box-sizing: border-box;
56
+ }
57
+
58
+ html {
59
+ scroll-behavior: smooth;
60
+ scrollbar-gutter: stable;
61
+ }
62
+
63
+ body {
64
+ font-family: var(--font-family);
65
+ background-color: var(--background-color);
66
+ color: var(--text-primary);
67
+ line-height: 1.6;
68
+ min-height: 100vh;
69
+ transition: background-color var(--transition-normal), color var(--transition-normal);
70
+ }
71
+
72
+ a {
73
+ color: var(--primary-color);
74
+ text-decoration: none;
75
+ padding: 2px 4px;
76
+ border-radius: 4px;
77
+ position: relative;
78
+ overflow: hidden;
79
+ display: inline-block;
80
+ }
81
+
82
+ a::before {
83
+ content: '';
84
+ position: absolute;
85
+ bottom: 0;
86
+ left: 0;
87
+ width: 100%;
88
+ height: 0;
89
+ background: var(--btn-plain-bg-hover);
90
+ border-radius: 4px;
91
+ transition: height var(--transition-fast);
92
+ transform-origin: bottom;
93
+ z-index: -1;
94
+ }
95
+
96
+ a:hover::before {
97
+ height: 100%;
98
+ }
99
+
100
+ img {
101
+ max-width: 100%;
102
+ height: auto;
103
+ }
104
+
105
+ button {
106
+ cursor: pointer;
107
+ font-family: inherit;
108
+ }
109
+
110
+ .container {
111
+ max-width: var(--content-max-width);
112
+ margin: 0 auto;
113
+ padding: 0 16px;
114
+ }
115
+
116
+ .material-card {
117
+ background: var(--surface-color);
118
+ backdrop-filter: var(--glass-blur);
119
+ -webkit-backdrop-filter: var(--glass-blur);
120
+ border-radius: var(--border-radius);
121
+ box-shadow: var(--shadow-md);
122
+ border: 1px solid rgba(255, 255, 255, 0.2);
123
+ overflow: hidden;
124
+ transition: transform var(--transition-normal), box-shadow var(--transition-normal);
125
+ }
126
+
127
+ .material-card:hover {
128
+ transform: translateY(-2px);
129
+ box-shadow: var(--shadow-lg);
130
+ }
131
+
132
+ .material-button {
133
+ display: inline-flex;
134
+ align-items: center;
135
+ justify-content: center;
136
+ gap: 8px;
137
+ padding: 10px 24px;
138
+ border-radius: var(--border-radius);
139
+ font-weight: 500;
140
+ font-size: 14px;
141
+ letter-spacing: 0.1px;
142
+ text-transform: uppercase;
143
+ transition: all var(--transition-fast);
144
+ border: none;
145
+ outline: none;
146
+ background: transparent;
147
+ z-index: 98;
148
+ }
149
+
150
+ .material-button--filled {
151
+ background: var(--primary-color);
152
+ color: white;
153
+ }
154
+
155
+ .material-button--filled:hover {
156
+ box-shadow: var(--shadow-md);
157
+ }
158
+
159
+ .material-button--text {
160
+ background: transparent;
161
+ color: var(--primary-color);
162
+ }
163
+
164
+ .material-button--text:hover {
165
+ background: var(--primary-light);
166
+ }
167
+
168
+ .app {
169
+ display: flex;
170
+ flex-direction: column;
171
+ min-height: 100vh;
172
+ position: relative;
173
+ overflow-x: hidden;
174
+ }
175
+
176
+ .app__background {
177
+ position: fixed;
178
+ top: 0;
179
+ left: 0;
180
+ right: 0;
181
+ bottom: 0;
182
+ z-index: 0;
183
+ pointer-events: none;
184
+ }
185
+
186
+ .app__circle {
187
+ position: absolute;
188
+ border-radius: 50%;
189
+ }
190
+
191
+ .app__circle--1 {
192
+ width: 500px;
193
+ height: 500px;
194
+ background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
195
+ top: -150px;
196
+ right: -150px;
197
+ opacity: 0.08;
198
+ animation: float 10s ease-in-out infinite;
199
+ }
200
+
201
+ .app__circle--2 {
202
+ width: 400px;
203
+ height: 400px;
204
+ background: linear-gradient(135deg, var(--primary-dark), var(--primary-light));
205
+ bottom: -100px;
206
+ right: 150px;
207
+ opacity: 0.06;
208
+ animation: float 12s ease-in-out infinite;
209
+ animation-delay: -2s;
210
+ }
211
+
212
+ .app__circle--3 {
213
+ width: 300px;
214
+ height: 300px;
215
+ background: linear-gradient(135deg, var(--primary-light), var(--primary-color));
216
+ top: 27%;
217
+ right: 250px;
218
+ opacity: 0.05;
219
+ animation: float 8s ease-in-out infinite;
220
+ animation-delay: -4s;
221
+ }
222
+
223
+ @keyframes float {
224
+
225
+ 0%,
226
+ 100% {
227
+ transform: translateY(0) rotate(0deg);
228
+ }
229
+
230
+ 25% {
231
+ transform: translateY(-15px) rotate(2deg);
232
+ }
233
+
234
+ 50% {
235
+ transform: translateY(-5px) rotate(0deg);
236
+ }
237
+
238
+ 75% {
239
+ transform: translateY(-20px) rotate(-2deg);
240
+ }
241
+ }
242
+
243
+ .main {
244
+ flex: 1;
245
+ padding-top: var(--header-height);
246
+ position: relative;
247
+ z-index: 1;
248
+ }
249
+
250
+ .header {
251
+ position: fixed;
252
+ top: 0;
253
+ left: 0;
254
+ right: 0;
255
+ height: var(--header-height);
256
+ z-index: 100;
257
+ transition: transform var(--transition-normal), background-color var(--transition-normal);
258
+ }
259
+
260
+ .header--scrolled {
261
+ background: var(--surface-color);
262
+ backdrop-filter: var(--glass-blur);
263
+ -webkit-backdrop-filter: var(--glass-blur);
264
+ box-shadow: var(--shadow-sm);
265
+ }
266
+
267
+ .header:has(.header__nav--open).header--scrolled {
268
+ background: transparent;
269
+ backdrop-filter: none;
270
+ -webkit-backdrop-filter: none;
271
+ box-shadow: none;
272
+ }
273
+
274
+ .header--hidden {
275
+ transform: translateY(-100%);
276
+ }
277
+
278
+ .header__container {
279
+ display: flex;
280
+ align-items: center;
281
+ justify-content: space-between;
282
+ height: 100%;
283
+ }
284
+
285
+ .header__logo {
286
+ display: flex;
287
+ align-items: center;
288
+ gap: 8px;
289
+ text-decoration: none;
290
+ color: var(--text-primary);
291
+ background: transparent;
292
+ transition: all var(--transition-fast);
293
+ }
294
+
295
+ .header__logo::before {
296
+ display: none;
297
+ }
298
+
299
+ .header__logo:hover {
300
+ color: var(--primary-color);
301
+ }
302
+
303
+ .header__logo-icon {
304
+ display: flex;
305
+ align-items: center;
306
+ justify-content: center;
307
+ width: 36px;
308
+ height: 36px;
309
+ background: transparent;
310
+ }
311
+
312
+ .header__logo-icon svg {
313
+ width: 100%;
314
+ height: 100%;
315
+ }
316
+
317
+ .header__logo-icon svg path {
318
+ fill: var(--primary-color);
319
+ }
320
+
321
+ .header__logo-text {
322
+ font-weight: 600;
323
+ font-size: 20px;
324
+ }
325
+
326
+ .header__nav {
327
+ display: flex;
328
+ align-items: center;
329
+ gap: 4px;
330
+ }
331
+
332
+ .header__nav-item {
333
+ display: flex;
334
+ align-items: center;
335
+ gap: 6px;
336
+ padding: 8px 16px;
337
+ color: var(--text-secondary);
338
+ text-decoration: none;
339
+ font-size: 14px;
340
+ font-weight: 500;
341
+ border-radius: var(--border-radius);
342
+ transition: all var(--transition-fast);
343
+ background: transparent;
344
+ }
345
+
346
+ .header__nav-item::before {
347
+ display: none;
348
+ }
349
+
350
+ .header__nav-item:hover {
351
+ color: var(--primary-color);
352
+ background: var(--primary-light);
353
+ }
354
+
355
+ .header__nav-item.active {
356
+ color: var(--primary-color);
357
+ background: var(--primary-light);
358
+ }
359
+
360
+ .header__actions {
361
+ display: flex;
362
+ align-items: center;
363
+ gap: 4px;
364
+ }
365
+
366
+ .header__menu-btn {
367
+ display: none;
368
+ }
369
+
370
+ .icon-moon {
371
+ display: block;
372
+ }
373
+
374
+ .icon-sun {
375
+ display: none;
376
+ }
377
+
378
+ [data-theme="dark"] .icon-moon {
379
+ display: none;
380
+ }
381
+
382
+ [data-theme="dark"] .icon-sun {
383
+ display: block;
384
+ }
385
+
386
+ .icon-close {
387
+ display: none;
388
+ }
389
+
390
+ .header__nav--open~.header__actions .icon-menu {
391
+ display: none;
392
+ }
393
+
394
+ .header__nav--open~.header__actions .icon-close {
395
+ display: block;
396
+ }
397
+
398
+ .footer {
399
+ background: var(--surface-color);
400
+ backdrop-filter: var(--glass-blur);
401
+ -webkit-backdrop-filter: var(--glass-blur);
402
+ border-top: 1px solid var(--border-color);
403
+ margin-top: auto;
404
+ }
405
+
406
+ .footer__container {
407
+ padding: 24px 16px;
408
+ }
409
+
410
+ .footer__content {
411
+ display: flex;
412
+ justify-content: space-between;
413
+ align-items: flex-end;
414
+ }
415
+
416
+ .footer__left {
417
+ display: flex;
418
+ flex-direction: column;
419
+ gap: 4px;
420
+ flex: 1;
421
+ }
422
+
423
+ .footer__center {
424
+ gap: 4px;
425
+ display: flex;
426
+ flex-direction: column;
427
+ align-items: center;
428
+ flex: 1;
429
+ }
430
+
431
+ .footer__right {
432
+ display: flex;
433
+ flex-direction: column;
434
+ align-items: flex-end;
435
+ gap: 4px;
436
+ flex: 1;
437
+ }
438
+
439
+ .footer__copyright,
440
+ .footer__themeInfo {
441
+ font-size: 14px;
442
+ color: var(--text-secondary);
443
+ display: flex;
444
+ flex-direction: row;
445
+ align-items: center;
446
+ }
447
+
448
+ .footer__themeInfo {
449
+ display: flex;
450
+ flex-direction: row;
451
+ align-items: center;
452
+ gap: 5px;
453
+ padding: 0px 4px;
454
+ }
455
+
456
+ .footer__version {
457
+ color: var(--primary-dark);
458
+ }
459
+
460
+ .footer__links {
461
+ display: flex;
462
+ align-items: center;
463
+ gap: 4px;
464
+ font-size: 13px;
465
+ }
466
+
467
+ .footer__links a {
468
+ padding: 0;
469
+ font-size: 13px;
470
+ text-decoration: none;
471
+ transition: color var(--transition-fast);
472
+ }
473
+
474
+ .footer__author {
475
+ color: var(--primary-dark);
476
+ margin-left: 5px;
477
+ }
478
+
479
+ .footer__links a {
480
+ color: var(--primary-color);
481
+ padding: 2px 4px;
482
+ }
483
+
484
+ .footer__links-divider {
485
+ color: var(--text-secondary);
486
+ margin: 0 4px;
487
+ }
488
+
489
+ .footer__rss,
490
+ .footer__sitemap {
491
+ color: var(--primary-color);
492
+ font-size: 14px;
493
+ text-decoration: none;
494
+ }
495
+
496
+ .footer__powered {
497
+ font-size: 13px;
498
+ color: var(--text-secondary);
499
+ display: flex;
500
+ align-items: center;
501
+ }
502
+
503
+ .footer__powered a {
504
+ color: var(--primary-color);
505
+ text-decoration: none;
506
+ }
507
+
508
+ .footer__busuanzi {
509
+ font-size: 14px;
510
+ color: var(--text-secondary);
511
+ }
512
+
513
+ .footer__busuanzi #busuanzi_value_site_pv,
514
+ .footer__busuanzi #busuanzi_value_site_uv {
515
+ color: var(--primary-dark);
516
+ }
517
+
518
+ .footer__busuanzi-divider {
519
+ margin: 0 8px;
520
+ }
521
+
522
+ .posts-page__content {
523
+ display: grid;
524
+ grid-template-columns: 1fr var(--sidebar-width);
525
+ gap: 24px;
526
+ padding: 24px 0;
527
+ }
528
+
529
+ .tag-posts-page,
530
+ .category-posts-page {
531
+ padding: 24px 0;
532
+ }
533
+
534
+ .tag-posts-page .posts-list,
535
+ .category-posts-page .posts-list {
536
+ display: grid;
537
+ grid-template-columns: repeat(auto-fill, minmax(560px, 1fr));
538
+ gap: 20px;
539
+ }
540
+
541
+ .posts-list {
542
+ display: flex;
543
+ flex-direction: column;
544
+ gap: 20px;
545
+ }
546
+
547
+ .post-card {
548
+ display: flex;
549
+ flex-direction: column;
550
+ overflow: hidden;
551
+ height: 280px;
552
+ border: 2px solid transparent;
553
+ transition: border-color var(--transition-normal);
554
+ }
555
+
556
+ .post-card:hover {
557
+ border-color: var(--primary-color);
558
+ }
559
+
560
+ .post-card__link {
561
+ display: block;
562
+ text-decoration: none;
563
+ height: 100%;
564
+ }
565
+
566
+ .post-card__cover {
567
+ position: relative;
568
+ overflow: hidden;
569
+ position: fixed;
570
+ left: 0;
571
+ top: 0;
572
+ width: 100%;
573
+ height: 100%;
574
+ object-fit: cover;
575
+ backface-visibility: hidden;
576
+ z-index: -1;
577
+ }
578
+
579
+ .post-card:hover .post-card__cover {
580
+ border-color: var(--primary-color);
581
+ }
582
+
583
+ .post-card__cover img {
584
+ width: 100%;
585
+ height: 100%;
586
+ object-fit: cover;
587
+ transition: transform var(--transition-normal);
588
+ }
589
+
590
+ .post-card__cover-placeholder {
591
+ width: 100%;
592
+ height: 100%;
593
+ background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
594
+ }
595
+
596
+ .post-card:hover .post-card__cover img {
597
+ transform: scale(1.05);
598
+ }
599
+
600
+ .post-card__overlay {
601
+ position: absolute;
602
+ inset: 0;
603
+ background: linear-gradient(to bottom,
604
+ var(--surface-color) 0%,
605
+ transparent 15%,
606
+ transparent 85%,
607
+ var(--surface-color) 100%);
608
+ opacity: 0;
609
+ transition: opacity var(--transition-normal);
610
+ pointer-events: none;
611
+ }
612
+
613
+ .post-card:hover .post-card__overlay {
614
+ opacity: 0.9;
615
+ }
616
+
617
+ .post-card__info {
618
+ position: absolute;
619
+ bottom: 0;
620
+ left: 0;
621
+ right: 0;
622
+ padding: 20px;
623
+ z-index: 1;
624
+ text-shadow: 1px 1px 5px black;
625
+ }
626
+
627
+ .post-card__meta {
628
+ display: flex;
629
+ align-items: center;
630
+ gap: 12px;
631
+ margin-bottom: 8px;
632
+ font-size: 13px;
633
+ color: rgba(255, 255, 255, 0.85);
634
+ }
635
+
636
+ .post-card__date,
637
+ .post-card__category {
638
+ display: flex;
639
+ align-items: center;
640
+ gap: 4px;
641
+ }
642
+
643
+ .post-card__title {
644
+ font-size: 20px;
645
+ font-weight: 600;
646
+ line-height: 1.4;
647
+ color: #fff;
648
+ margin: 0;
649
+ }
650
+
651
+ .sidebar {
652
+ display: flex;
653
+ flex-direction: column;
654
+ gap: 20px;
655
+ }
656
+
657
+ .author-card {
658
+ padding: 24px;
659
+ text-align: center;
660
+ }
661
+
662
+ .author-card__avatar {
663
+ width: 80px;
664
+ height: 80px;
665
+ margin: 0 auto 16px;
666
+ border-radius: 50%;
667
+ overflow: hidden;
668
+ }
669
+
670
+ .author-card__avatar img {
671
+ width: 100%;
672
+ height: 100%;
673
+ object-fit: cover;
674
+ }
675
+
676
+ .author-card__name {
677
+ font-size: 18px;
678
+ font-weight: 600;
679
+ margin-bottom: 8px;
680
+ }
681
+
682
+ .author-card__bio {
683
+ font-size: 14px;
684
+ color: var(--text-secondary);
685
+ margin-bottom: 16px;
686
+ }
687
+
688
+ .author-card__stats {
689
+ display: flex;
690
+ justify-content: center;
691
+ gap: 24px;
692
+ margin-bottom: 16px;
693
+ }
694
+
695
+ .author-card__stat {
696
+ display: flex;
697
+ flex-direction: column;
698
+ align-items: center;
699
+ }
700
+
701
+ .author-card__stat-value {
702
+ font-size: 20px;
703
+ font-weight: 600;
704
+ color: var(--primary-color);
705
+ }
706
+
707
+ .author-card__stat-label {
708
+ font-size: 12px;
709
+ color: var(--text-secondary);
710
+ }
711
+
712
+ .author-card__social {
713
+ display: flex;
714
+ justify-content: center;
715
+ gap: 12px;
716
+ }
717
+
718
+ .author-card__social-link {
719
+ color: var(--text-secondary);
720
+ transition: color var(--transition-fast);
721
+ }
722
+
723
+ .author-card__social-link::before {
724
+ display: none;
725
+ }
726
+
727
+ .author-card__social-link:hover {
728
+ color: var(--primary-color);
729
+ }
730
+
731
+ .sidebar-widget {
732
+ padding: 20px;
733
+ }
734
+
735
+ .sidebar-widget__title {
736
+ display: flex;
737
+ align-items: center;
738
+ gap: 8px;
739
+ font-size: 16px;
740
+ font-weight: 600;
741
+ margin-bottom: 16px;
742
+ color: var(--text-primary);
743
+ }
744
+
745
+ .sidebar-widget__content {
746
+ display: flex;
747
+ flex-direction: column;
748
+ gap: 8px;
749
+ }
750
+
751
+ .sidebar-widget__item {
752
+ display: flex;
753
+ justify-content: space-between;
754
+ align-items: center;
755
+ padding: 8px 12px;
756
+ border-radius: var(--border-radius-sm);
757
+ color: var(--text-secondary);
758
+ font-size: 14px;
759
+ transition: all var(--transition-fast);
760
+ }
761
+
762
+ .sidebar-widget__item::before {
763
+ display: none;
764
+ }
765
+
766
+ .sidebar-widget__item:hover {
767
+ background: var(--primary-light);
768
+ color: var(--primary-dark);
769
+ }
770
+
771
+ .sidebar-widget__item-count {
772
+ font-size: 12px;
773
+ background: var(--primary-light);
774
+ color: var(--primary-dark);
775
+ padding: 2px 8px;
776
+ border-radius: 10px;
777
+ }
778
+
779
+ .sidebar-widget__content--tags {
780
+ flex-direction: row;
781
+ flex-wrap: wrap;
782
+ gap: 8px;
783
+ }
784
+
785
+ .tag-cloud__tag {
786
+ font-size: 13px;
787
+ color: var(--text-secondary);
788
+ padding: 4px 12px;
789
+ background: rgba(var(--surface-color-rgb), 0.5);
790
+ border-radius: 12px;
791
+ transition: all var(--transition-fast);
792
+ }
793
+
794
+ .tag-cloud__tag::before {
795
+ display: none;
796
+ }
797
+
798
+ .tag-cloud__tag:hover {
799
+ background: var(--primary-light);
800
+ color: var(--primary-dark);
801
+ }
802
+
803
+ .pagination {
804
+ display: flex;
805
+ justify-content: center;
806
+ align-items: center;
807
+ gap: 8px;
808
+ margin-top: 24px;
809
+ }
810
+
811
+ .pagination .page-number,
812
+ .pagination .extend {
813
+ display: inline-flex;
814
+ align-items: center;
815
+ justify-content: center;
816
+ min-width: 40px;
817
+ height: 40px;
818
+ padding: 0 12px;
819
+ border-radius: var(--border-radius-sm);
820
+ font-size: 14px;
821
+ color: var(--text-secondary);
822
+ background: var(--surface-color);
823
+ border: 1px solid var(--border-color);
824
+ transition: all var(--transition-fast);
825
+ }
826
+
827
+ .pagination .page-number::before,
828
+ .pagination .extend::before {
829
+ display: none;
830
+ }
831
+
832
+ .pagination .page-number:hover,
833
+ .pagination .extend:hover {
834
+ background: var(--primary-light);
835
+ color: var(--primary-dark);
836
+ border-color: var(--primary-color);
837
+ }
838
+
839
+ .pagination .page-number.current {
840
+ background: var(--primary-color);
841
+ color: white;
842
+ border-color: var(--primary-color);
843
+ }
844
+
845
+ .page-header {
846
+ text-align: center;
847
+ padding: 40px 0;
848
+ }
849
+
850
+ .page-header__title {
851
+ display: flex;
852
+ align-items: center;
853
+ justify-content: center;
854
+ gap: 12px;
855
+ font-size: 28px;
856
+ font-weight: 600;
857
+ margin-bottom: 8px;
858
+ }
859
+
860
+ .page-header__description {
861
+ font-size: 16px;
862
+ color: var(--text-secondary);
863
+ }
864
+
865
+ .page-header__back {
866
+ display: inline-flex;
867
+ align-items: center;
868
+ gap: 4px;
869
+ margin-top: 16px;
870
+ font-size: 14px;
871
+ color: var(--primary-color);
872
+ padding: 8px 16px;
873
+ background: var(--primary-light);
874
+ border-radius: var(--border-radius-sm);
875
+ transition: all var(--transition-fast);
876
+ }
877
+
878
+ .page-header__back::before {
879
+ display: none;
880
+ }
881
+
882
+ .page-header__back:hover {
883
+ background: var(--primary-color);
884
+ color: white;
885
+ }
886
+
887
+ .post-page__content {
888
+ max-width: 800px;
889
+ margin: 0 auto;
890
+ padding: 40px 0;
891
+ }
892
+
893
+ .post-header {
894
+ margin-bottom: 32px;
895
+ }
896
+
897
+ .post-header__cover {
898
+ width: 100%;
899
+ height: 400px;
900
+ border-radius: var(--border-radius);
901
+ overflow: hidden;
902
+ margin-bottom: 24px;
903
+ }
904
+
905
+ .post-header__cover img {
906
+ width: 100%;
907
+ height: 100%;
908
+ object-fit: cover;
909
+ }
910
+
911
+ .post-header__title {
912
+ font-size: 32px;
913
+ font-weight: 700;
914
+ line-height: 1.3;
915
+ margin-bottom: 16px;
916
+ }
917
+
918
+ .post-header__meta {
919
+ display: flex;
920
+ flex-wrap: wrap;
921
+ align-items: center;
922
+ gap: 16px;
923
+ font-size: 14px;
924
+ color: var(--text-secondary);
925
+ }
926
+
927
+ .post-header__date,
928
+ .post-header__updated,
929
+ .post-header__reading-time {
930
+ display: flex;
931
+ align-items: center;
932
+ gap: 6px;
933
+ }
934
+
935
+ .post-header__category {
936
+ display: flex;
937
+ align-items: center;
938
+ gap: 6px;
939
+ color: var(--primary-color);
940
+ position: relative;
941
+ overflow: hidden;
942
+ transition: color var(--transition-fast);
943
+ }
944
+
945
+ .post-header__category::before {
946
+ content: '';
947
+ position: absolute;
948
+ bottom: 0;
949
+ left: 0;
950
+ width: 100%;
951
+ height: 0;
952
+ background: var(--btn-plain-bg-hover);
953
+ border-radius: 4px;
954
+ transition: height var(--transition-fast);
955
+ transform-origin: bottom;
956
+ z-index: -1;
957
+ }
958
+
959
+ .post-header__category:hover::before {
960
+ height: 100%;
961
+ }
962
+
963
+ .post-footer {
964
+ margin-top: 32px;
965
+ padding-top: 24px;
966
+ border-top: 1px solid var(--border-color);
967
+ }
968
+
969
+ .post-footer__tags {
970
+ display: flex;
971
+ align-items: center;
972
+ flex-wrap: wrap;
973
+ gap: 8px;
974
+ }
975
+
976
+ .post-footer__tag {
977
+ font-size: 14px;
978
+ color: var(--primary-color);
979
+ padding: 4px 12px;
980
+ background: var(--border-color);
981
+ border-radius: 12px;
982
+ position: relative;
983
+ overflow: hidden;
984
+ transition: color var(--transition-fast);
985
+ }
986
+
987
+ .post-footer__tag::before {
988
+ content: '';
989
+ position: absolute;
990
+ bottom: 0;
991
+ left: 0;
992
+ width: 100%;
993
+ height: 0;
994
+ background: var(--btn-plain-bg-hover);
995
+ border-radius: 12px;
996
+ transition: height var(--transition-fast);
997
+ transform-origin: bottom;
998
+ z-index: -1;
999
+ }
1000
+
1001
+ .post-footer__tag:hover::before {
1002
+ height: 100%;
1003
+ }
1004
+
1005
+ .post-nav {
1006
+ display: grid;
1007
+ grid-template-columns: 1fr 1fr;
1008
+ gap: 16px;
1009
+ margin-top: 32px;
1010
+ }
1011
+
1012
+ .post-nav__item {
1013
+ display: flex;
1014
+ flex-direction: column;
1015
+ gap: 8px;
1016
+ padding: 20px;
1017
+ border-radius: var(--border-radius);
1018
+ background: var(--surface-color);
1019
+ border: 1px solid var(--border-color);
1020
+ transition: all var(--transition-fast);
1021
+ }
1022
+
1023
+ .post-nav__item::before {
1024
+ display: none;
1025
+ }
1026
+
1027
+ .post-nav__item:hover {
1028
+ border-color: var(--primary-color);
1029
+ box-shadow: var(--shadow-md);
1030
+ }
1031
+
1032
+ .post-nav__item--disabled {
1033
+ opacity: 0.5;
1034
+ pointer-events: none;
1035
+ }
1036
+
1037
+ .post-nav__label {
1038
+ display: flex;
1039
+ align-items: center;
1040
+ gap: 4px;
1041
+ font-size: 13px;
1042
+ color: var(--text-secondary);
1043
+ }
1044
+
1045
+ .post-nav__title {
1046
+ font-size: 16px;
1047
+ font-weight: 500;
1048
+ color: var(--text-primary);
1049
+ }
1050
+
1051
+ .categories-grid {
1052
+ display: grid;
1053
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
1054
+ gap: 16px;
1055
+ padding: 24px 0;
1056
+ }
1057
+
1058
+ .category-card {
1059
+ display: flex;
1060
+ align-items: center;
1061
+ gap: 16px;
1062
+ padding: 20px;
1063
+ border: 2px solid transparent;
1064
+ transition: all var(--transition-normal);
1065
+ }
1066
+
1067
+ .category-card::before {
1068
+ display: none;
1069
+ }
1070
+
1071
+ .category-card:hover {
1072
+ border-color: var(--primary-color);
1073
+ background: var(--primary-light);
1074
+ }
1075
+
1076
+ .category-card__icon {
1077
+ width: 48px;
1078
+ height: 48px;
1079
+ display: flex;
1080
+ align-items: center;
1081
+ justify-content: center;
1082
+ background: var(--primary-light);
1083
+ border-radius: var(--border-radius-sm);
1084
+ color: var(--primary-color);
1085
+ transition: all var(--transition-normal);
1086
+ }
1087
+
1088
+ .category-card:hover .category-card__icon {
1089
+ background: var(--primary-color);
1090
+ color: white;
1091
+ transform: scale(1.1);
1092
+ }
1093
+
1094
+ .category-card__content {
1095
+ flex: 1;
1096
+ }
1097
+
1098
+ .category-card__name {
1099
+ font-size: 16px;
1100
+ font-weight: 600;
1101
+ margin-bottom: 4px;
1102
+ transition: color var(--transition-fast);
1103
+ }
1104
+
1105
+ .category-card:hover .category-card__name {
1106
+ color: var(--primary-dark);
1107
+ }
1108
+
1109
+ .category-card__count {
1110
+ font-size: 13px;
1111
+ color: var(--text-secondary);
1112
+ }
1113
+
1114
+ .category-card__arrow {
1115
+ color: var(--text-secondary);
1116
+ transition: all var(--transition-fast);
1117
+ }
1118
+
1119
+ .category-card:hover .category-card__arrow {
1120
+ transform: translateX(6px);
1121
+ color: var(--primary-color);
1122
+ }
1123
+
1124
+ .archives-list {
1125
+ max-width: 800px;
1126
+ margin: 0 auto;
1127
+ padding: 24px 0;
1128
+ }
1129
+
1130
+ .archive-year {
1131
+ margin-bottom: 32px;
1132
+ }
1133
+
1134
+ .archive-year__title {
1135
+ font-size: 24px;
1136
+ font-weight: 600;
1137
+ color: var(--primary-color);
1138
+ margin-bottom: 16px;
1139
+ padding-bottom: 8px;
1140
+ border-bottom: 2px solid var(--primary-light);
1141
+ }
1142
+
1143
+ .archive-year__posts {
1144
+ display: flex;
1145
+ flex-direction: column;
1146
+ gap: 12px;
1147
+ }
1148
+
1149
+ .archive-post {
1150
+ display: flex;
1151
+ align-items: center;
1152
+ gap: 16px;
1153
+ padding: 12px 16px;
1154
+ background: var(--surface-color);
1155
+ border-radius: var(--border-radius-sm);
1156
+ transition: all var(--transition-fast);
1157
+ }
1158
+
1159
+ .archive-post:hover {
1160
+ background: var(--primary-light);
1161
+ }
1162
+
1163
+ .archive-post__date {
1164
+ font-size: 14px;
1165
+ color: var(--text-secondary);
1166
+ min-width: 50px;
1167
+ }
1168
+
1169
+ .archive-post__title {
1170
+ flex: 1;
1171
+ font-size: 15px;
1172
+ color: var(--text-primary);
1173
+ }
1174
+
1175
+ .archive-post__title::before {
1176
+ display: none;
1177
+ }
1178
+
1179
+ .archive-post__category {
1180
+ font-size: 12px;
1181
+ color: var(--primary-color);
1182
+ padding: 2px 8px;
1183
+ background: rgba(var(--surface-color-rgb), 0.5);
1184
+ border-radius: 10px;
1185
+ }
1186
+
1187
+ .archive-post__category::before {
1188
+ display: none;
1189
+ }
1190
+
1191
+ .tags-cloud {
1192
+ display: flex;
1193
+ flex-wrap: wrap;
1194
+ justify-content: center;
1195
+ gap: 12px;
1196
+ padding: 40px 0;
1197
+ }
1198
+
1199
+ .tags-cloud__tag {
1200
+ display: inline-flex;
1201
+ align-items: center;
1202
+ gap: 6px;
1203
+ padding: 8px 16px;
1204
+ background: var(--surface-color);
1205
+ border-radius: 20px;
1206
+ border: 1px solid var(--border-color);
1207
+ transition: all var(--transition-fast);
1208
+ }
1209
+
1210
+ .tags-cloud__tag::before {
1211
+ display: none;
1212
+ }
1213
+
1214
+ .tags-cloud__tag:hover {
1215
+ background: var(--primary-light);
1216
+ border-color: var(--primary-color);
1217
+ }
1218
+
1219
+ .tags-cloud__name {
1220
+ color: var(--text-primary);
1221
+ }
1222
+
1223
+ .tags-cloud__count {
1224
+ font-size: 12px;
1225
+ color: var(--text-secondary);
1226
+ background: rgba(var(--surface-color-rgb), 0.5);
1227
+ padding: 2px 6px;
1228
+ border-radius: 8px;
1229
+ }
1230
+
1231
+ .friends-page .page-content {
1232
+ padding: 24px 0;
1233
+ margin: 0;
1234
+ max-width: none;
1235
+ }
1236
+
1237
+ .friends-grid {
1238
+ display: grid;
1239
+ grid-template-columns: repeat(4, 1fr);
1240
+ gap: 20px;
1241
+ }
1242
+
1243
+ .friend-card {
1244
+ display: flex;
1245
+ align-items: center;
1246
+ gap: 16px;
1247
+ padding: 20px;
1248
+ border: 2px solid transparent;
1249
+ transition: all var(--transition-normal);
1250
+ }
1251
+
1252
+ .friend-card::before {
1253
+ display: none;
1254
+ }
1255
+
1256
+ .friend-card:hover {
1257
+ border-color: var(--primary-color);
1258
+ background: var(--primary-light);
1259
+ }
1260
+
1261
+ .friend-card__avatar {
1262
+ width: 56px;
1263
+ height: 56px;
1264
+ border-radius: 25%;
1265
+ overflow: hidden;
1266
+ flex-shrink: 0;
1267
+ transition: all var(--transition-normal);
1268
+ }
1269
+
1270
+ .friend-card:hover .friend-card__avatar {
1271
+ transform: scale(1.1) rotate(5deg);
1272
+ box-shadow: 0 4px 12px rgba(255, 127, 120, 0.3);
1273
+ }
1274
+
1275
+ .friend-card__avatar img {
1276
+ width: 100%;
1277
+ height: 100%;
1278
+ object-fit: cover;
1279
+ }
1280
+
1281
+ .friend-card__content {
1282
+ flex: 1;
1283
+ min-width: 0;
1284
+ }
1285
+
1286
+ .friend-card__name {
1287
+ font-size: 16px;
1288
+ font-weight: 600;
1289
+ margin-bottom: 4px;
1290
+ transition: color var(--transition-fast);
1291
+ }
1292
+
1293
+ .friend-card:hover .friend-card__name {
1294
+ color: var(--primary-dark);
1295
+ }
1296
+
1297
+ .friend-card__description {
1298
+ font-size: 13px;
1299
+ color: var(--text-secondary);
1300
+ overflow: hidden;
1301
+ text-overflow: ellipsis;
1302
+ white-space: nowrap;
1303
+ }
1304
+
1305
+ .friend-card__link {
1306
+ color: var(--primary-color);
1307
+ }
1308
+
1309
+ .friend-card__link::before {
1310
+ display: none;
1311
+ }
1312
+
1313
+ .friend-card--cover {
1314
+ flex-direction: column;
1315
+ align-items: stretch;
1316
+ padding: 0;
1317
+ height: 280px;
1318
+ position: relative;
1319
+ overflow: hidden;
1320
+ }
1321
+
1322
+ .friend-card--cover .friend-card__cover {
1323
+ position: absolute;
1324
+ inset: 0;
1325
+ width: 100%;
1326
+ height: 100%;
1327
+ }
1328
+
1329
+ .friend-card--cover .friend-card__cover img {
1330
+ width: 100%;
1331
+ height: 100%;
1332
+ object-fit: cover;
1333
+ transition: transform var(--transition-normal);
1334
+ }
1335
+
1336
+ .friend-card--cover:hover .friend-card__cover img {
1337
+ transform: scale(1.05);
1338
+ }
1339
+
1340
+ .friend-card--cover .friend-card__overlay {
1341
+ position: absolute;
1342
+ inset: 0;
1343
+ background: linear-gradient(to bottom,
1344
+ transparent 0%,
1345
+ transparent 40%,
1346
+ rgba(0, 0, 0, 0.7) 100%);
1347
+ transition: background var(--transition-normal);
1348
+ }
1349
+
1350
+ .friend-card--cover:hover .friend-card__overlay {
1351
+ background: linear-gradient(to bottom,
1352
+ transparent 0%,
1353
+ transparent 30%,
1354
+ rgba(0, 0, 0, 0.8) 100%);
1355
+ }
1356
+
1357
+ .friend-card--cover .friend-card__content {
1358
+ position: absolute;
1359
+ bottom: 0;
1360
+ left: 0;
1361
+ right: 0;
1362
+ padding: 20px;
1363
+ z-index: 1;
1364
+ display: flex;
1365
+ flex-direction: column;
1366
+ gap: 8px;
1367
+ }
1368
+
1369
+ .friend-card--cover .friend-card__name {
1370
+ font-size: 18px;
1371
+ color: #fff;
1372
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
1373
+ margin-bottom: 0;
1374
+ }
1375
+
1376
+ .friend-card--cover:hover .friend-card__name {
1377
+ color: #fff;
1378
+ }
1379
+
1380
+ .friend-card--cover .friend-card__description {
1381
+ font-size: 13px;
1382
+ color: rgba(255, 255, 255, 0.85);
1383
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
1384
+ white-space: normal;
1385
+ display: -webkit-box;
1386
+ -webkit-line-clamp: 2;
1387
+ -webkit-box-orient: vertical;
1388
+ overflow: hidden;
1389
+ }
1390
+
1391
+ .friend-card--cover .friend-card__avatar-wrapper {
1392
+ display: flex;
1393
+ align-items: center;
1394
+ gap: 12px;
1395
+ }
1396
+
1397
+ .friend-card--cover .friend-card__avatar {
1398
+ width: 40px;
1399
+ height: 40px;
1400
+ border-radius: 50%;
1401
+ border: 2px solid rgba(255, 255, 255, 0.3);
1402
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
1403
+ }
1404
+
1405
+ .friend-card--cover:hover .friend-card__avatar {
1406
+ transform: scale(1.1);
1407
+ border-color: var(--primary-color);
1408
+ }
1409
+
1410
+ .friend-card--cover .friend-card__author {
1411
+ font-size: 14px;
1412
+ color: rgba(255, 255, 255, 0.9);
1413
+ font-weight: 500;
1414
+ }
1415
+
1416
+ .page-content {
1417
+ /* max-width: 800px; */
1418
+ /* margin: 0 auto; */
1419
+ padding: 24px 0;
1420
+ }
1421
+
1422
+ .search-page .page-content {
1423
+ max-width: 600px;
1424
+ }
1425
+
1426
+ .search-form {
1427
+ margin-bottom: 32px;
1428
+ }
1429
+
1430
+ .search-input-wrapper {
1431
+ position: relative;
1432
+ }
1433
+
1434
+ .search-input {
1435
+ width: 100%;
1436
+ padding: 16px 20px 16px 48px;
1437
+ font-size: 16px;
1438
+ border: 2px solid var(--border-color);
1439
+ border-radius: var(--border-radius);
1440
+ background: var(--surface-color);
1441
+ color: var(--text-primary);
1442
+ transition: all var(--transition-fast);
1443
+ }
1444
+
1445
+ .search-input:focus {
1446
+ outline: none;
1447
+ border-color: var(--primary-color);
1448
+ box-shadow: 0 0 0 3px rgba(255, 127, 120, 0.1);
1449
+ }
1450
+
1451
+ .search-icon {
1452
+ position: absolute;
1453
+ left: 16px;
1454
+ top: 50%;
1455
+ transform: translateY(-50%);
1456
+ color: var(--text-secondary);
1457
+ }
1458
+
1459
+ .search-results {
1460
+ display: flex;
1461
+ flex-direction: column;
1462
+ gap: 16px;
1463
+ }
1464
+
1465
+ .search-result {
1466
+ padding: 20px;
1467
+ }
1468
+
1469
+ .search-result__title {
1470
+ font-size: 18px;
1471
+ font-weight: 600;
1472
+ margin-bottom: 8px;
1473
+ }
1474
+
1475
+ .search-result__title a {
1476
+ color: var(--text-primary);
1477
+ }
1478
+
1479
+ .search-result__title a::before {
1480
+ display: none;
1481
+ }
1482
+
1483
+ .search-result__title a:hover {
1484
+ color: var(--primary-color);
1485
+ }
1486
+
1487
+ .search-result__excerpt {
1488
+ font-size: 14px;
1489
+ color: var(--text-secondary);
1490
+ line-height: 1.6;
1491
+ }
1492
+
1493
+ .search-empty {
1494
+ text-align: center;
1495
+ padding: 60px 20px;
1496
+ color: var(--text-secondary);
1497
+ }
1498
+
1499
+ .search-empty__icon {
1500
+ font-size: 48px;
1501
+ margin-bottom: 16px;
1502
+ opacity: 0.5;
1503
+ }
1504
+
1505
+ @keyframes fadeInUp {
1506
+ from {
1507
+ opacity: 0;
1508
+ transform: translateY(30px);
1509
+ }
1510
+
1511
+ to {
1512
+ opacity: 1;
1513
+ transform: translateY(0);
1514
+ }
1515
+ }
1516
+
1517
+ @keyframes fadeInRight {
1518
+ from {
1519
+ opacity: 0;
1520
+ transform: translateX(30px);
1521
+ }
1522
+
1523
+ to {
1524
+ opacity: 1;
1525
+ transform: translateX(0);
1526
+ }
1527
+ }
1528
+
1529
+ .animate-fade-in-up {
1530
+ animation: fadeInUp 0.6s ease-out forwards;
1531
+ }
1532
+
1533
+ .animate-fade-in-right {
1534
+ animation: fadeInRight 0.6s ease-out forwards;
1535
+ }
1536
+
1537
+ .animate-delay-1 {
1538
+ animation-delay: 0.1s;
1539
+ opacity: 0;
1540
+ }
1541
+
1542
+ .animate-delay-2 {
1543
+ animation-delay: 0.2s;
1544
+ opacity: 0;
1545
+ }
1546
+
1547
+ .animate-delay-3 {
1548
+ animation-delay: 0.3s;
1549
+ opacity: 0;
1550
+ }
1551
+
1552
+ @media (max-width: 1024px) {
1553
+ .posts-page__content {
1554
+ grid-template-columns: 1fr;
1555
+ }
1556
+
1557
+ .sidebar {
1558
+ display: none;
1559
+ }
1560
+ }
1561
+
1562
+ @media (max-width: 768px) {
1563
+ :root {
1564
+ --header-height: 56px;
1565
+ }
1566
+
1567
+ .header__nav {
1568
+ position: fixed;
1569
+ top: 0;
1570
+ left: 0;
1571
+ right: 0;
1572
+ bottom: 0;
1573
+ flex-direction: column;
1574
+ background: var(--background-color);
1575
+ padding: 80px 16px 16px;
1576
+ opacity: 0;
1577
+ visibility: hidden;
1578
+ transition: opacity var(--transition-normal), visibility var(--transition-normal);
1579
+ z-index: 99;
1580
+ overflow-y: auto;
1581
+ }
1582
+
1583
+ .header__nav--open {
1584
+ opacity: 1;
1585
+ visibility: visible;
1586
+ }
1587
+
1588
+ .header__nav-item {
1589
+ width: 100%;
1590
+ padding: 16px;
1591
+ font-size: 16px;
1592
+ }
1593
+
1594
+ .header__menu-btn {
1595
+ display: inline-flex;
1596
+ z-index: 100;
1597
+ }
1598
+
1599
+ .footer__content {
1600
+ flex-direction: column;
1601
+ align-items: center;
1602
+ gap: 16px;
1603
+ text-align: center;
1604
+ }
1605
+
1606
+ .footer__left {
1607
+ align-items: center;
1608
+ }
1609
+
1610
+ .footer__center {
1611
+ align-items: center;
1612
+ }
1613
+
1614
+ .footer__right {
1615
+ align-items: center;
1616
+ }
1617
+
1618
+ .post-header__title {
1619
+ font-size: 24px;
1620
+ }
1621
+
1622
+ .post-header__cover {
1623
+ height: 250px;
1624
+ }
1625
+
1626
+ .post-nav {
1627
+ grid-template-columns: 1fr;
1628
+ }
1629
+
1630
+ .categories-grid {
1631
+ grid-template-columns: 1fr;
1632
+ }
1633
+ }
1634
+
1635
+ ::-webkit-scrollbar {
1636
+ width: 2px;
1637
+ height: 8px;
1638
+ }
1639
+
1640
+ ::-webkit-scrollbar-track {
1641
+ background: transparent;
1642
+ border-radius: 4px;
1643
+ }
1644
+
1645
+ ::-webkit-scrollbar-thumb {
1646
+ background: rgba(var(--surface-color-rgb), 0.3);
1647
+ border-radius: 4px;
1648
+ border: 2px solid transparent;
1649
+ background-clip: padding-box;
1650
+ transition: background var(--transition-normal), border-color var(--transition-normal);
1651
+ }
1652
+
1653
+ ::-webkit-scrollbar-thumb:hover {
1654
+ background: var(--primary-color);
1655
+ border-color: var(--primary-color);
1656
+ }
1657
+
1658
+ ::-webkit-scrollbar-corner {
1659
+ background: transparent;
1660
+ }
1661
+
1662
+ html {
1663
+ scrollbar-width: thin;
1664
+ scrollbar-color: rgba(var(--surface-color-rgb), 0.3) transparent;
1665
+ }
1666
+
1667
+ html:hover {
1668
+ scrollbar-color: var(--primary-color) transparent;
1669
+ }
1670
+
1671
+ ::selection {
1672
+ background: var(--primary-light);
1673
+ color: var(--primary-dark);
1674
+ }
1675
+
1676
+ .post-body-wrapper {
1677
+ position: relative;
1678
+ margin-top: 32px;
1679
+ }
1680
+
1681
+ .post-body-wrapper .post-body {
1682
+ max-width: 800px;
1683
+ margin: 0 auto;
1684
+ }
1685
+
1686
+ .post-toc {
1687
+ position: fixed;
1688
+ right: 10px;
1689
+ top: calc(var(--header-height) + 24px);
1690
+ width: 240px;
1691
+ max-height: calc(100vh - var(--header-height) - 48px);
1692
+ overflow: hidden;
1693
+ z-index: 10;
1694
+ opacity: 0;
1695
+ pointer-events: none;
1696
+ transition: opacity var(--transition-normal), width var(--transition-normal), right var(--transition-normal);
1697
+ }
1698
+
1699
+ .post-toc--visible {
1700
+ opacity: 1;
1701
+ pointer-events: auto;
1702
+ }
1703
+
1704
+ .post-toc--hidden {
1705
+ display: none;
1706
+ }
1707
+
1708
+ .post-toc__inner {
1709
+ background: var(--surface-color);
1710
+ backdrop-filter: var(--glass-blur);
1711
+ -webkit-backdrop-filter: var(--glass-blur);
1712
+ border-radius: var(--border-radius);
1713
+ border: 1px solid var(--border-color);
1714
+ padding: 16px;
1715
+ box-shadow: var(--shadow-sm);
1716
+ }
1717
+
1718
+ .post-toc__header {
1719
+ display: flex;
1720
+ align-items: center;
1721
+ gap: 8px;
1722
+ font-size: 14px;
1723
+ font-weight: 600;
1724
+ color: var(--text-primary);
1725
+ padding-bottom: 12px;
1726
+ margin-bottom: 12px;
1727
+ border-bottom: 1px solid var(--border-color);
1728
+ }
1729
+
1730
+ .post-toc__title {
1731
+ flex: 1;
1732
+ }
1733
+
1734
+ .post-toc__toggle {
1735
+ display: flex;
1736
+ align-items: center;
1737
+ justify-content: center;
1738
+ width: 28px;
1739
+ height: 28px;
1740
+ padding: 0;
1741
+ margin: 0;
1742
+ background: transparent;
1743
+ border: none;
1744
+ border-radius: var(--border-radius-sm);
1745
+ color: var(--text-secondary);
1746
+ cursor: pointer;
1747
+ transition: all var(--transition-fast);
1748
+ }
1749
+
1750
+ .post-toc__toggle:hover {
1751
+ background: var(--primary-light);
1752
+ color: var(--primary-color);
1753
+ }
1754
+
1755
+ .post-toc__toggle:focus {
1756
+ outline: 2px solid var(--primary-color);
1757
+ outline-offset: 2px;
1758
+ }
1759
+
1760
+ .post-toc__toggle:focus:not(:focus-visible) {
1761
+ outline: none;
1762
+ }
1763
+
1764
+ .post-toc__toggle:focus-visible {
1765
+ outline: 2px solid var(--primary-color);
1766
+ outline-offset: 2px;
1767
+ }
1768
+
1769
+ .post-toc__toggle-icon {
1770
+ transition: transform var(--transition-normal);
1771
+ }
1772
+
1773
+ .post-toc--collapsed .post-toc__toggle-icon {
1774
+ transform: rotate(180deg);
1775
+ }
1776
+
1777
+ .post-toc--collapsed {
1778
+ width: 44px;
1779
+ right: 0;
1780
+ }
1781
+
1782
+ .post-toc--collapsed .post-toc__inner {
1783
+ padding: 8px;
1784
+ border-top-right-radius: 0;
1785
+ border-bottom-right-radius: 0;
1786
+ border-right: none;
1787
+ }
1788
+
1789
+ .post-toc--collapsed .post-toc__header {
1790
+ padding-bottom: 0;
1791
+ margin-bottom: 0;
1792
+ border-bottom: none;
1793
+ flex-direction: column;
1794
+ gap: 4px;
1795
+ }
1796
+
1797
+ .post-toc--collapsed .post-toc__title {
1798
+ display: none;
1799
+ }
1800
+
1801
+ .post-toc--collapsed .post-toc__content {
1802
+ max-height: 0;
1803
+ opacity: 0;
1804
+ overflow: hidden;
1805
+ margin: 0;
1806
+ padding: 0;
1807
+ }
1808
+
1809
+ .post-toc__content {
1810
+ max-height: calc(100vh - var(--header-height) - 180px);
1811
+ overflow-y: auto;
1812
+ scrollbar-width: none;
1813
+ -ms-overflow-style: none;
1814
+ transition: max-height var(--transition-normal), opacity var(--transition-normal);
1815
+ }
1816
+
1817
+ .post-toc__content::-webkit-scrollbar {
1818
+ display: none;
1819
+ }
1820
+
1821
+ .post-toc__content ol {
1822
+ list-style: none;
1823
+ padding: 0;
1824
+ margin: 0;
1825
+ }
1826
+
1827
+ .post-toc__content li {
1828
+ margin: 0;
1829
+ padding: 0;
1830
+ }
1831
+
1832
+ .post-toc__content ol ol {
1833
+ padding-left: 12px;
1834
+ margin-top: 4px;
1835
+ }
1836
+
1837
+ .post-toc__content a {
1838
+ display: block;
1839
+ padding: 6px 10px;
1840
+ font-size: 13px;
1841
+ color: var(--text-secondary);
1842
+ border-radius: var(--border-radius-sm);
1843
+ transition: all var(--transition-fast);
1844
+ border-left: 2px solid transparent;
1845
+ text-decoration: none;
1846
+ overflow: hidden;
1847
+ text-overflow: ellipsis;
1848
+ white-space: nowrap;
1849
+ }
1850
+
1851
+ .post-toc__content a::before {
1852
+ display: none;
1853
+ }
1854
+
1855
+ .post-toc__content a:hover {
1856
+ color: var(--primary-color);
1857
+ background: var(--primary-light);
1858
+ border-left-color: var(--primary-color);
1859
+ }
1860
+
1861
+ .post-toc__content .is-active-li>a {
1862
+ color: var(--primary-color);
1863
+ background: var(--primary-light);
1864
+ border-left-color: var(--primary-color);
1865
+ font-weight: 500;
1866
+ }
1867
+
1868
+ .post-toc__content .toc-child a {
1869
+ font-size: 12px;
1870
+ padding-left: 22px;
1871
+ }
1872
+
1873
+ .post-toc__content .toc-child .toc-child a {
1874
+ padding-left: 34px;
1875
+ }
1876
+
1877
+ .post-toc__content .is-collapsed {
1878
+ display: none;
1879
+ }
1880
+
1881
+ .post-toc__content .toc-list {
1882
+ list-style: none;
1883
+ padding: 0;
1884
+ margin: 0;
1885
+ }
1886
+
1887
+ .post-toc__content .toc-list-item {
1888
+ margin: 0;
1889
+ padding: 0;
1890
+ }
1891
+
1892
+ .post-toc__content .toc-list .toc-list {
1893
+ padding-left: 12px;
1894
+ margin-top: 4px;
1895
+ }
1896
+
1897
+ .post-toc__content .toc-link {
1898
+ display: block;
1899
+ padding: 6px 10px;
1900
+ font-size: 13px;
1901
+ color: var(--text-secondary);
1902
+ border-radius: var(--border-radius-sm);
1903
+ transition: all var(--transition-fast);
1904
+ border-left: 2px solid transparent;
1905
+ text-decoration: none;
1906
+ overflow: hidden;
1907
+ text-overflow: ellipsis;
1908
+ white-space: nowrap;
1909
+ }
1910
+
1911
+ .post-toc__content .toc-link::before {
1912
+ display: none;
1913
+ }
1914
+
1915
+ .post-toc__content .toc-link:hover {
1916
+ color: var(--primary-color);
1917
+ background: var(--primary-light);
1918
+ border-left-color: var(--primary-color);
1919
+ }
1920
+
1921
+ @media (max-width: 1200px) {
1922
+ .post-toc {
1923
+ display: none;
1924
+ }
1925
+
1926
+ .post-page__content {
1927
+ max-width: 800px;
1928
+ margin: 0 auto;
1929
+ padding: 40px 0;
1930
+ }
1931
+ }
1932
+
1933
+ @media (max-width: 768px) {
1934
+ .post-page__content {
1935
+ padding: 24px 0;
1936
+ }
1937
+ }
1938
+
1939
+ .post-license {
1940
+ margin-top: 32px;
1941
+ padding: 20px 24px;
1942
+ background: var(--surface-color);
1943
+ backdrop-filter: var(--glass-blur);
1944
+ -webkit-backdrop-filter: var(--glass-blur);
1945
+ border-radius: var(--border-radius);
1946
+ border: 1px solid var(--border-color);
1947
+ box-shadow: var(--shadow-sm);
1948
+ }
1949
+
1950
+ .post-license__header {
1951
+ display: flex;
1952
+ align-items: center;
1953
+ gap: 8px;
1954
+ font-size: 15px;
1955
+ font-weight: 600;
1956
+ color: var(--text-primary);
1957
+ margin-bottom: 16px;
1958
+ padding-bottom: 12px;
1959
+ border-bottom: 1px solid var(--border-color);
1960
+ }
1961
+
1962
+ .post-license__header svg {
1963
+ color: var(--primary-color);
1964
+ }
1965
+
1966
+ .post-license__content {
1967
+ display: flex;
1968
+ flex-direction: column;
1969
+ gap: 8px;
1970
+ }
1971
+
1972
+ .post-license__row {
1973
+ display: flex;
1974
+ flex-wrap: wrap;
1975
+ justify-content: space-between;
1976
+ gap: 8px;
1977
+ }
1978
+
1979
+ .post-license__item {
1980
+ display: flex;
1981
+ align-items: baseline;
1982
+ gap: 8px;
1983
+ font-size: 14px;
1984
+ }
1985
+
1986
+ .post-license__label {
1987
+ color: var(--text-secondary);
1988
+ flex-shrink: 0;
1989
+ }
1990
+
1991
+ .post-license__value {
1992
+ color: var(--text-primary);
1993
+ }
1994
+
1995
+ .post-license__link {
1996
+ color: var(--primary-color);
1997
+ text-decoration: none;
1998
+ word-break: break-all;
1999
+ position: relative;
2000
+ z-index: 1;
2001
+ transition: color var(--transition-fast);
2002
+ }
2003
+
2004
+ .post-license__link::before {
2005
+ content: '';
2006
+ position: absolute;
2007
+ bottom: 0;
2008
+ left: 0;
2009
+ width: 100%;
2010
+ height: 0;
2011
+ background: var(--btn-plain-bg-hover);
2012
+ transition: height var(--transition-fast);
2013
+ transform-origin: bottom;
2014
+ z-index: -1;
2015
+ }
2016
+
2017
+ .post-license__link:hover::before {
2018
+ height: 100%;
2019
+ }
2020
+
2021
+ .post-license__notice {
2022
+ margin-top: 12px;
2023
+ padding-top: 12px;
2024
+ border-top: 1px dashed var(--border-color);
2025
+ font-size: 13px;
2026
+ color: var(--text-secondary);
2027
+ line-height: 1.6;
2028
+ display: flex;
2029
+ flex-wrap: wrap;
2030
+ align-items: center;
2031
+ }
2032
+
2033
+ .post-license__notice a {
2034
+ color: var(--primary-color);
2035
+ text-decoration: none;
2036
+ position: relative;
2037
+ z-index: 1;
2038
+ white-space: nowrap;
2039
+ transition: color var(--transition-fast);
2040
+ }
2041
+
2042
+ .post-license__notice a::before {
2043
+ content: '';
2044
+ position: absolute;
2045
+ bottom: 0;
2046
+ left: 0;
2047
+ width: 100%;
2048
+ height: 0;
2049
+ background: var(--btn-plain-bg-hover);
2050
+ transition: height var(--transition-fast);
2051
+ transform-origin: bottom;
2052
+ z-index: -1;
2053
+ }
2054
+
2055
+ .post-license__notice a:hover::before {
2056
+ height: 100%;
2057
+ }