@takazudo/zudo-doc 8.1.2 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +1 -1
  3. package/dist/ai-chat-modal/index.js +1 -0
  4. package/dist/catalog.js +1 -1
  5. package/dist/chrome/derive.js +2 -2
  6. package/dist/config.d.ts +13 -7
  7. package/dist/config.js +6 -0
  8. package/dist/footer/footer.js +1 -1
  9. package/dist/head-with-defaults/index.js +2 -2
  10. package/dist/metainfo/doc-tags.js +3 -0
  11. package/dist/nav-indexing/tag-nav.js +7 -1
  12. package/dist/preset.d.ts +10 -4
  13. package/dist/preset.js +11 -1
  14. package/dist/route-context-payload/index.d.ts +4 -1
  15. package/dist/route-context-payload/index.js +6 -0
  16. package/dist/settings-defaults.js +3 -1
  17. package/dist/settings.d.ts +9 -5
  18. package/dist/theme/theme-pack-provider.d.ts +4 -2
  19. package/dist/theme/theme-pack-provider.js +2 -1
  20. package/dist/theme-cli/config-io.js +26 -3
  21. package/dist/theme-cli/list.js +1 -1
  22. package/dist/theme-packs/default/meta.json +2 -2
  23. package/dist/theme-packs/drift/pack.css +50 -15
  24. package/dist/theme-packs/fjord/pack.css +55 -14
  25. package/dist/theme-packs/graphite/meta.json +37 -0
  26. package/dist/theme-packs/graphite/pack.css +401 -0
  27. package/dist/theme-packs/hollow/pack.css +51 -16
  28. package/dist/theme-packs/manuscript/pack.css +57 -12
  29. package/dist/theme-packs/matcha/pack.css +46 -13
  30. package/dist/theme-packs/nocturne/pack.css +46 -10
  31. package/dist/theme-packs/observatory/pack.css +61 -20
  32. package/dist/theme-packs/quiet-slate/meta.json +37 -0
  33. package/dist/theme-packs/quiet-slate/pack.css +401 -0
  34. package/dist/theme-packs/sakura/pack.css +58 -16
  35. package/dist/theme-packs/solar/pack.css +43 -10
  36. package/dist/theme-packs/warm-mineral/meta.json +37 -0
  37. package/dist/theme-packs/warm-mineral/pack.css +401 -0
  38. package/dist/theme-packs-registry/configured-theme-pack.d.ts +21 -0
  39. package/dist/theme-packs-registry/configured-theme-pack.js +13 -0
  40. package/dist/theme-packs-registry/index.d.ts +1 -0
  41. package/dist/theme-packs-registry/index.js +6 -0
  42. package/dist/theme-packs-registry/resolve-enabled-packs.d.ts +13 -6
  43. package/dist/theme-packs-registry/resolve-enabled-packs.js +15 -5
  44. package/eject/footer/footer.tsx +1 -1
  45. package/package.json +9 -9
@@ -322,25 +322,61 @@ html[data-theme-pack="nocturne"] .zd-content > p[data-doc-description] {
322
322
  color: color-mix(in oklch, var(--zd-fg) 62%, var(--zd-muted));
323
323
  }
324
324
 
325
- /* h2: gold fading rule. The SSR-inlined
326
- `style="border-image:linear-gradient(...)"` bar is defeated with
327
- border-image none !important (Decision 6.6's sole allowlisted
328
- carve-out) + a zeroed border-top; the fading gold hairline is then
329
- painted as a 1px top-anchored background gradient instead. */
330
- html[data-theme-pack="nocturne"] .zd-content h2 {
325
+ /* h2: the original gold fading rule, now 2px and kept distinct from the
326
+ lavender link ink; h3 takes a quieter 1px muted rule and h4 none. The
327
+ SSR-inlined `style="border-image:linear-gradient(...)"` bar is
328
+ defeated with border-image none !important (Decision 6.6's sole
329
+ allowlisted carve-out) + zeroed borders; each rule is a top-anchored
330
+ background gradient instead. */
331
+ html[data-theme-pack="nocturne"] .zd-content h2:where(:not(.zd-home-heading)):where(:not(.zd-compact-prose *)) {
331
332
  border-image: none !important;
332
333
  border-top-width: 0;
333
- font-size: 1.9rem;
334
+ border-bottom-width: 0;
335
+ padding-top: 1.25rem;
336
+ padding-bottom: 0;
337
+ font-size: 2.125rem;
338
+ font-weight: 700;
339
+ line-height: 1.3;
334
340
  background-image: linear-gradient(
335
341
  to right,
336
- light-dark(oklch(0.53 0.105 85), oklch(0.78 0.105 87)),
337
- light-dark(oklch(0.53 0.105 85 / 0.3), oklch(0.78 0.105 87 / 0.3)) 60%,
338
- transparent
342
+ light-dark(oklch(0.53 0.105 85), oklch(0.78 0.105 87)) 0%,
343
+ light-dark(oklch(0.53 0.105 85), oklch(0.78 0.105 87)) 32%,
344
+ color-mix(in oklch, light-dark(oklch(0.53 0.105 85), oklch(0.78 0.105 87)) 58%, transparent) 72%,
345
+ transparent 100%
346
+ );
347
+ background-size: 100% 2px;
348
+ background-repeat: no-repeat;
349
+ background-position: top left;
350
+ }
351
+ html[data-theme-pack="nocturne"] .zd-content h3:where(:not(.zd-compact-prose *)) {
352
+ border-image: none !important;
353
+ border-top-width: 0;
354
+ border-bottom-width: 0;
355
+ padding-top: 0.875rem;
356
+ padding-bottom: 0;
357
+ font-size: 1.375rem;
358
+ font-weight: 600;
359
+ line-height: 1.4;
360
+ background-image: linear-gradient(
361
+ to right,
362
+ color-mix(in oklch, var(--zd-muted) 42%, transparent),
363
+ color-mix(in oklch, var(--zd-muted) 22%, transparent) 40%,
364
+ transparent 76%
339
365
  );
340
366
  background-size: 100% 1px;
341
367
  background-repeat: no-repeat;
342
368
  background-position: top left;
343
369
  }
370
+ html[data-theme-pack="nocturne"] .zd-content h4:where(:not(.zd-compact-prose *)) {
371
+ border-width: 0;
372
+ padding-top: 0;
373
+ padding-bottom: 0;
374
+ font-size: 1.2rem;
375
+ font-weight: 500;
376
+ line-height: 1.45;
377
+ background-image: none;
378
+ }
379
+
344
380
  html[data-theme-pack="nocturne"] .zd-content h3 {
345
381
  letter-spacing: 0.01em;
346
382
  }
@@ -416,47 +416,84 @@ html[data-theme-pack="observatory"] .zd-content > p[data-doc-description] {
416
416
  font-weight: 300;
417
417
  }
418
418
 
419
- /* h2 — chart-label caps over a constellation line with star nodes.
420
- The SSR-inlined `style="border-image:linear-gradient(...)"` bar is
421
- defeated with border-image none !important (Decision 6.6's sole
422
- allowlisted carve-out) + a zeroed border-top; the node-to-line rule
423
- is then painted as a top-anchored background gradient, with the two
424
- glowing star nodes as pseudo-element dots. */
419
+ /* h2 — chart-label caps over a 2px constellation line with star nodes;
420
+ h3 — a quieter 1px muted rule; h4 — no rule. The SSR-inlined
421
+ `style="border-image:linear-gradient(...)"` bar is defeated with
422
+ border-image none !important (Decision 6.6's sole allowlisted
423
+ carve-out) + zeroed borders; each rule is a top-anchored background
424
+ gradient, with the two glowing star nodes as pseudo-element dots
425
+ centred on the h2 line. */
426
+ html[data-theme-pack="observatory"] .zd-content h2 {
427
+ position: relative;
428
+ text-transform: uppercase;
429
+ }
425
430
  html[data-theme-pack="observatory"] .zd-content h2:where(:not(.zd-home-heading)):where(:not(.zd-compact-prose *)) {
426
- font-size: 1.75rem;
431
+ border-image: none !important;
432
+ border-top-width: 0;
433
+ border-bottom-width: 0;
434
+ padding-top: 1.25rem;
435
+ padding-bottom: 0;
436
+ font-size: 1.875rem;
437
+ font-weight: 500;
438
+ line-height: 1.3;
439
+ letter-spacing: 0.065em;
440
+ background-image: linear-gradient(
441
+ to right,
442
+ light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)) 0%,
443
+ light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)) 32%,
444
+ color-mix(in oklch, light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)) 58%, transparent) 72%,
445
+ transparent 100%
446
+ );
447
+ background-size: 100% 2px;
448
+ background-repeat: no-repeat;
449
+ background-position: top left;
427
450
  }
428
- html[data-theme-pack="observatory"] .zd-content h2 {
451
+ html[data-theme-pack="observatory"] .zd-content h3:where(:not(.zd-compact-prose *)) {
429
452
  border-image: none !important;
430
453
  border-top-width: 0;
431
- position: relative;
432
- text-transform: uppercase;
454
+ border-bottom-width: 0;
455
+ padding-top: 0.875rem;
456
+ padding-bottom: 0;
457
+ font-size: 1.375rem;
458
+ font-weight: 400;
459
+ line-height: 1.4;
433
460
  background-image: linear-gradient(
434
461
  to right,
435
- light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)),
436
- light-dark(oklch(0.33 0.05 268 / 0.4), oklch(0.86 0.05 265 / 0.34)) 45%,
437
- transparent 85%
462
+ color-mix(in oklch, var(--zd-muted) 42%, transparent),
463
+ color-mix(in oklch, var(--zd-muted) 22%, transparent) 40%,
464
+ transparent 76%
438
465
  );
439
466
  background-size: 100% 1px;
440
467
  background-repeat: no-repeat;
441
468
  background-position: top left;
442
469
  }
443
- html[data-theme-pack="observatory"] .zd-content h2::before,
444
- html[data-theme-pack="observatory"] .zd-content h2::after {
470
+ html[data-theme-pack="observatory"] .zd-content h4:where(:not(.zd-compact-prose *)) {
471
+ border-width: 0;
472
+ padding-top: 0;
473
+ padding-bottom: 0;
474
+ font-size: 1.2rem;
475
+ font-weight: 500;
476
+ line-height: 1.45;
477
+ background-image: none;
478
+ }
479
+
480
+ html[data-theme-pack="observatory"] .zd-content h2:where(:not(.zd-home-heading)):where(:not(.zd-compact-prose *))::before,
481
+ html[data-theme-pack="observatory"] .zd-content h2:where(:not(.zd-home-heading)):where(:not(.zd-compact-prose *))::after {
445
482
  content: "";
446
483
  position: absolute;
447
484
  border-radius: 50%;
448
485
  background: light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88));
449
486
  box-shadow: 0 0 6px light-dark(oklch(0.52 0.11 80 / 0.35), oklch(0.86 0.13 88 / 0.55));
450
487
  }
451
- html[data-theme-pack="observatory"] .zd-content h2::before {
452
- top: -3px;
488
+ html[data-theme-pack="observatory"] .zd-content h2:where(:not(.zd-home-heading)):where(:not(.zd-compact-prose *))::before {
489
+ top: -1.5px;
453
490
  left: 0;
454
491
  width: 5px;
455
492
  height: 5px;
456
493
  }
457
- html[data-theme-pack="observatory"] .zd-content h2::after {
458
- top: -2.5px;
459
- left: 38%;
494
+ html[data-theme-pack="observatory"] .zd-content h2:where(:not(.zd-home-heading)):where(:not(.zd-compact-prose *))::after {
495
+ top: -1px;
496
+ left: 58%;
460
497
  width: 4px;
461
498
  height: 4px;
462
499
  opacity: 0.85;
@@ -474,6 +511,10 @@ html[data-theme-pack="observatory"] .zd-content h3::before {
474
511
  font-size: 0.75em;
475
512
  vertical-align: 0.12em;
476
513
  }
514
+ html[data-theme-pack="observatory"] .zd-content h3:where(:not(.zd-compact-prose *))::before {
515
+ font-size: 0.65em;
516
+ opacity: 0.65;
517
+ }
477
518
 
478
519
  /* links — gilt underlines */
479
520
  html[data-theme-pack="observatory"] .zd-content a {
@@ -0,0 +1,37 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "slug": "quiet-slate",
4
+ "name": "Quiet Slate",
5
+ "description": "Quiet blue-grey slate — misty slate paper by day, cool slate at night, a muted copper accent and quiet hairline rules.",
6
+ "mode": "dark",
7
+ "version": "1.0.0",
8
+ "fonts": {
9
+ "sans": "System",
10
+ "mono": "System",
11
+ "loaded": []
12
+ },
13
+ "preview": {
14
+ "light": {
15
+ "bg": "#EDF1F3",
16
+ "fg": "#3E4953",
17
+ "accent": "#95491E",
18
+ "syntax": {
19
+ "keyword": "#95491E",
20
+ "string": "#4D6356",
21
+ "comment": "#52606D",
22
+ "callable": "#476274"
23
+ }
24
+ },
25
+ "dark": {
26
+ "bg": "#2B3238",
27
+ "fg": "#D8DDE0",
28
+ "accent": "#E4AF89",
29
+ "syntax": {
30
+ "keyword": "#E4AF89",
31
+ "string": "#A9BFAD",
32
+ "comment": "#B3BFC9",
33
+ "callable": "#A3BDCD"
34
+ }
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,401 @@
1
+ /* ============================================================
2
+ Quiet Slate — zudo-doc theme pack (ADR docs/adr/theme-packs.md)
3
+
4
+ Misty blue-grey slate, carrying a muted copper accent.
5
+ One of the three soft-tone packs (graphite, warm-mineral,
6
+ quiet-slate) that share the same component treatment and differ
7
+ only in palette. Colour only: typography, spacing, geometry and
8
+ heading hierarchy are the package defaults (no fonts loaded).
9
+
10
+ Roles beyond the public --zd-* tokens are inlined per mode:
11
+ line decorative rules, separators and tree guides
12
+ control border necessary field / control / diagram boundaries
13
+ heading heading ink, one step stronger than body text
14
+ hover bg inactive navigation hover fill
15
+ active bg current navigation fill (90% bg + 10% accent)
16
+ state bgs admonition fills (90% bg + 10% state colour)
17
+ Classic (the reserved "default" pack) shares one muted role for
18
+ text, borders and comments; these packs keep muted at readable
19
+ text contrast and give decorative rules their own quieter line.
20
+
21
+ Production-only contrast repairs (not part of the ordinary
22
+ palette): diff rows use the opaque state fills instead of the
23
+ 15% foreground tint, and code line / word highlights use opaque
24
+ active / hover fills (no stacked alpha) keeping the accent marker
25
+ and underline, so every syntax role stays >= 4.6:1.
26
+
27
+ Every rule is scoped under html[data-theme-pack="quiet-slate"]; the
28
+ pack never declares color-scheme and follows the mode the page
29
+ already resolved (light-dark()).
30
+ ============================================================ */
31
+
32
+ html[data-theme-pack="quiet-slate"] {
33
+ /* Tier-2 semantic roles */
34
+ --zd-bg: light-dark(#EDF1F3, #2B3238);
35
+ --zd-fg: light-dark(#3E4953, #D8DDE0);
36
+ --zd-surface: light-dark(#E2E8EC, #343D45);
37
+ --zd-muted: light-dark(#52606D, #B3BFC9);
38
+ --zd-accent: light-dark(#95491E, #E4AF89);
39
+ --zd-accent-hover: light-dark(#8F461D, #E6B48E);
40
+ --zd-code-bg: light-dark(#E2E8EC, #252D33);
41
+ --zd-code-fg: light-dark(#3E4953, #D8DDE0);
42
+ --zd-success: light-dark(#4D6356, #A9BFAD);
43
+ --zd-danger: light-dark(#825151, #D8B0AD);
44
+ --zd-warning: light-dark(#6F5C36, #D0B688);
45
+ --zd-info: light-dark(#476274, #A3BDCD);
46
+ --zd-selection-bg: light-dark(#95491E, #E4AF89);
47
+ --zd-selection-fg: light-dark(#F9F5EF, #252D33);
48
+ --zd-matched-keyword-bg: light-dark(#95491E, #E4AF89);
49
+ --zd-matched-keyword-fg: light-dark(#F9F5EF, #252D33);
50
+ --zd-chat-user-bg: light-dark(#95491E, #E4AF89);
51
+ --zd-chat-user-text: light-dark(#F9F5EF, #252D33);
52
+ --zd-chat-assistant-bg: light-dark(#E2E8EC, #343D45);
53
+ --zd-chat-assistant-text: light-dark(#3E4953, #D8DDE0);
54
+ --zd-image-overlay-bg: light-dark(#EDF1F3, #2B3238);
55
+ --zd-image-overlay-fg: light-dark(#3E4953, #D8DDE0);
56
+ /* Mermaid: text is body text; edges are necessary diagram lines */
57
+ --zd-mermaid-node-bg: light-dark(#E2E8EC, #343D45);
58
+ --zd-mermaid-text: light-dark(#3E4953, #D8DDE0);
59
+ --zd-mermaid-line: light-dark(#6C7D88, #98A6B2);
60
+ --zd-mermaid-label-bg: light-dark(#EDF1F3, #2B3238);
61
+ --zd-mermaid-note-bg: light-dark(#DBE2E7, #3C4650);
62
+
63
+ /* syntax — explicit role mapping */
64
+ --zd-syntax-comment: light-dark(#52606D, #B3BFC9);
65
+ --zd-syntax-string: light-dark(#4D6356, #A9BFAD);
66
+ --zd-syntax-number: light-dark(#6F5C36, #D0B688);
67
+ --zd-syntax-keyword: light-dark(#95491E, #E4AF89);
68
+ --zd-syntax-callable: light-dark(#476274, #A3BDCD);
69
+ --zd-syntax-type: light-dark(#6F5C36, #D0B688);
70
+ --zd-syntax-name: light-dark(#3E4953, #D8DDE0);
71
+ --zd-syntax-inserted: light-dark(#4D6356, #A9BFAD);
72
+ --zd-syntax-deleted: light-dark(#825151, #D8B0AD);
73
+ /* diff rows: opaque audited state fills instead of the 15% tint */
74
+ --zfb-hi-ins-bg: light-dark(#DDE3E3, #384044);
75
+ --zfb-hi-del-bg: light-dark(#E2E1E3, #3C3F44);
76
+
77
+ /* Tier-3 seams */
78
+ --zdc-nav-active-indicator-color: light-dark(#E4E0DE, #3E3E40);
79
+ }
80
+
81
+ /* ---- page, chrome surfaces and decorative rules ---- */
82
+
83
+ html[data-theme-pack="quiet-slate"] header[data-header],
84
+ html[data-theme-pack="quiet-slate"] footer[data-footer] {
85
+ background-color: var(--zd-surface);
86
+ border-color: light-dark(#CBD5DD, #4A5661);
87
+ }
88
+
89
+ html[data-theme-pack="quiet-slate"] footer[data-footer] div {
90
+ border-color: light-dark(#CBD5DD, #4A5661);
91
+ }
92
+
93
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar,
94
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar],
95
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar div,
96
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] div,
97
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar nav,
98
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] nav {
99
+ border-color: light-dark(#CBD5DD, #4A5661);
100
+ }
101
+
102
+ html[data-theme-pack="quiet-slate"] nav[data-zd-toc] ul,
103
+ html[data-theme-pack="quiet-slate"] div[data-zd-mobile-toc],
104
+ html[data-theme-pack="quiet-slate"] div[data-zd-mobile-toc] ul {
105
+ border-color: light-dark(#CBD5DD, #4A5661);
106
+ }
107
+
108
+ html[data-theme-pack="quiet-slate"] [data-site-nav] div,
109
+ html[data-theme-pack="quiet-slate"] [data-tabs-nav],
110
+ html[data-theme-pack="quiet-slate"] [data-version-menu] > li,
111
+ html[data-theme-pack="quiet-slate"] [data-nav-more-menu] > li,
112
+ html[data-theme-pack="quiet-slate"] [data-language-menu] > li,
113
+ html[data-theme-pack="quiet-slate"] dialog[data-search-dialog] > div div,
114
+ html[data-theme-pack="quiet-slate"] dialog[data-search-dialog] [data-search-count-narrow],
115
+ html[data-theme-pack="quiet-slate"] dialog[data-doc-history-panel] > div,
116
+ html[data-theme-pack="quiet-slate"] [data-theme-pack-switcher] dialog div,
117
+ html[data-theme-pack="quiet-slate"] dialog[data-zd-ai-chat] > div > div {
118
+ border-color: light-dark(#CBD5DD, #4A5661);
119
+ }
120
+
121
+ html[data-theme-pack="quiet-slate"] .zd-content h1,
122
+ html[data-theme-pack="quiet-slate"] .zd-content table,
123
+ html[data-theme-pack="quiet-slate"] .zd-content th,
124
+ html[data-theme-pack="quiet-slate"] .zd-content td,
125
+ html[data-theme-pack="quiet-slate"] .zd-content hr,
126
+ html[data-theme-pack="quiet-slate"] .zd-content pre,
127
+ html[data-theme-pack="quiet-slate"] .zd-content .code-block-title,
128
+ html[data-theme-pack="quiet-slate"] .zd-content > section,
129
+ html[data-theme-pack="quiet-slate"] .zd-content > ol > li:not(:hover):not(:focus-within),
130
+ html[data-theme-pack="quiet-slate"] .zd-content > nav[data-doc-pager] > a:not(:hover),
131
+ html[data-theme-pack="quiet-slate"] .zd-home-rule {
132
+ border-color: light-dark(#CBD5DD, #4A5661);
133
+ }
134
+
135
+ /* ---- necessary control and field boundaries ---- */
136
+
137
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar button,
138
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] button,
139
+ html[data-theme-pack="quiet-slate"] header[data-header] button,
140
+ html[data-theme-pack="quiet-slate"] [data-nav-item-dropdown] > div > div,
141
+ html[data-theme-pack="quiet-slate"] [data-version-menu],
142
+ html[data-theme-pack="quiet-slate"] button[data-version-toggle]:not(:hover),
143
+ html[data-theme-pack="quiet-slate"] button[data-language-toggle]:not(:hover),
144
+ html[data-theme-pack="quiet-slate"] button[data-doc-history-trigger]:not(:hover),
145
+ html[data-theme-pack="quiet-slate"] button[data-switcher-launcher]:not(:hover),
146
+ html[data-theme-pack="quiet-slate"] dialog[data-search-dialog] > div,
147
+ html[data-theme-pack="quiet-slate"] [data-site-nav] button,
148
+ html[data-theme-pack="quiet-slate"] [data-nav-more-menu],
149
+ html[data-theme-pack="quiet-slate"] [data-language-menu],
150
+ html[data-theme-pack="quiet-slate"] [data-theme-pack-switcher] dialog,
151
+ html[data-theme-pack="quiet-slate"] dialog[data-zd-ai-chat] input,
152
+ html[data-theme-pack="quiet-slate"] dialog.zd-enlarge-dialog,
153
+ html[data-theme-pack="quiet-slate"] dialog.zd-mermaid-dialog,
154
+ html[data-theme-pack="quiet-slate"] .code-btn:not(:hover),
155
+ html[data-theme-pack="quiet-slate"] .zd-desktop-sidebar-toggle,
156
+ html[data-theme-pack="quiet-slate"] .zd-desktop-toc-toggle,
157
+ html[data-theme-pack="quiet-slate"] kbd {
158
+ border-color: light-dark(#6C7D88, #98A6B2);
159
+ }
160
+
161
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar [data-sidebar-filter-region] > div,
162
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] [data-sidebar-filter-region] > div {
163
+ box-shadow: inset 0 0 0 1px light-dark(#6C7D88, #98A6B2);
164
+ }
165
+
166
+ /* ---- headings ---- */
167
+
168
+ html[data-theme-pack="quiet-slate"] .zd-content h1,
169
+ html[data-theme-pack="quiet-slate"] .zd-content h2,
170
+ html[data-theme-pack="quiet-slate"] .zd-content h3,
171
+ html[data-theme-pack="quiet-slate"] .zd-content h4,
172
+ html[data-theme-pack="quiet-slate"] .zd-content h5,
173
+ html[data-theme-pack="quiet-slate"] .zd-content h6 {
174
+ color: light-dark(#313F4B, #DEE4EA);
175
+ }
176
+
177
+ html[data-theme-pack="quiet-slate"] .zd-content h2:where(:not(.zd-home-heading)):where(:not(.zd-compact-prose *)) {
178
+ border-image: linear-gradient(to right, color-mix(in srgb, light-dark(#6C7D88, #98A6B2) 65%, light-dark(#EDF1F3, #2B3238)), transparent) 1 !important;
179
+ }
180
+
181
+ html[data-theme-pack="quiet-slate"] .zd-content h3:where(:not(.zd-compact-prose *)),
182
+ html[data-theme-pack="quiet-slate"] .zd-content h4:where(:not(.zd-compact-prose *)) {
183
+ border-image: linear-gradient(to right, light-dark(#CBD5DD, #4A5661), transparent) 1 !important;
184
+ }
185
+
186
+ /* ---- code ---- */
187
+
188
+ html[data-theme-pack="quiet-slate"] .zd-content .code-block-title {
189
+ background-color: var(--zd-code-bg);
190
+ color: var(--zd-muted);
191
+ }
192
+
193
+ html[data-theme-pack="quiet-slate"] pre.hi-root .line.highlighted,
194
+ html[data-theme-pack="quiet-slate"] pre.hi-root [data-line-highlight="true"] {
195
+ background-color: light-dark(#E4E0DE, #3E3E40);
196
+ box-shadow: inset 3px 0 0 var(--zd-accent);
197
+ }
198
+
199
+ html[data-theme-pack="quiet-slate"] pre.hi-root .line .highlighted-word {
200
+ background-color: light-dark(#DBE2E7, #3C4650);
201
+ }
202
+
203
+ html[data-theme-pack="quiet-slate"] .zd-content th,
204
+ html[data-theme-pack="quiet-slate"] .zd-content thead {
205
+ background-color: var(--zd-surface);
206
+ }
207
+
208
+ /* ---- current navigation: active fill, accent text, 3px marker ---- */
209
+
210
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar a[aria-current="page"],
211
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] a[aria-current="page"],
212
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar div:has(> a[aria-current="page"]),
213
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] div:has(> a[aria-current="page"]) {
214
+ background-color: light-dark(#E4E0DE, #3E3E40);
215
+ color: var(--zd-accent);
216
+ }
217
+
218
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar a[aria-current="page"],
219
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] a[aria-current="page"] {
220
+ box-shadow: inset 3px 0 0 var(--zd-accent);
221
+ }
222
+
223
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar a[aria-current="page"] *,
224
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] a[aria-current="page"] *,
225
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar div:has(> a[aria-current="page"]) > button,
226
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] div:has(> a[aria-current="page"]) > button,
227
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar div:has(> a[aria-current="page"]) > button *,
228
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] div:has(> a[aria-current="page"]) > button * {
229
+ color: var(--zd-accent);
230
+ }
231
+
232
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar div:has(> a[aria-current="page"]) > button,
233
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] div:has(> a[aria-current="page"]) > button {
234
+ background-color: transparent;
235
+ border-color: light-dark(#6C7D88, #98A6B2);
236
+ }
237
+
238
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar a[aria-current="page"]:hover,
239
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] a[aria-current="page"]:hover,
240
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar a[aria-current="page"]:focus-visible,
241
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] a[aria-current="page"]:focus-visible,
242
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar div:has(> a[aria-current="page"]) > button:hover,
243
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] div:has(> a[aria-current="page"]) > button:hover,
244
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar div:has(> a[aria-current="page"]) > button:focus-visible,
245
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] div:has(> a[aria-current="page"]) > button:focus-visible {
246
+ background-color: light-dark(#E4E0DE, #3E3E40);
247
+ color: var(--zd-accent-hover);
248
+ }
249
+
250
+ html[data-theme-pack="quiet-slate"] [data-header-nav] a[aria-current="page"],
251
+ html[data-theme-pack="quiet-slate"] [data-header-nav] a[aria-current="page"]:hover,
252
+ html[data-theme-pack="quiet-slate"] [data-header-nav] a[aria-current="page"]:focus-visible {
253
+ background-color: light-dark(#E4E0DE, #3E3E40);
254
+ color: var(--zd-accent);
255
+ box-shadow: inset 0 -3px 0 var(--zd-accent);
256
+ }
257
+
258
+ html[data-theme-pack="quiet-slate"] [data-header-nav] a[aria-current="page"] * {
259
+ color: var(--zd-accent);
260
+ }
261
+
262
+ html[data-theme-pack="quiet-slate"] nav[data-zd-toc] a {
263
+ padding-inline: 0.5rem;
264
+ }
265
+
266
+ html[data-theme-pack="quiet-slate"] nav[data-zd-toc] a[aria-current="true"] {
267
+ background-color: light-dark(#E4E0DE, #3E3E40);
268
+ color: var(--zd-accent);
269
+ box-shadow: inset 3px 0 0 var(--zd-accent);
270
+ }
271
+
272
+ /* ---- inactive navigation hover ---- */
273
+
274
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar [data-sidebar-tree-root] a:not([aria-current="page"]):hover,
275
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] [data-sidebar-tree-root] a:not([aria-current="page"]):hover {
276
+ background-color: light-dark(#DBE2E7, #3C4650);
277
+ color: var(--zd-accent);
278
+ }
279
+
280
+ html[data-theme-pack="quiet-slate"] [data-site-nav] a:hover {
281
+ color: var(--zd-accent);
282
+ }
283
+
284
+ /* ---- tag chips: line outline, bg fill, opaque muted count ---- */
285
+
286
+ html[data-theme-pack="quiet-slate"] a[data-zd-tag-chip] > [data-zd-tag-chip-outline] {
287
+ background-color: light-dark(#CBD5DD, #4A5661);
288
+ }
289
+
290
+ html[data-theme-pack="quiet-slate"] a[data-zd-tag-chip] > [data-zd-tag-chip-label] {
291
+ background-color: var(--zd-bg);
292
+ color: var(--zd-fg);
293
+ }
294
+
295
+ html[data-theme-pack="quiet-slate"] a[data-zd-tag-chip] [data-zd-tag-count],
296
+ html[data-theme-pack="quiet-slate"] footer[data-footer] [data-zd-tag-count] {
297
+ opacity: 1;
298
+ color: var(--zd-muted);
299
+ }
300
+
301
+ html[data-theme-pack="quiet-slate"] a[data-zd-tag-chip]:hover > [data-zd-tag-chip-outline],
302
+ html[data-theme-pack="quiet-slate"] a[data-zd-tag-chip]:focus-visible > [data-zd-tag-chip-outline] {
303
+ background-color: var(--zd-accent);
304
+ }
305
+
306
+ html[data-theme-pack="quiet-slate"] a[data-zd-tag-chip]:hover > [data-zd-tag-chip-label],
307
+ html[data-theme-pack="quiet-slate"] a[data-zd-tag-chip]:focus-visible > [data-zd-tag-chip-label] {
308
+ background-color: light-dark(#DBE2E7, #3C4650);
309
+ color: var(--zd-accent);
310
+ }
311
+
312
+ html[data-theme-pack="quiet-slate"] a[data-zd-tag-chip]:hover [data-zd-tag-count],
313
+ html[data-theme-pack="quiet-slate"] a[data-zd-tag-chip]:focus-visible [data-zd-tag-count],
314
+ html[data-theme-pack="quiet-slate"] footer[data-footer] a:hover [data-zd-tag-count],
315
+ html[data-theme-pack="quiet-slate"] footer[data-footer] a:focus-visible [data-zd-tag-count] {
316
+ color: var(--zd-accent);
317
+ }
318
+
319
+ /* ---- admonitions: soft fills, semantic title + stripe (labels/icons kept) ---- */
320
+
321
+ html[data-theme-pack="quiet-slate"] [data-admonition="note"] {
322
+ background-color: light-dark(#E4E0DE, #3E3E40);
323
+ border-left-color: var(--zd-accent);
324
+ }
325
+
326
+ html[data-theme-pack="quiet-slate"] [data-admonition="note"] .admonition-title {
327
+ color: var(--zd-accent);
328
+ }
329
+
330
+ html[data-theme-pack="quiet-slate"] [data-admonition="important"] {
331
+ background-color: light-dark(#E4E0DE, #3E3E40);
332
+ border-left-color: var(--zd-accent);
333
+ }
334
+
335
+ html[data-theme-pack="quiet-slate"] [data-admonition="important"] .admonition-title {
336
+ color: var(--zd-accent);
337
+ }
338
+
339
+ html[data-theme-pack="quiet-slate"] [data-admonition="info"] {
340
+ background-color: light-dark(#DCE3E6, #374047);
341
+ border-left-color: var(--zd-info);
342
+ }
343
+
344
+ html[data-theme-pack="quiet-slate"] [data-admonition="info"] .admonition-title {
345
+ color: var(--zd-info);
346
+ }
347
+
348
+ html[data-theme-pack="quiet-slate"] [data-admonition="tip"] {
349
+ background-color: light-dark(#DDE3E3, #384044);
350
+ border-left-color: var(--zd-success);
351
+ }
352
+
353
+ html[data-theme-pack="quiet-slate"] [data-admonition="tip"] .admonition-title {
354
+ color: var(--zd-success);
355
+ }
356
+
357
+ html[data-theme-pack="quiet-slate"] [data-admonition="warning"] {
358
+ background-color: light-dark(#E0E2E0, #3C3F40);
359
+ border-left-color: var(--zd-warning);
360
+ }
361
+
362
+ html[data-theme-pack="quiet-slate"] [data-admonition="warning"] .admonition-title {
363
+ color: var(--zd-warning);
364
+ }
365
+
366
+ html[data-theme-pack="quiet-slate"] [data-admonition="danger"] {
367
+ background-color: light-dark(#E2E1E3, #3C3F44);
368
+ border-left-color: var(--zd-danger);
369
+ }
370
+
371
+ html[data-theme-pack="quiet-slate"] [data-admonition="danger"] .admonition-title {
372
+ color: var(--zd-danger);
373
+ }
374
+
375
+ html[data-theme-pack="quiet-slate"] [data-admonition="caution"] {
376
+ background-color: light-dark(#E2E1E3, #3C3F44);
377
+ border-left-color: var(--zd-danger);
378
+ }
379
+
380
+ html[data-theme-pack="quiet-slate"] [data-admonition="caution"] .admonition-title {
381
+ color: var(--zd-danger);
382
+ }
383
+
384
+ /* ---- keyboard focus: 2px accent outline, 3px offset (inset inside scrollers so it is never clipped) ---- */
385
+
386
+ html[data-theme-pack="quiet-slate"] :focus-visible {
387
+ outline: 2px solid var(--zd-accent);
388
+ outline-offset: 3px;
389
+ }
390
+
391
+ html[data-theme-pack="quiet-slate"] #desktop-sidebar :focus-visible,
392
+ html[data-theme-pack="quiet-slate"] aside[data-zd-mobile-sidebar] :focus-visible,
393
+ html[data-theme-pack="quiet-slate"] nav[data-zd-toc] :focus-visible,
394
+ html[data-theme-pack="quiet-slate"] div[data-zd-mobile-toc] :focus-visible {
395
+ outline-offset: -2px;
396
+ }
397
+
398
+ html[data-theme-pack="quiet-slate"] .zd-content a,
399
+ html[data-theme-pack="quiet-slate"] .zd-content button {
400
+ text-underline-offset: 3px;
401
+ }