@takazudo/zudo-doc 4.2.1 → 4.4.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.
- package/CHANGELOG.md +43 -0
- package/README.md +3 -3
- package/bin/zudo-doc.mjs +54 -13
- package/dist/auto-logo/index.d.ts +18 -0
- package/dist/auto-logo/index.js +33 -0
- package/dist/auto-logo/shapes.d.ts +32 -0
- package/dist/auto-logo/shapes.js +183 -0
- package/dist/auto-logo/standalone.d.ts +7 -0
- package/dist/auto-logo/standalone.js +35 -0
- package/dist/color-scheme-utils.d.ts +4 -3
- package/dist/color-scheme-utils.js +1 -1
- package/dist/config/component-tokens.js +2 -2
- package/dist/config.d.ts +23 -1
- package/dist/config.js +3 -0
- package/dist/content.css +4 -3
- package/dist/doc-content-header/index.js +1 -1
- package/dist/doc-history/index.js +1 -1
- package/dist/doc-history-area/index.d.ts +1 -0
- package/dist/doc-history-area/index.js +3 -0
- package/dist/doc-page-shell/index.js +1 -1
- package/dist/doc-pager/index.js +2 -2
- package/dist/eject-logo/config-parse.d.ts +25 -0
- package/dist/eject-logo/config-parse.js +68 -0
- package/dist/eject-logo/config-rewriter.d.ts +22 -0
- package/dist/eject-logo/config-rewriter.js +68 -0
- package/dist/eject-logo/eject.d.ts +18 -0
- package/dist/eject-logo/eject.js +66 -0
- package/dist/eject-logo/index.d.ts +4 -0
- package/dist/eject-logo/index.js +16 -0
- package/dist/eject-logo/site-name.d.ts +21 -0
- package/dist/eject-logo/site-name.js +31 -0
- package/dist/features.css +8 -29
- package/dist/header/header.js +14 -6
- package/dist/header/nav-class-tokens.d.ts +12 -0
- package/dist/header/nav-class-tokens.js +80 -0
- package/dist/header/nav-overflow-script.js +33 -16
- package/dist/home-page/index.d.ts +34 -5
- package/dist/home-page/index.js +95 -38
- package/dist/home-page/prepare-home-data.d.ts +9 -0
- package/dist/home-page/prepare-home-data.js +10 -3
- package/dist/html-preview-wrapper/highlight-runtime.d.ts +40 -0
- package/dist/html-preview-wrapper/highlight-runtime.js +58 -0
- package/dist/html-preview-wrapper/highlighted-code.d.ts +3 -2
- package/dist/html-preview-wrapper/highlighted-code.js +11 -30
- package/dist/i18n-defaults/index.js +3 -0
- package/dist/metainfo/doc-metainfo.js +35 -22
- package/dist/plugins/doc-history.js +6 -2
- package/dist/plugins/internal/doc-history/index.d.ts +2 -0
- package/dist/plugins/internal/doc-history/index.js +5 -0
- package/dist/plugins/internal/doc-history/pre-build.d.ts +2 -0
- package/dist/plugins/internal/doc-history/pre-build.js +3 -0
- package/dist/preset.d.ts +1 -0
- package/dist/preset.js +2 -1
- package/dist/routes/index.js +13 -3
- package/dist/routes/locale-index.js +12 -2
- package/dist/safelist.css +1 -1
- package/dist/settings.d.ts +15 -0
- package/dist/sidebar-tree-island/index.js +3 -3
- package/dist/theme-cli/config-scanner.js +47 -0
- package/dist/theme-packs/academia/fonts/CourierPrime-400-latin.woff2 +0 -0
- package/dist/theme-packs/academia/fonts/CourierPrime-700-latin.woff2 +0 -0
- package/dist/theme-packs/academia/fonts/OFL.txt +94 -0
- package/dist/theme-packs/academia/fonts/SourceSerif4-italic-latin.woff2 +0 -0
- package/dist/theme-packs/academia/fonts/SourceSerif4-latin.woff2 +0 -0
- package/dist/theme-packs/academia/meta.json +37 -0
- package/dist/theme-packs/academia/pack.css +505 -0
- package/dist/theme-packs/bauhaus/fonts/ArchivoBlack-latin.woff2 +0 -0
- package/dist/theme-packs/bauhaus/fonts/Jost-latin.woff2 +0 -0
- package/dist/theme-packs/bauhaus/fonts/OFL.txt +95 -0
- package/dist/theme-packs/bauhaus/fonts/SpaceMono-400-latin.woff2 +0 -0
- package/dist/theme-packs/bauhaus/fonts/SpaceMono-700-latin.woff2 +0 -0
- package/dist/theme-packs/bauhaus/meta.json +38 -0
- package/dist/theme-packs/bauhaus/pack.css +614 -0
- package/dist/theme-packs/blueprint/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
- package/dist/theme-packs/blueprint/fonts/IBMPlexMono-400-latin.woff2 +0 -0
- package/dist/theme-packs/blueprint/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
- package/dist/theme-packs/blueprint/fonts/IBMPlexMono-500-latin.woff2 +0 -0
- package/dist/theme-packs/blueprint/fonts/Inter-latin-ext.woff2 +0 -0
- package/dist/theme-packs/blueprint/fonts/Inter-latin.woff2 +0 -0
- package/dist/theme-packs/blueprint/fonts/JosefinSans-latin.woff2 +0 -0
- package/dist/theme-packs/blueprint/fonts/OFL.txt +95 -0
- package/dist/theme-packs/blueprint/meta.json +38 -0
- package/dist/theme-packs/blueprint/pack.css +577 -0
- package/dist/theme-packs/botanica/fonts/CormorantGaramond-latin.woff2 +0 -0
- package/dist/theme-packs/botanica/fonts/CourierPrime-400-latin-ext.woff2 +0 -0
- package/dist/theme-packs/botanica/fonts/CourierPrime-400-latin.woff2 +0 -0
- package/dist/theme-packs/botanica/fonts/CourierPrime-700-latin-ext.woff2 +0 -0
- package/dist/theme-packs/botanica/fonts/CourierPrime-700-latin.woff2 +0 -0
- package/dist/theme-packs/botanica/fonts/CrimsonPro-latin-italic.woff2 +0 -0
- package/dist/theme-packs/botanica/fonts/CrimsonPro-latin.woff2 +0 -0
- package/dist/theme-packs/botanica/fonts/OFL.txt +95 -0
- package/dist/theme-packs/botanica/meta.json +38 -0
- package/dist/theme-packs/botanica/pack.css +546 -0
- package/dist/theme-packs/brutalist/meta.json +1 -1
- package/dist/theme-packs/brutalist/pack.css +10 -9
- package/dist/theme-packs/eink/fonts/CourierPrime-400-latin-ext.woff2 +0 -0
- package/dist/theme-packs/eink/fonts/CourierPrime-400-latin.woff2 +0 -0
- package/dist/theme-packs/eink/fonts/CourierPrime-700-latin-ext.woff2 +0 -0
- package/dist/theme-packs/eink/fonts/CourierPrime-700-latin.woff2 +0 -0
- package/dist/theme-packs/eink/fonts/EBGaramond-latin-italic.woff2 +0 -0
- package/dist/theme-packs/eink/fonts/EBGaramond-latin.woff2 +0 -0
- package/dist/theme-packs/eink/fonts/OFL.txt +94 -0
- package/dist/theme-packs/eink/meta.json +37 -0
- package/dist/theme-packs/eink/pack.css +490 -0
- package/dist/theme-packs/foundry/meta.json +1 -1
- package/dist/theme-packs/foundry/pack.css +2 -2
- package/dist/theme-packs/hearth/meta.json +1 -1
- package/dist/theme-packs/hearth/pack.css +15 -4
- package/dist/theme-packs/nocturne/pack.css +4 -0
- package/dist/theme-packs/observatory/meta.json +1 -1
- package/dist/theme-packs/observatory/pack.css +4 -1
- package/dist/theme-packs/onyx/pack.css +6 -0
- package/dist/theme-packs/phosphor/pack.css +4 -0
- package/dist/theme-packs/riso/fonts/ArchivoBlack-latin.woff2 +0 -0
- package/dist/theme-packs/riso/fonts/OFL.txt +95 -0
- package/dist/theme-packs/riso/fonts/SpaceGrotesk-latin.woff2 +0 -0
- package/dist/theme-packs/riso/fonts/SpaceMono-400-italic-latin.woff2 +0 -0
- package/dist/theme-packs/riso/fonts/SpaceMono-400-latin.woff2 +0 -0
- package/dist/theme-packs/riso/fonts/SpaceMono-700-latin.woff2 +0 -0
- package/dist/theme-packs/riso/meta.json +38 -0
- package/dist/theme-packs/riso/pack.css +602 -0
- package/dist/theme-packs/sakura/fonts/MPlus1Code-400-latin.woff2 +0 -0
- package/dist/theme-packs/sakura/fonts/MPlus1Code-500-latin.woff2 +0 -0
- package/dist/theme-packs/sakura/fonts/Nunito-latin.woff2 +0 -0
- package/dist/theme-packs/sakura/fonts/OFL.txt +95 -0
- package/dist/theme-packs/sakura/fonts/ShipporiMincho-600-latin.woff2 +0 -0
- package/dist/theme-packs/sakura/fonts/ShipporiMincho-700-latin.woff2 +0 -0
- package/dist/theme-packs/sakura/meta.json +38 -0
- package/dist/theme-packs/sakura/pack.css +473 -0
- package/dist/theme-packs/scandi/fonts/Manrope-latin.woff2 +0 -0
- package/dist/theme-packs/scandi/fonts/OFL.txt +94 -0
- package/dist/theme-packs/scandi/fonts/SplineSansMono-latin.woff2 +0 -0
- package/dist/theme-packs/scandi/meta.json +37 -0
- package/dist/theme-packs/scandi/pack.css +370 -0
- package/dist/theme-packs/sumi/meta.json +1 -1
- package/dist/theme-packs/sumi/pack.css +4 -1
- package/dist/theme-packs/swissgrid/pack.css +4 -0
- package/dist/theme-packs/tidepool/fonts/JetBrainsMono-latin-ext.woff2 +0 -0
- package/dist/theme-packs/tidepool/fonts/JetBrainsMono-latin.woff2 +0 -0
- package/dist/theme-packs/tidepool/fonts/OFL.txt +94 -0
- package/dist/theme-packs/tidepool/fonts/SpaceGrotesk-latin.woff2 +0 -0
- package/dist/theme-packs/tidepool/meta.json +37 -0
- package/dist/theme-packs/tidepool/pack.css +425 -0
- package/dist/theme-packs/timberline/fonts/Fraunces-italic-latin.woff2 +0 -0
- package/dist/theme-packs/timberline/fonts/Fraunces-latin.woff2 +0 -0
- package/dist/theme-packs/timberline/fonts/JetBrainsMono-latin.woff2 +0 -0
- package/dist/theme-packs/timberline/fonts/OFL.txt +95 -0
- package/dist/theme-packs/timberline/fonts/SourceSans3-italic-latin.woff2 +0 -0
- package/dist/theme-packs/timberline/fonts/SourceSans3-latin.woff2 +0 -0
- package/dist/theme-packs/timberline/meta.json +38 -0
- package/dist/theme-packs/timberline/pack.css +509 -0
- package/dist/theme-packs/washi/meta.json +1 -1
- package/dist/theme-packs/washi/pack.css +6 -26
- package/dist/theme-packs-registry/validator.js +24 -1
- package/dist/theme.css +1 -1
- package/eject/doc-history/index.tsx +1 -1
- package/eject/doc-pager/index.tsx +2 -2
- package/eject/header/header.tsx +16 -8
- package/eject/header/nav-class-tokens.ts +115 -0
- package/eject/header/nav-overflow-script.ts +49 -16
- package/eject/sidebar-tree-island/index.tsx +4 -4
- package/package.json +16 -13
- package/routes-src/index.tsx +10 -3
- package/routes-src/locale-index.tsx +9 -2
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
Copyright 2017 The EB Garamond Project Authors (https://github.com/octaviopardo/EBGaramond12)
|
|
2
|
+
Copyright 2015 The Courier Prime Project Authors (https://github.com/quoteunquoteapps/CourierPrime)
|
|
3
|
+
|
|
4
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
5
|
+
This license is copied below, and is also available with a FAQ at:
|
|
6
|
+
https://scripts.sil.org/OFL
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
-----------------------------------------------------------
|
|
10
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
11
|
+
-----------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
PREAMBLE
|
|
14
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
15
|
+
development of collaborative font projects, to support the font creation
|
|
16
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
17
|
+
open framework in which fonts may be shared and improved in partnership
|
|
18
|
+
with others.
|
|
19
|
+
|
|
20
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
21
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
22
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
23
|
+
redistributed and/or sold with any software provided that any reserved
|
|
24
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
25
|
+
however, cannot be released under any other type of license. The
|
|
26
|
+
requirement for fonts to remain under this license does not apply
|
|
27
|
+
to any document created using the fonts or their derivatives.
|
|
28
|
+
|
|
29
|
+
DEFINITIONS
|
|
30
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
31
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
32
|
+
include source files, build scripts and documentation.
|
|
33
|
+
|
|
34
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
35
|
+
copyright statement(s).
|
|
36
|
+
|
|
37
|
+
"Original Version" refers to the collection of Font Software components as
|
|
38
|
+
distributed by the Copyright Holder(s).
|
|
39
|
+
|
|
40
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
41
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
42
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
43
|
+
new environment.
|
|
44
|
+
|
|
45
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
46
|
+
writer or other person who contributed to the Font Software.
|
|
47
|
+
|
|
48
|
+
PERMISSION & CONDITIONS
|
|
49
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
50
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
51
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
52
|
+
Software, subject to the following conditions:
|
|
53
|
+
|
|
54
|
+
1) Neither the Font Software nor any of its individual components,
|
|
55
|
+
in Original or Modified Versions, may be sold by itself.
|
|
56
|
+
|
|
57
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
58
|
+
redistributed and/or sold with any software, provided that each copy
|
|
59
|
+
contains the above copyright notice and this license. These can be
|
|
60
|
+
included either as stand-alone text files, human-readable headers or
|
|
61
|
+
in the appropriate machine-readable metadata fields within text or
|
|
62
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
63
|
+
|
|
64
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
65
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
66
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
67
|
+
presented to the users.
|
|
68
|
+
|
|
69
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
70
|
+
Software shall not be used to promote, endorse or advertise any
|
|
71
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
72
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
73
|
+
permission.
|
|
74
|
+
|
|
75
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
76
|
+
must be distributed entirely under this license, and must not be
|
|
77
|
+
distributed under any other license. The requirement for fonts to
|
|
78
|
+
remain under this license does not apply to any document created
|
|
79
|
+
using the Font Software.
|
|
80
|
+
|
|
81
|
+
TERMINATION
|
|
82
|
+
This license becomes null and void if any of the above conditions are
|
|
83
|
+
not met.
|
|
84
|
+
|
|
85
|
+
DISCLAIMER
|
|
86
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
87
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
88
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
89
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
90
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
91
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
92
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
93
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
94
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"slug": "eink",
|
|
4
|
+
"name": "E-Ink",
|
|
5
|
+
"description": "E-reader grayscale — warm paper, near-black ink, shadowless hairline chrome, zero radius. Code is told by weight, slant, and gray value; only diffs keep a trace of ink-blue and ink-red.",
|
|
6
|
+
"mode": "light",
|
|
7
|
+
"version": "1.0.0",
|
|
8
|
+
"fonts": {
|
|
9
|
+
"sans": "EB Garamond",
|
|
10
|
+
"mono": "Courier Prime",
|
|
11
|
+
"loaded": ["EB Garamond", "Courier Prime"]
|
|
12
|
+
},
|
|
13
|
+
"preview": {
|
|
14
|
+
"light": {
|
|
15
|
+
"bg": "oklch(0.956 0.007 90)",
|
|
16
|
+
"fg": "oklch(0.24 0.012 85)",
|
|
17
|
+
"accent": "oklch(0.155 0.01 85)",
|
|
18
|
+
"syntax": {
|
|
19
|
+
"keyword": "oklch(0.18 0.01 85)",
|
|
20
|
+
"string": "oklch(0.46 0.012 85)",
|
|
21
|
+
"comment": "oklch(0.505 0.01 85)",
|
|
22
|
+
"callable": "oklch(0.31 0.012 85)"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"dark": {
|
|
26
|
+
"bg": "oklch(0.215 0.008 80)",
|
|
27
|
+
"fg": "oklch(0.885 0.012 85)",
|
|
28
|
+
"accent": "oklch(0.955 0.008 85)",
|
|
29
|
+
"syntax": {
|
|
30
|
+
"keyword": "oklch(0.96 0.008 85)",
|
|
31
|
+
"string": "oklch(0.715 0.012 85)",
|
|
32
|
+
"comment": "oklch(0.645 0.01 85)",
|
|
33
|
+
"callable": "oklch(0.82 0.01 85)"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
E-Ink — zudo-doc theme pack (ADR docs/adr/theme-packs.md)
|
|
3
|
+
|
|
4
|
+
E-reader grayscale: warm paper-gray white, near-black ink,
|
|
5
|
+
shadowless 1px hairline chrome, zero radius, hue-free UI.
|
|
6
|
+
The syntax palette works by grayscale VALUE plus typographic
|
|
7
|
+
style — bold keywords, italic comments and types, mid-gray
|
|
8
|
+
strings — never hue; only inserted/deleted carry a trace of
|
|
9
|
+
ultra-desaturated ink-blue/ink-red (diff semantics need it).
|
|
10
|
+
Dark mode is e-ink night: deep warm gray, pale ink, same
|
|
11
|
+
device with the backlight inverted. EB Garamond (variable
|
|
12
|
+
400–800, roman + italic) is both the reading and display
|
|
13
|
+
face; Courier Prime (400/700) is the typewriter code face.
|
|
14
|
+
Links keep a permanent underline — with hue off the table,
|
|
15
|
+
the underline IS the affordance (hover thickens it).
|
|
16
|
+
|
|
17
|
+
Differentiation from `beacon` (the other hue-minimal pack):
|
|
18
|
+
beacon is AAA-loud pure white/black with blue+red accents and
|
|
19
|
+
thick 3px rules; eink is QUIET warm paper — no accent hue at
|
|
20
|
+
all, and every rule is a 1px hairline.
|
|
21
|
+
|
|
22
|
+
Contrast pre-check (culori, WCAG relative luminance), BOTH
|
|
23
|
+
modes, every pair >= 4.5:1 with headroom (all >= 4.69:1):
|
|
24
|
+
light — fg 14.5:1, muted 6.6:1, accent-as-link 17.2:1,
|
|
25
|
+
code-fg 13.2:1; syntax grays vs code-bg: keyword 15.0,
|
|
26
|
+
name 12.8, callable 10.5, number 8.3, type 6.8, string 5.7,
|
|
27
|
+
comment 4.69; inserted 8.3, deleted 8.2; selection 12.3:1
|
|
28
|
+
dark — fg 12.4:1, muted 6.6:1, accent-as-link 15.4:1,
|
|
29
|
+
code-fg 11.5:1; syntax grays: keyword 14.5, name 11.7,
|
|
30
|
+
callable 9.3, number 7.6, string 6.4, type 5.7, comment
|
|
31
|
+
4.92; inserted 8.2, deleted 7.7; selection 11.3:1
|
|
32
|
+
Composited surfaces verified too: flattened admonition paper,
|
|
33
|
+
header/pager surface, find-in-page washes, diff-line
|
|
34
|
+
backgrounds (8% mix override keeps 6.7:1+ in both modes),
|
|
35
|
+
chat bubbles, matched-keyword inversion, aria-current
|
|
36
|
+
inversion. Adjacent gray-ladder steps run 1.12x–1.26x in
|
|
37
|
+
relative luminance, on top of the weight/slant distinction.
|
|
38
|
+
|
|
39
|
+
Every rule below is scoped under html[data-theme-pack="eink"]
|
|
40
|
+
— this is what makes the runtime pack swap atomic (Decision 3)
|
|
41
|
+
and lets the validator prove a pack can never leak styles
|
|
42
|
+
while inactive (Decision 6.7). The @font-face blocks are the
|
|
43
|
+
sole exception (at-rules can't be selector-scoped).
|
|
44
|
+
|
|
45
|
+
Prototype 12-eink.html (git b185ee6) was inspiration only —
|
|
46
|
+
no prototype selectors ship here; extras target the stable
|
|
47
|
+
hook table in docs/theme-pack-authoring.md (b). Where the
|
|
48
|
+
prototype kept a teal accent, this pack goes stricter:
|
|
49
|
+
fully hue-free, as the Batch-5 brief demands.
|
|
50
|
+
============================================================ */
|
|
51
|
+
|
|
52
|
+
/* EB Garamond — variable weight 400-800, roman. Body, headings, chrome.
|
|
53
|
+
Latin subset only (latin-ext trimmed for the payload budget — rare
|
|
54
|
+
extended-Latin glyphs fall back to the generic serif tail). */
|
|
55
|
+
@font-face {
|
|
56
|
+
font-family: "EB Garamond";
|
|
57
|
+
font-style: normal;
|
|
58
|
+
font-weight: 400 800;
|
|
59
|
+
font-display: swap;
|
|
60
|
+
src: url("./fonts/EBGaramond-latin.woff2") format("woff2");
|
|
61
|
+
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
|
62
|
+
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
|
|
63
|
+
U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* EB Garamond — italic. Blockquotes, emphasis, descriptions, pager titles. */
|
|
67
|
+
@font-face {
|
|
68
|
+
font-family: "EB Garamond";
|
|
69
|
+
font-style: italic;
|
|
70
|
+
font-weight: 400 800;
|
|
71
|
+
font-display: swap;
|
|
72
|
+
src: url("./fonts/EBGaramond-latin-italic.woff2") format("woff2");
|
|
73
|
+
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
|
74
|
+
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
|
|
75
|
+
U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* Courier Prime — the e-reader's typewriter code face. Comments and types
|
|
79
|
+
render italic via synthesized oblique (no italic file shipped — the slant
|
|
80
|
+
cue survives; the grayscale VALUE carries the primary distinction). */
|
|
81
|
+
@font-face {
|
|
82
|
+
font-family: "Courier Prime";
|
|
83
|
+
font-style: normal;
|
|
84
|
+
font-weight: 400;
|
|
85
|
+
font-display: swap;
|
|
86
|
+
src: url("./fonts/CourierPrime-400-latin.woff2") format("woff2");
|
|
87
|
+
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
|
88
|
+
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
|
|
89
|
+
U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@font-face {
|
|
93
|
+
font-family: "Courier Prime";
|
|
94
|
+
font-style: normal;
|
|
95
|
+
font-weight: 400;
|
|
96
|
+
font-display: swap;
|
|
97
|
+
src: url("./fonts/CourierPrime-400-latin-ext.woff2") format("woff2");
|
|
98
|
+
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
|
|
99
|
+
U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
|
|
100
|
+
U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
|
|
101
|
+
U+A720-A7FF;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@font-face {
|
|
105
|
+
font-family: "Courier Prime";
|
|
106
|
+
font-style: normal;
|
|
107
|
+
font-weight: 700;
|
|
108
|
+
font-display: swap;
|
|
109
|
+
src: url("./fonts/CourierPrime-700-latin.woff2") format("woff2");
|
|
110
|
+
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
|
111
|
+
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
|
|
112
|
+
U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@font-face {
|
|
116
|
+
font-family: "Courier Prime";
|
|
117
|
+
font-style: normal;
|
|
118
|
+
font-weight: 700;
|
|
119
|
+
font-display: swap;
|
|
120
|
+
src: url("./fonts/CourierPrime-700-latin-ext.woff2") format("woff2");
|
|
121
|
+
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7,
|
|
122
|
+
U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
|
|
123
|
+
U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
|
|
124
|
+
U+A720-A7FF;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
html[data-theme-pack="eink"] {
|
|
128
|
+
/* Tier-2 semantic roles — warm paper & near-black ink; dark mode is the
|
|
129
|
+
same panel at night. Both modes always via light-dark(). The whole UI
|
|
130
|
+
is hue-free: accent IS ink (a shade blacker than body text), and the
|
|
131
|
+
underline — not color — is the link affordance. */
|
|
132
|
+
--zd-bg: light-dark(oklch(0.956 0.007 90), oklch(0.215 0.008 80));
|
|
133
|
+
--zd-fg: light-dark(oklch(0.24 0.012 85), oklch(0.885 0.012 85));
|
|
134
|
+
/* selection = the e-ink refresh inversion */
|
|
135
|
+
--zd-selection-bg: light-dark(oklch(0.3 0.012 85), oklch(0.84 0.01 85));
|
|
136
|
+
--zd-selection-fg: light-dark(oklch(0.965 0.006 90), oklch(0.19 0.008 80));
|
|
137
|
+
--zd-surface: light-dark(oklch(0.936 0.008 90), oklch(0.245 0.008 80));
|
|
138
|
+
--zd-muted: light-dark(oklch(0.45 0.014 85), oklch(0.7 0.012 85));
|
|
139
|
+
--zd-accent: light-dark(oklch(0.155 0.01 85), oklch(0.955 0.008 85));
|
|
140
|
+
--zd-accent-hover: light-dark(oklch(0.08 0.005 85), oklch(0.995 0.004 85));
|
|
141
|
+
--zd-code-bg: light-dark(oklch(0.924 0.008 90), oklch(0.245 0.008 80));
|
|
142
|
+
--zd-code-fg: light-dark(oklch(0.24 0.012 85), oklch(0.885 0.012 85));
|
|
143
|
+
/* state roles stay grayscale — admonitions differentiate by VALUE,
|
|
144
|
+
border treatment, and glyph, never hue (danger darkest/loudest,
|
|
145
|
+
info lightest/quietest) */
|
|
146
|
+
--zd-success: light-dark(oklch(0.4 0.014 85), oklch(0.75 0.012 85));
|
|
147
|
+
--zd-danger: light-dark(oklch(0.2 0.012 85), oklch(0.93 0.01 85));
|
|
148
|
+
--zd-warning: light-dark(oklch(0.33 0.014 85), oklch(0.8 0.012 85));
|
|
149
|
+
--zd-info: light-dark(oklch(0.46 0.012 85), oklch(0.72 0.012 85));
|
|
150
|
+
|
|
151
|
+
/* an e-ink panel cannot show color anywhere — mermaid diagrams, chat
|
|
152
|
+
bubbles, search marks and image overlays all fold onto the gray ramp
|
|
153
|
+
(the bundled defaults would otherwise leak amber/accent hues) */
|
|
154
|
+
--zd-mermaid-node-bg: light-dark(oklch(0.924 0.008 90), oklch(0.265 0.008 80));
|
|
155
|
+
--zd-mermaid-text: light-dark(oklch(0.24 0.012 85), oklch(0.885 0.012 85));
|
|
156
|
+
--zd-mermaid-line: light-dark(oklch(0.45 0.014 85), oklch(0.62 0.012 85));
|
|
157
|
+
--zd-mermaid-label-bg: light-dark(oklch(0.956 0.007 90), oklch(0.215 0.008 80));
|
|
158
|
+
--zd-mermaid-note-bg: light-dark(oklch(0.9 0.008 90), oklch(0.3 0.008 80));
|
|
159
|
+
--zd-chat-user-bg: light-dark(oklch(0.3 0.012 85), oklch(0.84 0.01 85));
|
|
160
|
+
--zd-chat-user-text: light-dark(oklch(0.965 0.006 90), oklch(0.19 0.008 80));
|
|
161
|
+
--zd-chat-assistant-bg: light-dark(oklch(0.936 0.008 90), oklch(0.265 0.008 80));
|
|
162
|
+
--zd-chat-assistant-text: light-dark(oklch(0.24 0.012 85), oklch(0.885 0.012 85));
|
|
163
|
+
--zd-image-overlay-bg: light-dark(oklch(0.945 0.008 90), oklch(0.19 0.006 80));
|
|
164
|
+
--zd-image-overlay-fg: light-dark(oklch(0.24 0.012 85), oklch(0.885 0.012 85));
|
|
165
|
+
/* search mark = the same refresh inversion as the selection */
|
|
166
|
+
--zd-matched-keyword-bg: light-dark(oklch(0.3 0.012 85), oklch(0.84 0.01 85));
|
|
167
|
+
--zd-matched-keyword-fg: light-dark(oklch(0.965 0.006 90), oklch(0.19 0.008 80));
|
|
168
|
+
|
|
169
|
+
/* syntax — all 9 roles, both modes, told by grayscale VALUE + style:
|
|
170
|
+
the ladder runs keyword (blackest, bold) -> name -> callable (bold) ->
|
|
171
|
+
number -> type (italic) -> string (mid-gray) -> comment (lightest legal
|
|
172
|
+
gray, italic). Only the diff pair keeps a trace of hue: ultra-
|
|
173
|
+
desaturated ink-blue inserted / ink-red deleted. */
|
|
174
|
+
--zd-syntax-keyword: light-dark(oklch(0.18 0.01 85), oklch(0.96 0.008 85));
|
|
175
|
+
--zd-syntax-name: light-dark(oklch(0.25 0.012 85), oklch(0.89 0.01 85));
|
|
176
|
+
--zd-syntax-callable: light-dark(oklch(0.31 0.012 85), oklch(0.82 0.01 85));
|
|
177
|
+
--zd-syntax-number: light-dark(oklch(0.37 0.012 85), oklch(0.76 0.012 85));
|
|
178
|
+
--zd-syntax-type: light-dark(oklch(0.42 0.012 85), oklch(0.685 0.012 85));
|
|
179
|
+
--zd-syntax-string: light-dark(oklch(0.46 0.012 85), oklch(0.715 0.012 85));
|
|
180
|
+
--zd-syntax-comment: light-dark(oklch(0.505 0.01 85), oklch(0.645 0.01 85));
|
|
181
|
+
--zd-syntax-inserted: light-dark(oklch(0.37 0.05 255), oklch(0.78 0.06 250));
|
|
182
|
+
--zd-syntax-deleted: light-dark(oklch(0.38 0.055 25), oklch(0.775 0.075 25));
|
|
183
|
+
/* features.css derives diff-line backgrounds as a 15% mix of the diff ink
|
|
184
|
+
into code-bg; an 8% mix keeps the cue, stays paper-quiet, and holds
|
|
185
|
+
6.7:1+ for the diff inks in both modes (verified composited). */
|
|
186
|
+
--zfb-hi-ins-bg: color-mix(in srgb, var(--zd-syntax-inserted) 8%, var(--zd-code-bg));
|
|
187
|
+
--zfb-hi-del-bg: color-mix(in srgb, var(--zd-syntax-deleted) 8%, var(--zd-code-bg));
|
|
188
|
+
|
|
189
|
+
/* fonts — EB Garamond reads AND displays (one face, the book way);
|
|
190
|
+
Courier Prime for code. Generic tails keep CJK on platform faces. */
|
|
191
|
+
--font-sans: "EB Garamond", "Iowan Old Style", "Palatino Linotype", Georgia,
|
|
192
|
+
serif;
|
|
193
|
+
--font-mono: "Courier Prime", "Courier New", Courier, monospace;
|
|
194
|
+
|
|
195
|
+
/* Tier-3 component seams — a paper device has no rounded corners and no
|
|
196
|
+
heavy display weights; hierarchy comes from size and hairlines. */
|
|
197
|
+
--zdc-doc-title-font: var(--font-sans);
|
|
198
|
+
--zdc-doc-title-weight: 600;
|
|
199
|
+
--zdc-doc-title-tracking: 0.005em;
|
|
200
|
+
--zdc-doc-h2-font: var(--font-sans);
|
|
201
|
+
--zdc-doc-h2-weight: 600;
|
|
202
|
+
--zdc-doc-h2-tracking: 0.01em;
|
|
203
|
+
--zdc-doc-h3-weight: 600;
|
|
204
|
+
--zdc-doc-h4-weight: 600;
|
|
205
|
+
--zdc-doc-link-decoration: underline;
|
|
206
|
+
--zdc-admonition-radius: 0;
|
|
207
|
+
--zdc-admonition-border-width: 4px;
|
|
208
|
+
--zdc-card-radius: 0;
|
|
209
|
+
--zdc-nav-active-indicator-color: var(--zd-fg);
|
|
210
|
+
--zdc-nav-active-weight: 600;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/* ---- E-Ink extras: device stillness — everything drawn with crisp 1px
|
|
214
|
+
warm-gray hairlines; no shadows, no gradients, no corners ---- */
|
|
215
|
+
|
|
216
|
+
/* the page: a book measure for Garamond's small x-height */
|
|
217
|
+
html[data-theme-pack="eink"] body {
|
|
218
|
+
font-size: 1.12rem;
|
|
219
|
+
line-height: 1.7;
|
|
220
|
+
}
|
|
221
|
+
/* .zd-content re-declares font-size/line-height on itself (content.css),
|
|
222
|
+
so the body values above never reach the prose — restate the measure on
|
|
223
|
+
the content root. */
|
|
224
|
+
html[data-theme-pack="eink"] .zd-content {
|
|
225
|
+
font-size: 1.12rem;
|
|
226
|
+
line-height: 1.7;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/* chrome hairlines: the only "shading" this pack allows */
|
|
230
|
+
html[data-theme-pack="eink"] header[data-header] {
|
|
231
|
+
border-bottom: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
232
|
+
box-shadow: none;
|
|
233
|
+
}
|
|
234
|
+
html[data-theme-pack="eink"] #desktop-sidebar {
|
|
235
|
+
border-right: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
236
|
+
}
|
|
237
|
+
html[data-theme-pack="eink"] aside[data-zd-mobile-sidebar] {
|
|
238
|
+
border-right: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
239
|
+
box-shadow: none;
|
|
240
|
+
}
|
|
241
|
+
html[data-theme-pack="eink"] nav[data-zd-toc] ul {
|
|
242
|
+
border-left: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
243
|
+
}
|
|
244
|
+
html[data-theme-pack="eink"] div[data-zd-mobile-toc] {
|
|
245
|
+
border: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
246
|
+
border-radius: 0;
|
|
247
|
+
box-shadow: none;
|
|
248
|
+
}
|
|
249
|
+
html[data-theme-pack="eink"] footer[data-footer] {
|
|
250
|
+
border-top: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
251
|
+
}
|
|
252
|
+
html[data-theme-pack="eink"] .zd-content hr {
|
|
253
|
+
border-top: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* device-menu chrome labels: small, letterspaced, even in Garamond */
|
|
257
|
+
html[data-theme-pack="eink"] [data-header-logo] {
|
|
258
|
+
font-weight: 600;
|
|
259
|
+
font-size: 1.3rem;
|
|
260
|
+
letter-spacing: 0.01em;
|
|
261
|
+
}
|
|
262
|
+
html[data-theme-pack="eink"] [data-nav-item] {
|
|
263
|
+
font-size: 0.82rem;
|
|
264
|
+
font-weight: 600;
|
|
265
|
+
text-transform: uppercase;
|
|
266
|
+
letter-spacing: 0.12em;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/* chapter-title plate: a double book rule under the h1 */
|
|
270
|
+
html[data-theme-pack="eink"] .zd-content h1 {
|
|
271
|
+
padding-bottom: 0.4rem;
|
|
272
|
+
border-bottom: 3px double color-mix(in oklch, var(--zd-fg) 55%, transparent);
|
|
273
|
+
}
|
|
274
|
+
html[data-theme-pack="eink"] .zd-content > p[data-doc-description] {
|
|
275
|
+
font-style: italic;
|
|
276
|
+
font-size: 1.16rem;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/* h2: the SSR-inlined `style="border-image:linear-gradient(...)"` bar is
|
|
280
|
+
defeated with border-image none !important (Decision 6.6's sole
|
|
281
|
+
allowlisted carve-out); a crisp 1px hairline replaces the fade. h3/h4
|
|
282
|
+
want NO bar at all, which zeroing the class-level border-top-width
|
|
283
|
+
achieves without !important (a zero-width border area leaves the inline
|
|
284
|
+
border-image nothing to paint on). */
|
|
285
|
+
html[data-theme-pack="eink"] .zd-content h2 {
|
|
286
|
+
border-image: none !important;
|
|
287
|
+
border-top-width: 1px;
|
|
288
|
+
border-top-color: color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
289
|
+
padding-top: 1.2rem;
|
|
290
|
+
}
|
|
291
|
+
html[data-theme-pack="eink"] .zd-content h3 {
|
|
292
|
+
border-top-width: 0;
|
|
293
|
+
}
|
|
294
|
+
html[data-theme-pack="eink"] .zd-content h4 {
|
|
295
|
+
border-top-width: 0;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/* links: with hue gone, the underline is the affordance — hairline at
|
|
299
|
+
rest, thicker on hover (a non-color hover cue) */
|
|
300
|
+
html[data-theme-pack="eink"] .zd-content a {
|
|
301
|
+
text-decoration-thickness: 1px;
|
|
302
|
+
text-underline-offset: 0.16em;
|
|
303
|
+
}
|
|
304
|
+
html[data-theme-pack="eink"] .zd-content a:hover {
|
|
305
|
+
text-decoration-thickness: 2px;
|
|
306
|
+
}
|
|
307
|
+
/* breadcrumb and footer links sit in text-like contexts — underline them
|
|
308
|
+
too, so no link anywhere relies on color alone */
|
|
309
|
+
html[data-theme-pack="eink"] main nav[aria-label="Breadcrumb"] a,
|
|
310
|
+
html[data-theme-pack="eink"] footer[data-footer] a {
|
|
311
|
+
text-decoration: underline;
|
|
312
|
+
text-decoration-thickness: 1px;
|
|
313
|
+
text-underline-offset: 0.16em;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/* literary prose details */
|
|
317
|
+
html[data-theme-pack="eink"] .zd-content blockquote {
|
|
318
|
+
font-style: italic;
|
|
319
|
+
border-left: 1px solid color-mix(in oklch, var(--zd-fg) 55%, transparent);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/* inline code: an outlined chip, paper-flat — no fill, no corner */
|
|
323
|
+
html[data-theme-pack="eink"] .zd-content code:not(pre code) {
|
|
324
|
+
background: transparent;
|
|
325
|
+
border: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
326
|
+
border-radius: 0;
|
|
327
|
+
font-size: 0.9em;
|
|
328
|
+
padding: 0 0.3rem;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/* code block: a flat e-ink panel behind one hairline; roles read by
|
|
332
|
+
weight, slant, and gray value — never hue */
|
|
333
|
+
html[data-theme-pack="eink"] pre.hi-root {
|
|
334
|
+
border: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
335
|
+
border-radius: 0;
|
|
336
|
+
font-size: 0.95rem;
|
|
337
|
+
line-height: 1.65;
|
|
338
|
+
}
|
|
339
|
+
html[data-theme-pack="eink"] .hi-kw {
|
|
340
|
+
font-weight: 700;
|
|
341
|
+
}
|
|
342
|
+
html[data-theme-pack="eink"] .hi-fn {
|
|
343
|
+
font-weight: 700;
|
|
344
|
+
}
|
|
345
|
+
html[data-theme-pack="eink"] .hi-com {
|
|
346
|
+
font-style: italic;
|
|
347
|
+
}
|
|
348
|
+
html[data-theme-pack="eink"] .hi-ty {
|
|
349
|
+
font-style: italic;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/* find-in-page: the stock warning-tinted washes go gray here — a quiet
|
|
353
|
+
ink wash for matches, the full refresh inversion for the active one */
|
|
354
|
+
html[data-theme-pack="eink"] .find-match {
|
|
355
|
+
background-color: color-mix(in srgb, var(--zd-fg) 12%, transparent);
|
|
356
|
+
border-radius: 0;
|
|
357
|
+
}
|
|
358
|
+
html[data-theme-pack="eink"] .find-match-active {
|
|
359
|
+
background-color: var(--zd-fg);
|
|
360
|
+
color: var(--zd-bg);
|
|
361
|
+
border-radius: 0;
|
|
362
|
+
outline: 1px solid var(--zd-fg);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/* admonitions: flat paper cards in a hairline frame — no tint washes.
|
|
366
|
+
With hue off the table, the variants are told apart by VALUE (each
|
|
367
|
+
title reads its state role's gray), by the LEFT-EDGE treatment
|
|
368
|
+
(solid/double, 4px/6px), and by a monochrome text glyph. The flattened
|
|
369
|
+
background also restores each title gray's full contrast ratio. */
|
|
370
|
+
html[data-theme-pack="eink"] [data-admonition] {
|
|
371
|
+
background-color: var(--zd-bg);
|
|
372
|
+
border: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
373
|
+
border-left-width: var(--zdc-admonition-border-width);
|
|
374
|
+
border-left-style: solid;
|
|
375
|
+
border-left-color: var(--zd-muted);
|
|
376
|
+
}
|
|
377
|
+
html[data-theme-pack="eink"] [data-admonition] .admonition-title {
|
|
378
|
+
font-size: 0.82rem;
|
|
379
|
+
font-weight: 700;
|
|
380
|
+
text-transform: uppercase;
|
|
381
|
+
letter-spacing: 0.1em;
|
|
382
|
+
}
|
|
383
|
+
html[data-theme-pack="eink"] [data-admonition="note"] {
|
|
384
|
+
border-left-color: var(--zd-accent);
|
|
385
|
+
}
|
|
386
|
+
html[data-theme-pack="eink"] [data-admonition="note"] .admonition-title::before {
|
|
387
|
+
content: "✎ ";
|
|
388
|
+
}
|
|
389
|
+
html[data-theme-pack="eink"] [data-admonition="tip"] {
|
|
390
|
+
border-left-color: var(--zd-success);
|
|
391
|
+
}
|
|
392
|
+
html[data-theme-pack="eink"] [data-admonition="tip"] .admonition-title::before {
|
|
393
|
+
content: "✳ ";
|
|
394
|
+
}
|
|
395
|
+
html[data-theme-pack="eink"] [data-admonition="info"] {
|
|
396
|
+
border-left-color: var(--zd-info);
|
|
397
|
+
}
|
|
398
|
+
html[data-theme-pack="eink"] [data-admonition="info"] .admonition-title::before {
|
|
399
|
+
content: "¶ ";
|
|
400
|
+
}
|
|
401
|
+
html[data-theme-pack="eink"] [data-admonition="important"] {
|
|
402
|
+
border-left-width: 6px;
|
|
403
|
+
border-left-color: var(--zd-accent);
|
|
404
|
+
}
|
|
405
|
+
html[data-theme-pack="eink"] [data-admonition="important"] .admonition-title::before {
|
|
406
|
+
content: "‼ ";
|
|
407
|
+
}
|
|
408
|
+
html[data-theme-pack="eink"] [data-admonition="warning"] {
|
|
409
|
+
border-left-width: 6px;
|
|
410
|
+
border-left-style: double;
|
|
411
|
+
border-left-color: var(--zd-warning);
|
|
412
|
+
}
|
|
413
|
+
html[data-theme-pack="eink"] [data-admonition="warning"] .admonition-title::before {
|
|
414
|
+
content: "▲ ";
|
|
415
|
+
}
|
|
416
|
+
html[data-theme-pack="eink"] [data-admonition="caution"] {
|
|
417
|
+
border-left-width: 6px;
|
|
418
|
+
border-left-style: double;
|
|
419
|
+
border-left-color: var(--zd-danger);
|
|
420
|
+
}
|
|
421
|
+
html[data-theme-pack="eink"] [data-admonition="caution"] .admonition-title::before {
|
|
422
|
+
content: "△ ";
|
|
423
|
+
}
|
|
424
|
+
html[data-theme-pack="eink"] [data-admonition="danger"] {
|
|
425
|
+
border-color: var(--zd-danger);
|
|
426
|
+
border-left-width: 6px;
|
|
427
|
+
border-left-style: solid;
|
|
428
|
+
}
|
|
429
|
+
html[data-theme-pack="eink"] [data-admonition="danger"] .admonition-title::before {
|
|
430
|
+
content: "⊗ ";
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/* table: a device data-grid — strong hairline under the header row,
|
|
434
|
+
plain hairlines between rows, letterspaced column labels */
|
|
435
|
+
html[data-theme-pack="eink"] .zd-content th {
|
|
436
|
+
font-size: 0.82rem;
|
|
437
|
+
text-transform: uppercase;
|
|
438
|
+
letter-spacing: 0.09em;
|
|
439
|
+
border-bottom: 1px solid color-mix(in oklch, var(--zd-fg) 55%, transparent);
|
|
440
|
+
}
|
|
441
|
+
html[data-theme-pack="eink"] .zd-content td {
|
|
442
|
+
border-bottom: 1px solid color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/* pager: page-turn cards — hairline frames, no fill; hover answers with
|
|
446
|
+
a stronger rule and the surface gray, never a color */
|
|
447
|
+
html[data-theme-pack="eink"] .zd-content > nav[data-doc-pager] a {
|
|
448
|
+
border-radius: 0;
|
|
449
|
+
border-color: color-mix(in oklch, var(--zd-fg) 28%, transparent);
|
|
450
|
+
box-shadow: none;
|
|
451
|
+
}
|
|
452
|
+
html[data-theme-pack="eink"] .zd-content > nav[data-doc-pager] a:hover {
|
|
453
|
+
border-color: color-mix(in oklch, var(--zd-fg) 55%, transparent);
|
|
454
|
+
background-color: var(--zd-surface);
|
|
455
|
+
}
|
|
456
|
+
html[data-theme-pack="eink"] .zd-content > nav[data-doc-pager] a > div {
|
|
457
|
+
font-size: 0.78rem;
|
|
458
|
+
text-transform: uppercase;
|
|
459
|
+
letter-spacing: 0.1em;
|
|
460
|
+
}
|
|
461
|
+
html[data-theme-pack="eink"] .zd-content > nav[data-doc-pager] a > p {
|
|
462
|
+
font-style: italic;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/* theme-pack flyout: an e-reader settings dialog — double hairline frame,
|
|
466
|
+
square, shadowless; the launcher squares off and "presses" with the
|
|
467
|
+
refresh inversion instead of a glow. The offset outer hairline is drawn
|
|
468
|
+
as box-shadow rings, NOT `outline`, so the card's keyboard focus-visible
|
|
469
|
+
accent outline keeps working (an unlayered pack `outline` would silently
|
|
470
|
+
override that utility — the broadsheet/onyx precedent, #2883 class); the
|
|
471
|
+
flat rings also replace the default elevation shadow, keeping the
|
|
472
|
+
e-paper shadowless. */
|
|
473
|
+
html[data-theme-pack="eink"] [data-switcher-card] {
|
|
474
|
+
background-color: var(--zd-bg);
|
|
475
|
+
border: 1px solid color-mix(in oklch, var(--zd-fg) 55%, transparent);
|
|
476
|
+
border-radius: 0;
|
|
477
|
+
box-shadow:
|
|
478
|
+
0 0 0 3px var(--zd-bg),
|
|
479
|
+
0 0 0 4px color-mix(in oklch, var(--zd-fg) 55%, transparent);
|
|
480
|
+
}
|
|
481
|
+
html[data-theme-pack="eink"] [data-switcher-launcher] {
|
|
482
|
+
background-color: var(--zd-bg);
|
|
483
|
+
border: 1px solid color-mix(in oklch, var(--zd-fg) 55%, transparent);
|
|
484
|
+
border-radius: 0;
|
|
485
|
+
box-shadow: none;
|
|
486
|
+
}
|
|
487
|
+
html[data-theme-pack="eink"] [data-switcher-launcher]:hover {
|
|
488
|
+
background-color: var(--zd-fg);
|
|
489
|
+
color: var(--zd-bg);
|
|
490
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"name": "Foundry",
|
|
5
5
|
"description": "GitHub-neutral baseline — white paper, near-black ink, Primer-blue links, quiet gray rules. Restraint, perfected.",
|
|
6
6
|
"mode": "light",
|
|
7
|
-
"version": "1.0.
|
|
7
|
+
"version": "1.0.2",
|
|
8
8
|
"fonts": {
|
|
9
9
|
"sans": "Inter",
|
|
10
10
|
"mono": "System",
|
|
@@ -129,13 +129,13 @@ html[data-theme-pack="foundry"] [data-nav-item] {
|
|
|
129
129
|
}
|
|
130
130
|
html[data-theme-pack="foundry"] [data-nav-item]:hover {
|
|
131
131
|
text-decoration: none;
|
|
132
|
-
background: color-mix(in srgb, var(--zd-muted)
|
|
132
|
+
background: color-mix(in srgb, var(--zd-muted) 8%, transparent);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
/* sidebar: gray hover wash; active item = subtle fill + Primer-blue bar */
|
|
136
136
|
html[data-theme-pack="foundry"] #desktop-sidebar a:hover {
|
|
137
137
|
text-decoration: none;
|
|
138
|
-
background: color-mix(in srgb, var(--zd-muted)
|
|
138
|
+
background: color-mix(in srgb, var(--zd-muted) 8%, transparent);
|
|
139
139
|
}
|
|
140
140
|
html[data-theme-pack="foundry"] a[data-nav-active] {
|
|
141
141
|
background: color-mix(in srgb, var(--zd-muted) 16%, transparent);
|