hd-garden 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/.agents/skills/garden-interactive-chart/SKILL.md +84 -0
  2. package/.agents/skills/garden-interactive-chart/references/shell.html +49 -0
  3. package/.agents/skills/garden-interactive-chart/references/style.md +61 -0
  4. package/.env.example +56 -0
  5. package/.openai/hosting.json +5 -0
  6. package/LICENSE +21 -0
  7. package/Makefile +48 -0
  8. package/README.md +72 -0
  9. package/app/about/page.tsx +60 -0
  10. package/app/admin/page.tsx +117 -0
  11. package/app/api/admin/distribution/route.ts +120 -0
  12. package/app/api/admin/posts/pin/route.ts +32 -0
  13. package/app/api/admin/thoughts/[id]/route.ts +44 -0
  14. package/app/api/admin/thoughts/route.ts +120 -0
  15. package/app/api/admin/uploads/route.ts +20 -0
  16. package/app/api/auth/github/callback/route.ts +136 -0
  17. package/app/api/auth/github/route.ts +29 -0
  18. package/app/api/auth/logout/route.ts +13 -0
  19. package/app/blog/[...path]/page.tsx +135 -0
  20. package/app/blog/page.tsx +139 -0
  21. package/app/chatgpt-auth.ts +86 -0
  22. package/app/columns/[column]/[...path]/page.tsx +160 -0
  23. package/app/columns/page.tsx +68 -0
  24. package/app/components/AdminDashboard.tsx +410 -0
  25. package/app/components/Comments.tsx +55 -0
  26. package/app/components/ContentEmptyState.tsx +51 -0
  27. package/app/components/ExternalEmbed.tsx +127 -0
  28. package/app/components/GardenAdminGuide.tsx +116 -0
  29. package/app/components/GardenContentGuide.tsx +241 -0
  30. package/app/components/GardenMediaGuide.tsx +81 -0
  31. package/app/components/GiscusComments.tsx +71 -0
  32. package/app/components/GithubLiveOverview.tsx +118 -0
  33. package/app/components/GithubProfile.tsx +326 -0
  34. package/app/components/MarkdownArticle.tsx +144 -0
  35. package/app/components/MermaidDiagram.tsx +117 -0
  36. package/app/components/PageIntro.tsx +32 -0
  37. package/app/components/SiteChrome.tsx +18 -0
  38. package/app/components/SiteFooter.tsx +29 -0
  39. package/app/components/SiteHeader.tsx +420 -0
  40. package/app/components/TableOfContents.tsx +433 -0
  41. package/app/components/ThoughtCard.tsx +242 -0
  42. package/app/components/Webmentions.tsx +194 -0
  43. package/app/components/WidgetChart.tsx +222 -0
  44. package/app/garden/page.tsx +284 -0
  45. package/app/garden-modules.d.ts +62 -0
  46. package/app/globals.css +4454 -0
  47. package/app/layout.tsx +102 -0
  48. package/app/lib/admin-auth.ts +134 -0
  49. package/app/lib/content.ts +112 -0
  50. package/app/lib/fallback-site-config.ts +56 -0
  51. package/app/lib/generated-content.ts +380 -0
  52. package/app/lib/github-content.ts +244 -0
  53. package/app/lib/markdown-plugins.ts +13 -0
  54. package/app/lib/oss.ts +100 -0
  55. package/app/lib/public-thoughts.ts +9 -0
  56. package/app/lib/repository-path.mjs +32 -0
  57. package/app/lib/site.ts +51 -0
  58. package/app/page.tsx +119 -0
  59. package/app/robots.ts +15 -0
  60. package/app/rss.xml/route.ts +84 -0
  61. package/app/site.config.ts +35 -0
  62. package/app/sitemap.ts +46 -0
  63. package/app/thoughts/[slug]/page.tsx +79 -0
  64. package/app/thoughts/page.tsx +33 -0
  65. package/app/yaml.d.ts +4 -0
  66. package/bin/garden.mjs +348 -0
  67. package/build/sites-vite-plugin.ts +39 -0
  68. package/eslint.config.mjs +20 -0
  69. package/next.config.ts +13 -0
  70. package/package.json +112 -0
  71. package/postcss.config.mjs +7 -0
  72. package/public/favicon.svg +4 -0
  73. package/public/images/garden/admin-studio.png +0 -0
  74. package/public/og.png +0 -0
  75. package/scripts/build-content.mjs +582 -0
  76. package/scripts/fetch-embed.mjs +189 -0
  77. package/scripts/garden-paths.mjs +21 -0
  78. package/scripts/new-post.mjs +73 -0
  79. package/scripts/prepare-pages-output.mjs +182 -0
  80. package/scripts/send-webmentions.mjs +27 -0
  81. package/site.config.yaml +48 -0
  82. package/templates/site/Makefile +46 -0
  83. package/templates/site/README.md +13 -0
  84. package/templates/site/content/columns.yaml +1 -0
  85. package/templates/site/content/posts/.gitkeep +0 -0
  86. package/templates/site/content/thoughts/.gitkeep +0 -0
  87. package/templates/site/package.json +19 -0
  88. package/templates/site/site.config.yaml +46 -0
  89. package/tsconfig.json +34 -0
  90. package/vite.config.ts +130 -0
  91. package/worker/index.ts +53 -0
@@ -0,0 +1,4454 @@
1
+ @import "tailwindcss";
2
+
3
+ :root {
4
+ --paper: #f8f8f6;
5
+ --paper-deep: #eeeeeb;
6
+ --card: #ffffff;
7
+ --ink: #202124;
8
+ --ink-soft: #34383d;
9
+ --muted: #65707d;
10
+ --faint: #a1a6ad;
11
+ --line: #deded9;
12
+ --line-strong: #c9c9c2;
13
+ --accent: #d82d48;
14
+ --accent-soft: #f9e8eb;
15
+ --selection: #f3c9d1;
16
+ --font-mono: var(--font-geist-mono), "SFMono-Regular", Consolas,
17
+ "Liberation Mono", "Noto Sans Mono CJK SC", monospace;
18
+ --content: 700px;
19
+ --wide: 1040px;
20
+ }
21
+
22
+ :root[data-theme="dark"] {
23
+ --paper: #171819;
24
+ --paper-deep: #202224;
25
+ --card: #1e2022;
26
+ --ink: #ededeb;
27
+ --ink-soft: #d8d8d4;
28
+ --muted: #a6adb6;
29
+ --faint: #747b84;
30
+ --line: #35383b;
31
+ --line-strong: #4b4f54;
32
+ --accent: #ff5d76;
33
+ --accent-soft: #3b242a;
34
+ --selection: #68333e;
35
+ }
36
+
37
+ * {
38
+ box-sizing: border-box;
39
+ }
40
+
41
+ html {
42
+ scroll-behavior: auto;
43
+ scroll-padding-top: 110px;
44
+ }
45
+
46
+ body {
47
+ margin: 0;
48
+ background: var(--paper);
49
+ color: var(--ink);
50
+ font-family: var(--font-mono);
51
+ font-size: 15px;
52
+ line-height: 1.72;
53
+ text-rendering: optimizeLegibility;
54
+ -webkit-font-smoothing: antialiased;
55
+ }
56
+
57
+ body::selection,
58
+ body *::selection {
59
+ background: var(--selection);
60
+ }
61
+
62
+ a {
63
+ color: inherit;
64
+ text-decoration: none;
65
+ }
66
+
67
+ button,
68
+ input,
69
+ textarea {
70
+ color: inherit;
71
+ font: inherit;
72
+ }
73
+
74
+ button {
75
+ cursor: pointer;
76
+ }
77
+
78
+ .skip-link {
79
+ position: fixed;
80
+ left: 16px;
81
+ top: -48px;
82
+ z-index: 100;
83
+ background: var(--ink);
84
+ color: var(--paper);
85
+ padding: 8px 12px;
86
+ }
87
+
88
+ .skip-link:focus {
89
+ top: 12px;
90
+ }
91
+
92
+ .sr-only {
93
+ position: absolute;
94
+ width: 1px;
95
+ height: 1px;
96
+ padding: 0;
97
+ margin: -1px;
98
+ overflow: hidden;
99
+ clip: rect(0, 0, 0, 0);
100
+ white-space: nowrap;
101
+ border: 0;
102
+ }
103
+
104
+ .site-header {
105
+ position: relative;
106
+ z-index: 40;
107
+ border-bottom: 1px solid transparent;
108
+ }
109
+
110
+ .header-inner {
111
+ width: min(var(--wide), calc(100% - 48px));
112
+ min-height: 116px;
113
+ margin: 0 auto;
114
+ display: grid;
115
+ grid-template-columns: 1fr auto auto;
116
+ align-items: center;
117
+ gap: 34px;
118
+ }
119
+
120
+ .brand {
121
+ display: inline-flex;
122
+ align-items: center;
123
+ gap: 13px;
124
+ width: max-content;
125
+ }
126
+
127
+ .brand-mark {
128
+ width: 43px;
129
+ height: 50px;
130
+ display: grid;
131
+ place-items: center;
132
+ color: var(--faint);
133
+ border-right: 1px solid var(--line-strong);
134
+ }
135
+
136
+ .brand strong {
137
+ display: block;
138
+ font-size: 20px;
139
+ line-height: 1.2;
140
+ letter-spacing: -0.03em;
141
+ }
142
+
143
+ .brand small {
144
+ display: block;
145
+ margin-top: 5px;
146
+ color: var(--muted);
147
+ font-size: 10px;
148
+ letter-spacing: 0.07em;
149
+ }
150
+
151
+ .main-nav {
152
+ display: flex;
153
+ align-items: center;
154
+ }
155
+
156
+ .main-nav a {
157
+ position: relative;
158
+ padding: 7px 13px;
159
+ color: var(--accent);
160
+ font-size: 13px;
161
+ font-weight: 650;
162
+ }
163
+
164
+ .main-nav a + a::before {
165
+ content: "";
166
+ position: absolute;
167
+ left: 0;
168
+ top: 10px;
169
+ width: 1px;
170
+ height: 16px;
171
+ background: var(--line-strong);
172
+ }
173
+
174
+ .main-nav a:hover,
175
+ .main-nav a:focus-visible {
176
+ text-decoration: underline;
177
+ text-underline-offset: 4px;
178
+ }
179
+
180
+ .header-actions {
181
+ display: flex;
182
+ align-items: center;
183
+ gap: 5px;
184
+ }
185
+
186
+ .icon-button {
187
+ width: 40px;
188
+ height: 40px;
189
+ padding: 0;
190
+ border: 0;
191
+ background: transparent;
192
+ display: inline-grid;
193
+ place-items: center;
194
+ border-radius: 4px;
195
+ }
196
+
197
+ .icon-button:hover,
198
+ .icon-button:focus-visible {
199
+ background: var(--paper-deep);
200
+ }
201
+
202
+ .search-trigger {
203
+ width: auto;
204
+ display: flex;
205
+ padding: 0 8px;
206
+ gap: 7px;
207
+ }
208
+
209
+ .key-hint {
210
+ color: var(--muted);
211
+ font-size: 10px;
212
+ border: 1px solid var(--line-strong);
213
+ padding: 0 4px;
214
+ border-radius: 3px;
215
+ }
216
+
217
+ .page-shell {
218
+ width: min(var(--wide), calc(100% - 48px));
219
+ margin: 0 auto;
220
+ }
221
+
222
+ .home-page {
223
+ padding: 74px 0 96px;
224
+ }
225
+
226
+ .eyebrow {
227
+ margin: 0 0 22px;
228
+ color: var(--accent);
229
+ font-size: 12px;
230
+ font-weight: 700;
231
+ letter-spacing: 0.09em;
232
+ text-transform: uppercase;
233
+ }
234
+
235
+
236
+ .inline-cta {
237
+ display: inline-flex;
238
+ align-items: center;
239
+ gap: 8px;
240
+ padding-bottom: 3px;
241
+ border-bottom: 1px solid var(--ink);
242
+ }
243
+
244
+ .inline-cta:hover {
245
+ color: var(--accent);
246
+ border-color: var(--accent);
247
+ }
248
+
249
+ .home-section {
250
+ margin-top: 72px;
251
+ }
252
+
253
+ .section-heading {
254
+ min-height: 40px;
255
+ margin-bottom: 21px;
256
+ display: flex;
257
+ align-items: center;
258
+ justify-content: space-between;
259
+ gap: 16px;
260
+ }
261
+
262
+ .section-heading > div {
263
+ display: flex;
264
+ align-items: baseline;
265
+ gap: 13px;
266
+ }
267
+
268
+ .section-heading h2 {
269
+ margin: 0;
270
+ font-size: 22px;
271
+ line-height: 1.2;
272
+ letter-spacing: -0.035em;
273
+ }
274
+
275
+ .section-heading > a {
276
+ color: var(--muted);
277
+ font-size: 11px;
278
+ }
279
+
280
+ .section-heading > a:hover {
281
+ color: var(--accent);
282
+ }
283
+
284
+ .accent-heading h2 {
285
+ color: var(--accent);
286
+ }
287
+
288
+ .accent-heading > svg {
289
+ color: var(--accent);
290
+ }
291
+
292
+ .post-list {
293
+ border-top: 1px solid var(--line);
294
+ }
295
+
296
+ .post-row {
297
+ min-height: 67px;
298
+ display: grid;
299
+ grid-template-columns: 112px 1fr 20px;
300
+ align-items: center;
301
+ gap: 12px;
302
+ border-bottom: 1px solid var(--line);
303
+ transition:
304
+ padding 160ms ease,
305
+ background 160ms ease;
306
+ }
307
+
308
+ .post-row:hover {
309
+ padding: 0 8px;
310
+ background: var(--card);
311
+ }
312
+
313
+ .post-row time {
314
+ color: var(--muted);
315
+ font-size: 11px;
316
+ font-weight: 650;
317
+ }
318
+
319
+ .post-row span {
320
+ min-width: 0;
321
+ }
322
+
323
+ .post-row strong {
324
+ display: block;
325
+ font-size: 14px;
326
+ line-height: 1.4;
327
+ text-decoration: underline;
328
+ text-decoration-color: transparent;
329
+ text-underline-offset: 4px;
330
+ }
331
+
332
+ .post-row:hover strong {
333
+ text-decoration-color: currentColor;
334
+ }
335
+
336
+ .post-row small {
337
+ display: block;
338
+ margin-top: 4px;
339
+ color: var(--muted);
340
+ font-size: 11px;
341
+ overflow: hidden;
342
+ text-overflow: ellipsis;
343
+ white-space: nowrap;
344
+ }
345
+
346
+ .column-card {
347
+ min-height: 205px;
348
+ display: flex;
349
+ align-items: flex-end;
350
+ justify-content: space-between;
351
+ padding: 30px 34px;
352
+ background: var(--ink);
353
+ color: var(--paper);
354
+ border: 1px solid var(--ink);
355
+ }
356
+
357
+ .column-card:hover {
358
+ background: var(--card);
359
+ color: var(--ink);
360
+ }
361
+
362
+ .column-card span {
363
+ color: var(--faint);
364
+ font-size: 11px;
365
+ }
366
+
367
+ .column-card h3 {
368
+ margin: 14px 0 10px;
369
+ font-size: 26px;
370
+ letter-spacing: -0.04em;
371
+ }
372
+
373
+ .column-card p {
374
+ max-width: 470px;
375
+ margin: 0;
376
+ font-size: 12px;
377
+ color: var(--muted);
378
+ }
379
+
380
+ .column-card .column-number {
381
+ color: inherit;
382
+ font-size: 34px;
383
+ font-weight: 700;
384
+ }
385
+
386
+ .page-intro {
387
+ width: 100%;
388
+ padding: 74px 0 54px;
389
+ }
390
+
391
+ .page-intro h1 {
392
+ margin: 0 0 24px;
393
+ font-size: clamp(31px, 4.2vw, 48px);
394
+ line-height: 1.28;
395
+ letter-spacing: -0.05em;
396
+ }
397
+
398
+ .page-intro > p:not(.eyebrow) {
399
+ max-width: 650px;
400
+ margin: 0;
401
+ color: var(--muted);
402
+ line-height: 1.9;
403
+ }
404
+
405
+ .page-intro-actions {
406
+ margin-top: 26px;
407
+ }
408
+
409
+ .garden-page {
410
+ position: relative;
411
+ padding-bottom: 120px;
412
+ }
413
+
414
+ .garden-page-toc {
415
+ position: fixed;
416
+ top: 150px;
417
+ right: max(18px, calc((100vw - var(--wide)) / 2 - 165px));
418
+ z-index: 20;
419
+ width: 145px;
420
+ max-height: calc(100vh - 190px);
421
+ overflow: hidden;
422
+ }
423
+
424
+ .garden-page-toc .toc {
425
+ position: static;
426
+ max-height: calc(100vh - 190px);
427
+ margin: 0;
428
+ }
429
+
430
+ .garden-page-toc .toc-header > p {
431
+ font-size: 11px;
432
+ letter-spacing: 0.08em;
433
+ }
434
+
435
+ .garden-page-toc .toc li {
436
+ margin: 10px 0;
437
+ font-size: 12px;
438
+ line-height: 1.45;
439
+ }
440
+
441
+ .garden-page .page-intro {
442
+ padding-bottom: 64px;
443
+ }
444
+
445
+ .garden-lede {
446
+ max-width: 650px;
447
+ margin: 0;
448
+ color: var(--ink-soft);
449
+ font-size: 16px;
450
+ line-height: 1.85;
451
+ }
452
+
453
+ .garden-actions {
454
+ display: flex;
455
+ align-items: center;
456
+ flex-wrap: wrap;
457
+ gap: 22px;
458
+ margin-top: 26px;
459
+ }
460
+
461
+ .garden-proof-list {
462
+ margin: 44px 0 0;
463
+ padding: 0;
464
+ display: grid;
465
+ grid-template-columns: repeat(3, minmax(0, 1fr));
466
+ border-top: 1px solid var(--line);
467
+ border-bottom: 1px solid var(--line);
468
+ list-style: none;
469
+ }
470
+
471
+ .garden-proof-list li {
472
+ min-height: 64px;
473
+ padding: 14px 18px;
474
+ display: flex;
475
+ align-items: center;
476
+ gap: 13px;
477
+ border-left: 1px solid var(--line);
478
+ color: var(--ink-soft);
479
+ font-size: 12px;
480
+ }
481
+
482
+ .garden-proof-list li:first-child {
483
+ border-left: 0;
484
+ }
485
+
486
+ .garden-proof-list strong {
487
+ color: var(--accent);
488
+ font-size: 10px;
489
+ }
490
+
491
+ .garden-primary-link {
492
+ display: inline-flex;
493
+ align-items: center;
494
+ gap: 8px;
495
+ padding: 10px 14px;
496
+ background: var(--ink);
497
+ color: var(--paper);
498
+ font-size: 13px;
499
+ font-weight: 700;
500
+ }
501
+
502
+ .garden-primary-link:hover,
503
+ .garden-primary-link:focus-visible {
504
+ background: var(--accent);
505
+ }
506
+
507
+ .garden-section-heading {
508
+ display: grid;
509
+ grid-template-columns: minmax(0, 1fr) minmax(0, 0.86fr);
510
+ gap: 72px;
511
+ align-items: end;
512
+ margin-bottom: 38px;
513
+ }
514
+
515
+ .garden-section-heading .eyebrow {
516
+ margin-bottom: 14px;
517
+ }
518
+
519
+ .garden-section-heading h2 {
520
+ margin: 0;
521
+ font-size: clamp(28px, 3.2vw, 39px);
522
+ line-height: 1.3;
523
+ letter-spacing: -0.055em;
524
+ }
525
+
526
+ .garden-section-heading > p {
527
+ margin: 0;
528
+ color: var(--muted);
529
+ font-size: 15px;
530
+ line-height: 1.8;
531
+ }
532
+
533
+ .garden-responsibilities {
534
+ padding: 48px 0 0;
535
+ border-top: 1px solid var(--line-strong);
536
+ scroll-margin-top: 24px;
537
+ }
538
+
539
+ .garden-responsibility-flow {
540
+ display: flex;
541
+ align-items: center;
542
+ justify-content: space-between;
543
+ gap: 18px;
544
+ padding: 20px 24px;
545
+ background: var(--ink);
546
+ color: var(--paper);
547
+ }
548
+
549
+ .garden-responsibility-flow strong {
550
+ font-size: 14px;
551
+ }
552
+
553
+ .garden-responsibility-flow svg {
554
+ flex: none;
555
+ color: var(--accent);
556
+ }
557
+
558
+ .garden-responsibility-grid {
559
+ display: grid;
560
+ grid-template-columns: repeat(2, minmax(0, 1fr));
561
+ border-bottom: 1px solid var(--line-strong);
562
+ }
563
+
564
+ .garden-responsibility-grid article {
565
+ min-height: 168px;
566
+ padding: 30px 24px;
567
+ display: grid;
568
+ grid-template-columns: 42px minmax(0, 1fr);
569
+ align-content: start;
570
+ border-top: 1px solid var(--line);
571
+ border-left: 1px solid var(--line);
572
+ }
573
+
574
+ .garden-responsibility-grid article:first-child {
575
+ border-left: 0;
576
+ }
577
+
578
+ .garden-responsibility-grid article > span {
579
+ color: var(--accent);
580
+ font-size: 11px;
581
+ font-weight: 700;
582
+ }
583
+
584
+ .garden-responsibility-grid h3 {
585
+ margin: 0 0 11px;
586
+ font-size: 20px;
587
+ letter-spacing: -0.035em;
588
+ }
589
+
590
+ .garden-responsibility-grid p {
591
+ grid-column: 2;
592
+ margin: 0;
593
+ color: var(--muted);
594
+ font-size: 14px;
595
+ line-height: 1.8;
596
+ }
597
+
598
+ .garden-admin {
599
+ margin-top: 104px;
600
+ padding-top: 48px;
601
+ border-top: 1px solid var(--line-strong);
602
+ }
603
+
604
+ .garden-admin-preview {
605
+ margin: 0 0 42px;
606
+ border: 1px solid var(--line-strong);
607
+ background: var(--card);
608
+ }
609
+
610
+ .garden-admin-preview img {
611
+ display: block;
612
+ width: 100%;
613
+ height: auto;
614
+ border-bottom: 1px solid var(--line);
615
+ }
616
+
617
+ .garden-admin-preview figcaption {
618
+ display: grid;
619
+ grid-template-columns: 150px minmax(0, 1fr);
620
+ gap: 32px;
621
+ padding: 18px 22px;
622
+ color: var(--muted);
623
+ font-size: 13px;
624
+ line-height: 1.75;
625
+ }
626
+
627
+ .garden-admin-preview figcaption strong {
628
+ color: var(--accent);
629
+ }
630
+
631
+ .garden-admin-capabilities {
632
+ display: grid;
633
+ grid-template-columns: 1fr;
634
+ border-top: 1px solid var(--line-strong);
635
+ }
636
+
637
+ .garden-admin-capabilities article {
638
+ min-height: 112px;
639
+ padding: 22px 0;
640
+ display: grid;
641
+ grid-template-columns: 48px minmax(190px, 0.6fr) minmax(0, 1.4fr);
642
+ gap: 18px;
643
+ align-items: start;
644
+ border-bottom: 1px solid var(--line-strong);
645
+ }
646
+
647
+ .garden-admin-capabilities article > span,
648
+ .garden-setup-grid article > span,
649
+ .garden-admin-flow li > span {
650
+ color: var(--accent);
651
+ font-size: 11px;
652
+ font-weight: 700;
653
+ }
654
+
655
+ .garden-admin-capabilities h3 {
656
+ margin: 0;
657
+ font-size: 20px;
658
+ letter-spacing: -0.035em;
659
+ }
660
+
661
+ .garden-admin-capabilities p,
662
+ .garden-setup-grid article > p {
663
+ margin: 0;
664
+ color: var(--muted);
665
+ font-size: 14px;
666
+ line-height: 1.8;
667
+ }
668
+
669
+ .garden-media {
670
+ margin: 104px -48px 0;
671
+ padding: 64px 48px;
672
+ scroll-margin-top: 24px;
673
+ background: #202124;
674
+ color: #f8f8f6;
675
+ }
676
+
677
+ .garden-media > header {
678
+ display: grid;
679
+ grid-template-columns: minmax(0, 1fr) minmax(0, 0.86fr);
680
+ gap: 72px;
681
+ align-items: end;
682
+ }
683
+
684
+ .garden-media > header .eyebrow {
685
+ grid-column: 1;
686
+ margin-bottom: 13px;
687
+ color: #ff667d;
688
+ }
689
+
690
+ .garden-media > header h2 {
691
+ grid-column: 1;
692
+ margin: 0;
693
+ font-size: clamp(32px, 4vw, 48px);
694
+ line-height: 1.2;
695
+ letter-spacing: -0.06em;
696
+ }
697
+
698
+ .garden-media > header > p {
699
+ grid-column: 2;
700
+ grid-row: 1 / 3;
701
+ margin: 0;
702
+ color: #b8bdc5;
703
+ font-size: 14px;
704
+ line-height: 1.85;
705
+ }
706
+
707
+ .garden-media code {
708
+ color: #fff;
709
+ font-family: inherit;
710
+ }
711
+
712
+ .garden-media-layout {
713
+ margin-top: 44px;
714
+ display: grid;
715
+ grid-template-columns: minmax(0, 0.86fr) minmax(0, 1.14fr);
716
+ gap: 42px;
717
+ align-items: stretch;
718
+ }
719
+
720
+ .garden-media-providers {
721
+ margin: 0;
722
+ padding: 0;
723
+ border-top: 1px solid #45484d;
724
+ list-style: none;
725
+ }
726
+
727
+ .garden-media-providers li {
728
+ min-height: 92px;
729
+ padding: 17px 0;
730
+ display: grid;
731
+ grid-template-columns: 30px 32px minmax(0, 1fr);
732
+ gap: 12px;
733
+ border-bottom: 1px solid #45484d;
734
+ }
735
+
736
+ .garden-media-providers li > span {
737
+ color: #ff667d;
738
+ font-size: 10px;
739
+ }
740
+
741
+ .garden-media-providers li > svg {
742
+ color: #f8f8f6;
743
+ }
744
+
745
+ .garden-media-providers strong {
746
+ display: block;
747
+ font-size: 14px;
748
+ }
749
+
750
+ .garden-media-providers p {
751
+ margin: 5px 0 0;
752
+ color: #aeb3bb;
753
+ font-size: 11px;
754
+ line-height: 1.65;
755
+ }
756
+
757
+ .garden-media-source {
758
+ min-width: 0;
759
+ border: 1px solid #4c5055;
760
+ background: #151617;
761
+ }
762
+
763
+ .garden-media-source > div {
764
+ min-height: 43px;
765
+ padding: 0 15px;
766
+ display: flex;
767
+ align-items: center;
768
+ justify-content: space-between;
769
+ gap: 14px;
770
+ border-bottom: 1px solid #3a3d41;
771
+ color: #aeb3bb;
772
+ font-size: 10px;
773
+ }
774
+
775
+ .garden-media-source pre {
776
+ min-height: 320px;
777
+ margin: 0;
778
+ padding: 28px;
779
+ overflow: auto;
780
+ color: #e7e7e4;
781
+ font-size: 12px;
782
+ line-height: 1.85;
783
+ }
784
+
785
+ .garden-media-boundary {
786
+ margin-top: 38px;
787
+ padding-top: 22px;
788
+ display: grid;
789
+ grid-template-columns: 210px minmax(0, 1fr);
790
+ gap: 30px;
791
+ border-top: 1px solid #45484d;
792
+ }
793
+
794
+ .garden-media-boundary strong {
795
+ color: #ff667d;
796
+ font-size: 12px;
797
+ }
798
+
799
+ .garden-media-boundary p {
800
+ margin: 0;
801
+ color: #aeb3bb;
802
+ font-size: 12px;
803
+ line-height: 1.8;
804
+ }
805
+
806
+ .garden-admin-boundary {
807
+ display: grid;
808
+ grid-template-columns: 150px minmax(0, 1fr);
809
+ gap: 32px;
810
+ align-items: center;
811
+ margin-top: 28px;
812
+ padding: 20px 23px;
813
+ border-left: 2px solid var(--accent);
814
+ background: var(--paper-deep);
815
+ }
816
+
817
+ .garden-admin-boundary strong {
818
+ color: var(--accent);
819
+ font-size: 12px;
820
+ letter-spacing: 0.08em;
821
+ }
822
+
823
+ .garden-admin-boundary p {
824
+ margin: 0;
825
+ color: var(--ink-soft);
826
+ font-size: 14px;
827
+ line-height: 1.8;
828
+ }
829
+
830
+ .garden-admin-boundary code,
831
+ .garden-setup code {
832
+ color: var(--ink);
833
+ font-family: inherit;
834
+ font-size: 0.94em;
835
+ }
836
+
837
+ .garden-admin-flow {
838
+ display: grid;
839
+ grid-template-columns: repeat(4, minmax(0, 1fr));
840
+ margin: 42px 0 0;
841
+ padding: 0;
842
+ border-top: 1px solid var(--line);
843
+ border-bottom: 1px solid var(--line);
844
+ list-style: none;
845
+ }
846
+
847
+ .garden-admin-flow li {
848
+ min-height: 168px;
849
+ padding: 24px 22px;
850
+ border-left: 1px solid var(--line);
851
+ }
852
+
853
+ .garden-admin-flow li:first-child {
854
+ border-left: 0;
855
+ }
856
+
857
+ .garden-admin-flow strong {
858
+ display: block;
859
+ margin-top: 24px;
860
+ font-size: 15px;
861
+ }
862
+
863
+ .garden-admin-flow p {
864
+ margin: 8px 0 0;
865
+ color: var(--muted);
866
+ font-size: 13px;
867
+ line-height: 1.72;
868
+ }
869
+
870
+ .garden-admin-enable {
871
+ display: grid;
872
+ grid-template-columns: minmax(0, 0.88fr) minmax(0, 1.12fr);
873
+ gap: 54px;
874
+ align-items: center;
875
+ margin-top: 42px;
876
+ padding: 38px;
877
+ border: 1px solid var(--line-strong);
878
+ background: var(--card);
879
+ }
880
+
881
+ .garden-admin-enable .eyebrow {
882
+ margin-bottom: 12px;
883
+ }
884
+
885
+ .garden-admin-enable h3 {
886
+ margin: 0;
887
+ font-size: 22px;
888
+ letter-spacing: -0.045em;
889
+ }
890
+
891
+ .garden-admin-enable ol {
892
+ margin: 22px 0 0;
893
+ padding-left: 17px;
894
+ color: var(--muted);
895
+ font-size: 14px;
896
+ line-height: 1.8;
897
+ }
898
+
899
+ .garden-admin-enable li + li {
900
+ margin-top: 7px;
901
+ }
902
+
903
+ .garden-admin-enable li::marker {
904
+ color: var(--accent);
905
+ }
906
+
907
+ .garden-admin-enable pre,
908
+ .garden-setup-grid pre {
909
+ margin: 0;
910
+ padding: 23px;
911
+ overflow-x: auto;
912
+ border: 1px solid var(--line);
913
+ background: var(--paper);
914
+ color: var(--ink-soft);
915
+ font-size: 12px;
916
+ line-height: 1.85;
917
+ }
918
+
919
+ .garden-admin-enable pre code,
920
+ .garden-setup-grid pre code {
921
+ font-family: inherit;
922
+ }
923
+
924
+ .garden-guide {
925
+ border-top: 1px solid var(--line-strong);
926
+ }
927
+
928
+ .garden-guide-heading {
929
+ display: grid;
930
+ grid-template-columns: minmax(0, 1fr) minmax(0, 0.86fr);
931
+ gap: 72px;
932
+ align-items: end;
933
+ padding: 48px 0 42px;
934
+ }
935
+
936
+ .garden-guide-heading .eyebrow {
937
+ margin-bottom: 15px;
938
+ }
939
+
940
+ .garden-guide-heading h2 {
941
+ max-width: 640px;
942
+ margin: 0;
943
+ font-size: clamp(29px, 3.4vw, 42px);
944
+ line-height: 1.25;
945
+ letter-spacing: -0.055em;
946
+ }
947
+
948
+ .garden-guide-heading > p {
949
+ margin: 0;
950
+ color: var(--muted);
951
+ font-size: 15px;
952
+ line-height: 1.8;
953
+ }
954
+
955
+ .garden-guide-index {
956
+ display: grid;
957
+ grid-template-columns: repeat(3, 1fr);
958
+ border-top: 1px solid var(--line);
959
+ border-bottom: 1px solid var(--line);
960
+ }
961
+
962
+ .garden-guide-index a {
963
+ display: grid;
964
+ grid-template-columns: 38px minmax(0, 1fr) auto;
965
+ gap: 12px;
966
+ align-items: center;
967
+ min-height: 78px;
968
+ padding: 16px 20px;
969
+ border-left: 1px solid var(--line);
970
+ color: var(--ink-soft);
971
+ transition: background 160ms ease, color 160ms ease;
972
+ }
973
+
974
+ .garden-guide-index a:first-child {
975
+ border-left: 0;
976
+ }
977
+
978
+ .garden-guide-index a:hover,
979
+ .garden-guide-index a:focus-visible {
980
+ background: var(--paper-deep);
981
+ color: var(--ink);
982
+ }
983
+
984
+ .garden-guide-index span,
985
+ .garden-guide-index small {
986
+ color: var(--accent);
987
+ font-size: 12px;
988
+ font-weight: 700;
989
+ }
990
+
991
+ .garden-guide-index strong {
992
+ font-size: 15px;
993
+ }
994
+
995
+ .garden-guide-index small {
996
+ color: var(--muted);
997
+ font-weight: 400;
998
+ }
999
+
1000
+ .garden-content-guide {
1001
+ display: grid;
1002
+ grid-template-columns: minmax(0, 0.93fr) minmax(0, 1.07fr);
1003
+ gap: 76px;
1004
+ align-items: start;
1005
+ padding: 96px 0;
1006
+ border-bottom: 1px solid var(--line-strong);
1007
+ scroll-margin-top: 24px;
1008
+ }
1009
+
1010
+ .garden-content-guide:nth-child(even) {
1011
+ grid-template-columns: minmax(0, 1.07fr) minmax(0, 0.93fr);
1012
+ }
1013
+
1014
+ .garden-content-guide:nth-child(even) .garden-source-panel {
1015
+ order: -1;
1016
+ }
1017
+
1018
+ .garden-content-copy .eyebrow {
1019
+ margin-bottom: 14px;
1020
+ }
1021
+
1022
+ .garden-content-copy h2 {
1023
+ margin: 0 0 18px;
1024
+ font-size: clamp(28px, 3.1vw, 39px);
1025
+ letter-spacing: -0.055em;
1026
+ }
1027
+
1028
+ .garden-content-introduction {
1029
+ margin: 0;
1030
+ color: var(--muted);
1031
+ font-size: 16px;
1032
+ line-height: 1.85;
1033
+ }
1034
+
1035
+ .garden-content-introduction code,
1036
+ .garden-content-steps code,
1037
+ .garden-setup code {
1038
+ color: var(--ink);
1039
+ font-family: inherit;
1040
+ font-size: 0.94em;
1041
+ }
1042
+
1043
+ .garden-content-steps {
1044
+ display: grid;
1045
+ gap: 0;
1046
+ margin: 31px 0 0;
1047
+ padding: 0;
1048
+ border-top: 1px solid var(--line);
1049
+ list-style: none;
1050
+ }
1051
+
1052
+ .garden-content-steps li {
1053
+ display: grid;
1054
+ grid-template-columns: 34px minmax(0, 1fr);
1055
+ gap: 12px;
1056
+ padding: 13px 0;
1057
+ border-bottom: 1px solid var(--line);
1058
+ color: var(--ink-soft);
1059
+ font-size: 14px;
1060
+ line-height: 1.72;
1061
+ }
1062
+
1063
+ .garden-content-steps li > strong {
1064
+ color: var(--accent);
1065
+ font-size: 12px;
1066
+ }
1067
+
1068
+ .garden-content-features {
1069
+ display: grid;
1070
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1071
+ gap: 9px 22px;
1072
+ margin: 27px 0 0;
1073
+ padding: 0;
1074
+ list-style: none;
1075
+ }
1076
+
1077
+ .garden-content-features li {
1078
+ position: relative;
1079
+ padding-left: 13px;
1080
+ color: var(--muted);
1081
+ font-size: 13px;
1082
+ line-height: 1.7;
1083
+ }
1084
+
1085
+ .garden-content-features li::before {
1086
+ content: "";
1087
+ position: absolute;
1088
+ top: 0.65em;
1089
+ left: 0;
1090
+ width: 4px;
1091
+ height: 4px;
1092
+ background: var(--accent);
1093
+ }
1094
+
1095
+ .garden-content-result {
1096
+ margin-top: 29px;
1097
+ padding: 17px 18px;
1098
+ border-left: 2px solid var(--accent);
1099
+ background: var(--paper-deep);
1100
+ }
1101
+
1102
+ .garden-content-result strong {
1103
+ color: var(--accent);
1104
+ font-size: 11px;
1105
+ letter-spacing: 0.08em;
1106
+ }
1107
+
1108
+ .garden-content-result p {
1109
+ margin: 7px 0 0;
1110
+ color: var(--ink-soft);
1111
+ font-size: 14px;
1112
+ line-height: 1.75;
1113
+ }
1114
+
1115
+ .garden-source-panel {
1116
+ min-width: 0;
1117
+ border: 1px solid var(--line-strong);
1118
+ background: var(--card);
1119
+ }
1120
+
1121
+ .garden-source-bar {
1122
+ display: flex;
1123
+ align-items: center;
1124
+ min-height: 42px;
1125
+ padding: 0 15px;
1126
+ border-bottom: 1px solid var(--line);
1127
+ color: var(--muted);
1128
+ }
1129
+
1130
+ .garden-source-bar > span {
1131
+ display: flex;
1132
+ gap: 5px;
1133
+ margin-right: 10px;
1134
+ }
1135
+
1136
+ .garden-source-bar i {
1137
+ width: 6px;
1138
+ height: 6px;
1139
+ border-radius: 50%;
1140
+ background: var(--line-strong);
1141
+ }
1142
+
1143
+ .garden-source-bar code {
1144
+ overflow: hidden;
1145
+ font-size: 12px;
1146
+ text-overflow: ellipsis;
1147
+ white-space: nowrap;
1148
+ }
1149
+
1150
+ .garden-source-panel pre {
1151
+ min-height: 420px;
1152
+ margin: 0;
1153
+ padding: 28px;
1154
+ overflow: auto;
1155
+ color: var(--ink-soft);
1156
+ font-size: 13px;
1157
+ line-height: 1.78;
1158
+ tab-size: 2;
1159
+ }
1160
+
1161
+ .garden-source-panel pre code {
1162
+ font-family: inherit;
1163
+ }
1164
+
1165
+ .garden-system {
1166
+ margin-top: 104px;
1167
+ }
1168
+
1169
+ .garden-system > header {
1170
+ display: grid;
1171
+ grid-template-columns: minmax(0, 1fr) minmax(0, 0.86fr);
1172
+ gap: 72px;
1173
+ align-items: end;
1174
+ margin-bottom: 37px;
1175
+ }
1176
+
1177
+ .garden-system > header .eyebrow {
1178
+ grid-column: 1;
1179
+ margin-bottom: 13px;
1180
+ }
1181
+
1182
+ .garden-system > header h2 {
1183
+ grid-column: 1;
1184
+ margin: 0;
1185
+ font-size: clamp(28px, 3.2vw, 39px);
1186
+ line-height: 1.3;
1187
+ letter-spacing: -0.055em;
1188
+ }
1189
+
1190
+ .garden-system > header > p:last-child {
1191
+ grid-column: 2;
1192
+ grid-row: 1 / 3;
1193
+ align-self: end;
1194
+ margin: 0;
1195
+ color: var(--muted);
1196
+ font-size: 15px;
1197
+ line-height: 1.8;
1198
+ }
1199
+
1200
+ .garden-system-grid {
1201
+ display: grid;
1202
+ grid-template-columns: 1fr;
1203
+ border-top: 1px solid var(--line-strong);
1204
+ }
1205
+
1206
+ .garden-system-grid article {
1207
+ min-height: 112px;
1208
+ padding: 23px 0;
1209
+ display: grid;
1210
+ grid-template-columns: 62px minmax(210px, 0.7fr) minmax(0, 1.3fr);
1211
+ gap: 20px;
1212
+ align-items: start;
1213
+ border-bottom: 1px solid var(--line-strong);
1214
+ }
1215
+
1216
+ .garden-system-grid article > span {
1217
+ color: var(--accent);
1218
+ font-size: 11px;
1219
+ font-weight: 700;
1220
+ }
1221
+
1222
+ .garden-system-grid h3 {
1223
+ margin: 0;
1224
+ font-size: 20px;
1225
+ letter-spacing: -0.035em;
1226
+ }
1227
+
1228
+ .garden-system-grid p {
1229
+ margin: 0;
1230
+ color: var(--muted);
1231
+ font-size: 14px;
1232
+ line-height: 1.8;
1233
+ }
1234
+
1235
+ .garden-setup {
1236
+ margin-top: 104px;
1237
+ padding-top: 48px;
1238
+ border-top: 1px solid var(--line-strong);
1239
+ scroll-margin-top: 24px;
1240
+ }
1241
+
1242
+ .garden-setup-grid {
1243
+ display: grid;
1244
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1245
+ border-top: 1px solid var(--line-strong);
1246
+ border-left: 1px solid var(--line-strong);
1247
+ }
1248
+
1249
+ .garden-setup-grid article {
1250
+ min-height: 265px;
1251
+ padding: 28px 30px;
1252
+ border-right: 1px solid var(--line-strong);
1253
+ border-bottom: 1px solid var(--line-strong);
1254
+ }
1255
+
1256
+ .garden-setup-grid h3 {
1257
+ margin: 24px 0 14px;
1258
+ font-size: 21px;
1259
+ letter-spacing: -0.035em;
1260
+ }
1261
+
1262
+ .garden-setup-grid article > pre {
1263
+ margin-bottom: 15px;
1264
+ padding: 17px 19px;
1265
+ }
1266
+
1267
+ .garden-setup-grid dl {
1268
+ margin: 0;
1269
+ border-top: 1px solid var(--line);
1270
+ }
1271
+
1272
+ .garden-setup-grid dl > div {
1273
+ display: grid;
1274
+ grid-template-columns: minmax(125px, 0.8fr) minmax(0, 1.2fr);
1275
+ gap: 18px;
1276
+ padding: 10px 0;
1277
+ border-bottom: 1px solid var(--line);
1278
+ }
1279
+
1280
+ .garden-setup-grid dt {
1281
+ color: var(--ink-soft);
1282
+ font-size: 13px;
1283
+ }
1284
+
1285
+ .garden-setup-grid dd {
1286
+ margin: 0;
1287
+ color: var(--muted);
1288
+ font-size: 13px;
1289
+ }
1290
+
1291
+ .garden-setup-notes {
1292
+ display: grid;
1293
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1294
+ margin-top: 38px;
1295
+ border-top: 1px solid var(--line);
1296
+ border-bottom: 1px solid var(--line);
1297
+ }
1298
+
1299
+ .garden-setup-notes > div {
1300
+ min-height: 132px;
1301
+ padding: 22px;
1302
+ border-left: 1px solid var(--line);
1303
+ }
1304
+
1305
+ .garden-setup-notes > div:first-child {
1306
+ border-left: 0;
1307
+ }
1308
+
1309
+ .garden-setup-notes strong {
1310
+ color: var(--accent);
1311
+ font-size: 12px;
1312
+ }
1313
+
1314
+ .garden-setup-notes p {
1315
+ margin: 12px 0 0;
1316
+ color: var(--muted);
1317
+ font-size: 13px;
1318
+ line-height: 1.72;
1319
+ }
1320
+
1321
+ .garden-setup-finish {
1322
+ display: flex;
1323
+ align-items: center;
1324
+ justify-content: space-between;
1325
+ gap: 28px;
1326
+ margin-top: 38px;
1327
+ padding: 28px 30px;
1328
+ background: var(--paper-deep);
1329
+ }
1330
+
1331
+ .garden-setup-finish .eyebrow {
1332
+ margin-bottom: 9px;
1333
+ }
1334
+
1335
+ .garden-setup-finish h3 {
1336
+ margin: 0;
1337
+ font-size: 21px;
1338
+ letter-spacing: -0.035em;
1339
+ }
1340
+
1341
+ .garden-setup-finish .garden-primary-link {
1342
+ flex: none;
1343
+ }
1344
+
1345
+ .index-page {
1346
+ padding-bottom: 110px;
1347
+ }
1348
+
1349
+ .content-empty-state {
1350
+ min-height: 280px;
1351
+ padding: 42px;
1352
+ display: grid;
1353
+ grid-template-columns: 72px minmax(0, 1fr) auto;
1354
+ gap: 28px;
1355
+ align-items: center;
1356
+ border: 1px solid var(--line-strong);
1357
+ background: var(--card);
1358
+ }
1359
+
1360
+ .content-empty-mark {
1361
+ width: 72px;
1362
+ height: 72px;
1363
+ display: grid;
1364
+ place-items: center;
1365
+ border: 1px solid var(--line-strong);
1366
+ border-radius: 50%;
1367
+ color: var(--accent);
1368
+ }
1369
+
1370
+ .content-empty-state .eyebrow {
1371
+ margin-bottom: 11px;
1372
+ font-size: 10px;
1373
+ }
1374
+
1375
+ .content-empty-state h2 {
1376
+ margin: 0;
1377
+ font-size: clamp(23px, 3vw, 32px);
1378
+ letter-spacing: -0.045em;
1379
+ }
1380
+
1381
+ .content-empty-state div > p:last-child {
1382
+ max-width: 590px;
1383
+ margin: 13px 0 0;
1384
+ color: var(--muted);
1385
+ font-size: 13px;
1386
+ line-height: 1.8;
1387
+ }
1388
+
1389
+ .content-empty-state > a {
1390
+ display: inline-flex;
1391
+ align-items: center;
1392
+ gap: 8px;
1393
+ padding-bottom: 3px;
1394
+ border-bottom: 1px solid var(--ink);
1395
+ font-size: 12px;
1396
+ white-space: nowrap;
1397
+ }
1398
+
1399
+ .content-empty-state > a:hover,
1400
+ .content-empty-state > a:focus-visible {
1401
+ border-color: var(--accent);
1402
+ color: var(--accent);
1403
+ }
1404
+
1405
+ .topic-strip {
1406
+ display: flex;
1407
+ flex-wrap: wrap;
1408
+ gap: 8px;
1409
+ margin: 8px 0 38px;
1410
+ }
1411
+
1412
+ .topic-strip a {
1413
+ padding: 6px 10px;
1414
+ background: var(--paper-deep);
1415
+ color: var(--muted);
1416
+ font-size: 11px;
1417
+ border: 1px solid transparent;
1418
+ }
1419
+
1420
+ .topic-strip a:hover,
1421
+ .topic-strip a:focus-visible {
1422
+ color: var(--ink);
1423
+ border-color: var(--line-strong);
1424
+ }
1425
+
1426
+ .topic-strip a.active {
1427
+ background: var(--ink);
1428
+ color: var(--paper);
1429
+ }
1430
+
1431
+ .archive-list {
1432
+ border-top: 1px solid var(--line-strong);
1433
+ }
1434
+
1435
+ .archive-row {
1436
+ min-height: 112px;
1437
+ padding: 14px 0;
1438
+ display: grid;
1439
+ grid-template-columns: minmax(0, 1fr) 20px;
1440
+ gap: 16px;
1441
+ align-items: center;
1442
+ border-bottom: 1px solid var(--line);
1443
+ }
1444
+
1445
+ .archive-row.with-cover {
1446
+ grid-template-columns: 128px minmax(0, 1fr) 20px;
1447
+ }
1448
+
1449
+ .archive-row:hover {
1450
+ padding-left: 8px;
1451
+ padding-right: 8px;
1452
+ background: var(--card);
1453
+ }
1454
+
1455
+ .archive-meta {
1456
+ display: flex;
1457
+ flex-wrap: wrap;
1458
+ align-items: center;
1459
+ gap: 6px 14px;
1460
+ }
1461
+
1462
+ .archive-meta time {
1463
+ color: var(--muted);
1464
+ font-size: 10px;
1465
+ }
1466
+
1467
+ .archive-row > svg {
1468
+ align-self: center;
1469
+ }
1470
+
1471
+ .archive-cover {
1472
+ width: 128px;
1473
+ height: 84px;
1474
+ display: block;
1475
+ object-fit: cover;
1476
+ border: 1px solid var(--line);
1477
+ }
1478
+
1479
+ .archive-topic {
1480
+ color: var(--accent);
1481
+ font-size: 10px;
1482
+ font-weight: 700;
1483
+ letter-spacing: 0.05em;
1484
+ }
1485
+
1486
+ .pinned-badge {
1487
+ margin-left: 9px;
1488
+ display: inline-flex;
1489
+ align-items: center;
1490
+ gap: 3px;
1491
+ color: var(--muted);
1492
+ }
1493
+
1494
+ .archive-row h2 {
1495
+ margin: 7px 0 6px;
1496
+ font-size: 18px;
1497
+ letter-spacing: -0.035em;
1498
+ }
1499
+
1500
+ .archive-row p {
1501
+ margin: 0;
1502
+ color: var(--muted);
1503
+ display: -webkit-box;
1504
+ overflow: hidden;
1505
+ font-size: 11px;
1506
+ line-height: 1.6;
1507
+ -webkit-box-orient: vertical;
1508
+ -webkit-line-clamp: 1;
1509
+ }
1510
+
1511
+ .archive-pagination {
1512
+ margin-top: 28px;
1513
+ display: grid;
1514
+ grid-template-columns: 1fr auto 1fr;
1515
+ align-items: center;
1516
+ color: var(--muted);
1517
+ font-size: 10px;
1518
+ }
1519
+
1520
+ .archive-pagination > :last-child {
1521
+ justify-self: end;
1522
+ }
1523
+
1524
+ .archive-pagination a {
1525
+ display: inline-flex;
1526
+ align-items: center;
1527
+ gap: 7px;
1528
+ color: var(--ink);
1529
+ }
1530
+
1531
+ .archive-pagination a:hover,
1532
+ .archive-pagination a:focus-visible {
1533
+ color: var(--accent);
1534
+ }
1535
+
1536
+ .thoughts-page {
1537
+ padding-bottom: 110px;
1538
+ }
1539
+
1540
+ .thought-stream {
1541
+ display: grid;
1542
+ gap: 24px;
1543
+ }
1544
+
1545
+ .thought-card {
1546
+ padding: 24px 26px 26px;
1547
+ background: var(--card);
1548
+ border: 1px solid var(--line);
1549
+ scroll-margin-top: 120px;
1550
+ }
1551
+
1552
+ .thought-card > header {
1553
+ display: flex;
1554
+ justify-content: space-between;
1555
+ gap: 12px;
1556
+ color: var(--muted);
1557
+ font-size: 10px;
1558
+ }
1559
+
1560
+ .thought-kind {
1561
+ display: inline-flex;
1562
+ align-items: center;
1563
+ gap: 6px;
1564
+ color: var(--accent);
1565
+ font-weight: 700;
1566
+ }
1567
+
1568
+ .thought-card > h2 {
1569
+ margin: 18px 0 3px;
1570
+ font-size: 18px;
1571
+ text-decoration: underline;
1572
+ text-underline-offset: 4px;
1573
+ }
1574
+
1575
+ .thought-card .markdown-body {
1576
+ font-size: 13px;
1577
+ line-height: 1.75;
1578
+ }
1579
+
1580
+ .thought-card .markdown-body p {
1581
+ margin: 12px 0 20px;
1582
+ }
1583
+
1584
+ .thought-permalink {
1585
+ width: max-content;
1586
+ margin-top: 24px;
1587
+ display: inline-flex;
1588
+ align-items: center;
1589
+ gap: 6px;
1590
+ color: var(--muted);
1591
+ font-size: 10px;
1592
+ border-bottom: 1px solid var(--line-strong);
1593
+ }
1594
+
1595
+ .thought-permalink:hover,
1596
+ .thought-permalink:focus-visible {
1597
+ color: var(--accent);
1598
+ }
1599
+
1600
+ .thought-detail-page {
1601
+ max-width: 760px;
1602
+ padding-top: 58px;
1603
+ padding-bottom: 120px;
1604
+ }
1605
+
1606
+ .thought-detail-page > .thought-card {
1607
+ margin-top: 30px;
1608
+ }
1609
+
1610
+ .thought-image,
1611
+ .thought-video {
1612
+ width: 100%;
1613
+ max-height: 460px;
1614
+ display: block;
1615
+ object-fit: cover;
1616
+ border: 0;
1617
+ }
1618
+
1619
+ .thought-media-stack {
1620
+ display: grid;
1621
+ gap: 14px;
1622
+ }
1623
+
1624
+ .thought-gallery {
1625
+ display: grid;
1626
+ gap: 8px;
1627
+ }
1628
+
1629
+ .thought-gallery-2 {
1630
+ grid-template-columns: repeat(2, 1fr);
1631
+ }
1632
+
1633
+ .thought-gallery-3 {
1634
+ grid-template-columns: 1.35fr 0.65fr;
1635
+ grid-template-rows: repeat(2, minmax(0, 155px));
1636
+ }
1637
+
1638
+ .thought-gallery-3 .thought-image {
1639
+ height: 100%;
1640
+ }
1641
+
1642
+ .thought-gallery-3 .thought-image:first-child {
1643
+ grid-row: 1 / 3;
1644
+ }
1645
+
1646
+ .audio-embed {
1647
+ display: grid;
1648
+ grid-template-columns: 44px 1fr;
1649
+ gap: 12px;
1650
+ align-items: center;
1651
+ padding: 18px;
1652
+ background: var(--paper-deep);
1653
+ border-left: 3px solid var(--accent);
1654
+ }
1655
+
1656
+ .audio-embed > svg {
1657
+ color: var(--accent);
1658
+ }
1659
+
1660
+ .audio-embed strong {
1661
+ display: block;
1662
+ margin-bottom: 10px;
1663
+ font-size: 11px;
1664
+ }
1665
+
1666
+ .audio-embed audio {
1667
+ width: 100%;
1668
+ height: 36px;
1669
+ }
1670
+
1671
+ .link-embed {
1672
+ min-height: 132px;
1673
+ display: flex;
1674
+ align-items: center;
1675
+ justify-content: space-between;
1676
+ gap: 24px;
1677
+ padding: 22px;
1678
+ background: var(--paper-deep);
1679
+ border: 1px solid var(--line);
1680
+ }
1681
+
1682
+ .link-embed:hover {
1683
+ border-color: var(--accent);
1684
+ }
1685
+
1686
+ .link-embed small {
1687
+ color: var(--accent);
1688
+ font-size: 9px;
1689
+ text-transform: uppercase;
1690
+ }
1691
+
1692
+ .link-embed strong {
1693
+ display: block;
1694
+ margin: 7px 0;
1695
+ font-size: 14px;
1696
+ }
1697
+
1698
+ .link-embed p {
1699
+ margin: 0;
1700
+ color: var(--muted);
1701
+ font-size: 11px;
1702
+ }
1703
+
1704
+ .column-feature-list {
1705
+ display: grid;
1706
+ gap: 24px;
1707
+ }
1708
+
1709
+ .column-feature {
1710
+ min-height: 390px;
1711
+ display: grid;
1712
+ grid-template-columns: 1.4fr 0.6fr;
1713
+ background: var(--card);
1714
+ border: 1px solid var(--line-strong);
1715
+ }
1716
+
1717
+ .column-feature:hover,
1718
+ .column-feature:focus-visible {
1719
+ border-color: var(--accent);
1720
+ }
1721
+
1722
+ .column-feature-copy {
1723
+ padding: 48px;
1724
+ display: flex;
1725
+ flex-direction: column;
1726
+ justify-content: center;
1727
+ }
1728
+
1729
+ .column-feature-copy > span {
1730
+ color: var(--accent);
1731
+ font-size: 10px;
1732
+ }
1733
+
1734
+ .column-feature-copy h2 {
1735
+ margin: 18px 0 14px;
1736
+ font-size: 34px;
1737
+ letter-spacing: -0.05em;
1738
+ }
1739
+
1740
+ .column-feature-copy p {
1741
+ max-width: 550px;
1742
+ margin: 0;
1743
+ color: var(--muted);
1744
+ }
1745
+
1746
+ .column-feature-copy > strong {
1747
+ margin-top: 44px;
1748
+ display: inline-flex;
1749
+ align-items: center;
1750
+ gap: 8px;
1751
+ font-size: 12px;
1752
+ }
1753
+
1754
+ .column-feature-index {
1755
+ padding: 28px;
1756
+ display: flex;
1757
+ flex-direction: column;
1758
+ justify-content: space-between;
1759
+ background: var(--ink);
1760
+ color: var(--paper);
1761
+ }
1762
+
1763
+ .column-feature-index span,
1764
+ .column-feature-index small {
1765
+ color: var(--faint);
1766
+ font-size: 9px;
1767
+ letter-spacing: 0.08em;
1768
+ }
1769
+
1770
+ .column-feature-index strong {
1771
+ align-self: center;
1772
+ font-size: 82px;
1773
+ line-height: 1;
1774
+ }
1775
+
1776
+ .reading-page {
1777
+ width: min(1000px, calc(100% - 48px));
1778
+ margin: 0 auto;
1779
+ padding: 72px 0 120px;
1780
+ display: grid;
1781
+ grid-template-columns: minmax(0, 650px) 180px;
1782
+ gap: 48px;
1783
+ justify-content: center;
1784
+ }
1785
+
1786
+ .article-column {
1787
+ min-width: 0;
1788
+ }
1789
+
1790
+ .post-reading-page {
1791
+ --toc-width: 250px;
1792
+ --reading-gap: 64px;
1793
+ width: min(1380px, calc(100% - 128px));
1794
+ display: block;
1795
+ padding-top: 38px;
1796
+ }
1797
+
1798
+ .post-reading-page .post-article {
1799
+ min-width: 0;
1800
+ }
1801
+
1802
+ .post-reading-page .article-hero {
1803
+ margin: 0;
1804
+ }
1805
+
1806
+ .article-hero img {
1807
+ width: 100%;
1808
+ aspect-ratio: 16 / 8.5;
1809
+ display: block;
1810
+ object-fit: cover;
1811
+ border: 1px solid var(--line);
1812
+ }
1813
+
1814
+ .post-reading-page .article-summary-row {
1815
+ width: calc(100% - var(--toc-width) - var(--reading-gap));
1816
+ padding: 64px 0 42px;
1817
+ margin: 0 0 42px;
1818
+ }
1819
+
1820
+ .article-reading-layout {
1821
+ display: grid;
1822
+ grid-template-columns: minmax(0, 1fr) var(--toc-width);
1823
+ gap: var(--reading-gap);
1824
+ align-items: start;
1825
+ }
1826
+
1827
+ .article-reading-column {
1828
+ min-width: 0;
1829
+ }
1830
+
1831
+ .post-reading-page .article-reading-layout .toc {
1832
+ margin-top: 0;
1833
+ }
1834
+
1835
+ .back-link {
1836
+ display: inline-flex;
1837
+ align-items: center;
1838
+ gap: 7px;
1839
+ color: var(--muted);
1840
+ font-size: 11px;
1841
+ }
1842
+
1843
+ .back-link:hover {
1844
+ color: var(--accent);
1845
+ }
1846
+
1847
+ .article-header {
1848
+ padding: 54px 0 42px;
1849
+ border-bottom: 1px solid var(--line);
1850
+ margin-bottom: 42px;
1851
+ }
1852
+
1853
+ .article-cover {
1854
+ margin: 28px 0 34px;
1855
+ }
1856
+
1857
+ .article-cover img {
1858
+ width: 100%;
1859
+ aspect-ratio: 16 / 8.5;
1860
+ display: block;
1861
+ object-fit: cover;
1862
+ border: 1px solid var(--line);
1863
+ }
1864
+
1865
+ .article-header h1 {
1866
+ margin: 0;
1867
+ font-size: clamp(32px, 4.2vw, 48px);
1868
+ line-height: 1.28;
1869
+ letter-spacing: -0.055em;
1870
+ }
1871
+
1872
+ .article-deck {
1873
+ margin: 24px 0;
1874
+ color: var(--muted);
1875
+ font-size: 15px;
1876
+ line-height: 1.8;
1877
+ }
1878
+
1879
+ .article-meta {
1880
+ display: flex;
1881
+ flex-wrap: wrap;
1882
+ gap: 10px 20px;
1883
+ color: var(--faint);
1884
+ font-size: 10px;
1885
+ }
1886
+
1887
+ .toc {
1888
+ position: sticky;
1889
+ top: 38px;
1890
+ align-self: start;
1891
+ max-height: calc(100vh - 76px);
1892
+ margin-top: 144px;
1893
+ padding-left: 18px;
1894
+ display: flex;
1895
+ flex-direction: column;
1896
+ border-left: 1px solid var(--line);
1897
+ overflow: hidden;
1898
+ }
1899
+
1900
+ .toc-header {
1901
+ display: flex;
1902
+ align-items: center;
1903
+ justify-content: space-between;
1904
+ gap: 10px;
1905
+ margin-bottom: 14px;
1906
+ }
1907
+
1908
+ .toc-header > p {
1909
+ margin: 0;
1910
+ color: var(--accent);
1911
+ font-size: 12px;
1912
+ font-weight: 700;
1913
+ }
1914
+
1915
+ .toc-list {
1916
+ min-height: 0;
1917
+ margin: 0;
1918
+ padding: 0 5px 0 0;
1919
+ flex: 1 1 auto;
1920
+ list-style: none;
1921
+ overflow-y: auto;
1922
+ overscroll-behavior: contain;
1923
+ scrollbar-width: thin;
1924
+ scrollbar-color: var(--line-strong) transparent;
1925
+ }
1926
+
1927
+ .toc .toc-sublist {
1928
+ margin: 0;
1929
+ padding: 0 0 0 12px;
1930
+ list-style: none;
1931
+ }
1932
+
1933
+ .toc-item-row {
1934
+ display: flex;
1935
+ align-items: flex-start;
1936
+ gap: 7px;
1937
+ }
1938
+
1939
+ .toc-item-row > a {
1940
+ min-width: 0;
1941
+ flex: 1 1 auto;
1942
+ overflow-wrap: anywhere;
1943
+ }
1944
+
1945
+ .toc-section-toggle {
1946
+ width: 20px;
1947
+ height: 20px;
1948
+ margin-top: 0;
1949
+ padding: 0;
1950
+ display: grid;
1951
+ flex: 0 0 auto;
1952
+ place-items: center;
1953
+ border: 0;
1954
+ border-radius: 50%;
1955
+ background: transparent;
1956
+ color: var(--faint);
1957
+ font-size: 12px;
1958
+ line-height: 1;
1959
+ }
1960
+
1961
+ .toc-section-toggle:hover,
1962
+ .toc-section-toggle:focus-visible {
1963
+ background: var(--accent-soft);
1964
+ color: var(--accent);
1965
+ }
1966
+
1967
+ .toc-section-toggle:focus-visible {
1968
+ outline: 2px solid color-mix(in srgb, var(--accent) 28%, transparent);
1969
+ outline-offset: 1px;
1970
+ }
1971
+
1972
+ .toc li {
1973
+ margin: 11px 0;
1974
+ color: var(--muted);
1975
+ font-size: 12px;
1976
+ line-height: 1.6;
1977
+ }
1978
+
1979
+ .toc li.toc-depth-4,
1980
+ .toc li.toc-depth-5 {
1981
+ font-size: 11px;
1982
+ }
1983
+
1984
+ .toc a:hover {
1985
+ color: var(--ink);
1986
+ }
1987
+
1988
+ .toc li.active > .toc-item-row > a {
1989
+ color: var(--accent);
1990
+ font-weight: 700;
1991
+ }
1992
+
1993
+ .toc-mobile-trigger,
1994
+ .toc-mobile-backdrop,
1995
+ .toc-mobile-close {
1996
+ display: none;
1997
+ }
1998
+
1999
+ .markdown-body {
2000
+ color: var(--ink-soft);
2001
+ font-size: 15px;
2002
+ line-height: 1.95;
2003
+ overflow-wrap: anywhere;
2004
+ }
2005
+
2006
+ .markdown-body h2,
2007
+ .markdown-body h3,
2008
+ .markdown-body h4,
2009
+ .markdown-body h5 {
2010
+ color: var(--ink);
2011
+ letter-spacing: -0.035em;
2012
+ line-height: 1.45;
2013
+ scroll-margin-top: 0;
2014
+ }
2015
+
2016
+ .markdown-body h2 {
2017
+ margin: 66px 0 22px;
2018
+ padding-top: 6px;
2019
+ font-size: 25px;
2020
+ }
2021
+
2022
+ .markdown-body h2::before {
2023
+ content: "#";
2024
+ margin-right: 10px;
2025
+ color: var(--accent);
2026
+ font-weight: 400;
2027
+ }
2028
+
2029
+ .markdown-body h3 {
2030
+ margin: 42px 0 16px;
2031
+ font-size: clamp(20px, 2.1vw, 22px);
2032
+ }
2033
+
2034
+ .markdown-body h4 {
2035
+ margin: 34px 0 14px;
2036
+ font-size: clamp(19px, 1.9vw, 21px);
2037
+ }
2038
+
2039
+ .markdown-body h5 {
2040
+ margin: 28px 0 12px;
2041
+ font-size: clamp(17px, 1.7vw, 19px);
2042
+ }
2043
+
2044
+ .markdown-body p {
2045
+ margin: 22px 0;
2046
+ }
2047
+
2048
+ .markdown-body a {
2049
+ text-decoration: underline;
2050
+ text-decoration-color: var(--accent);
2051
+ text-underline-offset: 4px;
2052
+ }
2053
+
2054
+ .markdown-body a:hover {
2055
+ color: var(--accent);
2056
+ }
2057
+
2058
+ /* A per-line border stays continuous across inline code and descenders. */
2059
+ .markdown-body u {
2060
+ text-decoration: none;
2061
+ border-bottom: 1px solid currentColor;
2062
+ padding-bottom: 0.1em;
2063
+ -webkit-box-decoration-break: clone;
2064
+ box-decoration-break: clone;
2065
+ }
2066
+
2067
+ .markdown-body strong {
2068
+ color: var(--ink);
2069
+ }
2070
+
2071
+ .markdown-body blockquote {
2072
+ margin: 34px 0;
2073
+ padding: 3px 0 3px 22px;
2074
+ border-left: 3px solid var(--accent);
2075
+ color: var(--muted);
2076
+ font-size: 16px;
2077
+ }
2078
+
2079
+ .markdown-body blockquote p {
2080
+ margin: 8px 0;
2081
+ }
2082
+
2083
+ .markdown-body .garden-callout-marker { display: none; }
2084
+
2085
+ .markdown-body blockquote:has(.garden-callout-marker) {
2086
+ --callout-tone: #347f89;
2087
+ --callout-surface: #fbfefe;
2088
+ margin: 32px 0;
2089
+ padding: 17px 20px 18px;
2090
+ border: 1.5px solid var(--callout-tone);
2091
+ border-radius: 15px;
2092
+ background: var(--callout-surface);
2093
+ color: var(--ink);
2094
+ font-size: 15px;
2095
+ line-height: 1.65;
2096
+ }
2097
+
2098
+ .markdown-body blockquote:has(.garden-callout-marker--success) { --callout-tone: #24845d; --callout-surface: #fbfefc; }
2099
+ .markdown-body blockquote:has(.garden-callout-marker--warning) { --callout-tone: #ad6900; --callout-surface: #fffdf9; }
2100
+ .markdown-body blockquote:has(.garden-callout-marker--danger) { --callout-tone: #ba4051; --callout-surface: #fffafb; }
2101
+ .markdown-body blockquote:has(.garden-callout-marker) > p:has(.garden-callout-marker) { display: none; }
2102
+ .markdown-body blockquote:has(.garden-callout-marker) > p:has(.garden-callout-marker) + p { margin-top: 0; }
2103
+ .markdown-body blockquote:has(.garden-callout-marker) > p:last-child { margin-bottom: 0; }
2104
+
2105
+ .markdown-body ul,
2106
+ .markdown-body ol {
2107
+ padding-left: 25px;
2108
+ }
2109
+
2110
+ .markdown-body li {
2111
+ margin: 7px 0;
2112
+ }
2113
+
2114
+ .markdown-body li::marker {
2115
+ color: var(--accent);
2116
+ }
2117
+
2118
+ .markdown-body table {
2119
+ width: 100%;
2120
+ margin: 34px 0;
2121
+ border-collapse: collapse;
2122
+ font-size: 12px;
2123
+ }
2124
+
2125
+ .markdown-body th,
2126
+ .markdown-body td {
2127
+ padding: 11px 13px;
2128
+ border: 1px solid var(--line);
2129
+ text-align: left;
2130
+ }
2131
+
2132
+ .markdown-body th {
2133
+ background: var(--paper-deep);
2134
+ color: var(--ink);
2135
+ }
2136
+
2137
+ .markdown-body pre {
2138
+ position: relative;
2139
+ margin: 32px 0;
2140
+ padding: 34px 20px 20px;
2141
+ overflow-x: auto;
2142
+ background: #202225;
2143
+ color: #e6e6e2;
2144
+ border: 1px solid #303337;
2145
+ font-size: 12px;
2146
+ line-height: 1.7;
2147
+ }
2148
+
2149
+ /* Code blocks stay dark in both site themes; select with a matching palette. */
2150
+ .markdown-body pre::selection,
2151
+ .markdown-body pre *::selection {
2152
+ background: #46556b;
2153
+ color: #ffffff;
2154
+ }
2155
+
2156
+ .markdown-body pre[data-language]::before {
2157
+ content: attr(data-language);
2158
+ position: absolute;
2159
+ top: 8px;
2160
+ right: 12px;
2161
+ color: #8b929c;
2162
+ font-size: 9px;
2163
+ font-weight: 700;
2164
+ letter-spacing: 0.12em;
2165
+ }
2166
+
2167
+ .markdown-body .external-embed {
2168
+ margin: 36px 0;
2169
+ border: 1px solid var(--line-strong);
2170
+ background: var(--card);
2171
+ }
2172
+
2173
+ .external-embed-frame {
2174
+ aspect-ratio: 16 / 9;
2175
+ background: #111;
2176
+ }
2177
+
2178
+ .external-embed-frame iframe {
2179
+ width: 100%;
2180
+ height: 100%;
2181
+ display: block;
2182
+ border: 0;
2183
+ }
2184
+
2185
+ .markdown-body .external-embed figcaption {
2186
+ min-height: 45px;
2187
+ padding: 9px 14px;
2188
+ display: flex;
2189
+ align-items: center;
2190
+ justify-content: space-between;
2191
+ gap: 16px;
2192
+ color: var(--muted);
2193
+ font-size: 10px;
2194
+ }
2195
+
2196
+ .external-embed figcaption span,
2197
+ .external-embed figcaption a {
2198
+ display: inline-flex;
2199
+ align-items: center;
2200
+ gap: 6px;
2201
+ }
2202
+
2203
+ .markdown-body .external-embed figcaption a {
2204
+ color: var(--ink);
2205
+ text-decoration: none;
2206
+ }
2207
+
2208
+ .markdown-body .external-embed-card {
2209
+ min-height: 154px;
2210
+ margin: 36px 0;
2211
+ padding: 22px;
2212
+ display: grid;
2213
+ grid-template-columns: minmax(0, 1fr) 24px;
2214
+ gap: 24px;
2215
+ align-items: center;
2216
+ border: 1px solid var(--line-strong);
2217
+ background: var(--card);
2218
+ color: var(--ink);
2219
+ text-decoration: none;
2220
+ }
2221
+
2222
+ .markdown-body .external-embed-card:has(> img) {
2223
+ grid-template-columns: 170px minmax(0, 1fr) 24px;
2224
+ }
2225
+
2226
+ .external-embed-card > img {
2227
+ width: 170px;
2228
+ height: 108px;
2229
+ object-fit: cover;
2230
+ }
2231
+
2232
+ .external-embed-copy {
2233
+ min-width: 0;
2234
+ }
2235
+
2236
+ .external-embed-copy small {
2237
+ display: flex;
2238
+ align-items: center;
2239
+ gap: 7px;
2240
+ color: var(--accent);
2241
+ font-size: 10px;
2242
+ text-transform: none;
2243
+ }
2244
+
2245
+ .external-embed-copy strong {
2246
+ display: block;
2247
+ margin-top: 10px;
2248
+ font-size: 16px;
2249
+ }
2250
+
2251
+ .external-embed-copy p {
2252
+ margin: 8px 0 0;
2253
+ display: -webkit-box;
2254
+ overflow: hidden;
2255
+ color: var(--muted);
2256
+ font-size: 12px;
2257
+ line-height: 1.65;
2258
+ -webkit-box-orient: vertical;
2259
+ -webkit-line-clamp: 2;
2260
+ }
2261
+
2262
+ .external-embed-error {
2263
+ margin: 32px 0;
2264
+ padding: 18px;
2265
+ border-left: 3px solid var(--accent);
2266
+ background: var(--accent-soft);
2267
+ color: var(--ink-soft);
2268
+ font-size: 12px;
2269
+ }
2270
+
2271
+ .markdown-body .garden-chart {
2272
+ margin: 36px 0;
2273
+ border: 1px solid var(--line-strong);
2274
+ background: var(--card);
2275
+ }
2276
+
2277
+ .garden-chart-frame {
2278
+ width: 100%;
2279
+ min-height: 160px;
2280
+ background: var(--paper);
2281
+ }
2282
+
2283
+ .garden-chart-frame iframe {
2284
+ width: 100%;
2285
+ height: 100%;
2286
+ display: block;
2287
+ border: 0;
2288
+ background: transparent;
2289
+ }
2290
+
2291
+ .markdown-body .garden-doc {
2292
+ overflow: hidden;
2293
+ }
2294
+
2295
+ .garden-doc-launch {
2296
+ display: grid;
2297
+ grid-template-columns: minmax(0, 1fr) auto;
2298
+ align-items: stretch;
2299
+ }
2300
+
2301
+ .garden-doc-toggle {
2302
+ appearance: none;
2303
+ min-width: 0;
2304
+ margin: 0;
2305
+ padding: 14px 4px 14px 16px;
2306
+ display: grid;
2307
+ grid-template-columns: 44px minmax(0, 1fr) auto;
2308
+ gap: 14px;
2309
+ align-items: center;
2310
+ border: 0;
2311
+ background: transparent;
2312
+ color: inherit;
2313
+ text-align: left;
2314
+ cursor: pointer;
2315
+ font: inherit;
2316
+ }
2317
+
2318
+ .garden-doc-toggle:hover {
2319
+ background: var(--paper-deep);
2320
+ }
2321
+
2322
+ .garden-doc-toggle:active {
2323
+ transform: scale(0.995);
2324
+ }
2325
+
2326
+ .garden-doc-toggle:focus-visible {
2327
+ outline: 2px solid var(--accent);
2328
+ outline-offset: -2px;
2329
+ }
2330
+
2331
+ .garden-doc-thumb {
2332
+ position: relative;
2333
+ width: 44px;
2334
+ height: 58px;
2335
+ display: flex;
2336
+ flex-direction: column;
2337
+ justify-content: flex-end;
2338
+ gap: 4px;
2339
+ padding: 12px 7px 8px;
2340
+ border: 1px solid var(--line-strong);
2341
+ background: var(--paper);
2342
+ box-shadow: 2px 2px 0 var(--line);
2343
+ }
2344
+
2345
+ .garden-doc-thumb-bar {
2346
+ position: absolute;
2347
+ top: 7px;
2348
+ left: 7px;
2349
+ width: 46%;
2350
+ height: 3px;
2351
+ background: var(--accent);
2352
+ }
2353
+
2354
+ .garden-doc-thumb-html .garden-doc-thumb-bar {
2355
+ top: 0;
2356
+ left: 0;
2357
+ width: 100%;
2358
+ height: 8px;
2359
+ background: var(--paper-deep);
2360
+ border-bottom: 1px solid var(--line);
2361
+ }
2362
+
2363
+ .garden-doc-thumb-pdf::after {
2364
+ content: "";
2365
+ position: absolute;
2366
+ top: -1px;
2367
+ right: -1px;
2368
+ border-style: solid;
2369
+ border-width: 0 11px 11px 0;
2370
+ border-color: transparent var(--card) var(--line-strong) transparent;
2371
+ }
2372
+
2373
+ .garden-doc-thumb-line {
2374
+ display: block;
2375
+ height: 2px;
2376
+ background: var(--line-strong);
2377
+ }
2378
+
2379
+ .garden-doc-thumb-line-short {
2380
+ width: 64%;
2381
+ }
2382
+
2383
+ .garden-doc-copy {
2384
+ min-width: 0;
2385
+ }
2386
+
2387
+ .garden-doc-copy small {
2388
+ display: flex;
2389
+ align-items: center;
2390
+ gap: 6px;
2391
+ color: var(--accent);
2392
+ font-size: 10px;
2393
+ }
2394
+
2395
+ .garden-doc-copy strong {
2396
+ display: block;
2397
+ margin-top: 6px;
2398
+ color: var(--ink);
2399
+ font-size: 14px;
2400
+ font-weight: 600;
2401
+ line-height: 1.45;
2402
+ }
2403
+
2404
+ .garden-doc-action {
2405
+ display: inline-flex;
2406
+ align-items: center;
2407
+ gap: 4px;
2408
+ color: var(--ink);
2409
+ font-size: 12px;
2410
+ white-space: nowrap;
2411
+ }
2412
+
2413
+ .garden-doc-caret {
2414
+ transition: transform 180ms ease-out;
2415
+ }
2416
+
2417
+ .garden-doc[data-expanded="true"] .garden-doc-caret {
2418
+ transform: rotate(180deg);
2419
+ }
2420
+
2421
+ .garden-doc-open {
2422
+ display: inline-flex;
2423
+ align-items: center;
2424
+ align-self: center;
2425
+ gap: 4px;
2426
+ padding: 0 16px 0 8px;
2427
+ color: var(--ink);
2428
+ font-size: 12px;
2429
+ text-decoration: none;
2430
+ white-space: nowrap;
2431
+ }
2432
+
2433
+ .garden-doc-pane {
2434
+ display: grid;
2435
+ grid-template-rows: 0fr;
2436
+ }
2437
+
2438
+ .garden-doc[data-expanded="true"] .garden-doc-pane {
2439
+ grid-template-rows: auto;
2440
+ }
2441
+
2442
+ .garden-doc-pane-inner {
2443
+ overflow: hidden;
2444
+ border-top: 0 solid var(--line);
2445
+ }
2446
+
2447
+ .garden-doc[data-expanded="false"] .garden-doc-pane-inner {
2448
+ min-height: 0;
2449
+ }
2450
+
2451
+ .garden-doc[data-expanded="true"] .garden-doc-pane-inner {
2452
+ min-height: min-content;
2453
+ border-top-width: 1px;
2454
+ }
2455
+
2456
+ .garden-doc .garden-chart-frame {
2457
+ min-height: 0;
2458
+ height: 64vh;
2459
+ }
2460
+
2461
+ .garden-doc-pdf .garden-chart-frame {
2462
+ height: 72vh;
2463
+ }
2464
+
2465
+ .markdown-body .garden-chart figcaption {
2466
+ min-height: 45px;
2467
+ padding: 9px 14px;
2468
+ display: flex;
2469
+ align-items: center;
2470
+ justify-content: space-between;
2471
+ gap: 16px;
2472
+ color: var(--muted);
2473
+ font-size: 10px;
2474
+ }
2475
+
2476
+ .garden-chart figcaption span,
2477
+ .garden-chart figcaption a {
2478
+ display: inline-flex;
2479
+ align-items: center;
2480
+ gap: 6px;
2481
+ }
2482
+
2483
+ .markdown-body .garden-chart figcaption a {
2484
+ color: var(--ink);
2485
+ text-decoration: none;
2486
+ white-space: nowrap;
2487
+ }
2488
+
2489
+ .markdown-body :not(pre) > code {
2490
+ padding: 2px 5px;
2491
+ background: var(--accent-soft);
2492
+ color: var(--accent);
2493
+ font-size: 0.9em;
2494
+ }
2495
+
2496
+ /* Keep inline-code backgrounds above the continuous underline. */
2497
+ .markdown-body u code {
2498
+ padding-block: 0;
2499
+ }
2500
+
2501
+ .markdown-body img {
2502
+ max-width: 100%;
2503
+ height: auto;
2504
+ margin: 34px auto;
2505
+ display: block;
2506
+ }
2507
+
2508
+ .markdown-body details {
2509
+ margin: 34px 0;
2510
+ padding: 16px 18px;
2511
+ background: var(--paper-deep);
2512
+ border: 1px solid var(--line);
2513
+ }
2514
+
2515
+ .markdown-body summary {
2516
+ cursor: pointer;
2517
+ color: var(--ink);
2518
+ font-weight: 700;
2519
+ }
2520
+
2521
+ .markdown-body .mermaid-block {
2522
+ margin: 34px 0;
2523
+ background: var(--card);
2524
+ border: 1px solid var(--line);
2525
+ }
2526
+
2527
+ .mermaid-toolbar {
2528
+ min-height: 46px;
2529
+ padding: 8px 12px 8px 16px;
2530
+ display: flex;
2531
+ align-items: center;
2532
+ justify-content: space-between;
2533
+ gap: 16px;
2534
+ border-bottom: 1px solid var(--line);
2535
+ color: var(--muted);
2536
+ font-size: 10px;
2537
+ }
2538
+
2539
+ .mermaid-view-switcher {
2540
+ display: flex;
2541
+ align-items: center;
2542
+ gap: 4px;
2543
+ }
2544
+
2545
+ .mermaid-view-switcher button {
2546
+ padding: 4px 7px;
2547
+ background: transparent;
2548
+ color: var(--muted);
2549
+ border: 1px solid transparent;
2550
+ font-size: 9px;
2551
+ }
2552
+
2553
+ .mermaid-view-switcher button:hover {
2554
+ color: var(--ink);
2555
+ border-color: var(--line-strong);
2556
+ }
2557
+
2558
+ .mermaid-view-switcher button[aria-selected="true"] {
2559
+ background: var(--ink);
2560
+ color: var(--paper);
2561
+ border-color: var(--ink);
2562
+ }
2563
+
2564
+ .mermaid-canvas {
2565
+ min-height: 210px;
2566
+ padding: 22px;
2567
+ display: grid;
2568
+ place-items: center;
2569
+ overflow-x: auto;
2570
+ text-align: center;
2571
+ }
2572
+
2573
+ .markdown-body .mermaid-canvas svg {
2574
+ width: 100% !important;
2575
+ max-width: 100%;
2576
+ max-height: 360px;
2577
+ height: auto;
2578
+ }
2579
+
2580
+ .mermaid-svg {
2581
+ width: 100%;
2582
+ }
2583
+
2584
+ .markdown-body .mermaid-code {
2585
+ min-height: 210px;
2586
+ margin: 0;
2587
+ border: 0;
2588
+ border-radius: 0;
2589
+ white-space: pre;
2590
+ }
2591
+
2592
+ .mermaid-loading,
2593
+ .mermaid-error {
2594
+ color: var(--faint);
2595
+ font-size: 10px;
2596
+ }
2597
+
2598
+ .mermaid-error {
2599
+ color: var(--accent);
2600
+ }
2601
+
2602
+ .markdown-body hr {
2603
+ margin: 54px 0;
2604
+ border: 0;
2605
+ border-top: 1px solid var(--line);
2606
+ }
2607
+
2608
+ .markdown-body input[type="checkbox"] {
2609
+ accent-color: var(--accent);
2610
+ }
2611
+
2612
+ /* KaTeX glyphs can extend beyond their line boxes (sum limits, accents). */
2613
+ .markdown-body .katex-display {
2614
+ margin: 34px 0;
2615
+ padding: 0.75em 0.25em;
2616
+ overflow-x: auto;
2617
+ overflow-y: hidden;
2618
+ }
2619
+
2620
+ .markdown-body .katex {
2621
+ overflow-wrap: normal;
2622
+ }
2623
+
2624
+ .markdown-body .footnotes {
2625
+ margin-top: 64px;
2626
+ padding-top: 22px;
2627
+ border-top: 1px solid var(--line);
2628
+ color: var(--muted);
2629
+ font-size: 11px;
2630
+ }
2631
+
2632
+ .hljs-keyword,
2633
+ .hljs-selector-tag,
2634
+ .hljs-literal {
2635
+ color: #ff7690;
2636
+ }
2637
+
2638
+ .hljs-string,
2639
+ .hljs-title,
2640
+ .hljs-section {
2641
+ color: #b7d985;
2642
+ }
2643
+
2644
+ .hljs-number,
2645
+ .hljs-type {
2646
+ color: #e9b96e;
2647
+ }
2648
+
2649
+ .hljs-comment,
2650
+ .hljs-quote {
2651
+ color: #8b929c;
2652
+ font-style: italic;
2653
+ }
2654
+
2655
+ .hljs-built_in,
2656
+ .hljs-builtin-name,
2657
+ .hljs-attribute,
2658
+ .hljs-selector-attr {
2659
+ color: #7cc7d9;
2660
+ }
2661
+
2662
+ .hljs-function,
2663
+ .hljs-title.function_,
2664
+ .hljs-property {
2665
+ color: #a9c7ff;
2666
+ }
2667
+
2668
+ .hljs-variable,
2669
+ .hljs-template-variable,
2670
+ .hljs-params {
2671
+ color: #e6e6e2;
2672
+ }
2673
+
2674
+ .hljs-meta,
2675
+ .hljs-symbol,
2676
+ .hljs-bullet {
2677
+ color: #c7a0e8;
2678
+ }
2679
+
2680
+ .hljs-operator,
2681
+ .hljs-punctuation {
2682
+ color: #b7bdc5;
2683
+ }
2684
+
2685
+ .hljs-comment {
2686
+ color: #7f8790;
2687
+ }
2688
+
2689
+ .article-tags {
2690
+ display: flex;
2691
+ flex-wrap: wrap;
2692
+ gap: 8px;
2693
+ margin: 68px 0 24px;
2694
+ }
2695
+
2696
+ .article-tags span {
2697
+ padding: 4px 8px;
2698
+ background: var(--paper-deep);
2699
+ color: var(--muted);
2700
+ font-size: 10px;
2701
+ }
2702
+
2703
+ .webmentions,
2704
+ .comments {
2705
+ margin-top: 78px;
2706
+ padding-top: 30px;
2707
+ border-top: 1px solid var(--line-strong);
2708
+ }
2709
+
2710
+ .webmention-title,
2711
+ .comments-heading {
2712
+ display: flex;
2713
+ gap: 12px;
2714
+ align-items: flex-start;
2715
+ }
2716
+
2717
+ .webmention-title > svg,
2718
+ .comments-heading > svg {
2719
+ margin-top: 4px;
2720
+ color: var(--accent);
2721
+ }
2722
+
2723
+ .webmention-title h2,
2724
+ .comments-heading h2 {
2725
+ margin: 0;
2726
+ font-size: 18px;
2727
+ }
2728
+
2729
+ .webmention-title p,
2730
+ .comments-heading p {
2731
+ margin: 6px 0 0;
2732
+ color: var(--muted);
2733
+ font-size: 10px;
2734
+ }
2735
+
2736
+ .integration-notice {
2737
+ margin-top: 22px;
2738
+ padding: 20px;
2739
+ display: flex;
2740
+ gap: 13px;
2741
+ background: var(--paper-deep);
2742
+ color: var(--muted);
2743
+ }
2744
+
2745
+ .integration-notice svg {
2746
+ flex: 0 0 auto;
2747
+ color: var(--faint);
2748
+ }
2749
+
2750
+ .integration-notice p {
2751
+ margin: 0;
2752
+ font-size: 11px;
2753
+ }
2754
+
2755
+ .integration-status {
2756
+ margin: 22px 0 0;
2757
+ color: var(--muted);
2758
+ font-size: 11px;
2759
+ }
2760
+
2761
+ .webmention-reactions {
2762
+ margin-top: 24px;
2763
+ display: grid;
2764
+ gap: 12px;
2765
+ }
2766
+
2767
+ .webmention-reactions > span {
2768
+ display: inline-flex;
2769
+ align-items: center;
2770
+ gap: 6px;
2771
+ color: var(--muted);
2772
+ font-size: 10px;
2773
+ }
2774
+
2775
+ .webmention-reactions > span svg {
2776
+ color: var(--accent);
2777
+ }
2778
+
2779
+ .webmention-facepile {
2780
+ display: flex;
2781
+ flex-wrap: wrap;
2782
+ gap: 6px;
2783
+ }
2784
+
2785
+ .webmention-facepile a,
2786
+ .webmention-facepile img,
2787
+ .webmention-facepile a > span {
2788
+ width: 32px;
2789
+ height: 32px;
2790
+ border-radius: 50%;
2791
+ }
2792
+
2793
+ .webmention-facepile a {
2794
+ display: grid;
2795
+ place-items: center;
2796
+ overflow: hidden;
2797
+ background: var(--paper-deep);
2798
+ border: 1px solid var(--line);
2799
+ }
2800
+
2801
+ .webmention-facepile img {
2802
+ display: block;
2803
+ object-fit: cover;
2804
+ }
2805
+
2806
+ .webmention-facepile a > span {
2807
+ display: grid;
2808
+ place-items: center;
2809
+ color: var(--muted);
2810
+ font-size: 11px;
2811
+ }
2812
+
2813
+ .webmention-list {
2814
+ margin-top: 26px;
2815
+ border-top: 1px solid var(--line);
2816
+ }
2817
+
2818
+ .webmention-list article {
2819
+ padding: 18px 0;
2820
+ border-bottom: 1px solid var(--line);
2821
+ }
2822
+
2823
+ .webmention-list header {
2824
+ display: flex;
2825
+ justify-content: space-between;
2826
+ gap: 16px;
2827
+ }
2828
+
2829
+ .webmention-list strong {
2830
+ font-size: 12px;
2831
+ }
2832
+
2833
+ .webmention-list time {
2834
+ color: var(--faint);
2835
+ font-size: 9px;
2836
+ }
2837
+
2838
+ .webmention-list p {
2839
+ margin: 9px 0;
2840
+ color: var(--ink-soft);
2841
+ font-size: 12px;
2842
+ }
2843
+
2844
+ .webmention-list article > a {
2845
+ display: inline-flex;
2846
+ align-items: center;
2847
+ gap: 5px;
2848
+ color: var(--muted);
2849
+ font-size: 9px;
2850
+ }
2851
+
2852
+ .giscus-container {
2853
+ min-height: 180px;
2854
+ margin-top: 24px;
2855
+ }
2856
+
2857
+ .giscus-container iframe {
2858
+ width: 100%;
2859
+ color-scheme: light dark;
2860
+ }
2861
+
2862
+ .comments .integration-notice {
2863
+ margin-bottom: 0;
2864
+ }
2865
+
2866
+ .column-reading-page {
2867
+ --column-sidebar-width: 220px;
2868
+ width: min(1280px, calc(100% - 48px));
2869
+ margin: 0 auto;
2870
+ padding: 58px 0 120px;
2871
+ display: grid;
2872
+ grid-template-columns: var(--column-sidebar-width) minmax(0, 700px) var(--column-sidebar-width);
2873
+ gap: 54px;
2874
+ justify-content: center;
2875
+ }
2876
+
2877
+ .series-nav {
2878
+ position: sticky;
2879
+ top: 32px;
2880
+ align-self: start;
2881
+ padding-right: 18px;
2882
+ border-right: 1px solid var(--line);
2883
+ }
2884
+
2885
+ .series-nav > p {
2886
+ margin: 35px 0 7px;
2887
+ color: var(--accent);
2888
+ font-size: 9px;
2889
+ font-weight: 700;
2890
+ }
2891
+
2892
+ .series-nav h2 {
2893
+ margin: 0 0 22px;
2894
+ font-size: 18px;
2895
+ letter-spacing: -0.04em;
2896
+ }
2897
+
2898
+ .series-nav ol {
2899
+ margin: 0;
2900
+ padding: 0;
2901
+ list-style: none;
2902
+ }
2903
+
2904
+ .series-nav li {
2905
+ position: relative;
2906
+ margin: 0;
2907
+ border-top: 1px solid var(--line);
2908
+ }
2909
+
2910
+ .series-nav li:last-child {
2911
+ border-bottom: 1px solid var(--line);
2912
+ }
2913
+
2914
+ .series-nav li a {
2915
+ display: block;
2916
+ padding: 12px 5px;
2917
+ color: var(--muted);
2918
+ font-size: 10px;
2919
+ line-height: 1.55;
2920
+ }
2921
+
2922
+ .series-nav li.active a {
2923
+ padding-left: 11px;
2924
+ color: var(--ink);
2925
+ font-weight: 700;
2926
+ border-left: 2px solid var(--accent);
2927
+ }
2928
+
2929
+ .series-nav > small {
2930
+ display: block;
2931
+ margin-top: 18px;
2932
+ color: var(--faint);
2933
+ font-size: 9px;
2934
+ }
2935
+
2936
+ .series-article .article-header {
2937
+ padding-top: 40px;
2938
+ }
2939
+
2940
+ .column-reading-page > .toc {
2941
+ margin-top: 96px;
2942
+ }
2943
+
2944
+ .next-entry {
2945
+ margin-top: 78px;
2946
+ padding: 22px;
2947
+ display: grid;
2948
+ grid-template-columns: 1fr auto;
2949
+ align-items: center;
2950
+ background: var(--paper-deep);
2951
+ border: 1px solid var(--line);
2952
+ }
2953
+
2954
+ .next-entry span {
2955
+ grid-column: 1;
2956
+ color: var(--accent);
2957
+ font-size: 9px;
2958
+ }
2959
+
2960
+ .next-entry strong {
2961
+ grid-column: 1;
2962
+ margin-top: 5px;
2963
+ font-size: 13px;
2964
+ }
2965
+
2966
+ .next-entry svg {
2967
+ grid-column: 2;
2968
+ grid-row: 1 / 3;
2969
+ }
2970
+
2971
+ .about-page {
2972
+ padding-bottom: 120px;
2973
+ }
2974
+
2975
+ .about-grid {
2976
+ display: grid;
2977
+ grid-template-columns: 1.5fr 0.75fr;
2978
+ gap: 64px;
2979
+ }
2980
+
2981
+ .about-copy h2 {
2982
+ margin: 0 0 24px;
2983
+ font-size: 23px;
2984
+ }
2985
+
2986
+ .about-copy p {
2987
+ color: var(--ink-soft);
2988
+ line-height: 1.95;
2989
+ }
2990
+
2991
+ .about-copy blockquote {
2992
+ margin: 34px 0 0;
2993
+ padding-left: 18px;
2994
+ border-left: 3px solid var(--accent);
2995
+ color: var(--muted);
2996
+ }
2997
+
2998
+ .about-facts {
2999
+ padding: 24px;
3000
+ background: var(--paper-deep);
3001
+ }
3002
+
3003
+ .about-facts > span {
3004
+ color: var(--accent);
3005
+ font-size: 10px;
3006
+ font-weight: 700;
3007
+ }
3008
+
3009
+ .about-facts ul {
3010
+ margin: 17px 0 28px;
3011
+ padding-left: 18px;
3012
+ color: var(--muted);
3013
+ font-size: 11px;
3014
+ }
3015
+
3016
+ .about-facts li {
3017
+ margin: 9px 0;
3018
+ }
3019
+
3020
+ .about-facts li::marker {
3021
+ color: var(--accent);
3022
+ }
3023
+
3024
+ .about-facts a {
3025
+ display: inline-flex;
3026
+ align-items: center;
3027
+ gap: 7px;
3028
+ font-size: 11px;
3029
+ font-weight: 700;
3030
+ }
3031
+
3032
+ .github-profile {
3033
+ margin-top: 84px;
3034
+ border-top: 1px solid var(--line-strong);
3035
+ }
3036
+
3037
+ .github-overview {
3038
+ min-height: 184px;
3039
+ padding: 32px 0;
3040
+ display: grid;
3041
+ grid-template-columns: 112px minmax(0, 1fr) auto;
3042
+ gap: 28px;
3043
+ align-items: center;
3044
+ }
3045
+
3046
+ .github-overview > img {
3047
+ width: 112px;
3048
+ height: 112px;
3049
+ object-fit: cover;
3050
+ border: 1px solid var(--line-strong);
3051
+ }
3052
+
3053
+ .github-identity .eyebrow {
3054
+ margin-bottom: 7px;
3055
+ display: flex;
3056
+ align-items: center;
3057
+ gap: 7px;
3058
+ font-size: 10px;
3059
+ }
3060
+
3061
+ .github-identity h2 {
3062
+ margin: 0;
3063
+ font-size: 29px;
3064
+ letter-spacing: -0.045em;
3065
+ }
3066
+
3067
+ .github-identity > p {
3068
+ max-width: 620px;
3069
+ margin: 8px 0 0;
3070
+ color: var(--muted);
3071
+ font-size: 12px;
3072
+ }
3073
+
3074
+ .github-location {
3075
+ margin-top: 10px;
3076
+ display: inline-flex;
3077
+ align-items: center;
3078
+ gap: 6px;
3079
+ color: var(--faint);
3080
+ font-size: 10px;
3081
+ }
3082
+
3083
+ .github-overview > a {
3084
+ display: inline-flex;
3085
+ align-items: center;
3086
+ gap: 7px;
3087
+ padding-bottom: 3px;
3088
+ border-bottom: 1px solid var(--ink);
3089
+ font-size: 11px;
3090
+ }
3091
+
3092
+ .github-overview > a:hover,
3093
+ .github-overview > a:focus-visible {
3094
+ border-color: var(--accent);
3095
+ color: var(--accent);
3096
+ }
3097
+
3098
+ .github-metrics {
3099
+ margin: 0;
3100
+ display: grid;
3101
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3102
+ border-top: 1px solid var(--line-strong);
3103
+ border-bottom: 1px solid var(--line-strong);
3104
+ }
3105
+
3106
+ .github-metrics > div {
3107
+ min-height: 142px;
3108
+ padding: 24px;
3109
+ display: grid;
3110
+ grid-template-columns: 26px minmax(0, 1fr);
3111
+ align-content: center;
3112
+ border-left: 1px solid var(--line-strong);
3113
+ }
3114
+
3115
+ .github-metrics > div:first-child {
3116
+ border-left: 0;
3117
+ }
3118
+
3119
+ .github-metrics svg {
3120
+ grid-row: 1 / 3;
3121
+ color: var(--accent);
3122
+ }
3123
+
3124
+ .github-metrics dt {
3125
+ color: var(--muted);
3126
+ font-size: 10px;
3127
+ }
3128
+
3129
+ .github-metrics dd {
3130
+ margin: 5px 0 0;
3131
+ font-size: 29px;
3132
+ font-weight: 700;
3133
+ line-height: 1;
3134
+ letter-spacing: -0.05em;
3135
+ }
3136
+
3137
+ .github-pinned,
3138
+ .github-contributions,
3139
+ .github-activity {
3140
+ padding: 58px 0;
3141
+ border-bottom: 1px solid var(--line-strong);
3142
+ }
3143
+
3144
+ .github-pinned > header,
3145
+ .github-contributions > header {
3146
+ margin-bottom: 25px;
3147
+ display: flex;
3148
+ align-items: flex-end;
3149
+ justify-content: space-between;
3150
+ gap: 24px;
3151
+ }
3152
+
3153
+ .github-pinned .eyebrow,
3154
+ .github-contributions .eyebrow,
3155
+ .github-activity .eyebrow {
3156
+ margin-bottom: 8px;
3157
+ font-size: 10px;
3158
+ }
3159
+
3160
+ .github-pinned h3,
3161
+ .github-contributions h3,
3162
+ .github-activity h3 {
3163
+ margin: 0;
3164
+ font-size: clamp(22px, 2.7vw, 30px);
3165
+ letter-spacing: -0.045em;
3166
+ }
3167
+
3168
+ .github-pinned > header > svg {
3169
+ color: var(--accent);
3170
+ }
3171
+
3172
+ .github-repository-grid {
3173
+ display: grid;
3174
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3175
+ border-top: 1px solid var(--line);
3176
+ border-left: 1px solid var(--line);
3177
+ }
3178
+
3179
+ .github-repository-grid > a {
3180
+ min-height: 178px;
3181
+ padding: 22px;
3182
+ display: flex;
3183
+ flex-direction: column;
3184
+ border-right: 1px solid var(--line);
3185
+ border-bottom: 1px solid var(--line);
3186
+ }
3187
+
3188
+ .github-repository-grid > a:hover,
3189
+ .github-repository-grid > a:focus-visible {
3190
+ background: var(--card);
3191
+ }
3192
+
3193
+ .github-repository-grid strong {
3194
+ font-size: 15px;
3195
+ text-decoration: underline;
3196
+ text-decoration-color: var(--accent);
3197
+ text-underline-offset: 4px;
3198
+ }
3199
+
3200
+ .github-repository-grid p {
3201
+ margin: 13px 0 22px;
3202
+ display: -webkit-box;
3203
+ overflow: hidden;
3204
+ color: var(--muted);
3205
+ font-size: 11px;
3206
+ line-height: 1.65;
3207
+ -webkit-box-orient: vertical;
3208
+ -webkit-line-clamp: 2;
3209
+ }
3210
+
3211
+ .github-repository-grid > a > span {
3212
+ margin-top: auto;
3213
+ display: flex;
3214
+ align-items: center;
3215
+ gap: 7px;
3216
+ color: var(--muted);
3217
+ font-size: 10px;
3218
+ }
3219
+
3220
+ .github-repository-grid i {
3221
+ width: 9px;
3222
+ height: 9px;
3223
+ border-radius: 50%;
3224
+ background: var(--line-strong);
3225
+ }
3226
+
3227
+ .github-repository-grid small {
3228
+ margin-left: auto;
3229
+ display: inline-flex;
3230
+ align-items: center;
3231
+ gap: 4px;
3232
+ font-size: 10px;
3233
+ }
3234
+
3235
+ .github-contributions > header > strong {
3236
+ color: var(--muted);
3237
+ font-size: 11px;
3238
+ }
3239
+
3240
+ .github-calendar {
3241
+ min-width: 720px;
3242
+ width: max-content;
3243
+ padding: 21px;
3244
+ display: grid;
3245
+ grid-template-rows: repeat(7, 10px);
3246
+ grid-auto-flow: column;
3247
+ grid-auto-columns: 10px;
3248
+ gap: 3px;
3249
+ overflow: hidden;
3250
+ border: 1px solid var(--line);
3251
+ background: var(--card);
3252
+ }
3253
+
3254
+ .github-contributions:has(.github-calendar) {
3255
+ overflow-x: auto;
3256
+ }
3257
+
3258
+ .github-contribution-day {
3259
+ width: 10px;
3260
+ height: 10px;
3261
+ background: var(--paper-deep);
3262
+ }
3263
+
3264
+ .github-contribution-day.level-first-quartile {
3265
+ background: color-mix(in srgb, var(--accent) 28%, var(--paper));
3266
+ }
3267
+
3268
+ .github-contribution-day.level-second-quartile {
3269
+ background: color-mix(in srgb, var(--accent) 48%, var(--paper));
3270
+ }
3271
+
3272
+ .github-contribution-day.level-third-quartile {
3273
+ background: color-mix(in srgb, var(--accent) 70%, var(--paper));
3274
+ }
3275
+
3276
+ .github-contribution-day.level-fourth-quartile {
3277
+ background: var(--accent);
3278
+ }
3279
+
3280
+ .github-activity {
3281
+ display: grid;
3282
+ grid-template-columns: minmax(230px, 0.72fr) minmax(0, 1.28fr);
3283
+ gap: 64px;
3284
+ }
3285
+
3286
+ .github-activity ol {
3287
+ margin: 0;
3288
+ padding: 0;
3289
+ border-top: 1px solid var(--line);
3290
+ list-style: none;
3291
+ }
3292
+
3293
+ .github-activity li {
3294
+ display: grid;
3295
+ grid-template-columns: 60px minmax(0, 1fr);
3296
+ border-bottom: 1px solid var(--line);
3297
+ }
3298
+
3299
+ .github-activity time {
3300
+ padding: 15px 0;
3301
+ color: var(--faint);
3302
+ font-size: 10px;
3303
+ }
3304
+
3305
+ .github-activity li > a {
3306
+ padding: 13px 0;
3307
+ display: grid;
3308
+ grid-template-columns: minmax(0, 1fr) 18px;
3309
+ }
3310
+
3311
+ .github-activity li > a:hover,
3312
+ .github-activity li > a:focus-visible {
3313
+ color: var(--accent);
3314
+ }
3315
+
3316
+ .github-activity li span {
3317
+ color: var(--muted);
3318
+ font-size: 10px;
3319
+ }
3320
+
3321
+ .github-activity li strong {
3322
+ grid-column: 1;
3323
+ margin-top: 3px;
3324
+ overflow: hidden;
3325
+ font-size: 12px;
3326
+ text-overflow: ellipsis;
3327
+ white-space: nowrap;
3328
+ }
3329
+
3330
+ .github-activity li svg {
3331
+ grid-column: 2;
3332
+ grid-row: 1 / 3;
3333
+ align-self: center;
3334
+ }
3335
+
3336
+ .github-data-note {
3337
+ margin: 0;
3338
+ padding: 24px;
3339
+ border: 1px dashed var(--line-strong);
3340
+ color: var(--muted);
3341
+ font-size: 12px;
3342
+ }
3343
+
3344
+ .search-backdrop {
3345
+ position: fixed;
3346
+ inset: 0;
3347
+ z-index: 90;
3348
+ padding: 10vh 20px 20px;
3349
+ display: flex;
3350
+ justify-content: center;
3351
+ align-items: flex-start;
3352
+ background: rgb(20 21 22 / 72%);
3353
+ backdrop-filter: blur(4px);
3354
+ }
3355
+
3356
+ .search-panel {
3357
+ width: min(640px, 100%);
3358
+ max-height: 78vh;
3359
+ overflow: hidden;
3360
+ background: var(--card);
3361
+ border: 1px solid var(--line-strong);
3362
+ box-shadow: 0 24px 80px rgb(0 0 0 / 25%);
3363
+ }
3364
+
3365
+ .search-input-wrap {
3366
+ min-height: 58px;
3367
+ padding: 0 16px;
3368
+ display: grid;
3369
+ grid-template-columns: 24px 1fr 30px;
3370
+ align-items: center;
3371
+ gap: 8px;
3372
+ border-bottom: 1px solid var(--line);
3373
+ }
3374
+
3375
+ .search-input-wrap input {
3376
+ width: 100%;
3377
+ height: 57px;
3378
+ border: 0;
3379
+ background: transparent;
3380
+ outline: 0;
3381
+ font-size: 13px;
3382
+ }
3383
+
3384
+ .search-input-wrap button {
3385
+ padding: 5px;
3386
+ display: grid;
3387
+ place-items: center;
3388
+ background: transparent;
3389
+ border: 0;
3390
+ }
3391
+
3392
+ .search-results {
3393
+ max-height: 58vh;
3394
+ padding: 12px;
3395
+ overflow-y: auto;
3396
+ }
3397
+
3398
+ .search-label {
3399
+ margin: 5px 8px 9px;
3400
+ color: var(--faint);
3401
+ font-size: 9px;
3402
+ }
3403
+
3404
+ .search-result {
3405
+ padding: 12px;
3406
+ display: grid;
3407
+ grid-template-columns: 88px 1fr;
3408
+ gap: 2px 10px;
3409
+ border-top: 1px solid var(--line);
3410
+ }
3411
+
3412
+ .search-result:hover,
3413
+ .search-result:focus-visible,
3414
+ .search-result.active {
3415
+ background: var(--paper-deep);
3416
+ }
3417
+
3418
+ .search-result > span {
3419
+ grid-row: 1 / 3;
3420
+ color: var(--accent);
3421
+ font-size: 9px;
3422
+ }
3423
+
3424
+ .search-result strong {
3425
+ font-size: 12px;
3426
+ }
3427
+
3428
+ .search-result small {
3429
+ color: var(--muted);
3430
+ overflow: hidden;
3431
+ font-size: 10px;
3432
+ text-overflow: ellipsis;
3433
+ white-space: nowrap;
3434
+ }
3435
+
3436
+ .search-match {
3437
+ padding: 0 1px;
3438
+ background: var(--selection);
3439
+ color: var(--ink);
3440
+ box-decoration-break: clone;
3441
+ -webkit-box-decoration-break: clone;
3442
+ }
3443
+
3444
+ .empty-state {
3445
+ padding: 30px 12px;
3446
+ color: var(--muted);
3447
+ font-size: 11px;
3448
+ text-align: center;
3449
+ }
3450
+
3451
+ .search-footer {
3452
+ padding: 9px 16px;
3453
+ display: flex;
3454
+ justify-content: space-between;
3455
+ background: var(--paper-deep);
3456
+ color: var(--faint);
3457
+ font-size: 9px;
3458
+ }
3459
+
3460
+ .site-footer {
3461
+ border-top: 1px solid var(--line);
3462
+ }
3463
+
3464
+ .footer-inner {
3465
+ width: min(var(--wide), calc(100% - 48px));
3466
+ min-height: 110px;
3467
+ margin: 0 auto;
3468
+ display: flex;
3469
+ align-items: center;
3470
+ justify-content: space-between;
3471
+ gap: 20px;
3472
+ color: var(--muted);
3473
+ font-size: 10px;
3474
+ }
3475
+
3476
+ .footer-inner div {
3477
+ display: flex;
3478
+ gap: 18px;
3479
+ }
3480
+
3481
+ .footer-inner a {
3482
+ display: inline-flex;
3483
+ align-items: center;
3484
+ gap: 5px;
3485
+ }
3486
+
3487
+ .footer-inner a:hover {
3488
+ color: var(--accent);
3489
+ }
3490
+
3491
+ .footer-framework a {
3492
+ text-decoration: underline;
3493
+ text-decoration-color: var(--line-strong);
3494
+ text-underline-offset: 3px;
3495
+ }
3496
+
3497
+ @media (max-width: 1080px) {
3498
+ .post-reading-page {
3499
+ --toc-width: 210px;
3500
+ --reading-gap: 42px;
3501
+ width: min(1180px, calc(100% - 80px));
3502
+ }
3503
+
3504
+ .column-reading-page {
3505
+ --column-sidebar-width: 165px;
3506
+ grid-template-columns: var(--column-sidebar-width) minmax(0, 1fr) var(--column-sidebar-width);
3507
+ gap: 26px;
3508
+ }
3509
+ }
3510
+
3511
+ @media (max-width: 1319px) {
3512
+ .garden-page-toc {
3513
+ display: none;
3514
+ }
3515
+ }
3516
+
3517
+ @media (max-width: 900px) {
3518
+ .header-inner {
3519
+ grid-template-columns: 1fr auto;
3520
+ min-height: 96px;
3521
+ }
3522
+
3523
+ .main-nav {
3524
+ grid-column: 1 / -1;
3525
+ grid-row: 2;
3526
+ margin-top: -20px;
3527
+ padding-bottom: 14px;
3528
+ overflow-x: auto;
3529
+ }
3530
+
3531
+ .main-nav a:first-child {
3532
+ padding-left: 0;
3533
+ }
3534
+
3535
+ .header-actions {
3536
+ grid-column: 2;
3537
+ grid-row: 1;
3538
+ }
3539
+
3540
+ .reading-page {
3541
+ grid-template-columns: minmax(0, var(--content));
3542
+ }
3543
+
3544
+ .garden-page-toc {
3545
+ position: static;
3546
+ display: block;
3547
+ width: auto;
3548
+ max-height: none;
3549
+ overflow: visible;
3550
+ }
3551
+
3552
+ .toc-mobile-trigger {
3553
+ position: fixed;
3554
+ right: calc(16px + env(safe-area-inset-right));
3555
+ bottom: calc(14px + env(safe-area-inset-bottom));
3556
+ z-index: 70;
3557
+ min-height: 42px;
3558
+ padding: 0 15px;
3559
+ display: inline-flex;
3560
+ align-items: center;
3561
+ gap: 8px;
3562
+ border: 1px solid color-mix(in srgb, var(--paper) 15%, transparent);
3563
+ border-radius: 999px;
3564
+ background: color-mix(in srgb, var(--ink) 94%, transparent);
3565
+ box-shadow: 0 10px 30px rgb(0 0 0 / 20%);
3566
+ color: var(--paper);
3567
+ font-size: 12px;
3568
+ font-weight: 700;
3569
+ letter-spacing: 0.05em;
3570
+ backdrop-filter: blur(12px);
3571
+ -webkit-backdrop-filter: blur(12px);
3572
+ touch-action: manipulation;
3573
+ transition: opacity 160ms ease, transform 160ms ease, visibility 0s;
3574
+ }
3575
+
3576
+ .toc-mobile-trigger:hover,
3577
+ .toc-mobile-trigger:focus-visible {
3578
+ transform: translateY(-2px);
3579
+ }
3580
+
3581
+ .toc-mobile-trigger:focus-visible,
3582
+ .toc-mobile-close:focus-visible {
3583
+ outline: 2px solid var(--accent);
3584
+ outline-offset: 3px;
3585
+ }
3586
+
3587
+ .toc-mobile-trigger[data-mobile-open="true"] {
3588
+ opacity: 0;
3589
+ visibility: hidden;
3590
+ pointer-events: none;
3591
+ transform: translateY(8px);
3592
+ }
3593
+
3594
+ .toc-mobile-backdrop {
3595
+ position: fixed;
3596
+ inset: 0;
3597
+ z-index: 78;
3598
+ width: 100%;
3599
+ height: 100%;
3600
+ padding: 0;
3601
+ display: block;
3602
+ border: 0;
3603
+ background: rgb(0 0 0 / 38%);
3604
+ opacity: 0;
3605
+ visibility: hidden;
3606
+ pointer-events: none;
3607
+ transition: opacity 180ms ease, visibility 0s linear 180ms;
3608
+ }
3609
+
3610
+ .toc-mobile-backdrop[data-mobile-open="true"] {
3611
+ opacity: 1;
3612
+ visibility: visible;
3613
+ pointer-events: auto;
3614
+ transition: opacity 180ms ease, visibility 0s;
3615
+ }
3616
+
3617
+ .reading-page > .toc,
3618
+ .post-reading-page .article-reading-layout .toc,
3619
+ .column-reading-page > .toc,
3620
+ .garden-page-toc .toc {
3621
+ position: fixed;
3622
+ inset: auto 0 0;
3623
+ z-index: 80;
3624
+ width: 100%;
3625
+ max-height: min(72vh, 560px);
3626
+ max-height: min(72dvh, 560px);
3627
+ margin: 0;
3628
+ padding: 0 24px calc(18px + env(safe-area-inset-bottom));
3629
+ display: flex;
3630
+ border: 0;
3631
+ border-top: 1px solid var(--line);
3632
+ border-radius: 22px 22px 0 0;
3633
+ background: var(--paper);
3634
+ box-shadow: 0 -18px 60px rgb(0 0 0 / 20%);
3635
+ overflow: hidden;
3636
+ visibility: hidden;
3637
+ pointer-events: none;
3638
+ transform: translateY(calc(100% + 24px));
3639
+ transition: transform 220ms ease, visibility 0s linear 220ms;
3640
+ }
3641
+
3642
+ .reading-page > .toc[data-mobile-open="true"],
3643
+ .post-reading-page .article-reading-layout .toc[data-mobile-open="true"],
3644
+ .column-reading-page > .toc[data-mobile-open="true"],
3645
+ .garden-page-toc .toc[data-mobile-open="true"] {
3646
+ visibility: visible;
3647
+ pointer-events: auto;
3648
+ transform: translateY(0);
3649
+ transition: transform 220ms ease, visibility 0s;
3650
+ }
3651
+
3652
+ .toc .toc-header {
3653
+ min-height: 58px;
3654
+ margin: 0;
3655
+ padding: 14px 0 10px;
3656
+ flex: 0 0 auto;
3657
+ border-bottom: 1px solid var(--line);
3658
+ }
3659
+
3660
+ .toc .toc-header > p {
3661
+ font-size: 13px;
3662
+ letter-spacing: 0.04em;
3663
+ }
3664
+
3665
+ .toc-mobile-close {
3666
+ width: 34px;
3667
+ height: 34px;
3668
+ padding: 0;
3669
+ display: grid;
3670
+ place-items: center;
3671
+ border: 1px solid var(--line);
3672
+ border-radius: 50%;
3673
+ background: var(--paper-deep);
3674
+ color: var(--muted);
3675
+ touch-action: manipulation;
3676
+ }
3677
+
3678
+ .toc-mobile-close:hover {
3679
+ color: var(--ink);
3680
+ }
3681
+
3682
+ .toc .toc-list {
3683
+ padding: 7px 4px 4px 0;
3684
+ }
3685
+
3686
+ .toc li {
3687
+ margin: 10px 0;
3688
+ font-size: 13px;
3689
+ }
3690
+
3691
+ .post-reading-page {
3692
+ width: min(var(--content), calc(100% - 48px));
3693
+ padding-top: 32px;
3694
+ }
3695
+
3696
+ .post-reading-page .article-summary-row {
3697
+ width: 100%;
3698
+ padding-top: 46px;
3699
+ }
3700
+
3701
+ .article-reading-layout {
3702
+ display: block;
3703
+ }
3704
+
3705
+ .column-reading-page {
3706
+ grid-template-columns: minmax(0, 700px);
3707
+ }
3708
+
3709
+ .series-nav {
3710
+ position: relative;
3711
+ top: 0;
3712
+ padding: 0 0 24px;
3713
+ border-right: 0;
3714
+ border-bottom: 1px solid var(--line);
3715
+ }
3716
+
3717
+ .series-nav ol {
3718
+ display: grid;
3719
+ grid-template-columns: repeat(3, 1fr);
3720
+ }
3721
+
3722
+ .series-nav li {
3723
+ border: 0;
3724
+ border-right: 1px solid var(--line);
3725
+ }
3726
+
3727
+ .series-nav li:last-child {
3728
+ border-bottom: 0;
3729
+ border-right: 0;
3730
+ }
3731
+
3732
+ .series-nav li.active a {
3733
+ border-left: 0;
3734
+ border-bottom: 2px solid var(--accent);
3735
+ }
3736
+ }
3737
+
3738
+ /* Admin studio intentionally uses a separate shell: it is not part of the public blog navigation. */
3739
+ .admin-shell,
3740
+ .admin-access-page {
3741
+ width: min(1360px, calc(100% - 80px));
3742
+ margin: 0 auto;
3743
+ min-height: 100vh;
3744
+ padding: 26px 0 80px;
3745
+ }
3746
+
3747
+ .admin-topbar,
3748
+ .admin-topbar > div,
3749
+ .admin-brand,
3750
+ .admin-actions,
3751
+ .admin-panel-heading,
3752
+ .admin-field-heading,
3753
+ .admin-distribution-note,
3754
+ .admin-item-actions,
3755
+ .admin-distribution-actions {
3756
+ display: flex;
3757
+ align-items: center;
3758
+ }
3759
+
3760
+ .admin-topbar {
3761
+ justify-content: space-between;
3762
+ border-bottom: 1px solid var(--line);
3763
+ padding-bottom: 20px;
3764
+ }
3765
+
3766
+ .admin-brand {
3767
+ color: var(--ink);
3768
+ font-size: 16px;
3769
+ font-weight: 780;
3770
+ letter-spacing: 0.13em;
3771
+ text-decoration: none;
3772
+ }
3773
+
3774
+ .admin-brand span { color: var(--accent); }
3775
+
3776
+ .admin-topbar > div { gap: 18px; color: var(--muted); font-size: 13px; }
3777
+
3778
+ .admin-signout { background: transparent; border: 0; color: var(--muted); cursor: pointer; font: inherit; padding: 0; text-decoration: underline; text-underline-offset: 4px; }
3779
+
3780
+ .admin-topbar a:not(.admin-brand),
3781
+ .admin-access-card a {
3782
+ align-items: center;
3783
+ color: var(--ink);
3784
+ display: inline-flex;
3785
+ gap: 6px;
3786
+ text-underline-offset: 4px;
3787
+ }
3788
+
3789
+ .admin-hero {
3790
+ align-items: end;
3791
+ border-bottom: 1px solid var(--line);
3792
+ display: grid;
3793
+ gap: 40px;
3794
+ grid-template-columns: minmax(0, 1.35fr) minmax(410px, 0.65fr);
3795
+ padding: 78px 0 50px;
3796
+ }
3797
+
3798
+ .admin-hero h1,
3799
+ .admin-panel h2,
3800
+ .admin-access-card h1 { letter-spacing: -0.055em; }
3801
+
3802
+ .admin-hero h1 {
3803
+ font-size: clamp(36px, 4vw, 64px);
3804
+ line-height: 1.05;
3805
+ margin: 12px 0 20px;
3806
+ max-width: 760px;
3807
+ }
3808
+
3809
+ .admin-hero > div > p:last-child { color: var(--muted); font-size: 15px; max-width: 650px; }
3810
+
3811
+ .admin-metrics { display: grid; gap: 12px; grid-template-columns: repeat(3, 1fr); margin: 0; }
3812
+ .admin-metrics div { border-left: 1px solid var(--line); padding-left: 15px; }
3813
+ .admin-metrics dt { color: var(--muted); font-size: 12px; }
3814
+ .admin-metrics dd { font-size: 30px; font-weight: 700; letter-spacing: -0.06em; margin: 7px 0 0; }
3815
+
3816
+ .admin-notice { align-items: center; background: color-mix(in srgb, var(--accent) 7%, transparent); border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--line)); color: var(--ink); display: flex; font-size: 13px; gap: 8px; margin: 28px 0 0; padding: 12px 14px; }
3817
+ .admin-notice svg { color: var(--accent); flex: none; }
3818
+
3819
+ .admin-grid { display: grid; gap: 24px; grid-template-columns: minmax(0, 1.25fr) minmax(390px, 0.75fr); margin-top: 28px; }
3820
+ .admin-panel { background: color-mix(in srgb, var(--paper) 96%, var(--ink)); border: 1px solid var(--line); padding: 28px; }
3821
+ .admin-panel-heading { justify-content: space-between; margin-bottom: 24px; }
3822
+ .admin-panel-heading > svg { color: var(--accent); }
3823
+ .admin-panel-heading span, .admin-field-heading span { color: var(--accent); font-size: 12px; font-weight: 700; letter-spacing: 0.06em; }
3824
+ .admin-panel h2 { font-size: 25px; line-height: 1.15; margin: 6px 0 0; }
3825
+
3826
+ .admin-compose-panel label { color: var(--ink); display: grid; font-size: 13px; font-weight: 650; gap: 8px; margin-top: 17px; }
3827
+ .admin-compose-panel input,
3828
+ .admin-compose-panel textarea,
3829
+ .admin-attachment-row input,
3830
+ .admin-attachment-row select { background: transparent; border: 1px solid var(--line); border-radius: 0; color: var(--ink); font: inherit; min-width: 0; outline-color: var(--accent); padding: 11px 12px; width: 100%; }
3831
+ .admin-compose-panel textarea { line-height: 1.7; resize: vertical; }
3832
+
3833
+ .admin-attachments { border-top: 1px solid var(--line); margin-top: 25px; padding-top: 20px; }
3834
+ .admin-field-heading { justify-content: space-between; margin-bottom: 12px; }
3835
+ .admin-field-heading > div { display: grid; gap: 3px; }
3836
+ .admin-field-heading small { color: var(--muted); font-size: 12px; }
3837
+ .admin-attachment-row { display: grid; gap: 8px; grid-template-columns: 92px minmax(0, 1.2fr) minmax(0, 0.9fr) 32px; margin-top: 8px; }
3838
+ .admin-attachment-row input, .admin-attachment-row select { font-size: 12px; padding: 9px; }
3839
+
3840
+ .admin-actions { gap: 10px; justify-content: flex-end; margin-top: 24px; }
3841
+ .admin-primary-button, .admin-secondary-button, .admin-quiet-button, .admin-icon-button, .admin-item-actions button, .admin-distribution-actions button { align-items: center; border: 1px solid var(--line); border-radius: 0; cursor: pointer; display: inline-flex; font: inherit; gap: 6px; justify-content: center; }
3842
+ .admin-primary-button { background: var(--ink); border-color: var(--ink); color: var(--paper); padding: 11px 15px; }
3843
+ .admin-secondary-button { background: transparent; color: var(--ink); padding: 11px 15px; }
3844
+ .admin-quiet-button { background: transparent; color: var(--accent); font-size: 12px; padding: 7px 9px; }
3845
+ .admin-icon-button { background: transparent; color: var(--muted); padding: 8px; }
3846
+ .admin-primary-button:disabled, .admin-secondary-button:disabled { cursor: wait; opacity: 0.58; }
3847
+
3848
+ .admin-thought-list { border-top: 1px solid var(--line); }
3849
+ .admin-thought-list article { align-items: start; border-bottom: 1px solid var(--line); display: flex; gap: 16px; justify-content: space-between; padding: 18px 0; }
3850
+ .admin-thought-list h3, .admin-catalog h3 { font-size: 15px; line-height: 1.35; margin: 8px 0 5px; }
3851
+ .admin-thought-list p { color: var(--muted); font-size: 12px; line-height: 1.55; margin: 0; }
3852
+ .admin-status { border: 1px solid var(--line); color: var(--muted); font-size: 10px; padding: 3px 5px; }
3853
+ .admin-status.published { border-color: color-mix(in srgb, var(--accent) 40%, var(--line)); color: var(--accent); }
3854
+ .admin-item-actions { flex: none; gap: 7px; }
3855
+ .admin-item-actions a, .admin-item-actions button { background: transparent; color: var(--muted); font-size: 12px; padding: 6px; text-decoration: none; }
3856
+ .admin-empty { color: var(--muted); font-size: 13px; padding: 22px 0; }
3857
+
3858
+ .admin-distribution-panel { margin-top: 24px; }
3859
+ .admin-distribution-note { color: var(--muted); font-size: 12px; gap: 8px; line-height: 1.6; margin: -5px 0 20px; }
3860
+ .admin-distribution-note svg { color: var(--accent); flex: none; }
3861
+ .admin-catalog { border-top: 1px solid var(--line); }
3862
+ .admin-catalog article { align-items: center; border-bottom: 1px solid var(--line); display: flex; gap: 20px; justify-content: space-between; padding: 17px 0; }
3863
+ .admin-catalog article > div:first-child > span { color: var(--muted); font-size: 12px; }
3864
+ .admin-distribution-actions { flex-wrap: wrap; gap: 7px; justify-content: flex-end; }
3865
+ .admin-distribution-actions button { background: transparent; color: var(--ink); font-size: 12px; min-height: 31px; padding: 7px 9px; }
3866
+ .admin-distribution-actions button:first-child { color: var(--accent); }
3867
+ .admin-distribution-actions small { border-left: 1px solid var(--line); color: var(--muted); font-size: 10px; margin-left: 3px; max-width: 120px; overflow: hidden; padding-left: 5px; text-overflow: ellipsis; white-space: nowrap; }
3868
+
3869
+ .admin-access-page { align-items: center; display: flex; justify-content: center; }
3870
+ .admin-access-card { border: 1px solid var(--line); max-width: 530px; padding: 42px; }
3871
+ .admin-access-card > svg { color: var(--accent); }
3872
+ .admin-access-card h1 { font-size: 35px; line-height: 1.12; margin: 18px 0; }
3873
+ .admin-access-card p { color: var(--muted); line-height: 1.75; }
3874
+ .admin-access-card code { color: var(--accent); }
3875
+ .admin-access-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 16px; margin-top: 25px; }
3876
+ .admin-github-login { align-items: center; background: var(--ink); color: var(--paper) !important; display: inline-flex; gap: 8px; padding: 11px 15px; text-decoration: none; }
3877
+
3878
+ @media (max-width: 900px) {
3879
+ .admin-shell, .admin-access-page { width: min(100% - 36px, 720px); padding-top: 18px; }
3880
+ .admin-hero, .admin-grid { grid-template-columns: 1fr; }
3881
+ .admin-hero { gap: 28px; padding: 55px 0 35px; }
3882
+ .admin-metrics { max-width: 440px; }
3883
+ .admin-panel { padding: 20px; }
3884
+ .admin-attachment-row { grid-template-columns: 82px minmax(0, 1fr) 32px; }
3885
+ .admin-attachment-row input:nth-of-type(2) { grid-column: 2; }
3886
+ .admin-catalog article { align-items: start; flex-direction: column; }
3887
+ .admin-distribution-actions { justify-content: flex-start; }
3888
+ }
3889
+
3890
+ @media (max-width: 540px) {
3891
+ .admin-topbar > div > span { display: none; }
3892
+ .admin-topbar > div { gap: 0; }
3893
+ .admin-hero h1 { font-size: 38px; }
3894
+ .admin-metrics dd { font-size: 25px; }
3895
+ .admin-field-heading { align-items: start; gap: 12px; }
3896
+ .admin-attachment-row { grid-template-columns: 1fr 36px; }
3897
+ .admin-attachment-row select, .admin-attachment-row input { grid-column: 1; }
3898
+ .admin-attachment-row button { grid-column: 2; grid-row: 1; }
3899
+ .admin-thought-list article { flex-direction: column; }
3900
+ }
3901
+
3902
+ @media (max-width: 680px) {
3903
+ body {
3904
+ font-size: 14px;
3905
+ }
3906
+
3907
+ .header-inner,
3908
+ .page-shell,
3909
+ .footer-inner,
3910
+ .reading-page,
3911
+ .column-reading-page {
3912
+ width: min(100% - 28px, var(--wide));
3913
+ }
3914
+
3915
+ .post-reading-page {
3916
+ padding-top: 40px;
3917
+ }
3918
+
3919
+ .brand small,
3920
+ .key-hint {
3921
+ display: none;
3922
+ }
3923
+
3924
+ .brand-mark {
3925
+ width: 36px;
3926
+ height: 44px;
3927
+ }
3928
+
3929
+ .brand strong {
3930
+ font-size: 17px;
3931
+ }
3932
+
3933
+ .main-nav a {
3934
+ padding: 6px 10px;
3935
+ font-size: 12px;
3936
+ white-space: nowrap;
3937
+ }
3938
+
3939
+ .home-page {
3940
+ padding-top: 48px;
3941
+ }
3942
+
3943
+ .home-section {
3944
+ margin-top: 58px;
3945
+ }
3946
+
3947
+ .post-row {
3948
+ min-height: 76px;
3949
+ grid-template-columns: 86px 1fr 16px;
3950
+ gap: 8px;
3951
+ }
3952
+
3953
+ .post-row small {
3954
+ max-width: 180px;
3955
+ }
3956
+
3957
+ .column-card {
3958
+ min-height: 220px;
3959
+ padding: 24px;
3960
+ }
3961
+
3962
+ .column-card .column-number {
3963
+ display: none;
3964
+ }
3965
+
3966
+ .page-intro {
3967
+ padding-top: 52px;
3968
+ }
3969
+
3970
+ .archive-row {
3971
+ min-height: 92px;
3972
+ padding: 11px 0;
3973
+ grid-template-columns: minmax(0, 1fr) 16px;
3974
+ gap: 10px;
3975
+ }
3976
+
3977
+ .archive-row.with-cover {
3978
+ grid-template-columns: 96px minmax(0, 1fr) 16px;
3979
+ }
3980
+
3981
+ .archive-cover {
3982
+ width: 96px;
3983
+ height: 68px;
3984
+ }
3985
+
3986
+ .archive-meta {
3987
+ gap: 4px 9px;
3988
+ }
3989
+
3990
+ .archive-meta time,
3991
+ .archive-topic {
3992
+ font-size: 9px;
3993
+ }
3994
+
3995
+ .archive-row h2 {
3996
+ margin: 5px 0 4px;
3997
+ font-size: 15px;
3998
+ line-height: 1.35;
3999
+ }
4000
+
4001
+ .archive-row p {
4002
+ font-size: 10px;
4003
+ }
4004
+
4005
+ .archive-row > svg {
4006
+ margin: 0;
4007
+ }
4008
+
4009
+ .thought-card {
4010
+ padding: 19px;
4011
+ }
4012
+
4013
+ .thought-card > header {
4014
+ align-items: flex-start;
4015
+ }
4016
+
4017
+ .column-feature {
4018
+ grid-template-columns: 1fr;
4019
+ }
4020
+
4021
+ .column-feature-copy {
4022
+ padding: 32px 25px;
4023
+ }
4024
+
4025
+ .column-feature-index {
4026
+ min-height: 130px;
4027
+ display: grid;
4028
+ grid-template-columns: 1fr auto;
4029
+ align-items: center;
4030
+ }
4031
+
4032
+ .column-feature-index strong {
4033
+ grid-column: 2;
4034
+ grid-row: 1 / 3;
4035
+ font-size: 58px;
4036
+ }
4037
+
4038
+ .article-header {
4039
+ padding-top: 40px;
4040
+ }
4041
+
4042
+ .markdown-body {
4043
+ font-size: 14px;
4044
+ }
4045
+
4046
+ .markdown-body h2 {
4047
+ margin-top: 52px;
4048
+ }
4049
+
4050
+ .markdown-body h3 {
4051
+ font-size: 19px;
4052
+ }
4053
+
4054
+ .markdown-body h4 {
4055
+ font-size: 18px;
4056
+ }
4057
+
4058
+ .markdown-body h5 {
4059
+ font-size: 17px;
4060
+ }
4061
+
4062
+ .markdown-body table {
4063
+ display: block;
4064
+ overflow-x: auto;
4065
+ }
4066
+
4067
+ .markdown-body .external-embed-card,
4068
+ .markdown-body .external-embed-card:has(> img) {
4069
+ grid-template-columns: 1fr 22px;
4070
+ }
4071
+
4072
+ .external-embed-card > img {
4073
+ grid-column: 1 / 3;
4074
+ width: 100%;
4075
+ height: auto;
4076
+ max-height: 220px;
4077
+ }
4078
+
4079
+ .garden-doc-launch {
4080
+ grid-template-columns: 1fr;
4081
+ }
4082
+
4083
+ .garden-doc-toggle {
4084
+ grid-template-columns: 40px minmax(0, 1fr) auto;
4085
+ padding-right: 16px;
4086
+ }
4087
+
4088
+ .garden-doc-open {
4089
+ justify-content: flex-end;
4090
+ padding: 0 16px 14px;
4091
+ }
4092
+
4093
+ .thought-gallery-2,
4094
+ .thought-gallery-3 {
4095
+ grid-template-columns: 1fr;
4096
+ grid-template-rows: none;
4097
+ }
4098
+
4099
+ .thought-gallery-3 .thought-image,
4100
+ .thought-gallery-3 .thought-image:first-child {
4101
+ grid-row: auto;
4102
+ height: auto;
4103
+ max-height: 360px;
4104
+ }
4105
+
4106
+ .series-nav ol {
4107
+ grid-template-columns: 1fr;
4108
+ }
4109
+
4110
+ .series-nav li {
4111
+ border-right: 0;
4112
+ border-top: 1px solid var(--line);
4113
+ }
4114
+
4115
+ .about-grid {
4116
+ grid-template-columns: 1fr;
4117
+ gap: 36px;
4118
+ }
4119
+
4120
+ .content-empty-state {
4121
+ min-height: 0;
4122
+ padding: 28px 24px;
4123
+ grid-template-columns: 52px minmax(0, 1fr);
4124
+ gap: 20px;
4125
+ }
4126
+
4127
+ .content-empty-mark {
4128
+ width: 52px;
4129
+ height: 52px;
4130
+ }
4131
+
4132
+ .content-empty-state > a {
4133
+ grid-column: 2;
4134
+ width: max-content;
4135
+ }
4136
+
4137
+ .github-overview {
4138
+ grid-template-columns: 74px minmax(0, 1fr);
4139
+ gap: 18px;
4140
+ }
4141
+
4142
+ .github-overview > img {
4143
+ width: 74px;
4144
+ height: 74px;
4145
+ align-self: start;
4146
+ }
4147
+
4148
+ .github-overview > a {
4149
+ grid-column: 2;
4150
+ width: max-content;
4151
+ }
4152
+
4153
+ .github-metrics,
4154
+ .github-repository-grid {
4155
+ grid-template-columns: 1fr;
4156
+ }
4157
+
4158
+ .github-metrics > div {
4159
+ min-height: 104px;
4160
+ border-top: 1px solid var(--line-strong);
4161
+ border-left: 0;
4162
+ }
4163
+
4164
+ .github-metrics > div:first-child {
4165
+ border-top: 0;
4166
+ }
4167
+
4168
+ .github-repository-grid > a {
4169
+ min-height: 150px;
4170
+ }
4171
+
4172
+ .github-activity {
4173
+ grid-template-columns: 1fr;
4174
+ gap: 26px;
4175
+ }
4176
+
4177
+ .footer-inner {
4178
+ min-height: 96px;
4179
+ align-items: flex-start;
4180
+ padding: 25px 0;
4181
+ flex-direction: column;
4182
+ }
4183
+ }
4184
+
4185
+ @media (max-width: 900px) {
4186
+ .garden-guide-heading,
4187
+ .garden-system > header,
4188
+ .garden-media > header,
4189
+ .garden-section-heading {
4190
+ grid-template-columns: 1fr;
4191
+ gap: 22px;
4192
+ }
4193
+
4194
+ .garden-system > header > p:last-child {
4195
+ grid-column: 1;
4196
+ grid-row: auto;
4197
+ }
4198
+
4199
+ .garden-media > header > p {
4200
+ grid-column: 1;
4201
+ grid-row: auto;
4202
+ }
4203
+
4204
+ .garden-media-layout {
4205
+ grid-template-columns: 1fr;
4206
+ }
4207
+
4208
+ .garden-responsibility-grid {
4209
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4210
+ }
4211
+
4212
+ .garden-responsibility-grid article:nth-child(odd) {
4213
+ border-left: 0;
4214
+ }
4215
+
4216
+ .garden-responsibility-grid article:nth-child(n + 3) {
4217
+ border-top: 1px solid var(--line-strong);
4218
+ }
4219
+
4220
+ .garden-content-guide,
4221
+ .garden-content-guide:nth-child(even) {
4222
+ grid-template-columns: 1fr;
4223
+ gap: 42px;
4224
+ }
4225
+
4226
+ .garden-content-guide:nth-child(even) .garden-source-panel {
4227
+ order: initial;
4228
+ }
4229
+
4230
+ .garden-source-panel pre {
4231
+ min-height: 0;
4232
+ }
4233
+
4234
+ .garden-admin-flow {
4235
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4236
+ }
4237
+
4238
+ .garden-admin-flow li:nth-child(3) {
4239
+ border-left: 0;
4240
+ }
4241
+
4242
+ .garden-admin-flow li:nth-child(n + 3) {
4243
+ border-top: 1px solid var(--line);
4244
+ }
4245
+
4246
+ .garden-admin-enable {
4247
+ grid-template-columns: 1fr;
4248
+ gap: 30px;
4249
+ }
4250
+
4251
+ .garden-admin-capabilities article,
4252
+ .garden-system-grid article {
4253
+ grid-template-columns: 44px minmax(170px, 0.7fr) minmax(0, 1.3fr);
4254
+ }
4255
+ }
4256
+
4257
+ @media (max-width: 680px) {
4258
+ .garden-page .page-intro {
4259
+ padding-bottom: 50px;
4260
+ }
4261
+
4262
+ .garden-guide-heading {
4263
+ padding: 38px 0 32px;
4264
+ }
4265
+
4266
+ .garden-proof-list {
4267
+ grid-template-columns: 1fr;
4268
+ }
4269
+
4270
+ .garden-proof-list li {
4271
+ min-height: 52px;
4272
+ border-top: 1px solid var(--line);
4273
+ border-left: 0;
4274
+ }
4275
+
4276
+ .garden-proof-list li:first-child {
4277
+ border-top: 0;
4278
+ }
4279
+
4280
+ .garden-responsibility-flow {
4281
+ align-items: flex-start;
4282
+ flex-direction: column;
4283
+ gap: 10px;
4284
+ padding: 20px;
4285
+ }
4286
+
4287
+ .garden-responsibility-flow svg {
4288
+ margin-left: 3px;
4289
+ transform: rotate(90deg);
4290
+ }
4291
+
4292
+ .garden-responsibility-grid {
4293
+ grid-template-columns: 1fr;
4294
+ }
4295
+
4296
+ .garden-responsibility-grid article,
4297
+ .garden-responsibility-grid article:nth-child(odd) {
4298
+ min-height: 0;
4299
+ border-top: 1px solid var(--line-strong);
4300
+ border-left: 0;
4301
+ }
4302
+
4303
+ .garden-responsibility-grid article:first-child {
4304
+ border-top: 0;
4305
+ }
4306
+
4307
+ .garden-guide-index {
4308
+ grid-template-columns: 1fr;
4309
+ }
4310
+
4311
+ .garden-guide-index a,
4312
+ .garden-guide-index a:first-child {
4313
+ min-height: 67px;
4314
+ border-top: 1px solid var(--line);
4315
+ border-left: 0;
4316
+ }
4317
+
4318
+ .garden-guide-index a:first-child {
4319
+ border-top: 0;
4320
+ }
4321
+
4322
+ .garden-content-guide {
4323
+ padding: 68px 0;
4324
+ }
4325
+
4326
+ .garden-content-features {
4327
+ grid-template-columns: 1fr;
4328
+ }
4329
+
4330
+ .garden-source-panel pre {
4331
+ padding: 20px;
4332
+ font-size: 12px;
4333
+ }
4334
+
4335
+ .garden-system {
4336
+ margin-top: 76px;
4337
+ }
4338
+
4339
+ .garden-media {
4340
+ margin: 76px -24px 0;
4341
+ padding: 48px 24px;
4342
+ }
4343
+
4344
+ .garden-media-source pre {
4345
+ min-height: 0;
4346
+ padding: 20px;
4347
+ }
4348
+
4349
+ .garden-media-boundary {
4350
+ grid-template-columns: 1fr;
4351
+ gap: 10px;
4352
+ }
4353
+
4354
+ .garden-system-grid {
4355
+ grid-template-columns: 1fr;
4356
+ }
4357
+
4358
+ .garden-system-grid article {
4359
+ min-height: 0;
4360
+ }
4361
+
4362
+ .garden-admin,
4363
+ .garden-setup {
4364
+ margin-top: 76px;
4365
+ padding-top: 38px;
4366
+ }
4367
+
4368
+ .garden-admin-capabilities,
4369
+ .garden-setup-grid,
4370
+ .garden-setup-notes {
4371
+ grid-template-columns: 1fr;
4372
+ }
4373
+
4374
+ .garden-admin-capabilities article,
4375
+ .garden-setup-grid article {
4376
+ min-height: 0;
4377
+ }
4378
+
4379
+ .garden-admin-capabilities article,
4380
+ .garden-system-grid article {
4381
+ grid-template-columns: 36px minmax(0, 1fr);
4382
+ }
4383
+
4384
+ .garden-admin-capabilities article p,
4385
+ .garden-system-grid article p {
4386
+ grid-column: 2;
4387
+ }
4388
+
4389
+ .garden-admin-boundary {
4390
+ grid-template-columns: 1fr;
4391
+ gap: 10px;
4392
+ }
4393
+
4394
+ .garden-admin-preview figcaption {
4395
+ grid-template-columns: 1fr;
4396
+ gap: 5px;
4397
+ padding: 16px 18px;
4398
+ }
4399
+
4400
+ .garden-admin-flow {
4401
+ grid-template-columns: 1fr;
4402
+ }
4403
+
4404
+ .garden-admin-flow li,
4405
+ .garden-admin-flow li:nth-child(3) {
4406
+ min-height: 0;
4407
+ border-top: 1px solid var(--line);
4408
+ border-left: 0;
4409
+ }
4410
+
4411
+ .garden-admin-flow li:first-child {
4412
+ border-top: 0;
4413
+ }
4414
+
4415
+ .garden-admin-enable {
4416
+ padding: 25px 20px;
4417
+ }
4418
+
4419
+ .garden-setup-grid dl > div {
4420
+ grid-template-columns: 1fr;
4421
+ gap: 4px;
4422
+ }
4423
+
4424
+ .garden-setup-notes > div,
4425
+ .garden-setup-notes > div:first-child {
4426
+ min-height: 0;
4427
+ border-top: 1px solid var(--line);
4428
+ border-left: 0;
4429
+ }
4430
+
4431
+ .garden-setup-notes > div:first-child {
4432
+ border-top: 0;
4433
+ }
4434
+
4435
+ .garden-setup-finish {
4436
+ align-items: flex-start;
4437
+ flex-direction: column;
4438
+ padding: 24px 20px;
4439
+ }
4440
+ }
4441
+
4442
+ @media (prefers-reduced-motion: reduce) {
4443
+ html {
4444
+ scroll-behavior: auto;
4445
+ }
4446
+
4447
+ *,
4448
+ *::before,
4449
+ *::after {
4450
+ transition-duration: 0.01ms !important;
4451
+ animation-duration: 0.01ms !important;
4452
+ animation-iteration-count: 1 !important;
4453
+ }
4454
+ }