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.
Files changed (101) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/README.md +9 -9
  3. package/assets/base.css +4 -1
  4. package/assets/extensions/palettes/lagoon/extension.toml +3 -0
  5. package/assets/extensions/palettes/neon/extension.toml +3 -0
  6. package/assets/extensions/palettes/nordic/extension.toml +3 -0
  7. package/assets/extensions/palettes/paper/extension.toml +30 -0
  8. package/assets/extensions/palettes/swiss/extension.toml +3 -0
  9. package/assets/extensions/themes/academic/extension.toml +3 -0
  10. package/assets/extensions/themes/aurora/extension.toml +3 -0
  11. package/assets/extensions/themes/minimal/extension.toml +48 -0
  12. package/assets/extensions/themes/minimal/styles.css +342 -0
  13. package/assets/extensions/themes/neue/extension.toml +3 -0
  14. package/docs/reference/authoring.md +13 -18
  15. package/docs/reference/claude-skill.md +1 -1
  16. package/docs/reference/extensions.md +40 -26
  17. package/docs/reference/palettes.md +8 -12
  18. package/docs/reference/themes.md +8 -7
  19. package/docs/site/content/appearance.md +35 -49
  20. package/docs/site/content/commands.md +3 -2
  21. package/docs/site/content/theme-authoring.md +1 -1
  22. package/docs/site/content/theme-repository.md +44 -32
  23. package/docs/site/examples/first-talk.md +1 -1
  24. package/docs/site/images/themes/academic-dark.webp +0 -0
  25. package/docs/site/images/themes/academic-light.webp +0 -0
  26. package/docs/site/images/themes/academic.webp +0 -0
  27. package/docs/site/images/themes/aurora-dark.webp +0 -0
  28. package/docs/site/images/themes/aurora-light.webp +0 -0
  29. package/docs/site/images/themes/aurora.webp +0 -0
  30. package/docs/site/images/themes/minimal-dark.webp +0 -0
  31. package/docs/site/images/themes/minimal-light.webp +0 -0
  32. package/docs/site/images/themes/minimal.webp +0 -0
  33. package/docs/site/images/themes/neue-dark.webp +0 -0
  34. package/docs/site/images/themes/neue-light.webp +0 -0
  35. package/docs/site/images/themes/neue.webp +0 -0
  36. package/docs/site/pages.js +1 -1
  37. package/examples/custom-layouts/slides.md +1 -1
  38. package/examples/poll/slides.md +1 -1
  39. package/examples/python/slides.md +2 -2
  40. package/examples/showcase/slides.md +3 -3
  41. package/package.json +2 -2
  42. package/skills/write-slides/SKILL.md +2 -2
  43. package/src/build/check.js +0 -7
  44. package/src/build/editorPlugin.js +26 -13
  45. package/src/build/themeCheck.js +17 -6
  46. package/src/cli/args.js +2 -1
  47. package/src/cli/index.js +7 -6
  48. package/src/cli/themes.js +117 -87
  49. package/src/core/validateDeck.js +4 -2
  50. package/src/editor/api.js +15 -6
  51. package/src/editor/components/App.jsx +4 -2
  52. package/src/editor/components/DesignApp.jsx +16 -9
  53. package/src/editor/components/ExtensionEditor.jsx +16 -6
  54. package/src/editor/components/ExtensionsPanel.jsx +28 -34
  55. package/src/editor/designLink.js +18 -1
  56. package/src/editor/sampleDeck.js +3 -1
  57. package/src/extensions/appearance.js +2 -1
  58. package/src/extensions/discover.js +44 -11
  59. package/src/extensions/installed.js +88 -0
  60. package/src/extensions/manifest.js +20 -3
  61. package/src/extensions/moved.js +20 -0
  62. package/src/extensions/packages.js +318 -0
  63. package/src/home/Home.jsx +12 -6
  64. package/src/layouts/layoutApi.jsx +10 -2
  65. package/src/runtime/themeLoader.js +5 -2
  66. package/assets/extensions/palettes/brand/extension.toml +0 -29
  67. package/assets/extensions/palettes/cobalt/extension.toml +0 -27
  68. package/assets/extensions/palettes/ember/extension.toml +0 -27
  69. package/assets/extensions/palettes/forest/extension.toml +0 -27
  70. package/assets/extensions/palettes/graphite/extension.toml +0 -27
  71. package/assets/extensions/palettes/pastel/extension.toml +0 -30
  72. package/assets/extensions/palettes/phosphor/extension.toml +0 -27
  73. package/assets/extensions/palettes/terra/extension.toml +0 -27
  74. package/assets/extensions/themes/duet/extension.toml +0 -46
  75. package/assets/extensions/themes/duet/styles.css +0 -573
  76. package/assets/extensions/themes/editorial/extension.toml +0 -46
  77. package/assets/extensions/themes/editorial/styles.css +0 -574
  78. package/assets/extensions/themes/fhnw/extension.toml +0 -61
  79. package/assets/extensions/themes/fhnw/styles.css +0 -604
  80. package/assets/extensions/themes/sketch/extension.toml +0 -48
  81. package/assets/extensions/themes/sketch/styles.css +0 -633
  82. package/assets/extensions/themes/terminal/extension.toml +0 -38
  83. package/assets/extensions/themes/terminal/styles.css +0 -550
  84. package/docs/site/images/themes/duet-dark.webp +0 -0
  85. package/docs/site/images/themes/duet-light.webp +0 -0
  86. package/docs/site/images/themes/duet.webp +0 -0
  87. package/docs/site/images/themes/editorial-dark.webp +0 -0
  88. package/docs/site/images/themes/editorial-light.webp +0 -0
  89. package/docs/site/images/themes/editorial.webp +0 -0
  90. package/docs/site/images/themes/fhnw.webp +0 -0
  91. package/docs/site/images/themes/sketch-dark.webp +0 -0
  92. package/docs/site/images/themes/sketch-light.webp +0 -0
  93. package/docs/site/images/themes/sketch.webp +0 -0
  94. package/docs/site/images/themes/terminal-dark.webp +0 -0
  95. package/docs/site/images/themes/terminal-light.webp +0 -0
  96. package/docs/site/images/themes/terminal.webp +0 -0
  97. package/examples/python/.mdeck-backups/slides.drawings-2026-10-06T08-36-47Z.json +0 -19
  98. package/examples/python/.mdeck-backups/slides.drawings-2026-10-06T11-27-30Z.json +0 -6
  99. package/examples/showcase/.mdeck-backups/slides.drawings-2026-10-06T08-08-30Z.json +0 -10
  100. package/examples/showcase/.mdeck-backups/slides.drawings-2026-10-06T11-41-35Z.json +0 -13
  101. 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"