@dataimago/css 0.1.0-alpha.22 → 0.1.0-alpha.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +70 -0
  2. package/dist/bin/dataimago-sync.mjs +19 -1
  3. package/dist/dataviz/dataimago-dataviz.css +1 -1
  4. package/dist/dataviz/dataimago-dataviz.json +2 -2
  5. package/dist/dataviz/dataimago-dataviz.tex +1 -1
  6. package/dist/dataviz/dataimago_dataviz.R +1 -1
  7. package/dist/figures/dataimago-figure.sty +1 -1
  8. package/dist/figures/dataimago-tokens.sty +1 -1
  9. package/dist/fonts/cyrillic/fonts.css +1 -1
  10. package/dist/fonts/cyrillic-ext/fonts.css +1 -1
  11. package/dist/fonts/greek/fonts.css +1 -1
  12. package/dist/fonts/greek-ext/fonts.css +1 -1
  13. package/dist/fonts/josefin/fonts.css +1 -1
  14. package/dist/fonts/lang.css +1 -1
  15. package/dist/fonts/latin/fonts.css +1 -1
  16. package/dist/fonts/latin-ext/fonts.css +1 -1
  17. package/dist/fonts/math/fonts.css +1 -1
  18. package/dist/fonts/pkg/fonts.css +1 -1
  19. package/dist/fonts/vietnamese/fonts.css +1 -1
  20. package/dist/latex/dataimago-tokens.sty +1 -1
  21. package/dist/latex/dataimago.sty +1 -1
  22. package/dist/outputs.json +53 -44
  23. package/dist/quarto/_extensions/dataimago/monograph/_extension.yml +1 -1
  24. package/dist/quarto/_extensions/dataimago/monograph/dataimago-base.sty +1 -1
  25. package/dist/quarto/_extensions/dataimago/monograph/dataimago-monograph.sty +1 -1
  26. package/dist/quarto/_extensions/dataimago/monograph/dataimago-tokens.sty +1 -1
  27. package/dist/quarto/_extensions/dataimago/monograph/filters/figure-plate.lua +1 -1
  28. package/dist/quarto/_extensions/dataimago/monograph/filters/matter.lua +1 -1
  29. package/dist/quarto/_extensions/dataimago/monograph/filters/pkg-name.lua +1 -1
  30. package/dist/quarto/_extensions/dataimago/monograph/partials/before-body.tex +1 -1
  31. package/dist/quarto/_extensions/dataimago/monograph/partials/title.tex +1 -1
  32. package/dist/quarto/_extensions/dataimago/pkgsite/_extension.yml +28 -0
  33. package/dist/quarto/_extensions/dataimago/pkgsite/components.scss +243 -0
  34. package/dist/quarto/_extensions/dataimago/pkgsite/dataimago-dark.scss +344 -0
  35. package/dist/quarto/_extensions/dataimago/pkgsite/dataimago-light.scss +338 -0
  36. package/dist/quarto/_extensions/dataimago/pkgsite/filters/landing.lua +251 -0
  37. package/dist/quarto/_extensions/dataimago/pkgsite/filters/provenance.lua +212 -0
  38. package/dist/quarto/_extensions/dataimago/pkgsite/hero-fallback.svg +53 -0
  39. package/dist/quarto/_extensions/dataimago/pkgsite/pkgsite-hero.js +99 -0
  40. package/dist/quarto/_extensions/dataimago/pkgsite/pkgsite.scss +281 -0
  41. package/dist/quarto/components.scss +1 -1
  42. package/dist/quarto/dataimago-dark.scss +1 -1
  43. package/dist/quarto/dataimago-light.scss +1 -1
  44. package/dist/templates/KNOWLEDGE-explorer.md +1 -1
  45. package/dist/templates/KNOWLEDGE-framework.md +1 -1
  46. package/dist/templates/KNOWLEDGE-research.md +1 -1
  47. package/dist/templates/quarto_website/README.md +4 -2
  48. package/dist/templates/quarto_website/_quarto.yml.template +1 -1
  49. package/dist/templates/quarto_website/about.qmd.template +1 -1
  50. package/dist/templates/quarto_website/assets/css/lang.css +1 -1
  51. package/dist/templates/quarto_website/assets/js/custom-anchors.js +1 -1
  52. package/dist/templates/quarto_website/assets/js/logo-switch.js +1 -1
  53. package/dist/templates/quarto_website/assets/js/scroll.js +1 -1
  54. package/dist/templates/quarto_website/ethics.qmd.template +1 -1
  55. package/dist/templates/quarto_website/index.qmd.template +1 -1
  56. package/package.json +1 -1
@@ -0,0 +1,243 @@
1
+ // @dataimago/css@0.1.0-alpha.24 dist/quarto/_extensions/dataimago/pkgsite/components.scss · sha256:a2b35c50f5dc36aa4cf337e7ff5ea4ec758890c6910776f5a3e1deb31ad44dd4 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.24 dataimago-sync
2
+ /*-- scss:rules --*/
3
+ // dataimago components (.di-*) — generated from src/styles/components/.
4
+ .di-figure-box {
5
+ border: 1px solid var(--color-border-moderate);
6
+ padding: 4px;
7
+ background-color: var(--color-surface-sunken);
8
+ display: inline-block;
9
+ cursor: pointer;
10
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
11
+ }
12
+ .di-figure-box:hover {
13
+ transform: translateY(-2px);
14
+ box-shadow: var(--shadow-prominent, 0 4px 12px rgba(0, 0, 0, 0.15));
15
+ border-color: var(--color-interactive-primary);
16
+ }
17
+ .di-figure-box:active {
18
+ transform: translateY(-1px);
19
+ box-shadow: var(--shadow-moderate, 0 2px 8px rgba(0, 0, 0, 0.12));
20
+ }
21
+ .di-figure-box:focus-visible {
22
+ outline: 2px solid var(--color-interactive-focus);
23
+ outline-offset: 2px;
24
+ }
25
+
26
+ .di-figure-modal {
27
+ display: none;
28
+ position: fixed;
29
+ inset: 0;
30
+ z-index: 9999;
31
+ background-color: color-mix(in srgb, var(--color-content-primary) 92%, transparent);
32
+ backdrop-filter: blur(4px);
33
+ -webkit-backdrop-filter: blur(4px);
34
+ }
35
+ .di-figure-modal.is-open {
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ animation: di-figure-modal-fade-in 0.25s ease;
40
+ }
41
+ .di-figure-modal .di-figure-modal-content {
42
+ position: relative;
43
+ max-width: 95vw;
44
+ max-height: 95vh;
45
+ animation: di-figure-modal-zoom-in 0.3s cubic-bezier(0.4, 0, 0.2, 1);
46
+ }
47
+ .di-figure-modal .di-figure-modal-content img {
48
+ width: auto;
49
+ height: auto;
50
+ max-width: 95vw;
51
+ max-height: 95vh;
52
+ object-fit: contain;
53
+ border: 2px solid var(--color-interactive-primary);
54
+ background-color: var(--color-surface-elevated);
55
+ padding: 8px;
56
+ box-shadow: 0 20px 60px color-mix(in srgb, var(--color-content-primary) 40%, transparent);
57
+ }
58
+ .di-figure-modal .di-figure-modal-close {
59
+ position: absolute;
60
+ top: -40px;
61
+ right: 0;
62
+ font-size: 2rem;
63
+ color: var(--color-content-inverse);
64
+ background: none;
65
+ border: none;
66
+ cursor: pointer;
67
+ padding: 0.5rem;
68
+ line-height: 1;
69
+ transition: transform 0.2s ease, color 0.2s ease;
70
+ font-family: inherit;
71
+ }
72
+ .di-figure-modal .di-figure-modal-close:hover {
73
+ transform: scale(1.2);
74
+ color: var(--color-interactive-primary);
75
+ }
76
+ .di-figure-modal .di-figure-modal-close:focus-visible {
77
+ outline: 2px solid var(--color-interactive-primary);
78
+ outline-offset: 4px;
79
+ border-radius: var(--radius-sm, 0.25rem);
80
+ }
81
+ .di-figure-modal .di-figure-modal-caption {
82
+ position: absolute;
83
+ bottom: -60px;
84
+ left: 0;
85
+ right: 0;
86
+ text-align: center;
87
+ color: var(--color-content-inverse);
88
+ font-size: var(--font-size-small, 0.9rem);
89
+ font-style: italic;
90
+ padding: 0 2rem;
91
+ line-height: var(--line-height-normal, 1.4);
92
+ }
93
+
94
+ @keyframes di-figure-modal-fade-in {
95
+ from {
96
+ opacity: 0;
97
+ }
98
+ to {
99
+ opacity: 1;
100
+ }
101
+ }
102
+ @keyframes di-figure-modal-zoom-in {
103
+ from {
104
+ opacity: 0;
105
+ transform: scale(0.9);
106
+ }
107
+ to {
108
+ opacity: 1;
109
+ transform: scale(1);
110
+ }
111
+ }
112
+ @media (prefers-reduced-motion: reduce) {
113
+ .di-figure-box {
114
+ transition: none !important;
115
+ }
116
+ .di-figure-box:hover, .di-figure-box:active {
117
+ transform: none !important;
118
+ }
119
+ .di-figure-modal,
120
+ .di-figure-modal .di-figure-modal-content,
121
+ .di-figure-modal .di-figure-modal-close {
122
+ animation: none !important;
123
+ transition: none !important;
124
+ }
125
+ .di-figure-modal .di-figure-modal-close:hover {
126
+ transform: none !important;
127
+ }
128
+ }
129
+
130
+ @charset "UTF-8";
131
+ .di-callout, .proof, .theorem, .definition, .proposition {
132
+ padding: var(--spacing-md, 1rem) var(--spacing-md, 1rem) var(--spacing-md, 1rem) var(--spacing-lg, 1.5rem);
133
+ margin: var(--spacing-lg, 1.5rem) 0;
134
+ border-radius: var(--radius-sm, 4px);
135
+ background-color: var(--color-surface-sunken);
136
+ border-left: 4px solid var(--color-interactive-primary);
137
+ }
138
+ .di-callout .di-callout-title, .di-callout .proof-title, .proof .di-callout-title, .proof .proof-title, .di-callout .theorem-title, .proof .theorem-title, .di-callout .definition-title, .proof .definition-title, .di-callout .proposition-title, .proof .proposition-title, .theorem .di-callout-title, .theorem .proof-title, .theorem .theorem-title, .theorem .definition-title, .theorem .proposition-title, .definition .di-callout-title, .definition .proof-title, .definition .theorem-title, .definition .definition-title, .definition .proposition-title, .proposition .di-callout-title, .proposition .proof-title, .proposition .theorem-title, .proposition .definition-title, .proposition .proposition-title {
139
+ font-family: var(--font-family-display);
140
+ font-weight: var(--font-weight-semibold);
141
+ margin-bottom: 0.5rem;
142
+ color: var(--color-content-primary);
143
+ }
144
+ .di-callout > :last-child, .proof > :last-child, .theorem > :last-child, .definition > :last-child, .proposition > :last-child {
145
+ margin-bottom: 0;
146
+ }
147
+
148
+ .di-callout-insight {
149
+ border-left-color: var(--color-interactive-accent);
150
+ }
151
+ .di-callout-insight .di-callout-title, .di-callout-insight .proof-title, .di-callout-insight .theorem-title, .di-callout-insight .definition-title, .di-callout-insight .proposition-title {
152
+ color: var(--color-interactive-accent);
153
+ }
154
+
155
+ .di-callout-tip {
156
+ border-left-color: var(--color-presentation-accent);
157
+ }
158
+ .di-callout-tip .di-callout-title, .di-callout-tip .proof-title, .di-callout-tip .theorem-title, .di-callout-tip .definition-title, .di-callout-tip .proposition-title {
159
+ color: var(--color-presentation-accent);
160
+ }
161
+
162
+ .di-callout-proof, .proof {
163
+ margin: var(--spacing-md, 1rem) 0;
164
+ }
165
+ .di-callout-proof .di-callout-title, .di-callout-proof .proof-title, .proof .di-callout-title, .proof .proof-title, .di-callout-proof .theorem-title, .proof .theorem-title, .di-callout-proof .definition-title, .proof .definition-title, .di-callout-proof .proposition-title, .proof .proposition-title {
166
+ font-style: italic;
167
+ font-weight: var(--font-weight-medium);
168
+ color: var(--color-content-primary);
169
+ }
170
+ .di-callout-proof::after, .proof::after {
171
+ content: "□";
172
+ float: right;
173
+ color: var(--color-content-secondary);
174
+ }
175
+
176
+ .di-callout-rich {
177
+ padding: 0;
178
+ margin: 0.6em 0 0.8em 0;
179
+ border-radius: 6px;
180
+ border-left-width: 4px;
181
+ border-style: solid;
182
+ overflow: hidden;
183
+ }
184
+ .di-callout-rich .di-callout-title, .di-callout-rich .proof-title, .di-callout-rich .theorem-title, .di-callout-rich .definition-title, .di-callout-rich .proposition-title {
185
+ margin: 0;
186
+ padding: 0.35em 0.75em;
187
+ font-family: var(--font-family-display);
188
+ font-weight: var(--font-weight-semibold);
189
+ border-bottom: 1px solid currentColor;
190
+ }
191
+ .di-callout-rich > :not(.di-callout-title):not(.proof-title):not(.theorem-title):not(.definition-title):not(.proposition-title) {
192
+ padding-left: 0.9em;
193
+ padding-right: 0.9em;
194
+ }
195
+ .di-callout-rich > :last-child {
196
+ padding-bottom: 0.55em;
197
+ }
198
+
199
+ .di-callout-rich.di-callout-theorem, .di-callout-rich.theorem, .di-callout-rich.definition, .di-callout-rich.proposition {
200
+ background: linear-gradient(135deg, color-mix(in srgb, var(--color-interactive-primary) 10%, transparent), color-mix(in srgb, var(--color-interactive-primary) 3%, transparent));
201
+ border-color: color-mix(in srgb, var(--color-interactive-primary) 30%, transparent);
202
+ border-left-color: var(--color-interactive-primary);
203
+ }
204
+ .di-callout-rich.di-callout-theorem .di-callout-title, .di-callout-rich.di-callout-theorem .proof-title, .di-callout-rich.di-callout-theorem .theorem-title, .di-callout-rich.di-callout-theorem .definition-title, .di-callout-rich.di-callout-theorem .proposition-title, .di-callout-rich.theorem .di-callout-title, .di-callout-rich.theorem .proof-title, .di-callout-rich.theorem .theorem-title, .di-callout-rich.theorem .definition-title, .di-callout-rich.theorem .proposition-title, .di-callout-rich.definition .di-callout-title, .di-callout-rich.definition .proof-title, .di-callout-rich.definition .theorem-title, .di-callout-rich.definition .definition-title, .di-callout-rich.definition .proposition-title, .di-callout-rich.proposition .di-callout-title, .di-callout-rich.proposition .proof-title, .di-callout-rich.proposition .theorem-title, .di-callout-rich.proposition .definition-title, .di-callout-rich.proposition .proposition-title {
205
+ background: color-mix(in srgb, var(--color-interactive-primary) 18%, transparent);
206
+ color: color-mix(in srgb, var(--color-interactive-primary) 80%, var(--color-content-primary));
207
+ border-bottom-color: color-mix(in srgb, var(--color-interactive-primary) 28%, transparent);
208
+ }
209
+
210
+ .di-callout-rich.di-callout-insight {
211
+ background: linear-gradient(135deg, color-mix(in srgb, var(--color-interactive-accent) 10%, transparent), color-mix(in srgb, var(--color-interactive-accent) 3%, transparent));
212
+ border-color: color-mix(in srgb, var(--color-interactive-accent) 30%, transparent);
213
+ border-left-color: var(--color-interactive-accent);
214
+ }
215
+ .di-callout-rich.di-callout-insight .di-callout-title, .di-callout-rich.di-callout-insight .proof-title, .di-callout-rich.di-callout-insight .theorem-title, .di-callout-rich.di-callout-insight .definition-title, .di-callout-rich.di-callout-insight .proposition-title {
216
+ background: color-mix(in srgb, var(--color-interactive-accent) 18%, transparent);
217
+ color: color-mix(in srgb, var(--color-interactive-accent) 80%, var(--color-content-primary));
218
+ border-bottom-color: color-mix(in srgb, var(--color-interactive-accent) 28%, transparent);
219
+ }
220
+
221
+ .di-callout-rich.di-callout-tip {
222
+ background: linear-gradient(135deg, color-mix(in srgb, var(--color-presentation-accent) 8%, transparent), color-mix(in srgb, var(--color-presentation-accent) 3%, transparent));
223
+ border-color: color-mix(in srgb, var(--color-presentation-accent) 20%, transparent);
224
+ border-left-color: var(--color-presentation-accent);
225
+ }
226
+ .di-callout-rich.di-callout-tip .di-callout-title, .di-callout-rich.di-callout-tip .proof-title, .di-callout-rich.di-callout-tip .theorem-title, .di-callout-rich.di-callout-tip .definition-title, .di-callout-rich.di-callout-tip .proposition-title {
227
+ background: color-mix(in srgb, var(--color-presentation-accent) 15%, transparent);
228
+ color: var(--color-presentation-accent-hover);
229
+ border-bottom-color: color-mix(in srgb, var(--color-presentation-accent) 25%, transparent);
230
+ }
231
+
232
+ figure img.box, p img.box {
233
+ border: 1px solid var(--color-content-secondary);
234
+ padding: 4px;
235
+ background-color: var(--color-surface-elevated);
236
+ }
237
+
238
+ .pkg {
239
+ font-family: "Latin Modern Sans", var(--font-family-sans);
240
+ font-weight: 400;
241
+ font-style: normal;
242
+ font-synthesis: none;
243
+ }
@@ -0,0 +1,344 @@
1
+ // @dataimago/css@0.1.0-alpha.24 dist/quarto/_extensions/dataimago/pkgsite/dataimago-dark.scss · sha256:f857888d73961ee714eea97a162915d1f3c28fa740fc88bf3a68e8728594d274 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.24 dataimago-sync
2
+ // dataimago dark theme for Quarto 1.8 — generated from the design tokens (tools/formats/quarto.mjs).
3
+ // Bootstrap Sass variables are compile-time sRGB; runtime colours come from the custom properties below.
4
+
5
+ /*-- scss:defaults --*/
6
+ $body-bg: #141410 !default;
7
+ $body-color: #fdf9f2 !default;
8
+ $headings-color: #fdf9f2 !default;
9
+ $navbar-bg: #141410 !default;
10
+ $link-color: #98a384 !default;
11
+ $link-hover-color: #7e8a6b !default;
12
+ $code-color: #3498db !default;
13
+ $code-bg: #1c1917 !default;
14
+ $border-color: #7d7b76 !default;
15
+ $font-family-sans-serif: Noto Sans, Fira Sans, system-ui, sans-serif !default;
16
+ $font-family-monospace: Noto Sans Mono, SF Mono, Monaco, Inconsolata, monospace !default;
17
+ $headings-font-family: Josefin Sans, Noto Sans, system-ui, sans-serif !default;
18
+ $headings-font-weight: 500 !default;
19
+ $h2-font-size: 1.875rem !default;
20
+ $web-font-path: false !default;
21
+
22
+ /*-- scss:rules --*/
23
+ // ── Design tokens (contract custom properties) ───────────────────────
24
+ :root {
25
+ --color-palette-ink-50: #f5f5f4;
26
+ --color-palette-ink-100: #e7e5e4;
27
+ --color-palette-ink-200: #d6d3d1;
28
+ --color-palette-ink-300: #a8a29e;
29
+ --color-palette-ink-400: #78716c;
30
+ --color-palette-ink-500: #57534e;
31
+ --color-palette-ink-600: #44403c;
32
+ --color-palette-ink-700: #292524;
33
+ --color-palette-ink-800: #1c1917;
34
+ --color-palette-ink-900: #0c0a09;
35
+ --color-palette-stone-50: #f7f7f6;
36
+ --color-palette-stone-100: #ededeb;
37
+ --color-palette-stone-200: #dcdcda;
38
+ --color-palette-stone-300: #c1c1bf;
39
+ --color-palette-stone-400: #a0a0a0;
40
+ --color-palette-stone-500: #7c7c7c;
41
+ --color-palette-stone-600: #5e5e5c;
42
+ --color-palette-stone-700: #424240;
43
+ --color-palette-stone-800: #292927;
44
+ --color-palette-stone-900: #14140f;
45
+ --color-palette-forest-50: #f0f1ed;
46
+ --color-palette-forest-100: #dde0d4;
47
+ --color-palette-forest-200: #bdc4ad;
48
+ --color-palette-forest-300: #98a384;
49
+ --color-palette-forest-400: #7e8a6b;
50
+ --color-palette-forest-500: #5e6749;
51
+ --color-palette-forest-600: #4d5640;
52
+ --color-palette-forest-700: #434739;
53
+ --color-palette-forest-800: #363a2e;
54
+ --color-palette-forest-900: #1f2218;
55
+ --color-palette-paper-50: #fefdfb;
56
+ --color-palette-paper-100: #fdf9f2;
57
+ --color-palette-paper-200: #faf2e3;
58
+ --color-palette-paper-300: #f5e8cf;
59
+ --color-palette-paper-400: #edd9b3;
60
+ --color-palette-paper-500: #e0c088;
61
+ --color-palette-copper-50: #fdf4ee;
62
+ --color-palette-copper-100: #fbe5d1;
63
+ --color-palette-copper-200: #f6c79c;
64
+ --color-palette-copper-300: #f0a467;
65
+ --color-palette-copper-400: #ea8441;
66
+ --color-palette-copper-500: #d46820;
67
+ --color-palette-copper-600: #b55017;
68
+ --color-palette-copper-700: #913d15;
69
+ --color-palette-copper-800: #753318;
70
+ --color-palette-copper-900: #612b16;
71
+ --color-palette-accent-50: #f0f8fc;
72
+ --color-palette-accent-300: #3498DB;
73
+ --color-palette-accent-400: #2980B9;
74
+ --color-palette-accent-500: #1f618d;
75
+ --color-palette-accent-600: #154d6f;
76
+ --color-palette-accent-700: #0f3a52;
77
+ --color-palette-presentation-blue-50: #f0f8fc;
78
+ --color-palette-presentation-blue-500: #3498DB;
79
+ --color-palette-presentation-blue-600: #2980B9;
80
+ --color-palette-presentation-blue-700: #1f618d;
81
+ --color-functional-success: #27AE60;
82
+ --color-functional-warning: #F39C12;
83
+ --color-functional-error: #E74C3C;
84
+ --color-functional-info: #3498DB;
85
+ --transition-quick: 0.15s ease;
86
+ --transition-standard: 0.25s ease-in-out;
87
+ --transition-smooth: 0.35s ease;
88
+ --transition-logo: 0.3s;
89
+ --font-family-sans: Noto Sans, Fira Sans, system-ui, sans-serif;
90
+ --font-family-mono: Noto Sans Mono, SF Mono, Monaco, Inconsolata, monospace;
91
+ --font-family-display: var(--font-family-display-editorial);
92
+ --font-family-display-editorial: Josefin Sans, Noto Sans, system-ui, sans-serif;
93
+ --font-family-display-documentation: Noto Sans, system-ui, sans-serif;
94
+ --font-family-brand: Futura, system-ui, sans-serif;
95
+ --font-family-math: Noto Sans Math, math;
96
+ --font-size-micro: 0.75rem;
97
+ --font-size-small: 0.875rem;
98
+ --font-size-base: 1rem;
99
+ --font-size-readable: 1.125rem;
100
+ --font-size-emphasis: 1.25rem;
101
+ --font-size-heading-small: 1.5rem;
102
+ --font-size-heading-medium: 1.875rem;
103
+ --font-size-heading-large: 2.25rem;
104
+ --font-size-heading-xl: 3rem;
105
+ --font-weight-extralight: 200;
106
+ --font-weight-light: 300;
107
+ --font-weight-normal: 400;
108
+ --font-weight-medium: 500;
109
+ --font-weight-semibold: 600;
110
+ --font-weight-bold: 700;
111
+ --font-weight-heading-h1: var(--font-weight-medium);
112
+ --font-weight-heading-h2: var(--font-weight-medium);
113
+ --font-weight-heading-h3: var(--font-weight-normal);
114
+ --font-weight-heading-h4: var(--font-weight-light);
115
+ --font-weight-heading-h5: var(--font-weight-light);
116
+ --font-weight-heading-h6: var(--font-weight-light);
117
+ --font-weight-heading-subtitle: var(--font-weight-semibold);
118
+ --font-style-normal: normal;
119
+ --font-style-italic: italic;
120
+ --font-style-oblique: oblique;
121
+ --font-lineHeight-tight: 1.25;
122
+ --font-lineHeight-normal: 1.5;
123
+ --font-lineHeight-relaxed: 1.625;
124
+ --font-feature-settings-display: "lnum";
125
+ --font-feature-settings-body: "normal";
126
+ --spacing-xs: 0.25rem;
127
+ --spacing-sm: 0.5rem;
128
+ --spacing-md: 1rem;
129
+ --spacing-lg: 1.5rem;
130
+ --spacing-xl: 2rem;
131
+ --spacing-2xl: 3rem;
132
+ --spacing-3xl: 4rem;
133
+ --radius-sm: 0.25rem;
134
+ --radius-md: 0.5rem;
135
+ --radius-lg: 0.75rem;
136
+ --radius-xl: 1rem;
137
+ --radius-full: 9999px;
138
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
139
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
140
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
141
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
142
+ --color-dataviz-okabe-ito-orange: #E69F00;
143
+ --color-dataviz-okabe-ito-sky-blue: #56B4E9;
144
+ --color-dataviz-okabe-ito-bluish-green: #009E73;
145
+ --color-dataviz-okabe-ito-yellow: #F0E442;
146
+ --color-dataviz-okabe-ito-blue: #0072B2;
147
+ --color-dataviz-okabe-ito-vermillion: #D55E00;
148
+ --color-dataviz-okabe-ito-reddish-purple: #CC79A7;
149
+ --color-dataviz-categorical-1: #E69F00;
150
+ --color-dataviz-categorical-2: #56B4E9;
151
+ --color-dataviz-categorical-3: #009E73;
152
+ --color-dataviz-categorical-4: #F0E442;
153
+ --color-dataviz-categorical-5: #0072B2;
154
+ --color-dataviz-categorical-6: #D55E00;
155
+ --color-dataviz-categorical-7: #CC79A7;
156
+ }
157
+
158
+ :root, body.quarto-dark, [data-bs-theme="dark"] {
159
+ --color-surface-page: #141410;
160
+ --color-surface-page: color(display-p3 0.0784 0.0784 0.0643);
161
+ --color-surface-page-scrolled: #141410;
162
+ --color-surface-page-scrolled: color(display-p3 0.0784 0.0784 0.0643);
163
+ --color-surface-elevated: #1c1917;
164
+ --color-surface-elevated: color(display-p3 0.1078 0.0985 0.0911);
165
+ --color-surface-sunken: #0c0a09;
166
+ --color-surface-sunken: color(display-p3 0.0457 0.0395 0.0358);
167
+ --color-surface-navbar: #141410;
168
+ --color-surface-navbar: color(display-p3 0.0784 0.0784 0.0643);
169
+ --color-surface-navbar-scrolled: #141410;
170
+ --color-surface-navbar-scrolled: color(display-p3 0.0784 0.0784 0.0643);
171
+ --color-surface-code: #1c1917;
172
+ --color-surface-code: color(display-p3 0.1078 0.0985 0.0911);
173
+ --color-border-subtle: rgba(253, 249, 242, 0.45);
174
+ --color-border-subtle: color(display-p3 0.9894 0.977 0.9518 / 0.45);
175
+ --color-border-moderate: rgba(253, 249, 242, 0.60);
176
+ --color-border-moderate: color(display-p3 0.9894 0.977 0.9518 / 0.60);
177
+ --color-border-strong: rgba(253, 249, 242, 0.75);
178
+ --color-border-strong: color(display-p3 0.9894 0.977 0.9518 / 0.75);
179
+ --color-border-card: rgba(253, 249, 242, 0.60);
180
+ --color-border-card: color(display-p3 0.9894 0.977 0.9518 / 0.60);
181
+ --color-border-code: #292524;
182
+ --color-border-code: color(display-p3 0.1581 0.1456 0.1418);
183
+ --color-content-primary: #fdf9f2;
184
+ --color-content-primary: color(display-p3 0.9894 0.977 0.9518);
185
+ --color-content-secondary: #a8a29e;
186
+ --color-content-secondary: color(display-p3 0.6547 0.6361 0.6215);
187
+ --color-content-muted: #89827d;
188
+ --color-content-muted: color(display-p3 0.5325 0.5107 0.4925);
189
+ --color-content-inverse: #0c0a09;
190
+ --color-content-inverse: color(display-p3 0.0457 0.0395 0.0358);
191
+ --color-interactive-primary: #98a384;
192
+ --color-interactive-primary: color(display-p3 0.604 0.6378 0.5291);
193
+ --color-interactive-hover: #7e8a6b;
194
+ --color-interactive-hover: color(display-p3 0.5029 0.5397 0.4313);
195
+ --color-interactive-accent: #3498db;
196
+ --color-interactive-accent: color(display-p3 0.3208 0.588 0.8369);
197
+ --color-interactive-focus: #98a384;
198
+ --color-interactive-focus: color(display-p3 0.604 0.6378 0.5291);
199
+ --color-presentation-accent: #3498db;
200
+ --color-presentation-accent: color(display-p3 0.3208 0.588 0.8369);
201
+ --color-presentation-accent-hover: #2980b9;
202
+ --color-presentation-accent-hover: color(display-p3 0.2638 0.495 0.7068);
203
+ --color-vertical-accent-dissertation: #ce8e5c;
204
+ --color-vertical-accent-dissertation: color(display-p3 0.8089 0.5486 0.3177);
205
+ --color-vertical-accent-rpkg: #60a5fa;
206
+ --color-vertical-accent-rpkg: color(display-p3 0.4405 0.6403 0.9545);
207
+ --color-vertical-accent-SGPc: #b2bf22;
208
+ --color-vertical-accent-SGPc: color(display-p3 0.7074 0.7474 0.2714);
209
+ --color-brand-mark-red: #ff0000;
210
+ --color-brand-mark-red: color(display-p3 1 0 0);
211
+ --contrast-high: rgb(237, 237, 235);
212
+ --contrast-readable: rgb(237, 237, 235);
213
+ --contrast-medium: #83838f;
214
+ --contrast-subtle: #83838f;
215
+ --shadow-subtle: 0 1px 2px 0 rgb(237 237 235 / 0.03);
216
+ --shadow-moderate: 0 4px 6px -1px rgb(237 237 235 / 0.05);
217
+ --shadow-prominent: 0 10px 15px -3px rgb(237 237 235 / 0.4);
218
+ --border-subtle: rgba(237, 237, 235, 0.47);
219
+ --border-moderate: rgba(237, 237, 235, 0.63);
220
+ --border-focus: #4FC3F7;
221
+ --navigation-hover-background: rgba(237, 237, 235, 0.05);
222
+ --navigation-active-background: rgba(237, 237, 235, 0.1);
223
+ --color-dataviz-okabe-ito-black: #FDF9F2;
224
+ --color-dataviz-categorical-8: #FDF9F2;
225
+ --color-dataviz-uncertainty-outer: #333333;
226
+ --color-dataviz-uncertainty-union: #6B6B6B;
227
+ --color-dataviz-uncertainty-inner: #D6D6D6;
228
+ }
229
+
230
+ // ── Quarto chrome → tokens ──────────────────────────────────────────────
231
+ body {
232
+ background-color: var(--color-surface-page);
233
+ color: var(--color-content-primary);
234
+ }
235
+
236
+ h1, h2, h3, h4, h5, h6, .title {
237
+ color: var(--color-content-primary);
238
+ font-feature-settings: var(--font-feature-settings-display);
239
+ }
240
+
241
+ // Navbar chrome is brand voice: Josefin through the editorial variable (never the
242
+ // Futura brand token). Tagged-language rules in lang.css still switch links to Noto;
243
+ // the brand is never translated (display-family-split).
244
+ .navbar-brand, .navbar-title, .navbar-nav .nav-link, .navbar-nav .dropdown-item {
245
+ font-family: var(--font-family-display-editorial);
246
+ }
247
+
248
+ math { font-family: var(--font-family-math); }
249
+
250
+ // Links in running text are underlined: interactive.primary is about 1.9:1
251
+ // against body text in light mode, so colour cannot be the only cue (WCAG 1.4.1).
252
+ main.content :is(p, li, dd, td, blockquote, figcaption, .callout-body) a {
253
+ color: var(--color-interactive-primary);
254
+ text-decoration: underline;
255
+ text-underline-offset: 0.15em;
256
+ }
257
+
258
+ main.content :is(p, li, dd, td, blockquote, figcaption, .callout-body) a:hover {
259
+ color: var(--color-interactive-hover);
260
+ }
261
+
262
+ // Navigation and the outline stay plain.
263
+ #TOC a, nav a, .sidebar a, .navbar a, a.footnote-ref, a.anchorjs-link {
264
+ text-decoration: none;
265
+ }
266
+
267
+ :not(pre) > code {
268
+ color: var(--color-interactive-accent);
269
+ background-color: var(--color-surface-code);
270
+ }
271
+
272
+ pre, div.sourceCode {
273
+ background-color: var(--color-surface-code);
274
+ border: 1px solid var(--color-border-code);
275
+ }
276
+
277
+ // Quarto themes its popups as [data-theme~="quarto"] at compile time ($body-bg);
278
+ // match that specificity so the runtime token wins.
279
+ .tippy-box, .tippy-box[data-theme~="quarto"] {
280
+ background-color: var(--color-surface-elevated);
281
+ color: var(--color-content-primary);
282
+ border: 1px solid var(--color-border-subtle);
283
+ }
284
+
285
+ .tippy-box[data-theme~="quarto"] > .tippy-backdrop {
286
+ background-color: var(--color-surface-elevated);
287
+ }
288
+
289
+ .callout {
290
+ background-color: var(--color-surface-elevated);
291
+ border-color: var(--color-border-subtle);
292
+ }
293
+
294
+ .column-margin, .margin-aside, figcaption {
295
+ color: var(--color-content-secondary);
296
+ }
297
+
298
+ // Elevated cards carry an edge: in dark mode surface.elevated is about 1.06:1
299
+ // against surface.page, so a card without one disappears.
300
+ .di-elevated, div.abstract {
301
+ background-color: var(--color-surface-elevated);
302
+ border: 1px solid var(--color-border-subtle);
303
+ border-radius: var(--radius-md);
304
+ padding: var(--spacing-md);
305
+ }
306
+
307
+ body.quarto-dark figure img.box,
308
+ body.quarto-dark p img.box {
309
+ background-color: #f7f7f6;
310
+ border-color: #6a6a6a;
311
+ }
312
+
313
+ // ===== THEME TOGGLE STYLING =====
314
+ // Dark theme - show sun icon (switch to light)
315
+
316
+ .quarto-color-scheme-toggle .bi::before {
317
+ display: inline-block !important;
318
+ height: 1rem !important;
319
+ width: 1rem !important;
320
+ content: "" !important;
321
+ vertical-align: -0.125em !important;
322
+ background-repeat: no-repeat !important;
323
+ background-size: 1rem 1rem !important;
324
+ background-color: transparent !important;
325
+ background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="%2383838F" class="bi bi-sun" viewBox="0 0 16 16"><path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/></svg>') !important;
326
+ transition: background-image 0.25s ease;
327
+ }
328
+
329
+ .quarto-color-scheme-toggle:hover .bi::before {
330
+ background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="%23EDEDE8" class="bi bi-sun" viewBox="0 0 16 16"><path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/></svg>') !important;
331
+ transition: background-image 0.25s ease;
332
+ }
333
+
334
+ @media (prefers-reduced-motion: no-preference) {
335
+ html {
336
+ scroll-behavior: smooth;
337
+ }
338
+ }
339
+
340
+ @media (prefers-reduced-motion: reduce) {
341
+ .quarto-color-scheme-toggle .bi::before {
342
+ transition: none !important;
343
+ }
344
+ }