mdeck 2.3.0 β 3.1.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 +22 -1
- package/README.md +9 -9
- package/assets/base.css +4 -1
- package/assets/extensions/palettes/lagoon/extension.toml +3 -0
- package/assets/extensions/palettes/neon/extension.toml +3 -0
- package/assets/extensions/palettes/nordic/extension.toml +3 -0
- package/assets/extensions/palettes/paper/extension.toml +30 -0
- package/assets/extensions/palettes/swiss/extension.toml +3 -0
- package/assets/extensions/themes/academic/extension.toml +3 -0
- package/assets/extensions/themes/aurora/extension.toml +3 -0
- package/assets/extensions/themes/minimal/extension.toml +48 -0
- package/assets/extensions/themes/minimal/styles.css +342 -0
- package/assets/extensions/themes/neue/extension.toml +3 -0
- package/docs/reference/authoring.md +13 -18
- package/docs/reference/claude-skill.md +1 -1
- package/docs/reference/extensions.md +40 -26
- package/docs/reference/palettes.md +8 -12
- package/docs/reference/themes.md +8 -7
- package/docs/site/content/appearance.md +35 -49
- package/docs/site/content/commands.md +3 -2
- package/docs/site/content/theme-authoring.md +1 -1
- package/docs/site/content/theme-repository.md +44 -32
- package/docs/site/examples/first-talk.md +1 -1
- package/docs/site/images/themes/academic-dark.webp +0 -0
- package/docs/site/images/themes/academic-light.webp +0 -0
- package/docs/site/images/themes/academic.webp +0 -0
- package/docs/site/images/themes/aurora-dark.webp +0 -0
- package/docs/site/images/themes/aurora-light.webp +0 -0
- package/docs/site/images/themes/aurora.webp +0 -0
- package/docs/site/images/themes/minimal-dark.webp +0 -0
- package/docs/site/images/themes/minimal-light.webp +0 -0
- package/docs/site/images/themes/minimal.webp +0 -0
- package/docs/site/images/themes/neue-dark.webp +0 -0
- package/docs/site/images/themes/neue-light.webp +0 -0
- package/docs/site/images/themes/neue.webp +0 -0
- package/docs/site/pages.js +1 -1
- package/examples/custom-layouts/slides.md +1 -1
- package/examples/poll/slides.md +1 -1
- package/examples/python/slides.md +2 -2
- package/examples/showcase/slides.md +3 -3
- package/package.json +2 -2
- package/skills/write-slides/SKILL.md +2 -2
- package/src/build/check.js +0 -7
- package/src/build/editorPlugin.js +26 -13
- package/src/build/themeCheck.js +17 -6
- package/src/cli/args.js +2 -1
- package/src/cli/index.js +7 -6
- package/src/cli/themes.js +117 -87
- package/src/core/validateDeck.js +4 -2
- package/src/editor/api.js +15 -6
- package/src/editor/components/App.jsx +4 -2
- package/src/editor/components/DesignApp.jsx +16 -9
- package/src/editor/components/ExtensionEditor.jsx +16 -6
- package/src/editor/components/ExtensionsPanel.jsx +28 -34
- package/src/editor/designLink.js +18 -1
- package/src/editor/sampleDeck.js +3 -1
- package/src/extensions/appearance.js +2 -1
- package/src/extensions/discover.js +44 -11
- package/src/extensions/installed.js +88 -0
- package/src/extensions/manifest.js +20 -3
- package/src/extensions/moved.js +20 -0
- package/src/extensions/packages.js +318 -0
- package/src/home/Home.jsx +12 -6
- package/src/layouts/layoutApi.jsx +10 -2
- package/src/runtime/themeLoader.js +5 -2
- package/assets/extensions/palettes/brand/extension.toml +0 -29
- package/assets/extensions/palettes/cobalt/extension.toml +0 -27
- package/assets/extensions/palettes/ember/extension.toml +0 -27
- package/assets/extensions/palettes/forest/extension.toml +0 -27
- package/assets/extensions/palettes/graphite/extension.toml +0 -27
- package/assets/extensions/palettes/pastel/extension.toml +0 -30
- package/assets/extensions/palettes/phosphor/extension.toml +0 -27
- package/assets/extensions/palettes/terra/extension.toml +0 -27
- package/assets/extensions/themes/duet/extension.toml +0 -46
- package/assets/extensions/themes/duet/styles.css +0 -573
- package/assets/extensions/themes/editorial/extension.toml +0 -46
- package/assets/extensions/themes/editorial/styles.css +0 -574
- package/assets/extensions/themes/fhnw/extension.toml +0 -61
- package/assets/extensions/themes/fhnw/styles.css +0 -604
- package/assets/extensions/themes/sketch/extension.toml +0 -48
- package/assets/extensions/themes/sketch/styles.css +0 -633
- package/assets/extensions/themes/terminal/extension.toml +0 -38
- package/assets/extensions/themes/terminal/styles.css +0 -550
- package/docs/site/images/themes/duet-dark.webp +0 -0
- package/docs/site/images/themes/duet-light.webp +0 -0
- package/docs/site/images/themes/duet.webp +0 -0
- package/docs/site/images/themes/editorial-dark.webp +0 -0
- package/docs/site/images/themes/editorial-light.webp +0 -0
- package/docs/site/images/themes/editorial.webp +0 -0
- package/docs/site/images/themes/fhnw.webp +0 -0
- package/docs/site/images/themes/sketch-dark.webp +0 -0
- package/docs/site/images/themes/sketch-light.webp +0 -0
- package/docs/site/images/themes/sketch.webp +0 -0
- package/docs/site/images/themes/terminal-dark.webp +0 -0
- package/docs/site/images/themes/terminal-light.webp +0 -0
- package/docs/site/images/themes/terminal.webp +0 -0
- package/examples/python/.mdeck-backups/slides.drawings-2026-10-06T08-36-47Z.json +0 -19
- package/examples/python/.mdeck-backups/slides.drawings-2026-10-06T11-27-30Z.json +0 -6
- package/examples/showcase/.mdeck-backups/slides.drawings-2026-10-06T08-08-30Z.json +0 -10
- package/examples/showcase/.mdeck-backups/slides.drawings-2026-10-06T11-41-35Z.json +0 -13
- package/src/extensions/packs.js +0 -268
|
@@ -1,574 +0,0 @@
|
|
|
1
|
-
/* Editorial β a magazine spread.
|
|
2
|
-
Newsreader for headlines, Lora for reading, and the conventions of
|
|
3
|
-
print: a masthead rule, a drop cap that opens the text, pull quotes,
|
|
4
|
-
margin notes and figures set between hairlines. Chapters open like a new
|
|
5
|
-
section of the magazine, with a Roman numeral.
|
|
6
|
-
Everything takes its colours from the palette's roles (--bg, --ink,
|
|
7
|
-
--accent β¦), so every palette works on it. */
|
|
8
|
-
|
|
9
|
-
.slide {
|
|
10
|
-
--hairline: color-mix(in oklab, var(--ink) 22%, var(--bg));
|
|
11
|
-
--accent-soft: color-mix(in oklab, var(--accent) 12%, var(--bg));
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
15
|
-
MASTHEAD AND FOLIO: a double rule under the header, the page number
|
|
16
|
-
in italic numerals like a magazine's folio
|
|
17
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
18
|
-
.slide-header {
|
|
19
|
-
font-weight: 600;
|
|
20
|
-
letter-spacing: 0.2em;
|
|
21
|
-
text-transform: uppercase;
|
|
22
|
-
color: var(--ink);
|
|
23
|
-
border-bottom: 7px double var(--ink);
|
|
24
|
-
padding-bottom: 14px;
|
|
25
|
-
}
|
|
26
|
-
.slide-header .brand { color: var(--ink); }
|
|
27
|
-
|
|
28
|
-
.slide-logo {
|
|
29
|
-
position: absolute;
|
|
30
|
-
top: var(--pad-y);
|
|
31
|
-
right: var(--pad-x);
|
|
32
|
-
height: 96px;
|
|
33
|
-
width: auto;
|
|
34
|
-
max-width: 360px;
|
|
35
|
-
object-fit: contain;
|
|
36
|
-
filter: var(--logo-filter, none);
|
|
37
|
-
transform: translateY(calc(var(--fs-eyebrow) * 0.5 - 50%));
|
|
38
|
-
/* The rule stops before the logo instead of crossing it. */
|
|
39
|
-
background: var(--bg);
|
|
40
|
-
padding-left: 28px;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.slide-footer {
|
|
44
|
-
font-family: var(--font-body);
|
|
45
|
-
font-size: var(--fs-small);
|
|
46
|
-
font-style: italic;
|
|
47
|
-
font-weight: 400;
|
|
48
|
-
color: var(--muted);
|
|
49
|
-
border-top: 1px solid var(--hairline);
|
|
50
|
-
padding-top: 18px;
|
|
51
|
-
}
|
|
52
|
-
.slide-footer > span:last-child:not(:first-child) {
|
|
53
|
-
font-family: var(--font-display);
|
|
54
|
-
font-size: var(--fs-sub);
|
|
55
|
-
font-style: italic;
|
|
56
|
-
font-weight: 400;
|
|
57
|
-
color: var(--ink);
|
|
58
|
-
line-height: 1;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
62
|
-
TYPOGRAPHY HELPERS
|
|
63
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
64
|
-
.eyebrow {
|
|
65
|
-
font-family: var(--font-body);
|
|
66
|
-
font-size: var(--fs-eyebrow);
|
|
67
|
-
font-weight: 600;
|
|
68
|
-
letter-spacing: 0.22em;
|
|
69
|
-
text-transform: uppercase;
|
|
70
|
-
color: var(--accent);
|
|
71
|
-
margin: 0 0 var(--gap-title) 0;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.display {
|
|
75
|
-
font-family: var(--font-display);
|
|
76
|
-
font-size: var(--fs-display);
|
|
77
|
-
font-weight: 700;
|
|
78
|
-
font-optical-sizing: auto;
|
|
79
|
-
line-height: 0.98;
|
|
80
|
-
letter-spacing: -0.02em;
|
|
81
|
-
margin: 0;
|
|
82
|
-
color: var(--ink);
|
|
83
|
-
text-wrap: balance;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.title {
|
|
87
|
-
font-family: var(--font-display);
|
|
88
|
-
font-size: var(--fs-h);
|
|
89
|
-
font-weight: 700;
|
|
90
|
-
font-optical-sizing: auto;
|
|
91
|
-
line-height: 1.08;
|
|
92
|
-
letter-spacing: -0.015em;
|
|
93
|
-
margin: 0;
|
|
94
|
-
color: var(--ink);
|
|
95
|
-
text-wrap: balance;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
.subtitle {
|
|
99
|
-
font-family: var(--font-body);
|
|
100
|
-
font-size: var(--fs-sub);
|
|
101
|
-
font-weight: 400;
|
|
102
|
-
font-style: italic;
|
|
103
|
-
line-height: 1.35;
|
|
104
|
-
color: var(--ink-soft);
|
|
105
|
-
margin: 0;
|
|
106
|
-
text-wrap: pretty;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.body-text {
|
|
110
|
-
font-family: var(--font-body);
|
|
111
|
-
font-size: var(--fs-body);
|
|
112
|
-
font-weight: 400;
|
|
113
|
-
line-height: 1.6;
|
|
114
|
-
color: var(--ink-soft);
|
|
115
|
-
margin: 0;
|
|
116
|
-
text-wrap: pretty;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
.meta {
|
|
120
|
-
font-family: var(--font-body);
|
|
121
|
-
font-size: var(--fs-small);
|
|
122
|
-
color: var(--muted);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/* Emphasis is a drawn italic in the accent; in headlines it is the
|
|
126
|
-
display face's italic, the editorial signature. */
|
|
127
|
-
em {
|
|
128
|
-
font-style: italic;
|
|
129
|
-
color: var(--accent);
|
|
130
|
-
}
|
|
131
|
-
strong { color: var(--ink); font-weight: 600; }
|
|
132
|
-
|
|
133
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
134
|
-
LAYOUT: TITLE β a cover: centred headline between an ornament and an
|
|
135
|
-
italic standfirst
|
|
136
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
137
|
-
.slide--title .slide-body {
|
|
138
|
-
justify-content: center;
|
|
139
|
-
align-items: center;
|
|
140
|
-
text-align: center;
|
|
141
|
-
}
|
|
142
|
-
.slide--title .display {
|
|
143
|
-
font-size: var(--fs-display);
|
|
144
|
-
font-weight: 700;
|
|
145
|
-
line-height: 0.98;
|
|
146
|
-
letter-spacing: -0.02em;
|
|
147
|
-
margin: 0;
|
|
148
|
-
max-width: 1560px;
|
|
149
|
-
}
|
|
150
|
-
.slide--title .display em { font-weight: 400; }
|
|
151
|
-
.slide--title .title-text::before {
|
|
152
|
-
content: '';
|
|
153
|
-
display: block;
|
|
154
|
-
width: 120px;
|
|
155
|
-
height: 0;
|
|
156
|
-
border-top: 4px double var(--accent);
|
|
157
|
-
margin: 0 auto 64px;
|
|
158
|
-
}
|
|
159
|
-
.slide--title .subtitle {
|
|
160
|
-
margin: 56px auto 0;
|
|
161
|
-
max-width: 1100px;
|
|
162
|
-
}
|
|
163
|
-
/* TITLE + image: the picture as a band across the top, the cover below */
|
|
164
|
-
.slide--title.has-image .slide-body {
|
|
165
|
-
align-items: stretch;
|
|
166
|
-
justify-content: flex-start;
|
|
167
|
-
gap: 48px;
|
|
168
|
-
}
|
|
169
|
-
.slide--title.has-image .title-image {
|
|
170
|
-
width: 100%;
|
|
171
|
-
height: 360px;
|
|
172
|
-
object-fit: cover;
|
|
173
|
-
flex-shrink: 0;
|
|
174
|
-
}
|
|
175
|
-
.slide--title.has-image .title-text {
|
|
176
|
-
flex: 1;
|
|
177
|
-
display: flex;
|
|
178
|
-
flex-direction: column;
|
|
179
|
-
align-items: center;
|
|
180
|
-
justify-content: center;
|
|
181
|
-
}
|
|
182
|
-
.slide--title.has-image .title-text::before { display: none; }
|
|
183
|
-
.slide--title.has-image .display { font-size: calc(var(--fs-display) * 0.72); }
|
|
184
|
-
|
|
185
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
186
|
-
LAYOUT: CHAPTER β a new section: the Roman numeral in the accent, a
|
|
187
|
-
hairline, the label in capitals and the title large below
|
|
188
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
189
|
-
.slide--chapter .slide-body {
|
|
190
|
-
justify-content: center;
|
|
191
|
-
align-items: flex-start;
|
|
192
|
-
}
|
|
193
|
-
.chapter-num {
|
|
194
|
-
font-family: var(--font-display);
|
|
195
|
-
font-size: 220px;
|
|
196
|
-
font-weight: 400;
|
|
197
|
-
font-style: italic;
|
|
198
|
-
font-optical-sizing: auto;
|
|
199
|
-
line-height: 1;
|
|
200
|
-
letter-spacing: 0;
|
|
201
|
-
color: var(--accent);
|
|
202
|
-
margin: 0 0 8px -6px;
|
|
203
|
-
user-select: none;
|
|
204
|
-
}
|
|
205
|
-
/* A whole number shows as a Roman numeral (the layout passes it as
|
|
206
|
-
--chapter-number); anything else as written. */
|
|
207
|
-
.chapter-num[style*="--chapter-number"] {
|
|
208
|
-
counter-reset: chapter var(--chapter-number);
|
|
209
|
-
font-size: 0;
|
|
210
|
-
}
|
|
211
|
-
.chapter-num[style*="--chapter-number"]::before {
|
|
212
|
-
content: counter(chapter, upper-roman);
|
|
213
|
-
font-size: 220px;
|
|
214
|
-
}
|
|
215
|
-
.chapter-meta {
|
|
216
|
-
font-family: var(--font-body);
|
|
217
|
-
font-size: var(--fs-eyebrow);
|
|
218
|
-
font-weight: 600;
|
|
219
|
-
letter-spacing: 0.22em;
|
|
220
|
-
text-transform: uppercase;
|
|
221
|
-
color: var(--ink);
|
|
222
|
-
margin: 0 0 36px 0;
|
|
223
|
-
padding-top: 28px;
|
|
224
|
-
border-top: 1px solid var(--hairline);
|
|
225
|
-
}
|
|
226
|
-
.slide--chapter .chapter-content { align-self: stretch; }
|
|
227
|
-
.slide--chapter .chapter-title {
|
|
228
|
-
font-family: var(--font-display);
|
|
229
|
-
font-size: var(--fs-title);
|
|
230
|
-
font-weight: 700;
|
|
231
|
-
font-style: normal;
|
|
232
|
-
font-optical-sizing: auto;
|
|
233
|
-
line-height: 1.02;
|
|
234
|
-
letter-spacing: -0.02em;
|
|
235
|
-
margin: 0 0 40px 0;
|
|
236
|
-
color: var(--ink);
|
|
237
|
-
max-width: 1400px;
|
|
238
|
-
text-wrap: balance;
|
|
239
|
-
}
|
|
240
|
-
.slide--chapter .chapter-title em { font-weight: 400; font-style: italic; }
|
|
241
|
-
.slide--chapter .chapter-desc {
|
|
242
|
-
font-family: var(--font-body);
|
|
243
|
-
font-size: var(--fs-sub);
|
|
244
|
-
font-weight: 400;
|
|
245
|
-
font-style: italic;
|
|
246
|
-
line-height: 1.4;
|
|
247
|
-
color: var(--ink-soft);
|
|
248
|
-
max-width: 1100px;
|
|
249
|
-
margin: 0;
|
|
250
|
-
}
|
|
251
|
-
.slide--chapter.has-image .slide-body {
|
|
252
|
-
display: grid;
|
|
253
|
-
grid-template-columns: 1fr 1fr;
|
|
254
|
-
column-gap: 96px;
|
|
255
|
-
align-items: stretch;
|
|
256
|
-
}
|
|
257
|
-
.slide--chapter.has-image .chapter-content {
|
|
258
|
-
display: flex;
|
|
259
|
-
flex-direction: column;
|
|
260
|
-
justify-content: center;
|
|
261
|
-
align-items: flex-start;
|
|
262
|
-
}
|
|
263
|
-
.slide--chapter.has-image .chapter-image {
|
|
264
|
-
width: 100%;
|
|
265
|
-
height: 100%;
|
|
266
|
-
object-fit: cover;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
270
|
-
LAYOUT: FOCUS β a pull quote: a large hanging quotation mark in the
|
|
271
|
-
accent, the statement in the display italic
|
|
272
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
273
|
-
.slide--focus .slide-body {
|
|
274
|
-
justify-content: center;
|
|
275
|
-
align-items: flex-start;
|
|
276
|
-
text-align: left;
|
|
277
|
-
padding-left: 140px;
|
|
278
|
-
}
|
|
279
|
-
.focus-eyebrow {
|
|
280
|
-
font-family: var(--font-body);
|
|
281
|
-
font-size: var(--fs-eyebrow);
|
|
282
|
-
font-weight: 600;
|
|
283
|
-
letter-spacing: 0.22em;
|
|
284
|
-
text-transform: uppercase;
|
|
285
|
-
color: var(--accent);
|
|
286
|
-
margin: 0 0 40px 0;
|
|
287
|
-
}
|
|
288
|
-
.focus-content {
|
|
289
|
-
position: relative;
|
|
290
|
-
display: flex;
|
|
291
|
-
flex-direction: column;
|
|
292
|
-
align-items: flex-start;
|
|
293
|
-
width: 100%;
|
|
294
|
-
text-align: left;
|
|
295
|
-
}
|
|
296
|
-
.focus-content::before {
|
|
297
|
-
content: '\201C';
|
|
298
|
-
position: absolute;
|
|
299
|
-
left: -168px;
|
|
300
|
-
top: 0;
|
|
301
|
-
font-family: var(--font-display);
|
|
302
|
-
font-size: 300px;
|
|
303
|
-
font-weight: 400;
|
|
304
|
-
line-height: 0.8;
|
|
305
|
-
color: var(--accent);
|
|
306
|
-
pointer-events: none;
|
|
307
|
-
}
|
|
308
|
-
.focus-statement,
|
|
309
|
-
.slide--focus .focus-content h1,
|
|
310
|
-
.slide--focus .focus-content p {
|
|
311
|
-
font-family: var(--font-display);
|
|
312
|
-
font-size: var(--fs-focus);
|
|
313
|
-
font-weight: 400;
|
|
314
|
-
font-style: italic;
|
|
315
|
-
font-optical-sizing: auto;
|
|
316
|
-
line-height: 1.16;
|
|
317
|
-
letter-spacing: -0.01em;
|
|
318
|
-
color: var(--ink);
|
|
319
|
-
max-width: 1480px;
|
|
320
|
-
margin: 0;
|
|
321
|
-
text-wrap: balance;
|
|
322
|
-
text-align: left;
|
|
323
|
-
}
|
|
324
|
-
/* Emphasis inside the quote stays in its italic, a touch heavier, in the accent. */
|
|
325
|
-
.slide--focus .focus-content em { font-style: italic; font-weight: 500; }
|
|
326
|
-
.focus-attribution {
|
|
327
|
-
font-family: var(--font-body);
|
|
328
|
-
font-size: var(--fs-small);
|
|
329
|
-
font-weight: 600;
|
|
330
|
-
letter-spacing: 0.18em;
|
|
331
|
-
text-transform: uppercase;
|
|
332
|
-
color: var(--muted);
|
|
333
|
-
margin: 56px 0 0 0;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
337
|
-
LAYOUT: IMAGE + TEXT β square photographs, a caption-like text column
|
|
338
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
339
|
-
.slide--image-text .slide-body { gap: 96px; }
|
|
340
|
-
|
|
341
|
-
.image-pane {
|
|
342
|
-
flex: 1.1;
|
|
343
|
-
min-width: 0;
|
|
344
|
-
display: flex;
|
|
345
|
-
align-items: center;
|
|
346
|
-
justify-content: center;
|
|
347
|
-
background: var(--surface);
|
|
348
|
-
overflow: hidden;
|
|
349
|
-
position: relative;
|
|
350
|
-
border-radius: 0;
|
|
351
|
-
}
|
|
352
|
-
.image-placeholder {
|
|
353
|
-
width: 100%;
|
|
354
|
-
height: 100%;
|
|
355
|
-
background: repeating-linear-gradient(135deg, var(--surface) 0 24px, var(--bg) 24px 48px);
|
|
356
|
-
display: flex;
|
|
357
|
-
align-items: center;
|
|
358
|
-
justify-content: center;
|
|
359
|
-
}
|
|
360
|
-
.image-placeholder span {
|
|
361
|
-
font-family: var(--font-body);
|
|
362
|
-
font-size: 22px;
|
|
363
|
-
font-style: italic;
|
|
364
|
-
color: var(--muted);
|
|
365
|
-
background: var(--bg);
|
|
366
|
-
padding: 14px 24px;
|
|
367
|
-
border: 1px solid var(--rule);
|
|
368
|
-
}
|
|
369
|
-
.text-pane .title { font-size: var(--fs-h); }
|
|
370
|
-
.text-pane .body-text + .body-text { margin-top: 8px; }
|
|
371
|
-
.text-pane .eyebrow { margin-bottom: 16px; }
|
|
372
|
-
|
|
373
|
-
/* The split layout's shared heading keeps clear of the masthead. */
|
|
374
|
-
.split-heading { margin-top: 40px; }
|
|
375
|
-
|
|
376
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
377
|
-
LISTS β an em dash in the accent hangs in the margin; numbers are the
|
|
378
|
-
display face's italic figures
|
|
379
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
380
|
-
.slide-body ul { max-width: 1500px; }
|
|
381
|
-
.slide-body ul li {
|
|
382
|
-
font-weight: 400;
|
|
383
|
-
line-height: 1.5;
|
|
384
|
-
padding-left: 64px;
|
|
385
|
-
position: relative;
|
|
386
|
-
}
|
|
387
|
-
.slide-body ul li::before {
|
|
388
|
-
content: '\2014';
|
|
389
|
-
position: absolute;
|
|
390
|
-
left: 0;
|
|
391
|
-
top: 0;
|
|
392
|
-
font-family: var(--font-display);
|
|
393
|
-
font-weight: 700;
|
|
394
|
-
color: var(--accent);
|
|
395
|
-
}
|
|
396
|
-
.slide-body ol { max-width: 1500px; }
|
|
397
|
-
.slide-body ol li {
|
|
398
|
-
counter-increment: slide-ol;
|
|
399
|
-
padding-left: 64px;
|
|
400
|
-
line-height: 1.5;
|
|
401
|
-
position: relative;
|
|
402
|
-
}
|
|
403
|
-
.slide-body ol li::before {
|
|
404
|
-
content: counter(slide-ol) '.';
|
|
405
|
-
position: absolute;
|
|
406
|
-
left: 0;
|
|
407
|
-
top: -0.08em;
|
|
408
|
-
font-family: var(--font-display);
|
|
409
|
-
font-style: italic;
|
|
410
|
-
font-weight: 700;
|
|
411
|
-
font-size: 1.2em;
|
|
412
|
-
color: var(--accent);
|
|
413
|
-
line-height: 1.5;
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
417
|
-
LAYOUT: FULL-BLEED IMAGE
|
|
418
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
419
|
-
.slide--full-bleed-image.has-overlay .slide-bg::after {
|
|
420
|
-
content: '';
|
|
421
|
-
position: absolute;
|
|
422
|
-
inset: 0;
|
|
423
|
-
background: linear-gradient(to top, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0.2) 50%, transparent 100%);
|
|
424
|
-
}
|
|
425
|
-
.slide--full-bleed-image .overlay-title {
|
|
426
|
-
font-family: var(--font-display);
|
|
427
|
-
font-size: calc(var(--fs-h) * 1.15);
|
|
428
|
-
font-weight: 700;
|
|
429
|
-
font-optical-sizing: auto;
|
|
430
|
-
line-height: 1.08;
|
|
431
|
-
letter-spacing: -0.02em;
|
|
432
|
-
color: #fff;
|
|
433
|
-
margin: 0;
|
|
434
|
-
max-width: 1300px;
|
|
435
|
-
text-wrap: balance;
|
|
436
|
-
}
|
|
437
|
-
.slide--full-bleed-image .overlay-title em { color: inherit; font-weight: 400; }
|
|
438
|
-
|
|
439
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
440
|
-
CONTENT SLIDES β a headline, and the text that follows it opens with a
|
|
441
|
-
drop cap
|
|
442
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
443
|
-
.slide-body h1 {
|
|
444
|
-
font-family: var(--font-display);
|
|
445
|
-
font-size: var(--fs-h);
|
|
446
|
-
font-weight: 600;
|
|
447
|
-
font-optical-sizing: auto;
|
|
448
|
-
line-height: 1.08;
|
|
449
|
-
letter-spacing: -0.015em;
|
|
450
|
-
color: var(--ink);
|
|
451
|
-
margin: 0 0 var(--gap-title) 0;
|
|
452
|
-
max-width: 1500px;
|
|
453
|
-
text-wrap: balance;
|
|
454
|
-
}
|
|
455
|
-
.slide-body h1 em { font-weight: 400; }
|
|
456
|
-
.slide-body h2 {
|
|
457
|
-
font-family: var(--font-display);
|
|
458
|
-
font-size: var(--fs-sub);
|
|
459
|
-
font-weight: 700;
|
|
460
|
-
font-style: italic;
|
|
461
|
-
line-height: 1.15;
|
|
462
|
-
color: var(--ink);
|
|
463
|
-
margin: 0 0 var(--gap-item) 0;
|
|
464
|
-
text-wrap: balance;
|
|
465
|
-
}
|
|
466
|
-
.slide-body p {
|
|
467
|
-
font-family: var(--font-body);
|
|
468
|
-
font-size: var(--fs-body);
|
|
469
|
-
font-weight: 400;
|
|
470
|
-
line-height: 1.6;
|
|
471
|
-
color: var(--ink-soft);
|
|
472
|
-
margin: 0 0 var(--gap-item) 0;
|
|
473
|
-
text-wrap: pretty;
|
|
474
|
-
}
|
|
475
|
-
.slide-body > p { max-width: 1500px; }
|
|
476
|
-
.slide-body > h1 + p::first-letter {
|
|
477
|
-
float: left;
|
|
478
|
-
font-family: var(--font-display);
|
|
479
|
-
font-size: 3.4em;
|
|
480
|
-
font-weight: 700;
|
|
481
|
-
line-height: 0.82;
|
|
482
|
-
margin: 0.08em 0.1em 0 0;
|
|
483
|
-
color: var(--accent);
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
487
|
-
FOOTNOTES
|
|
488
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
489
|
-
.slide-footnotes {
|
|
490
|
-
font-style: italic;
|
|
491
|
-
padding-top: 18px;
|
|
492
|
-
}
|
|
493
|
-
.slide-footnotes li { line-height: 1.45; }
|
|
494
|
-
|
|
495
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
496
|
-
CALLOUTS β margin notes: a rule in the margin, the title in capitals,
|
|
497
|
-
the note in italics
|
|
498
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
499
|
-
.slide-body .callout {
|
|
500
|
-
background: none;
|
|
501
|
-
border: 0;
|
|
502
|
-
border-left: 3px solid var(--rule);
|
|
503
|
-
border-radius: 0;
|
|
504
|
-
padding: 4px 0 4px 32px;
|
|
505
|
-
margin: 40px 0 0;
|
|
506
|
-
max-width: 1200px;
|
|
507
|
-
}
|
|
508
|
-
.slide-body .callout-tip { border-left-color: var(--accent); }
|
|
509
|
-
.slide-body .callout-tip .callout-title { color: var(--accent); }
|
|
510
|
-
.slide-body .callout-note { border-left-color: var(--callout-note); }
|
|
511
|
-
.slide-body .callout-important { border-left-color: var(--callout-important); }
|
|
512
|
-
.slide-body .callout-warning { border-left-color: var(--callout-warning); }
|
|
513
|
-
.slide-body .callout-caution { border-left-color: var(--callout-caution); }
|
|
514
|
-
/* Lecture blocks: theorems in the accent's margin, definitions in the second accent */
|
|
515
|
-
.slide-body :is(.callout-theorem, .callout-lemma, .callout-corollary) { border-left-color: var(--accent); }
|
|
516
|
-
.slide-body .callout-definition { border-left-color: var(--accent-2); }
|
|
517
|
-
.slide-body .callout-title {
|
|
518
|
-
font-family: var(--font-body);
|
|
519
|
-
font-size: var(--fs-eyebrow);
|
|
520
|
-
font-weight: 600;
|
|
521
|
-
letter-spacing: 0.2em;
|
|
522
|
-
text-transform: uppercase;
|
|
523
|
-
margin-bottom: 8px;
|
|
524
|
-
}
|
|
525
|
-
.slide-body .callout p {
|
|
526
|
-
padding-left: 0;
|
|
527
|
-
font-style: italic;
|
|
528
|
-
color: var(--ink);
|
|
529
|
-
font-size: var(--fs-body);
|
|
530
|
-
margin-bottom: 0;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
534
|
-
CODE β a figure between hairlines on the paper's surface
|
|
535
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
536
|
-
.code-block {
|
|
537
|
-
--code-bg: var(--surface);
|
|
538
|
-
--code-radius: 0;
|
|
539
|
-
--code-size: 26px;
|
|
540
|
-
background: var(--code-bg);
|
|
541
|
-
border-radius: 0;
|
|
542
|
-
border-top: 1px solid var(--ink);
|
|
543
|
-
border-bottom: 1px solid var(--ink);
|
|
544
|
-
padding: 36px 44px;
|
|
545
|
-
margin: 0;
|
|
546
|
-
overflow: hidden;
|
|
547
|
-
font-size: var(--code-size);
|
|
548
|
-
font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
|
|
549
|
-
line-height: 1.6;
|
|
550
|
-
}
|
|
551
|
-
.code-block code {
|
|
552
|
-
font-family: inherit;
|
|
553
|
-
font-size: inherit;
|
|
554
|
-
background: none;
|
|
555
|
-
padding: 0;
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
559
|
-
AUDIENCE QUESTIONS β thin square bars
|
|
560
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
561
|
-
.slide .poll-track, .slide .poll-fill, .slide .scale-track, .slide .scale-fill { border-radius: 0; }
|
|
562
|
-
.slide .poll-track, .slide .scale-track { background: var(--accent-soft); }
|
|
563
|
-
.slide .question-cards li { border-radius: 0; background: var(--accent-soft); font-style: italic; }
|
|
564
|
-
.slide .poll-join { border-radius: 0; }
|
|
565
|
-
|
|
566
|
-
/* βββββββββββββββββββββββββββββββββββββββββββββ
|
|
567
|
-
MATH (KaTeX)
|
|
568
|
-
βββββββββββββββββββββββββββββββββββββββββββββ */
|
|
569
|
-
.slide .katex-display {
|
|
570
|
-
font-size: var(--fs-sub);
|
|
571
|
-
margin: 40px 0;
|
|
572
|
-
overflow-x: auto;
|
|
573
|
-
overflow-y: hidden;
|
|
574
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
schema = 1
|
|
2
|
-
kind = "theme"
|
|
3
|
-
id = "fhnw"
|
|
4
|
-
title = "FHNW"
|
|
5
|
-
description = "The FHNW corporate design: Inter, black on white, yellow accent areas."
|
|
6
|
-
# The palette this theme uses unless the deck sets one; colours come only from palettes.
|
|
7
|
-
palette = "brand"
|
|
8
|
-
palettes = ["brand"] # the corporate design: no other palettes
|
|
9
|
-
fonts = [
|
|
10
|
-
"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Spectral:ital,wght@0,400;1,400&display=swap",
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
[files]
|
|
14
|
-
styles = "styles.css"
|
|
15
|
-
|
|
16
|
-
# Type, spacing and fonts used by styles.css; colours come from the palette.
|
|
17
|
-
# Deck settings (params) override these.
|
|
18
|
-
[tokens]
|
|
19
|
-
|
|
20
|
-
# Theme-specific structural tokens
|
|
21
|
-
"--grey-100" = "#F1F1EE"
|
|
22
|
-
"--grey-200" = "#DEDED9"
|
|
23
|
-
"--grey-300" = "#BEBDB9"
|
|
24
|
-
"--grey-800" = "#4C4C4C"
|
|
25
|
-
|
|
26
|
-
# Type scale (px) β projection-appropriate at 1920Γ1080.
|
|
27
|
-
"--fs-display" = "152px"
|
|
28
|
-
"--fs-title" = "96px"
|
|
29
|
-
"--fs-focus" = "80px"
|
|
30
|
-
"--fs-h" = "64px"
|
|
31
|
-
"--fs-sub" = "40px"
|
|
32
|
-
"--fs-body" = "32px"
|
|
33
|
-
"--fs-small" = "24px"
|
|
34
|
-
"--fs-eyebrow" = "24px"
|
|
35
|
-
|
|
36
|
-
# Spacing
|
|
37
|
-
"--pad-x" = "112px"
|
|
38
|
-
"--pad-y" = "72px"
|
|
39
|
-
"--gap-title" = "48px"
|
|
40
|
-
"--gap-item" = "20px"
|
|
41
|
-
|
|
42
|
-
# AkzentflΓ€che interior padding
|
|
43
|
-
"--akzent-pad-x" = "56px"
|
|
44
|
-
"--akzent-pad-y" = "40px"
|
|
45
|
-
|
|
46
|
-
# Akzentlinie band height β CD-Manual Β§2.4 (β Β½ logo height).
|
|
47
|
-
"--akzentlinie-h" = "12px"
|
|
48
|
-
|
|
49
|
-
# Type families β Inter only, per CD-Manual Β§2.2
|
|
50
|
-
"--font-display" = "\"Inter\", system-ui, -apple-system, \"Helvetica Neue\", Arial, sans-serif"
|
|
51
|
-
"--font-body" = "\"Inter\", system-ui, -apple-system, \"Helvetica Neue\", Arial, sans-serif"
|
|
52
|
-
"--font-serif" = "\"Spectral\", Georgia, \"Times New Roman\", serif"
|
|
53
|
-
|
|
54
|
-
# Settings authors can change under `params:` in the deck; each points at a token above.
|
|
55
|
-
[params.fontDisplay]
|
|
56
|
-
token = "--font-display"
|
|
57
|
-
title = "Display font"
|
|
58
|
-
|
|
59
|
-
[params.fontBody]
|
|
60
|
-
token = "--font-body"
|
|
61
|
-
title = "Body font"
|