jekyll-project-stack-portfolio 0.1.2

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 (57) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +121 -0
  4. data/_includes/components/sidebar/cd.svg +55 -0
  5. data/_includes/components/sidebar/footer.html +49 -0
  6. data/_includes/components/sidebar/menu_icon.svg +11 -0
  7. data/_includes/components/sidebar/noteback.png +0 -0
  8. data/_includes/components/sidebar/notebook.svg +38 -0
  9. data/_includes/components/sidebar/project-stack.html +14 -0
  10. data/_includes/components/sidebar/shelf.html +5 -0
  11. data/_includes/components/sidebar/sidebar.html +83 -0
  12. data/_includes/components/sidebar/tape.svg +30 -0
  13. data/_includes/components/sidebar/theme_toggle_icon.svg +14 -0
  14. data/_includes/content-top.html +0 -0
  15. data/_includes/footer-right.html +0 -0
  16. data/_includes/page_hero.html +0 -0
  17. data/_layouts/default.html +33 -0
  18. data/_layouts/page.html +21 -0
  19. data/_layouts/project.html +19 -0
  20. data/_plugins/stack_row.rb +134 -0
  21. data/_sass/_base.scss +152 -0
  22. data/_sass/_layout.scss +746 -0
  23. data/_sass/_stack-presets.custom.scss +38 -0
  24. data/_sass/_stack-presets.scss +30 -0
  25. data/_sass/_variables.scss +146 -0
  26. data/assets/css/main.scss +7 -0
  27. data/assets/project_media/big-texture/death.jpg +0 -0
  28. data/assets/project_media/big-texture/gallery1/6e45aa_2d63c32a00ed4ab49590e74545dfe0bd~mv2 (1).jpg +0 -0
  29. data/assets/project_media/big-texture/gallery1/6e45aa_3ce67d3715f6488ca748d87d8b973281~mv2 (1).jpg +0 -0
  30. data/assets/project_media/big-texture/gallery1/6e45aa_5fd34f6dae054cf384c34a462df487b6~mv2 (1).jpg +0 -0
  31. data/assets/project_media/big-texture/gallery1/6e45aa_6b21e564fc7e4130b320f7cebc97590f~mv2 (1).jpg +0 -0
  32. data/assets/project_media/big-texture/gallery1/6e45aa_7a23e2fb6bc8469382f7415958f4b2ff~mv2 (1).jpg +0 -0
  33. data/assets/project_media/big-texture/gallery2/6e45aa_182bb86e17d14a02b13b09c065698ad5~mv2 (1).jpg +0 -0
  34. data/assets/project_media/big-texture/gallery2/6e45aa_29d1730d24804e4ea0cba6174da2ff41~mv2 (1).jpg +0 -0
  35. data/assets/project_media/big-texture/gallery2/6e45aa_46c6f5f1ec3747fa80fe0ed6fc44e593~mv2 (1).jpg +0 -0
  36. data/assets/project_media/big-texture/gallery2/6e45aa_49faf78a26424cd598df86ed195be94e~mv2 (1).jpg +0 -0
  37. data/assets/project_media/big-texture/gallery2/6e45aa_54222db8edf44b07a2fd7d02bd562620~mv2 (1).jpg +0 -0
  38. data/assets/project_media/big-texture/gallery2/6e45aa_54ebf8bc0e404ac1a7a092752d6450a3~mv2 (1).jpg +0 -0
  39. data/assets/project_media/big-texture/gallery2/6e45aa_69a17c7f86fa4466a014d60023a33e84~mv2 (1).jpg +0 -0
  40. data/assets/project_media/big-texture/gallery2/6e45aa_a09cce390fb2418a94321c6a08a0ab8d~mv2 (1).jpg +0 -0
  41. data/assets/project_media/big-texture/gallery2/6e45aa_a6570c26358d4589adda437790eeb13d~mv2 (1).jpg +0 -0
  42. data/assets/project_media/big-texture/gallery2/6e45aa_cd25051953bf4336af52073532315d2f~mv2 (1).jpg +0 -0
  43. data/assets/project_media/big-texture/gallery2/6e45aa_eea363e1a8204dbabdf409d04aeaeab4~mv2 (1).jpg +0 -0
  44. data/assets/project_media/big-texture/gallery2/6e45aa_f98381967c8943d7a78018deadc5f6f4~mv2 (1).jpg +0 -0
  45. data/assets/project_media/big-texture/gallery2/6e45aa_ff278e4dbe5749aab8c44ee3a089e466~mv2 (1).jpg +0 -0
  46. data/assets/project_media/updated-albums/hero_vid.mp4 +0 -0
  47. data/assets/project_media/zombie-film/image.png +0 -0
  48. data/assets/project_media/zombie-film/script.fountain +26 -0
  49. data/assets/site_media/darkwall.jpg +0 -0
  50. data/assets/site_media/favicon.png +0 -0
  51. data/assets/site_media/lightwall.png +0 -0
  52. data/assets/site_media/noteback.png +0 -0
  53. data/assets/site_media/play_vid.mp4 +0 -0
  54. data/assets/site_media/shelf.png +0 -0
  55. data/lib/jekyll-project-stack-portfolio.rb +7 -0
  56. data/lib/project-stack-portfolio/version.rb +5 -0
  57. metadata +155 -0
@@ -0,0 +1,746 @@
1
+ @use "variables" as *;
2
+
3
+ // ===========================
4
+ // LAYOUT STYLES
5
+ // ===========================
6
+
7
+ // ── Site wrapper ─────────────────────────────────────────────
8
+ .site-wrapper {
9
+ position: relative;
10
+ z-index: 1;
11
+ display: flex;
12
+ flex-direction: row;
13
+ min-height: 100vh;
14
+ }
15
+
16
+ // ── sidebar ──────────────────────────────────────────────────────
17
+ .site-sidebar {
18
+ position: sticky;
19
+ left: 0;
20
+ top: 0;
21
+ height: 100vh;
22
+ z-index: 100;
23
+ width: $sidebar-width;
24
+ background-image: var(--bg-wallpaper);
25
+ display: flex;
26
+ flex-direction: column;
27
+ align-items: center;
28
+ overflow: hidden;
29
+ border-right: 4px double $text-secondary;
30
+
31
+ .sidebar-name {
32
+ padding: $spacing-xl;
33
+ flex-grow: 1;
34
+ display: flex;
35
+ justify-content: center;
36
+ align-items: center;
37
+
38
+ a {
39
+ text-decoration: none;
40
+ }
41
+
42
+ h1 {
43
+ color: #191919;
44
+ font-family: $font-mono;
45
+ font-size: $font-size-3xl;
46
+ font-weight: 700;
47
+ letter-spacing: -0.02em;
48
+ padding: $spacing-sm;
49
+ background: #cfcec9;
50
+ border: 4px double black;
51
+ border-radius: $radius-md;
52
+ transform: rotate(3deg);
53
+ }
54
+
55
+ &:hover a {
56
+ color: $text-secondary;
57
+ }
58
+
59
+ .about-pointer {
60
+ cursor: help;
61
+ }
62
+ }
63
+
64
+ .sidebar-header {
65
+ width: 100%;
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: space-between;
69
+ }
70
+
71
+ .sidebar-menu-content {
72
+ width: 100%;
73
+ padding: 0 $spacing-sm;
74
+ display: flex;
75
+ flex-direction: column;
76
+ flex: 1 1 auto;
77
+ min-height: 0;
78
+ overflow-y: visible;
79
+ }
80
+
81
+ .project-stack {
82
+ margin: auto 0 $spacing-2xl;
83
+ padding-bottom: 10px;
84
+ }
85
+
86
+ .project-stack-item-row {
87
+ --stack-row-height: 58px;
88
+ --stack-label-left: 27.7%;
89
+ --stack-label-right: 17.1%;
90
+ --stack-label-top: 10.8%;
91
+ --stack-label-bottom: 10.1%;
92
+ height: var(--stack-row-height);
93
+ display: flex;
94
+ justify-content: center;
95
+
96
+ + .project-stack-item-row {
97
+ margin-top: 1px;
98
+ }
99
+ }
100
+
101
+ .project-stack-item-row--notebook {
102
+ --stack-row-height: 35px;
103
+ --stack-label-left: 7.5%;
104
+ --stack-label-right: 22%;
105
+ --stack-label-top: 13.5%;
106
+ --stack-label-bottom: 20.5%;
107
+ }
108
+
109
+ .project-stack-item-row--cd {
110
+ --stack-row-height: 50px;
111
+ --stack-label-left: 19%;
112
+ --stack-label-right: 14%;
113
+ --stack-label-top: 11%;
114
+ --stack-label-bottom: 9%;
115
+ }
116
+
117
+ .project-stack-item {
118
+ position: relative;
119
+ display: inline-block;
120
+ width: auto;
121
+ max-width: 100%;
122
+ height: 100%;
123
+
124
+ &:hover {
125
+ color: $text-primary;
126
+ }
127
+ }
128
+
129
+ .project-stack-item-art {
130
+ height: 100%;
131
+ width: auto;
132
+
133
+ svg {
134
+ height: 100%;
135
+ width: auto;
136
+ max-width: 100%;
137
+ display: block;
138
+ }
139
+ }
140
+
141
+ .project-stack-item-label {
142
+ position: absolute;
143
+ left: var(--stack-label-left);
144
+ right: var(--stack-label-right);
145
+ top: var(--stack-label-top);
146
+ bottom: var(--stack-label-bottom);
147
+ display: flex;
148
+ align-items: center;
149
+ justify-content: center;
150
+ padding: 0 0.35rem;
151
+ overflow: hidden;
152
+ pointer-events: none;
153
+
154
+ svg {
155
+ width: 100%;
156
+ height: 100%;
157
+ display: block;
158
+ }
159
+
160
+ text {
161
+ fill: #191919;
162
+ font-family: $font-mono;
163
+ }
164
+ }
165
+
166
+ .shelf {
167
+ background-image: url('../site_media/shelf.png');
168
+ height: 40px;
169
+ border-radius: 15px;
170
+ padding: 1px;
171
+ box-shadow: inset -6px -6px 12px hsl(33 56% 18% / 1), inset 6px 6px 12px #eacfae;
172
+ }
173
+
174
+ .brackets {
175
+ display: flex;
176
+ justify-content: space-between;
177
+ }
178
+
179
+ .bracket {
180
+ background: url('../site_media/shelf.png');
181
+ height: 60px;
182
+ width: 30px;
183
+ margin: 0 40px;
184
+ border-radius: 0 0 4px 4px;
185
+ box-shadow: inset -6px -6px 12px hsl(33 56% 18% / 1), inset 6px 6px 12px hsl(33 59% 10% / 1);
186
+ }
187
+
188
+ //---------decoration text --------
189
+ .stack-item-text {
190
+ position: absolute;
191
+ display: flex;
192
+ align-items: center;
193
+ }
194
+
195
+ .stack-item-text::after {
196
+ font-weight: 700;
197
+ }
198
+
199
+ .stack-item-text1--tape,
200
+ .stack-item-text4--tape {
201
+ justify-content: start;
202
+ }
203
+ .stack-item-text2--tape,
204
+ .stack-item-text5--tape {
205
+ justify-content: center;
206
+ }
207
+ .stack-item-text3--tape,
208
+ .stack-item-text6--tape {
209
+ justify-content: end;
210
+ }
211
+
212
+ .stack-item-text1--tape,
213
+ .stack-item-text2--tape,
214
+ .stack-item-text3--tape {
215
+ left: 17%;
216
+ right: 73%;
217
+ top: var(--stack-label-top);
218
+ bottom: var(--stack-label-bottom);
219
+ }
220
+
221
+ .stack-item-text4--tape,
222
+ .stack-item-text5--tape,
223
+ .stack-item-text6--tape {
224
+ left: 83%;
225
+ right: 6.5%;
226
+ top: var(--stack-label-top);
227
+ bottom: var(--stack-label-bottom);
228
+ }
229
+
230
+ .stack-item-text1--tape::after,
231
+ .stack-item-text2--tape::after,
232
+ .stack-item-text3--tape::after,
233
+ .stack-item-text4--tape::after,
234
+ .stack-item-text5--tape::after,
235
+ .stack-item-text6--tape::after {
236
+ writing-mode: sideways-lr;
237
+ }
238
+
239
+ .stack-item-text1--cd,
240
+ .stack-item-text2--cd {
241
+ justify-content: center;
242
+ }
243
+ .stack-item-text1--cd {
244
+ left: 3%;
245
+ right: 81%;
246
+ top: var(--stack-label-top);
247
+ bottom: var(--stack-label-bottom);
248
+ }
249
+
250
+ .stack-item-text2--cd {
251
+ left: 86%;
252
+ right: 3%;
253
+ top: var(--stack-label-top);
254
+ bottom: var(--stack-label-bottom);
255
+ }
256
+
257
+
258
+ .stack-item-text1::after {
259
+ content: var(--text1);
260
+ font-size: var(--text1_size);
261
+ color: var(--text1_color);
262
+ }
263
+ .stack-item-text2::after {
264
+ content: var(--text2);
265
+ font-size: var(--text2_size);
266
+ color: var(--text2_color);
267
+ }
268
+ .stack-item-text3::after {
269
+ content: var(--text3);
270
+ font-size: var(--text3_size);
271
+ color: var(--text3_color);
272
+ }
273
+ .stack-item-text4::after {
274
+ content: var(--text4);
275
+ font-size: var(--text4_size);
276
+ color: var(--text4_color);
277
+ }
278
+ .stack-item-text5::after {
279
+ content: var(--text5);
280
+ font-size: var(--text5_size);
281
+ color: var(--text5_color);
282
+ }
283
+ .stack-item-text6::after {
284
+ content: var(--text6);
285
+ font-size: var(--text6_size);
286
+ color: var(--text6_color);
287
+ }
288
+
289
+
290
+
291
+ .sidebar-menu-toggle {
292
+ display: none;
293
+ width: 2.5rem;
294
+ height: 2.5rem;
295
+ margin-right: $spacing-xl;
296
+ border: 1px solid $border-color;
297
+ border-radius: $radius-sm;
298
+ background: transparent;
299
+ color: $text-primary;
300
+ cursor: pointer;
301
+ align-items: center;
302
+ justify-content: center;
303
+
304
+ svg {
305
+ width: 100%;
306
+ height: 100%;
307
+ padding: 0.5rem;
308
+ }
309
+
310
+ .menu-line {
311
+ stroke: currentColor;
312
+ stroke-width: 1.8;
313
+ stroke-linecap: round;
314
+ }
315
+
316
+ .menu-icon-hamburger,
317
+ .menu-icon-close {
318
+ transition: opacity $transition-fast;
319
+ }
320
+
321
+ .menu-icon-hamburger {
322
+ opacity: 1;
323
+ }
324
+
325
+ .menu-icon-close {
326
+ opacity: 0;
327
+ }
328
+
329
+ &:hover {
330
+ border-color: $accent-teal;
331
+ background: $bg-card;
332
+ }
333
+ }
334
+
335
+ .sidebar-footer {
336
+ margin-top: auto;
337
+ width: 100%;
338
+ height: 32px;
339
+ padding: $spacing-md;
340
+ position: relative;
341
+ display: flex;
342
+ align-items: center;
343
+ gap: $spacing-sm;
344
+ }
345
+ }
346
+
347
+ // ── Main content ─────────────────────────────────────────────
348
+ .site-main {
349
+ flex: 1;
350
+ width: auto;
351
+ max-width: $max-width;
352
+ margin: 0 auto;
353
+ }
354
+
355
+ .article {
356
+ margin: $spacing-xl;
357
+ }
358
+
359
+ // ===========================
360
+ // COMPONENTS
361
+ // ===========================
362
+
363
+ // ── Hero ─────────────────────────────────────────────────────
364
+ .hero {
365
+ padding: $spacing-3xl 0 $spacing-2xl;
366
+
367
+ }
368
+
369
+ // ── Buttons ──────────────────────────────────────────────────
370
+ .btn {
371
+ display: inline-flex;
372
+ align-items: center;
373
+ justify-content: center;
374
+ gap: $spacing-xs;
375
+ padding: $spacing-xs $spacing-sm;
376
+ border: 1px solid transparent;
377
+ border-radius: $radius-sm;
378
+ background: transparent;
379
+ color: $text-primary;
380
+ font-family: $font-mono;
381
+ font-size: $font-size-sm;
382
+ font-weight: 600;
383
+ line-height: 1;
384
+ letter-spacing: 0.04em;
385
+ cursor: pointer;
386
+ transition: background-color $transition-fast, border-color $transition-fast, color $transition-fast, transform $transition-fast;
387
+ text-decoration: none;
388
+
389
+ &:hover {
390
+ background: $bg-card;
391
+ }
392
+
393
+ &:focus-visible {
394
+ outline: 1px solid $accent-teal;
395
+ outline-offset: 1px;
396
+ }
397
+
398
+ &.btn-primary {
399
+ background: $accent-purple;
400
+ color: $bg-deep;
401
+ border-color: $accent-purple;
402
+
403
+ &:hover {
404
+ background: $accent-purple-hover;
405
+ color: $bg-deep;
406
+ box-shadow: $glow-purple;
407
+ transform: translateY(-2px);
408
+ }
409
+ }
410
+
411
+ &.btn-outline {
412
+ background: transparent;
413
+ color: $accent-teal;
414
+ border-color: $accent-teal;
415
+
416
+ &:hover {
417
+ background: $accent-teal-soft;
418
+ color: $accent-teal;
419
+ box-shadow: $glow-teal;
420
+ transform: translateY(-2px);
421
+ }
422
+ }
423
+ }
424
+
425
+ // ── Cards ────────────────────────────────────────────────────
426
+ .card {
427
+ background: $bg-card;
428
+ border: 1px solid $border-color;
429
+ box-shadow: $shadow-card;
430
+ border-radius: $radius-lg;
431
+ padding: $spacing-xl;
432
+ transition: border-color $transition-base, box-shadow $transition-base, transform $transition-base;
433
+
434
+ &:hover {
435
+ border-color: $accent-purple-soft;
436
+ box-shadow: $glow-purple, $shadow-card;
437
+ transform: translateY(-3px);
438
+ }
439
+
440
+ .card-title {
441
+ font-size: $font-size-lg;
442
+ font-weight: 700;
443
+ color: $text-primary;
444
+ margin-bottom: $spacing-sm;
445
+ }
446
+
447
+ .card-meta {
448
+ font-family: $font-mono;
449
+ font-size: $font-size-sm;
450
+ color: $text-muted;
451
+ margin-bottom: $spacing-md;
452
+ }
453
+
454
+ .card-desc {
455
+ font-size: $font-size-base;
456
+ color: $text-secondary;
457
+ margin-bottom: $spacing-md;
458
+ }
459
+
460
+ .card-tags {
461
+ display: flex;
462
+ flex-wrap: wrap;
463
+ gap: $spacing-xs;
464
+ margin-top: $spacing-md;
465
+ }
466
+ }
467
+
468
+ // ── Section headings ─────────────────────────────────────────
469
+ .section-label {
470
+ font-family: $font-mono;
471
+ font-size: $font-size-sm;
472
+ color: $accent-teal;
473
+ letter-spacing: 0.15em;
474
+ text-transform: uppercase;
475
+ margin-bottom: $spacing-sm;
476
+ }
477
+
478
+ .section-title {
479
+ font-size: $font-size-2xl;
480
+ font-weight: 700;
481
+ margin-bottom: $spacing-2xl;
482
+ color: $text-primary;
483
+
484
+ &::after {
485
+ content: "";
486
+ display: block;
487
+ width: 48px;
488
+ height: 3px;
489
+ background: linear-gradient(90deg, $accent-purple, $accent-teal);
490
+ border-radius: $radius-pill;
491
+ margin-top: $spacing-sm;
492
+ }
493
+ }
494
+
495
+ // ── Grid ─────────────────────────────────────────────────────
496
+ .grid-2 {
497
+ display: grid;
498
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
499
+ gap: $spacing-xl;
500
+ }
501
+
502
+ .grid-3 {
503
+ display: grid;
504
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
505
+ gap: $spacing-xl;
506
+ }
507
+
508
+ // ── Page content ──────────────────────────────────────
509
+ .page-header {
510
+ display: flex;
511
+ justify-content: space-between;
512
+
513
+ .header-text-wrapper {
514
+ flex: 1;
515
+ min-width: 280px;
516
+ }
517
+
518
+ .header-image-wrapper {
519
+ width: 50%;
520
+ height: 300px;
521
+ border-radius: $radius-lg;
522
+ overflow: hidden;
523
+ border: 1px solid $border-color;
524
+
525
+ img {
526
+ width: 100%;
527
+ height: 100%;
528
+ object-fit: cover;
529
+ object-position: 50% 25%;
530
+ }
531
+ }
532
+ }
533
+
534
+ .page-content {
535
+ h2 {
536
+ margin-top: $spacing-2xl;
537
+ padding-top: $spacing-lg;
538
+ border-top: 1px solid $border-color;
539
+ }
540
+
541
+ h3 { margin-top: $spacing-xl; }
542
+
543
+ a {
544
+ text-decoration: underline;
545
+ text-underline-offset: 3px;
546
+ text-decoration-color: $accent-teal-soft;
547
+
548
+ &:hover {
549
+ text-decoration-color: $accent-teal;
550
+ }
551
+ }
552
+ }
553
+
554
+ // ── Theme toggle ────────────────────────────────────────────
555
+ .theme-toggle {
556
+ gap: $spacing-xs;
557
+
558
+ &:hover {
559
+ background: unset;
560
+ }
561
+ }
562
+
563
+ .theme-pill {
564
+ width: 2.5rem;
565
+ height: 1.25rem;
566
+ display: inline-flex;
567
+
568
+ svg {
569
+ width: 100%;
570
+ height: 100%;
571
+ overflow: visible;
572
+ }
573
+ }
574
+
575
+ .theme-pill-track {
576
+ fill: $bg-card;
577
+ stroke: $border-color;
578
+ }
579
+
580
+ .theme-pill-sun,
581
+ .theme-pill-moon {
582
+ stroke: $text-muted;
583
+ }
584
+
585
+ .theme-pill-thumb {
586
+ fill: $accent-yellow;
587
+ transition: transform $transition-base, fill $transition-base;
588
+ }
589
+
590
+ .theme-toggle[data-resolved-theme="dark"] {
591
+ .theme-pill-thumb {
592
+ transform: translateX(32px);
593
+ fill: $accent-purple;
594
+ }
595
+
596
+ .theme-pill-moon {
597
+ stroke: $text-primary;
598
+ }
599
+ }
600
+
601
+ .theme-toggle[data-resolved-theme="light"] {
602
+ .theme-pill-sun {
603
+ stroke: $text-primary;
604
+ }
605
+ }
606
+
607
+ .sidebar-footer-left {
608
+ flex: 0 0 4.5rem;
609
+ display: flex;
610
+ justify-content: center;
611
+ }
612
+
613
+ .sidebar-footer-right {
614
+ flex: 1 1 auto;
615
+ min-width: 0;
616
+ display: flex;
617
+ align-items: center;
618
+ justify-content: center;
619
+ height: 100%;
620
+ position: relative;
621
+ }
622
+
623
+ // __ Video ___________________________________________________
624
+ .background-video {
625
+ width: 100%;
626
+ height: auto;
627
+ }
628
+
629
+ .foreground-video {
630
+ width: 100%;
631
+ height: auto;
632
+ display: block;
633
+ border: 1px solid $border-color;
634
+ border-radius: $radius-md;
635
+ background: $bg-card;
636
+ box-shadow: $shadow-card;
637
+ }
638
+
639
+ // ── Divider ornament ─────────────────────────────────────────
640
+ .ornament {
641
+ text-align: center;
642
+ color: $text-muted;
643
+ font-size: 1.25rem;
644
+ margin: $spacing-2xl 0;
645
+ letter-spacing: 0.5em;
646
+ user-select: none;
647
+ }
648
+
649
+ // ── Responsive ───────────────────────────────────────────────
650
+
651
+ @media (max-width: 800px) {
652
+ .site-wrapper {
653
+ display: block;
654
+ min-height: auto;
655
+ }
656
+
657
+ .site-sidebar {
658
+ position: fixed;
659
+ top: 0;
660
+ left: 0;
661
+ right: 0;
662
+ z-index: 320;
663
+ width: 100%;
664
+ height: 8rem;
665
+ min-height: 0;
666
+ align-items: stretch;
667
+ border-bottom: 1px solid $border-color;
668
+ backdrop-filter: blur(8px);
669
+ transition: height $transition-slow;
670
+ overflow: hidden;
671
+ border-right: unset;
672
+
673
+ .sidebar-header {
674
+ flex: 0 0 auto;
675
+ }
676
+
677
+ .sidebar-name {
678
+ padding: $spacing-md $spacing-md 0;
679
+ }
680
+
681
+ .sidebar-menu-toggle {
682
+ display: inline-flex;
683
+ }
684
+
685
+ .sidebar-menu-content {
686
+ opacity: 0;
687
+ pointer-events: none;
688
+ transition: opacity $transition-fast;
689
+ }
690
+ }
691
+
692
+ .site-sidebar[data-menu-open="true"] {
693
+ height: 100dvh;
694
+ }
695
+
696
+ .site-sidebar[data-menu-open="true"] .sidebar-menu-content {
697
+ opacity: 1;
698
+ pointer-events: auto;
699
+ }
700
+
701
+ .site-sidebar[data-menu-open="true"] .menu-icon-hamburger {
702
+ opacity: 0;
703
+ }
704
+
705
+ .site-sidebar[data-menu-open="true"] .menu-icon-close {
706
+ opacity: 1;
707
+ }
708
+
709
+ .site-sidebar[data-menu-open="false"] .theme-toggle {
710
+ display: none;
711
+ }
712
+
713
+ .site-main {
714
+ width: 100%;
715
+ padding-top: calc(7rem + #{$spacing-xl});
716
+ }
717
+
718
+ body.sidebar-menu-open {
719
+ overflow: hidden;
720
+ }
721
+ }
722
+
723
+ // ── Panels ────────────────────────────────────────────────────
724
+ .panel {
725
+ margin-bottom: $spacing-2xl;
726
+
727
+ h3 {
728
+ margin-top: $spacing-sm;
729
+ }
730
+ }
731
+
732
+ .panel-images {
733
+ display: flex;
734
+ gap: $spacing-lg;
735
+ margin-top: $spacing-lg;
736
+ width: 100%;
737
+ overflow-x: scroll;
738
+
739
+ img {
740
+ border-radius: $radius-md;
741
+ border: 1px solid $border-color;
742
+ box-shadow: $shadow-card;
743
+ transition: transform $transition-base, box-shadow $transition-base;
744
+ height: 400px;
745
+ }
746
+ }