@dataimago/css 0.1.0-alpha.15 → 0.1.0-alpha.18

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.
@@ -0,0 +1,230 @@
1
+ // @dataimago/css@0.1.0-alpha.18 dist/quarto/components.scss · sha256:7449c84f769ce0f0ec574328144abb42b5c7087706f3ae2c6d36977977c94d50 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.18 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
+ }
@@ -0,0 +1,321 @@
1
+ // @dataimago/css@0.1.0-alpha.18 dist/quarto/dataimago-dark.scss · sha256:5d85054f4316c2ad6c65d29f1b26f939e0052b6ba716ea50545a21eef69d24d7 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.18 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: JetBrains Mono, SF Mono, Monaco, Inconsolata, monospace !default;
17
+ $headings-font-family: Josefin Sans, system-ui, sans-serif !default;
18
+ $headings-font-weight: 500 !default;
19
+ $h2-font-size: 1.875rem !default;
20
+
21
+ /*-- scss:rules --*/
22
+ // ── Design tokens (contract custom properties) ───────────────────────
23
+ :root {
24
+ --color-palette-ink-50: #f5f5f4;
25
+ --color-palette-ink-100: #e7e5e4;
26
+ --color-palette-ink-200: #d6d3d1;
27
+ --color-palette-ink-300: #a8a29e;
28
+ --color-palette-ink-400: #78716c;
29
+ --color-palette-ink-500: #57534e;
30
+ --color-palette-ink-600: #44403c;
31
+ --color-palette-ink-700: #292524;
32
+ --color-palette-ink-800: #1c1917;
33
+ --color-palette-ink-900: #0c0a09;
34
+ --color-palette-stone-50: #f7f7f6;
35
+ --color-palette-stone-100: #ededeb;
36
+ --color-palette-stone-200: #dcdcda;
37
+ --color-palette-stone-300: #c1c1bf;
38
+ --color-palette-stone-400: #a0a0a0;
39
+ --color-palette-stone-500: #7c7c7c;
40
+ --color-palette-stone-600: #5e5e5c;
41
+ --color-palette-stone-700: #424240;
42
+ --color-palette-stone-800: #292927;
43
+ --color-palette-stone-900: #14140f;
44
+ --color-palette-forest-50: #f0f1ed;
45
+ --color-palette-forest-100: #dde0d4;
46
+ --color-palette-forest-200: #bdc4ad;
47
+ --color-palette-forest-300: #98a384;
48
+ --color-palette-forest-400: #7e8a6b;
49
+ --color-palette-forest-500: #5e6749;
50
+ --color-palette-forest-600: #4d5640;
51
+ --color-palette-forest-700: #434739;
52
+ --color-palette-forest-800: #363a2e;
53
+ --color-palette-forest-900: #1f2218;
54
+ --color-palette-paper-50: #fefdfb;
55
+ --color-palette-paper-100: #fdf9f2;
56
+ --color-palette-paper-200: #faf2e3;
57
+ --color-palette-paper-300: #f5e8cf;
58
+ --color-palette-paper-400: #edd9b3;
59
+ --color-palette-paper-500: #e0c088;
60
+ --color-palette-copper-50: #fdf4ee;
61
+ --color-palette-copper-100: #fbe5d1;
62
+ --color-palette-copper-200: #f6c79c;
63
+ --color-palette-copper-300: #f0a467;
64
+ --color-palette-copper-400: #ea8441;
65
+ --color-palette-copper-500: #d46820;
66
+ --color-palette-copper-600: #b55017;
67
+ --color-palette-copper-700: #913d15;
68
+ --color-palette-copper-800: #753318;
69
+ --color-palette-copper-900: #612b16;
70
+ --color-palette-accent-50: #f0f8fc;
71
+ --color-palette-accent-300: #3498DB;
72
+ --color-palette-accent-400: #2980B9;
73
+ --color-palette-accent-500: #1f618d;
74
+ --color-palette-accent-600: #154d6f;
75
+ --color-palette-accent-700: #0f3a52;
76
+ --color-palette-presentation-blue-50: #f0f8fc;
77
+ --color-palette-presentation-blue-500: #3498DB;
78
+ --color-palette-presentation-blue-600: #2980B9;
79
+ --color-palette-presentation-blue-700: #1f618d;
80
+ --color-functional-success: #27AE60;
81
+ --color-functional-warning: #F39C12;
82
+ --color-functional-error: #E74C3C;
83
+ --color-functional-info: #3498DB;
84
+ --transition-quick: 0.15s ease;
85
+ --transition-standard: 0.25s ease-in-out;
86
+ --transition-smooth: 0.35s ease;
87
+ --transition-logo: 0.3s;
88
+ --font-family-sans: Noto Sans, Fira Sans, system-ui, sans-serif;
89
+ --font-family-mono: JetBrains Mono, SF Mono, Monaco, Inconsolata, monospace;
90
+ --font-family-display: var(--font-family-display-editorial);
91
+ --font-family-display-editorial: Josefin Sans, system-ui, sans-serif;
92
+ --font-family-display-documentation: Noto Sans, system-ui, sans-serif;
93
+ --font-family-brand: Futura, system-ui, sans-serif;
94
+ --font-family-math: Noto Sans Math, Noto Sans, system-ui, sans-serif;
95
+ --font-size-micro: 0.75rem;
96
+ --font-size-small: 0.875rem;
97
+ --font-size-base: 1rem;
98
+ --font-size-readable: 1.125rem;
99
+ --font-size-emphasis: 1.25rem;
100
+ --font-size-heading-small: 1.5rem;
101
+ --font-size-heading-medium: 1.875rem;
102
+ --font-size-heading-large: 2.25rem;
103
+ --font-size-heading-xl: 3rem;
104
+ --font-weight-extralight: 200;
105
+ --font-weight-light: 300;
106
+ --font-weight-normal: 400;
107
+ --font-weight-medium: 500;
108
+ --font-weight-semibold: 600;
109
+ --font-weight-bold: 700;
110
+ --font-weight-heading-h1: var(--font-weight-medium);
111
+ --font-weight-heading-h2: var(--font-weight-medium);
112
+ --font-weight-heading-h3: var(--font-weight-normal);
113
+ --font-weight-heading-h4: var(--font-weight-light);
114
+ --font-weight-heading-h5: var(--font-weight-light);
115
+ --font-weight-heading-h6: var(--font-weight-light);
116
+ --font-weight-heading-subtitle: var(--font-weight-semibold);
117
+ --font-style-normal: normal;
118
+ --font-style-italic: italic;
119
+ --font-style-oblique: oblique;
120
+ --font-lineHeight-tight: 1.25;
121
+ --font-lineHeight-normal: 1.5;
122
+ --font-lineHeight-relaxed: 1.625;
123
+ --font-feature-settings-display: "lnum";
124
+ --font-feature-settings-body: "normal";
125
+ --spacing-xs: 0.25rem;
126
+ --spacing-sm: 0.5rem;
127
+ --spacing-md: 1rem;
128
+ --spacing-lg: 1.5rem;
129
+ --spacing-xl: 2rem;
130
+ --spacing-2xl: 3rem;
131
+ --spacing-3xl: 4rem;
132
+ --radius-sm: 0.25rem;
133
+ --radius-md: 0.5rem;
134
+ --radius-lg: 0.75rem;
135
+ --radius-xl: 1rem;
136
+ --radius-full: 9999px;
137
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
138
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
139
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
140
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
141
+ --color-dataviz-okabe-ito-orange: #E69F00;
142
+ --color-dataviz-okabe-ito-sky-blue: #56B4E9;
143
+ --color-dataviz-okabe-ito-bluish-green: #009E73;
144
+ --color-dataviz-okabe-ito-yellow: #F0E442;
145
+ --color-dataviz-okabe-ito-blue: #0072B2;
146
+ --color-dataviz-okabe-ito-vermillion: #D55E00;
147
+ --color-dataviz-okabe-ito-reddish-purple: #CC79A7;
148
+ --color-dataviz-categorical-1: #E69F00;
149
+ --color-dataviz-categorical-2: #56B4E9;
150
+ --color-dataviz-categorical-3: #009E73;
151
+ --color-dataviz-categorical-4: #F0E442;
152
+ --color-dataviz-categorical-5: #0072B2;
153
+ --color-dataviz-categorical-6: #D55E00;
154
+ --color-dataviz-categorical-7: #CC79A7;
155
+ }
156
+
157
+ :root, body.quarto-dark, [data-bs-theme="dark"] {
158
+ --color-surface-page: #141410;
159
+ --color-surface-page: color(display-p3 0.0784 0.0784 0.0643);
160
+ --color-surface-page-scrolled: #141410;
161
+ --color-surface-page-scrolled: color(display-p3 0.0784 0.0784 0.0643);
162
+ --color-surface-elevated: #1c1917;
163
+ --color-surface-elevated: color(display-p3 0.1078 0.0985 0.0911);
164
+ --color-surface-sunken: #0c0a09;
165
+ --color-surface-sunken: color(display-p3 0.0457 0.0395 0.0358);
166
+ --color-surface-navbar: #141410;
167
+ --color-surface-navbar: color(display-p3 0.0784 0.0784 0.0643);
168
+ --color-surface-navbar-scrolled: #141410;
169
+ --color-surface-navbar-scrolled: color(display-p3 0.0784 0.0784 0.0643);
170
+ --color-surface-code: #1c1917;
171
+ --color-surface-code: color(display-p3 0.1078 0.0985 0.0911);
172
+ --color-border-subtle: rgba(253, 249, 242, 0.45);
173
+ --color-border-subtle: color(display-p3 0.9894 0.977 0.9518 / 0.45);
174
+ --color-border-moderate: rgba(253, 249, 242, 0.60);
175
+ --color-border-moderate: color(display-p3 0.9894 0.977 0.9518 / 0.60);
176
+ --color-border-strong: rgba(253, 249, 242, 0.75);
177
+ --color-border-strong: color(display-p3 0.9894 0.977 0.9518 / 0.75);
178
+ --color-border-card: rgba(253, 249, 242, 0.60);
179
+ --color-border-card: color(display-p3 0.9894 0.977 0.9518 / 0.60);
180
+ --color-border-code: #292524;
181
+ --color-border-code: color(display-p3 0.1581 0.1456 0.1418);
182
+ --color-content-primary: #fdf9f2;
183
+ --color-content-primary: color(display-p3 0.9894 0.977 0.9518);
184
+ --color-content-secondary: #a8a29e;
185
+ --color-content-secondary: color(display-p3 0.6547 0.6361 0.6215);
186
+ --color-content-muted: #89827d;
187
+ --color-content-muted: color(display-p3 0.5325 0.5107 0.4925);
188
+ --color-content-inverse: #0c0a09;
189
+ --color-content-inverse: color(display-p3 0.0457 0.0395 0.0358);
190
+ --color-interactive-primary: #98a384;
191
+ --color-interactive-primary: color(display-p3 0.604 0.6378 0.5291);
192
+ --color-interactive-hover: #7e8a6b;
193
+ --color-interactive-hover: color(display-p3 0.5029 0.5397 0.4313);
194
+ --color-interactive-accent: #3498db;
195
+ --color-interactive-accent: color(display-p3 0.3208 0.588 0.8369);
196
+ --color-interactive-focus: #98a384;
197
+ --color-interactive-focus: color(display-p3 0.604 0.6378 0.5291);
198
+ --color-presentation-accent: #3498db;
199
+ --color-presentation-accent: color(display-p3 0.3208 0.588 0.8369);
200
+ --color-presentation-accent-hover: #2980b9;
201
+ --color-presentation-accent-hover: color(display-p3 0.2638 0.495 0.7068);
202
+ --color-vertical-accent-dissertation: #ce8e5c;
203
+ --color-vertical-accent-dissertation: color(display-p3 0.8089 0.5486 0.3177);
204
+ --color-vertical-accent-rpkg: #60a5fa;
205
+ --color-vertical-accent-rpkg: color(display-p3 0.4405 0.6403 0.9545);
206
+ --color-vertical-accent-SGPc: #b2bf22;
207
+ --color-vertical-accent-SGPc: color(display-p3 0.7074 0.7474 0.2714);
208
+ --color-brand-mark-red: #ff0000;
209
+ --color-brand-mark-red: color(display-p3 1 0 0);
210
+ --contrast-high: rgb(237, 237, 235);
211
+ --contrast-readable: rgb(237, 237, 235);
212
+ --contrast-medium: #83838f;
213
+ --contrast-subtle: #83838f;
214
+ --shadow-subtle: 0 1px 2px 0 rgb(237 237 235 / 0.03);
215
+ --shadow-moderate: 0 4px 6px -1px rgb(237 237 235 / 0.05);
216
+ --shadow-prominent: 0 10px 15px -3px rgb(237 237 235 / 0.4);
217
+ --border-subtle: rgba(237, 237, 235, 0.47);
218
+ --border-moderate: rgba(237, 237, 235, 0.63);
219
+ --border-focus: #4FC3F7;
220
+ --navigation-hover-background: rgba(237, 237, 235, 0.05);
221
+ --navigation-active-background: rgba(237, 237, 235, 0.1);
222
+ --color-dataviz-okabe-ito-black: #FDF9F2;
223
+ --color-dataviz-categorical-8: #FDF9F2;
224
+ --color-dataviz-uncertainty-outer: #333333;
225
+ --color-dataviz-uncertainty-union: #6B6B6B;
226
+ --color-dataviz-uncertainty-inner: #D6D6D6;
227
+ }
228
+
229
+ // ── Quarto chrome → tokens ──────────────────────────────────────────────
230
+ body {
231
+ background-color: var(--color-surface-page);
232
+ color: var(--color-content-primary);
233
+ }
234
+
235
+ h1, h2, h3, h4, h5, h6, .title {
236
+ color: var(--color-content-primary);
237
+ }
238
+
239
+ // Links in running text are underlined: interactive.primary is about 1.9:1
240
+ // against body text in light mode, so colour cannot be the only cue (WCAG 1.4.1).
241
+ main.content :is(p, li, dd, td, blockquote, figcaption, .callout-body) a {
242
+ color: var(--color-interactive-primary);
243
+ text-decoration: underline;
244
+ text-underline-offset: 0.15em;
245
+ }
246
+
247
+ main.content :is(p, li, dd, td, blockquote, figcaption, .callout-body) a:hover {
248
+ color: var(--color-interactive-hover);
249
+ }
250
+
251
+ // Navigation and the outline stay plain.
252
+ #TOC a, nav a, .sidebar a, .navbar a, a.footnote-ref, a.anchorjs-link {
253
+ text-decoration: none;
254
+ }
255
+
256
+ :not(pre) > code {
257
+ color: var(--color-interactive-accent);
258
+ background-color: var(--color-surface-code);
259
+ }
260
+
261
+ pre, div.sourceCode {
262
+ background-color: var(--color-surface-code);
263
+ border: 1px solid var(--color-border-code);
264
+ }
265
+
266
+ // Quarto themes its popups as [data-theme~="quarto"] at compile time ($body-bg);
267
+ // match that specificity so the runtime token wins.
268
+ .tippy-box, .tippy-box[data-theme~="quarto"] {
269
+ background-color: var(--color-surface-elevated);
270
+ color: var(--color-content-primary);
271
+ border: 1px solid var(--color-border-subtle);
272
+ }
273
+
274
+ .tippy-box[data-theme~="quarto"] > .tippy-backdrop {
275
+ background-color: var(--color-surface-elevated);
276
+ }
277
+
278
+ .callout {
279
+ background-color: var(--color-surface-elevated);
280
+ border-color: var(--color-border-subtle);
281
+ }
282
+
283
+ .column-margin, .margin-aside, figcaption {
284
+ color: var(--color-content-secondary);
285
+ }
286
+
287
+ // Elevated cards carry an edge: in dark mode surface.elevated is about 1.06:1
288
+ // against surface.page, so a card without one disappears.
289
+ .di-elevated, div.abstract {
290
+ background-color: var(--color-surface-elevated);
291
+ border: 1px solid var(--color-border-subtle);
292
+ border-radius: var(--radius-md);
293
+ padding: var(--spacing-md);
294
+ }
295
+
296
+ // ===== THEME TOGGLE STYLING =====
297
+ // Dark theme - show sun icon (switch to light)
298
+
299
+ .quarto-color-scheme-toggle .bi::before {
300
+ display: inline-block !important;
301
+ height: 1rem !important;
302
+ width: 1rem !important;
303
+ content: "" !important;
304
+ vertical-align: -0.125em !important;
305
+ background-repeat: no-repeat !important;
306
+ background-size: 1rem 1rem !important;
307
+ background-color: transparent !important;
308
+ 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;
309
+ transition: background-image 0.25s ease;
310
+ }
311
+
312
+ .quarto-color-scheme-toggle:hover .bi::before {
313
+ 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;
314
+ transition: background-image 0.25s ease;
315
+ }
316
+
317
+ @media (prefers-reduced-motion: reduce) {
318
+ .quarto-color-scheme-toggle .bi::before {
319
+ transition: none !important;
320
+ }
321
+ }