arsxy-theme 1.0.0.pre.rc

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 (56) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +166 -0
  4. data/_config.yml +131 -0
  5. data/_includes/footer.html +45 -0
  6. data/_includes/header.html +68 -0
  7. data/_includes/image.html +8 -0
  8. data/_includes/related-posts.html +83 -0
  9. data/_includes/search.html +32 -0
  10. data/_includes/social-sharing.html +86 -0
  11. data/_includes/toc.html +83 -0
  12. data/_layouts/default.html +76 -0
  13. data/_layouts/docs.html +90 -0
  14. data/_layouts/home.html +172 -0
  15. data/_layouts/post.html +114 -0
  16. data/_sass/_base.scss +264 -0
  17. data/_sass/_dark-mode.scss +749 -0
  18. data/_sass/_layout.scss +118 -0
  19. data/_sass/_responsive.scss +157 -0
  20. data/_sass/_syntax-highlighting.scss +147 -0
  21. data/_sass/_typography.scss +226 -0
  22. data/_sass/_utilities.scss +138 -0
  23. data/_sass/_variables.scss +63 -0
  24. data/_sass/components/_code.scss +245 -0
  25. data/_sass/components/_docs.scss +263 -0
  26. data/_sass/components/_footer.scss +170 -0
  27. data/_sass/components/_header.scss +313 -0
  28. data/_sass/components/_homepage.scss +597 -0
  29. data/_sass/components/_image.scss +22 -0
  30. data/_sass/components/_pagination.scss +146 -0
  31. data/_sass/components/_post.scss +1039 -0
  32. data/_sass/components/_related-posts.scss +70 -0
  33. data/_sass/components/_search.scss +276 -0
  34. data/_sass/components/_social-sharing.scss +95 -0
  35. data/_sass/components/_toc.scss +193 -0
  36. data/assets/css/main.scss +24 -0
  37. data/assets/images/favicon/android-chrome-192x192.png +0 -0
  38. data/assets/images/favicon/android-chrome-512x512.png +0 -0
  39. data/assets/images/favicon/apple-touch-icon.png +0 -0
  40. data/assets/images/favicon/favicon-16x16.png +0 -0
  41. data/assets/images/favicon/favicon-32x32.png +0 -0
  42. data/assets/images/favicon/favicon.ico +0 -0
  43. data/assets/images/favicon/site.webmanifest +19 -0
  44. data/assets/images/new-features-update.svg +58 -0
  45. data/assets/images/related-posts-example.svg +37 -0
  46. data/assets/images/seo-optimization.png +0 -0
  47. data/assets/images/social-sharing-sample.png +0 -0
  48. data/assets/images/ss-arsxy-theme.png +0 -0
  49. data/assets/images/table-of-content-thumbnail.png +0 -0
  50. data/assets/images/theme-demo-2.jpeg +0 -0
  51. data/assets/images/theme-demo.jpeg +0 -0
  52. data/assets/images/welcome-to-arsxy-theme.png +0 -0
  53. data/assets/js/main.js +369 -0
  54. data/assets/js/search-index.json +31 -0
  55. data/assets/js/search.js +207 -0
  56. metadata +226 -0
@@ -0,0 +1,1039 @@
1
+ /* Post styles */
2
+ .post {
3
+ margin-bottom: $spacing-xl;
4
+
5
+ /* Post header */
6
+ .post-header {
7
+ margin-bottom: $spacing-lg;
8
+
9
+ .post-title {
10
+ font-size: 2.8rem;
11
+ line-height: 1.2;
12
+ margin-bottom: $spacing-sm;
13
+ word-wrap: break-word;
14
+ position: relative;
15
+ background: linear-gradient(to right, $primary-color, $secondary-color);
16
+ -webkit-background-clip: text;
17
+ -webkit-text-fill-color: transparent;
18
+ background-clip: text;
19
+ color: transparent;
20
+
21
+ @media (max-width: $on-palm) {
22
+ font-size: 2.2rem;
23
+ }
24
+ }
25
+
26
+ .post-description {
27
+ font-size: 1.3rem;
28
+ color: $dark-gray;
29
+ line-height: 1.5;
30
+ margin-bottom: $spacing-md;
31
+ font-weight: 300;
32
+ padding-left: $spacing-md;
33
+ border-left: 3px solid rgba($accent-color, 0.5);
34
+ }
35
+
36
+ /* Post header meta section */
37
+ .post-meta {
38
+ font-size: $small-font-size;
39
+ color: $dark-gray;
40
+ display: flex;
41
+ flex-wrap: wrap;
42
+ align-items: center;
43
+ gap: $spacing-sm;
44
+ margin-bottom: $spacing-md;
45
+
46
+ .post-date-author {
47
+ background-color: rgba($primary-color, 0.15);
48
+ border-radius: $border-radius;
49
+ padding: 4px 10px;
50
+ display: inline-flex;
51
+ align-items: center;
52
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
53
+ border: 1px solid rgba($primary-color, 0.2);
54
+ height: 28px; /* Same height as other elements */
55
+ font-size: $smaller-font-size; /* Same font size as other elements */
56
+
57
+ &:hover {
58
+ background-color: rgba($primary-color, 0.25);
59
+ transform: translateY(-1px);
60
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
61
+ }
62
+
63
+ .post-date {
64
+ color: $primary-color;
65
+ font-weight: 500;
66
+ background-color: transparent;
67
+ padding: 0;
68
+ }
69
+
70
+ .separator {
71
+ color: rgba($primary-color, 0.6);
72
+ margin: 0 6px;
73
+ font-weight: 300;
74
+ }
75
+
76
+ .post-author {
77
+ color: darken($secondary-color, 15%); /* Darkened for better contrast */
78
+ font-weight: 600; /* Increased from 500 to 600 */
79
+ background-color: transparent;
80
+ padding: 0;
81
+ }
82
+ }
83
+
84
+ .post-categories {
85
+ display: flex;
86
+ flex-wrap: wrap;
87
+ gap: 5px;
88
+
89
+ a {
90
+ display: inline-flex;
91
+ align-items: center;
92
+ height: 28px; /* Smaller height compared to date-author */
93
+ background: rgba($secondary-color, 0.15);
94
+ padding: 0 10px;
95
+ border-radius: $border-radius;
96
+ font-size: $smaller-font-size;
97
+ color: darken($secondary-color, 15%); /* Darkened for better contrast */
98
+ font-weight: 600; /* Increased from default to 600 */
99
+ border: 1px solid rgba($secondary-color, 0.3);
100
+ transition: $transition-base;
101
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
102
+
103
+ &:hover {
104
+ background: rgba($secondary-color, 0.25);
105
+ color: darken($secondary-color, 20%); /* Even darker on hover for better contrast */
106
+ text-decoration: none;
107
+ transform: translateY(-1px);
108
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
109
+ }
110
+ }
111
+ }
112
+
113
+ .reading-time {
114
+ background-color: rgba($light-gray, 0.7);
115
+ padding: 4px 8px;
116
+ border-radius: $border-radius;
117
+ display: inline-flex;
118
+ align-items: center;
119
+ height: 28px; /* Smaller height compared to date-author */
120
+ transition: $transition-base;
121
+ border: 1px solid rgba($light-gray, 0.8);
122
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
123
+ font-size: $smaller-font-size;
124
+
125
+ &:hover {
126
+ background-color: rgba($light-gray, 0.9);
127
+ transform: translateY(-1px);
128
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
129
+ }
130
+
131
+ &::before {
132
+ content: '⏱️';
133
+ margin-right: 5px;
134
+ }
135
+ }
136
+ }
137
+ }
138
+
139
+ /* Post featured image */
140
+ .post-featured-image {
141
+ margin-bottom: $spacing-lg;
142
+ border-radius: $border-radius-lg;
143
+ overflow: hidden;
144
+ box-shadow: $shadow-md;
145
+ transition: $transition-base;
146
+ max-height: 450px; /* Set maximum height for consistent image sizing */
147
+ display: flex; /* Use flexbox to center the image vertically */
148
+ align-items: center;
149
+ justify-content: center;
150
+
151
+ &:hover {
152
+ transform: translateY(-5px);
153
+ box-shadow: $shadow-lg;
154
+ }
155
+
156
+ img {
157
+ width: 100%;
158
+ height: 100%;
159
+ max-height: 450px; /* Ensure image doesn't exceed container */
160
+ object-fit: cover; /* Ensure image covers area without distortion */
161
+ display: block;
162
+ border-radius: $border-radius;
163
+ transition: $transition-base;
164
+
165
+ &:hover {
166
+ transform: scale(1.02);
167
+ }
168
+ }
169
+ }
170
+
171
+ /* CSS-only featured images */
172
+ .css-featured-image {
173
+ height: 350px;
174
+ width: 100%;
175
+ position: relative;
176
+ display: flex;
177
+ align-items: center;
178
+ justify-content: center;
179
+
180
+ /* Pattern 0 - Diagonal stripes */
181
+ &[data-pattern="0"] {
182
+ background: linear-gradient(135deg, $primary-color, $secondary-color);
183
+ background-size: 100% 100%;
184
+
185
+ &::before {
186
+ content: '';
187
+ position: absolute;
188
+ top: 0;
189
+ left: 0;
190
+ right: 0;
191
+ bottom: 0;
192
+ background: repeating-linear-gradient(
193
+ 45deg,
194
+ transparent,
195
+ transparent 20px,
196
+ rgba(255, 255, 255, 0.1) 20px,
197
+ rgba(255, 255, 255, 0.1) 40px
198
+ );
199
+ }
200
+ }
201
+
202
+ /* Pattern 1 - Radial gradient */
203
+ &[data-pattern="1"] {
204
+ background: radial-gradient(circle at 30% 40%, $secondary-color, $accent-color);
205
+
206
+ &::before {
207
+ content: '';
208
+ position: absolute;
209
+ top: 0;
210
+ left: 0;
211
+ right: 0;
212
+ bottom: 0;
213
+ background: radial-gradient(
214
+ circle at 70% 60%,
215
+ rgba(255, 255, 255, 0.2) 0%,
216
+ transparent 30%
217
+ );
218
+ }
219
+ }
220
+
221
+ /* Pattern 2 - Geometric shapes */
222
+ &[data-pattern="2"] {
223
+ background: linear-gradient(to right, $primary-color, $accent-color);
224
+
225
+ &::before {
226
+ content: '';
227
+ position: absolute;
228
+ top: 0;
229
+ left: 0;
230
+ right: 0;
231
+ bottom: 0;
232
+ background-image:
233
+ linear-gradient(45deg, transparent 48%, rgba(255, 255, 255, 0.1) 49%, rgba(255, 255, 255, 0.1) 51%, transparent 52%),
234
+ linear-gradient(-45deg, transparent 48%, rgba(255, 255, 255, 0.1) 49%, rgba(255, 255, 255, 0.1) 51%, transparent 52%);
235
+ background-size: 60px 60px;
236
+ }
237
+ }
238
+
239
+ /* Pattern 3 - Waves */
240
+ &[data-pattern="3"] {
241
+ background: linear-gradient(to bottom, $secondary-color, $accent-color);
242
+
243
+ &::before {
244
+ content: '';
245
+ position: absolute;
246
+ top: 0;
247
+ left: 0;
248
+ right: 0;
249
+ bottom: 0;
250
+ background-image:
251
+ radial-gradient(circle at 100% 50%, transparent 20%, rgba(255, 255, 255, 0.1) 21%, rgba(255, 255, 255, 0.1) 34%, transparent 35%, transparent),
252
+ radial-gradient(circle at 0% 50%, transparent 20%, rgba(255, 255, 255, 0.1) 21%, rgba(255, 255, 255, 0.1) 34%, transparent 35%, transparent);
253
+ background-size: 60px 120px;
254
+ }
255
+ }
256
+
257
+ /* Pattern 4 - Grid */
258
+ &[data-pattern="4"] {
259
+ background: linear-gradient(135deg, $accent-color, $primary-color);
260
+
261
+ &::before {
262
+ content: '';
263
+ position: absolute;
264
+ top: 0;
265
+ left: 0;
266
+ right: 0;
267
+ bottom: 0;
268
+ background-image:
269
+ linear-gradient(rgba(255, 255, 255, 0.1) 1px, transparent 1px),
270
+ linear-gradient(90deg, rgba(255, 255, 255, 0.1) 1px, transparent 1px);
271
+ background-size: 20px 20px;
272
+ }
273
+ }
274
+
275
+ /* Pattern 5 - Dots */
276
+ &[data-pattern="5"] {
277
+ background: linear-gradient(45deg, $primary-color, $secondary-color);
278
+
279
+ &::before {
280
+ content: '';
281
+ position: absolute;
282
+ top: 0;
283
+ left: 0;
284
+ right: 0;
285
+ bottom: 0;
286
+ background-image: radial-gradient(rgba(255, 255, 255, 0.2) 2px, transparent 2px);
287
+ background-size: 20px 20px;
288
+ }
289
+ }
290
+
291
+ .css-image-title {
292
+ font-size: 10rem;
293
+ font-weight: 900;
294
+ color: rgba(255, 255, 255, 0.2);
295
+ text-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);
296
+ line-height: 1;
297
+ user-select: none;
298
+ z-index: 1;
299
+ position: relative;
300
+ transition: $transition-base;
301
+
302
+ &::after {
303
+ content: '';
304
+ position: absolute;
305
+ bottom: -20px;
306
+ left: 50%;
307
+ transform: translateX(-50%);
308
+ width: 80px;
309
+ height: 4px;
310
+ background: rgba(255, 255, 255, 0.3);
311
+ border-radius: 2px;
312
+ }
313
+ }
314
+
315
+ &:hover {
316
+ .css-image-title {
317
+ color: rgba(255, 255, 255, 0.3);
318
+ transform: scale(1.05) translateY(-5px);
319
+ }
320
+ }
321
+ }
322
+
323
+ /* Post content */
324
+ .post-content {
325
+ margin-bottom: $spacing-lg;
326
+
327
+ /* Larger top margins for headings within content */
328
+ h1, h2, h3, h4, h5, h6 {
329
+ margin-top: $spacing-xl;
330
+ margin-bottom: $spacing-md;
331
+ font-weight: 700;
332
+ position: relative;
333
+
334
+ /* Add anchor links to headings */
335
+ .heading-anchor {
336
+ position: absolute;
337
+ margin-left: -1em;
338
+ opacity: 0;
339
+ font-weight: 400;
340
+ font-size: 0.8em;
341
+ transition: $transition-base;
342
+ color: $dark-gray;
343
+ text-decoration: none;
344
+
345
+ &:hover {
346
+ color: $primary-color;
347
+ }
348
+ }
349
+
350
+ &:hover {
351
+ .heading-anchor {
352
+ opacity: 1;
353
+ }
354
+ }
355
+ }
356
+
357
+ h2 {
358
+ &::after {
359
+ content: '';
360
+ display: block;
361
+ width: 3rem;
362
+ height: 0.2rem;
363
+ background: linear-gradient(to right, $secondary-color, $accent-color);
364
+ margin-top: 0.5rem;
365
+ border-radius: 1rem;
366
+ }
367
+ }
368
+
369
+ /* First heading doesn't need large top margin */
370
+ > h1:first-child, > h2:first-child, > h3:first-child,
371
+ > h4:first-child, > h5:first-child, > h6:first-child {
372
+ margin-top: 0;
373
+ }
374
+
375
+ /* Responsive images with shadow and hover effect */
376
+ img {
377
+ max-width: 100%;
378
+ height: auto;
379
+ display: block;
380
+ margin: 0 auto $spacing-md auto;
381
+ border-radius: $border-radius;
382
+ box-shadow: $shadow-sm;
383
+ transition: $transition-base;
384
+
385
+ &:hover {
386
+ box-shadow: $shadow-md;
387
+ transform: scale(1.01);
388
+ }
389
+ }
390
+
391
+ /* Image captions */
392
+ .image-caption {
393
+ text-align: center;
394
+ font-size: $small-font-size;
395
+ color: $dark-gray;
396
+ margin-top: $spacing-xs;
397
+ margin-bottom: $spacing-md;
398
+ font-style: italic;
399
+ }
400
+
401
+ /* Make lists more readable */
402
+ ul, ol {
403
+ padding-left: $spacing-sm;
404
+
405
+ li {
406
+ margin-bottom: $spacing-sm;
407
+ padding-left: $spacing-xs;
408
+
409
+ &::marker {
410
+ color: $secondary-color;
411
+ }
412
+ }
413
+ }
414
+
415
+ /* Modern blockquote style */
416
+ blockquote {
417
+ margin: $spacing-lg 0;
418
+ position: relative;
419
+
420
+ &::before {
421
+ content: '"';
422
+ position: absolute;
423
+ top: -20px;
424
+ left: -10px;
425
+ font-size: 5rem;
426
+ color: rgba($secondary-color, 0.2);
427
+ font-family: Georgia, serif;
428
+ line-height: 1;
429
+ }
430
+ }
431
+
432
+ /* Table styles for better readability */
433
+ table {
434
+ width: 100%;
435
+ margin-bottom: $spacing-lg;
436
+ border-collapse: separate;
437
+ border-spacing: 0;
438
+ border-radius: $border-radius;
439
+ overflow: hidden;
440
+ box-shadow: $shadow-sm;
441
+
442
+ th, td {
443
+ padding: $spacing-sm;
444
+ border: none;
445
+ border-bottom: 1px solid $border-color;
446
+ }
447
+
448
+ th {
449
+ background: linear-gradient(to right, rgba($primary-color, 0.1), rgba($secondary-color, 0.1));
450
+ color: $secondary-color;
451
+ font-weight: 600;
452
+ text-transform: uppercase;
453
+ font-size: $smaller-font-size;
454
+ letter-spacing: 0.5px;
455
+ }
456
+
457
+ tr:last-child td {
458
+ border-bottom: none;
459
+ }
460
+
461
+ tr {
462
+ transition: $transition-base;
463
+
464
+ &:nth-child(even) {
465
+ background-color: rgba($light-gray, 0.5);
466
+ }
467
+
468
+ &:hover {
469
+ background-color: rgba($secondary-color, 0.05);
470
+ }
471
+ }
472
+ }
473
+
474
+ /* Code blocks */
475
+ pre {
476
+ border-radius: $border-radius;
477
+ margin: $spacing-md 0 $spacing-lg;
478
+ position: relative;
479
+ box-shadow: $shadow-md;
480
+
481
+ &::before {
482
+ content: attr(data-language);
483
+ position: absolute;
484
+ top: 0;
485
+ right: $spacing-sm;
486
+ font-size: $smaller-font-size;
487
+ color: rgba(white, 0.7);
488
+ background-color: rgba(black, 0.3);
489
+ padding: 0 $spacing-xs;
490
+ border-radius: 0 0 $border-radius-sm $border-radius-sm;
491
+ }
492
+ }
493
+
494
+ /* Links with subtle animation */
495
+ a:not(.heading-anchor) {
496
+ color: $primary-color;
497
+ position: relative;
498
+ text-decoration: none;
499
+ font-weight: 500;
500
+ transition: $transition-base;
501
+
502
+ &::after {
503
+ content: '';
504
+ position: absolute;
505
+ width: 100%;
506
+ transform: scaleX(0);
507
+ height: 2px;
508
+ bottom: -2px;
509
+ left: 0;
510
+ background-color: $accent-color;
511
+ transform-origin: bottom right;
512
+ transition: transform 0.3s ease-out;
513
+ }
514
+
515
+ &:hover {
516
+ color: $accent-color;
517
+
518
+ &::after {
519
+ transform: scaleX(1);
520
+ transform-origin: bottom left;
521
+ }
522
+ }
523
+ }
524
+ }
525
+
526
+ /* Table of contents */
527
+ .table-of-contents {
528
+ background: linear-gradient(to bottom right, rgba($light-gray, 0.8), rgba($background-color, 0.8));
529
+ padding: $spacing-md;
530
+ margin-bottom: $spacing-lg;
531
+ border-radius: $border-radius;
532
+ border-left: 4px solid $secondary-color;
533
+ box-shadow: $shadow-sm;
534
+ position: relative;
535
+ backdrop-filter: blur(5px);
536
+ -webkit-backdrop-filter: blur(5px);
537
+
538
+ h2 {
539
+ margin-top: 0;
540
+ margin-bottom: $spacing-sm;
541
+ font-size: 1.2rem;
542
+ color: $secondary-color;
543
+
544
+ &::after {
545
+ width: 2rem;
546
+ }
547
+ }
548
+
549
+ .toc {
550
+ margin-bottom: 0;
551
+ list-style-type: none;
552
+ padding-left: 0;
553
+
554
+ .toc-h2 {
555
+ margin-top: $spacing-xs;
556
+ }
557
+
558
+ .toc-h3 {
559
+ padding-left: $spacing-md;
560
+ font-size: 0.9em;
561
+ }
562
+
563
+ .toc-h4 {
564
+ padding-left: $spacing-lg;
565
+ font-size: 0.8em;
566
+ }
567
+
568
+ .toc-entry {
569
+ margin-bottom: $spacing-xs;
570
+ transition: $transition-base;
571
+
572
+ &:hover {
573
+ transform: translateX(3px);
574
+ }
575
+
576
+ a {
577
+ display: inline-block;
578
+ color: $text-color;
579
+ text-decoration: none;
580
+ transition: $transition-base;
581
+ position: relative;
582
+ padding-left: $spacing-sm;
583
+
584
+ &::before {
585
+ content: '•';
586
+ position: absolute;
587
+ left: 0;
588
+ color: $accent-color;
589
+ }
590
+
591
+ &:hover {
592
+ color: $primary-color;
593
+ }
594
+ }
595
+ }
596
+ }
597
+ }
598
+
599
+ /* Tags */
600
+ .post-tags {
601
+ margin-top: $spacing-lg;
602
+ padding: $spacing-md;
603
+ border-radius: $border-radius;
604
+ border: 1px solid darken($border-color, 10%);
605
+ box-shadow: $shadow-sm;
606
+
607
+ h3 {
608
+ font-size: 1.1rem;
609
+ margin-top: 0;
610
+ margin-bottom: $spacing-sm;
611
+ color: $secondary-color;
612
+ }
613
+
614
+ .tag-list {
615
+ list-style: none;
616
+ margin: 0;
617
+ padding: 0;
618
+ display: flex;
619
+ flex-wrap: wrap;
620
+ gap: $spacing-xs;
621
+
622
+ li {
623
+ margin: 0;
624
+ }
625
+
626
+ .tag {
627
+ display: inline-block;
628
+ background-color: rgba($accent-color, 0.15); /* Slightly increased opacity */
629
+ color: darken($accent-color, 10%); /* Darker text color for better contrast */
630
+ padding: 5px 12px;
631
+ border-radius: $border-radius;
632
+ font-size: $smaller-font-size;
633
+ text-decoration: none;
634
+ transition: $transition-base;
635
+ border: 1px solid rgba($accent-color, 0.3); /* Slightly darker border */
636
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
637
+
638
+ &:hover {
639
+ background-color: $accent-color;
640
+ color: white;
641
+ text-decoration: none;
642
+ transform: translateY(-2px);
643
+ box-shadow: $shadow-sm;
644
+ }
645
+ }
646
+ }
647
+ }
648
+
649
+ /* Post navigation (previous/next) */
650
+ .post-navigation {
651
+ display: flex;
652
+ justify-content: space-between;
653
+ margin-top: $spacing-xl;
654
+ padding-top: $spacing-md;
655
+ gap: $spacing-sm;
656
+
657
+ a {
658
+ flex: 0 0 48%;
659
+ padding: $spacing-md;
660
+ background: rgba($gray, 0.7); /* Darker solid background instead of gradient */
661
+ border-radius: $border-radius;
662
+ text-decoration: none;
663
+ color: $text-color;
664
+ transition: $transition-base;
665
+ border: 1px solid $border-color;
666
+ position: relative;
667
+ overflow: hidden;
668
+ box-shadow: $shadow-sm;
669
+
670
+ .nav-label {
671
+ display: block;
672
+ font-size: $smaller-font-size;
673
+ text-transform: uppercase;
674
+ letter-spacing: 1px;
675
+ color: $secondary-color;
676
+ margin-bottom: $spacing-xs;
677
+ font-weight: 600;
678
+ }
679
+
680
+ .post-title {
681
+ font-weight: 600;
682
+ }
683
+
684
+ &::after {
685
+ content: '';
686
+ position: absolute;
687
+ bottom: 0;
688
+ left: 0;
689
+ width: 100%;
690
+ height: 3px;
691
+ background: linear-gradient(to right, $secondary-color, $accent-color);
692
+ transform: scaleX(0);
693
+ transform-origin: right;
694
+ transition: transform 0.3s ease;
695
+ }
696
+
697
+ &:hover {
698
+ background: rgba($gray, 0.9); /* Even darker on hover */
699
+ transform: translateY(-3px);
700
+ box-shadow: $shadow-md;
701
+
702
+ &::after {
703
+ transform: scaleX(1);
704
+ transform-origin: left;
705
+ }
706
+ }
707
+
708
+ &.prev {
709
+ text-align: left;
710
+
711
+ &::before {
712
+ content: '←';
713
+ display: inline-block;
714
+ margin-right: $spacing-xs;
715
+ transition: $transition-base;
716
+ }
717
+
718
+ &:hover::before {
719
+ transform: translateX(-3px);
720
+ }
721
+ }
722
+
723
+ &.next {
724
+ text-align: right;
725
+
726
+ &::after {
727
+ transform-origin: left;
728
+ }
729
+
730
+ &:hover::after {
731
+ transform: scaleX(1);
732
+ transform-origin: right;
733
+ }
734
+
735
+ &::before {
736
+ content: '→';
737
+ display: inline-block;
738
+ margin-left: $spacing-xs;
739
+ transition: $transition-base;
740
+ }
741
+
742
+ &:hover::before {
743
+ transform: translateX(3px);
744
+ }
745
+ }
746
+
747
+ @media (max-width: $on-palm) {
748
+ font-size: $small-font-size;
749
+ }
750
+ }
751
+
752
+ @media (max-width: $on-palm) {
753
+ flex-direction: column;
754
+
755
+ a {
756
+ flex: 0 0 100%;
757
+ }
758
+ }
759
+ }
760
+
761
+ /* Related posts */
762
+ .related-posts {
763
+ margin-top: $spacing-xl;
764
+ padding-top: $spacing-md;
765
+ border-top: 1px solid $border-color;
766
+
767
+ h3 {
768
+ font-size: 1.5rem;
769
+ margin-bottom: $spacing-md;
770
+ color: $secondary-color;
771
+
772
+ &::after {
773
+ content: '';
774
+ display: block;
775
+ width: 3rem;
776
+ height: 0.2rem;
777
+ background: linear-gradient(to right, $secondary-color, $accent-color);
778
+ margin-top: 0.5rem;
779
+ border-radius: 1rem;
780
+ }
781
+ }
782
+
783
+ .related-posts-grid {
784
+ display: grid;
785
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
786
+ gap: $spacing-md;
787
+
788
+ .related-post {
789
+ background-color: rgba($light-gray, 0.3);
790
+ border-radius: $border-radius;
791
+ overflow: hidden;
792
+ transition: $transition-base;
793
+ border: 1px solid $border-color;
794
+ box-shadow: $shadow-sm;
795
+
796
+ &:hover {
797
+ transform: translateY(-5px);
798
+ box-shadow: $shadow-md;
799
+
800
+ .related-post-image img {
801
+ transform: scale(1.05);
802
+ }
803
+ }
804
+
805
+ .related-post-image {
806
+ overflow: hidden;
807
+
808
+ img {
809
+ width: 100%;
810
+ height: 180px;
811
+ object-fit: cover;
812
+ transition: $transition-base;
813
+ }
814
+ }
815
+
816
+ .related-post-content {
817
+ padding: $spacing-sm;
818
+
819
+ .related-post-title {
820
+ font-size: 1.1rem;
821
+ margin-bottom: $spacing-xs;
822
+ font-weight: 600;
823
+
824
+ a {
825
+ color: $text-color;
826
+ text-decoration: none;
827
+
828
+ &:hover {
829
+ color: $primary-color;
830
+ }
831
+ }
832
+ }
833
+
834
+ .related-post-meta {
835
+ font-size: $smaller-font-size;
836
+ color: $dark-gray;
837
+ }
838
+ }
839
+ }
840
+ }
841
+ }
842
+ }
843
+
844
+ /* Post layout with sidebar */
845
+ .post-layout {
846
+ display: grid;
847
+ grid-template-columns: minmax(0, 1fr);
848
+ gap: $spacing-lg;
849
+ position: relative;
850
+
851
+ @media (min-width: 1024px) {
852
+ /* Right sidebar (default) */
853
+ &.sidebar-right {
854
+ grid-template-columns: minmax(0, 1fr) 250px;
855
+
856
+ .post-sidebar {
857
+ order: 2;
858
+ border-left: 2px solid $border-color;
859
+ padding-left: $spacing-md;
860
+ }
861
+
862
+ .post-content-wrapper {
863
+ order: 1;
864
+ padding-right: $spacing-md;
865
+ }
866
+ }
867
+
868
+ /* Left sidebar */
869
+ &.sidebar-left {
870
+ grid-template-columns: 250px minmax(0, 1fr);
871
+
872
+ .post-sidebar {
873
+ order: 1;
874
+ border-right: 2px solid $border-color;
875
+ padding-right: $spacing-md;
876
+ }
877
+
878
+ .post-content-wrapper {
879
+ order: 2;
880
+ padding-left: $spacing-md;
881
+ }
882
+ }
883
+ }
884
+
885
+ @media (min-width: 1200px) {
886
+ &.sidebar-right {
887
+ grid-template-columns: minmax(0, 1fr) 300px;
888
+ }
889
+
890
+ &.sidebar-left {
891
+ grid-template-columns: 300px minmax(0, 1fr);
892
+ }
893
+ }
894
+
895
+ /* Floating sidebar with TOC */
896
+ .post-sidebar {
897
+ display: none;
898
+
899
+ @media (min-width: 1024px) {
900
+ display: block;
901
+ position: relative;
902
+ }
903
+
904
+ .floating-toc {
905
+ position: sticky;
906
+ top: 100px;
907
+ background-color: transparent;
908
+ padding: $spacing-md 0;
909
+ max-height: calc(100vh - 150px);
910
+ overflow-y: auto;
911
+
912
+ /* Clean scrollbar styling */
913
+ &::-webkit-scrollbar {
914
+ width: 4px;
915
+ height: 4px;
916
+ }
917
+
918
+ &::-webkit-scrollbar-track {
919
+ background: transparent;
920
+ }
921
+
922
+ &::-webkit-scrollbar-thumb {
923
+ background: rgba($primary-color, 0.2);
924
+ border-radius: 4px;
925
+ transition: background 0.3s ease;
926
+
927
+ &:hover {
928
+ background: rgba($primary-color, 0.4);
929
+ }
930
+ }
931
+
932
+ /* Firefox scrollbar styling */
933
+ scrollbar-width: thin;
934
+ scrollbar-color: rgba($primary-color, 0.2) transparent;
935
+
936
+ /* Elegant heading style */
937
+ h2 {
938
+ margin-top: 0;
939
+ margin-bottom: $spacing-md;
940
+ font-size: 0.9rem;
941
+ color: $dark-gray;
942
+ text-transform: uppercase;
943
+ letter-spacing: 1px;
944
+ font-weight: 500;
945
+
946
+ &::after {
947
+ display: none;
948
+ }
949
+ }
950
+
951
+ .toc {
952
+ margin: 0;
953
+ padding: 0;
954
+ list-style-type: none;
955
+
956
+ a {
957
+ display: block;
958
+ padding: 6px 0;
959
+ color: $text-color;
960
+ text-decoration: none;
961
+ font-size: 0.9rem;
962
+ position: relative;
963
+ transition: all 0.2s ease;
964
+ margin-bottom: 2px;
965
+ overflow: hidden;
966
+ text-overflow: ellipsis;
967
+ white-space: nowrap;
968
+
969
+ &:hover {
970
+ color: $primary-color;
971
+ }
972
+
973
+ &.active {
974
+ color: $primary-color;
975
+ font-weight: 500;
976
+ }
977
+ }
978
+
979
+ .toc-h2 {
980
+ margin-bottom: 10px;
981
+
982
+ a {
983
+ font-weight: 500;
984
+ position: relative;
985
+
986
+ &::before {
987
+ content: "";
988
+ position: absolute;
989
+ left: -15px;
990
+ top: 50%;
991
+ width: 8px;
992
+ height: 1px;
993
+ background-color: $dark-gray;
994
+ transition: all 0.2s ease;
995
+ }
996
+
997
+ &:hover::before, &.active::before {
998
+ background-color: $primary-color;
999
+ width: 12px;
1000
+ }
1001
+ }
1002
+ }
1003
+
1004
+ .toc-h3 {
1005
+ margin-left: 8px;
1006
+ margin-bottom: 6px;
1007
+
1008
+ a {
1009
+ font-size: 0.85rem;
1010
+ color: $dark-gray;
1011
+ padding: 4px 0;
1012
+ }
1013
+ }
1014
+
1015
+ .toc-h4 {
1016
+ margin-left: 16px;
1017
+
1018
+ a {
1019
+ font-size: 0.8rem;
1020
+ color: lighten($dark-gray, 15%);
1021
+ padding: 3px 0;
1022
+ }
1023
+ }
1024
+ }
1025
+ }
1026
+ }
1027
+
1028
+ /* Mobile TOC (visible only on small screens) */
1029
+ .table-of-contents {
1030
+ @media (min-width: 1024px) {
1031
+ display: none;
1032
+ }
1033
+ }
1034
+
1035
+ /* Main content area */
1036
+ .post-content-wrapper {
1037
+ min-width: 0; /* Ensure grid item can shrink below min-content width */
1038
+ }
1039
+ }