@kadal/theme-folio 0.0.0-stage → 0.4.1

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 (5) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +66 -2
  3. package/index.tsx +115 -0
  4. package/package.json +106 -4
  5. package/style.css +729 -0
package/style.css ADDED
@@ -0,0 +1,729 @@
1
+ /* ─────────────────────────────────────────────────────────────────────────────
2
+ Folio — an editorial theme for essays and keynotes. Warm paper and ink, Playfair Display for
3
+ the display lines, Newsreader for the reading text, IBM Plex Mono for code; one oxblood accent,
4
+ a gilt second. Generous margins, a measure kept to reading length, booktabs tables, an
5
+ asterism for a rule, small capitals for labels.
6
+
7
+ Scoped under .theme-folio; dark ("night edition") is .theme-folio[data-color-scheme="dark"].
8
+ themeConfig: `accent` / `accentDark` (--theme-accent, --theme-accent-dark), `paper`
9
+ (--theme-paper, the light page's colour).
10
+ ───────────────────────────────────────────────────────────────────────────── */
11
+
12
+ .theme-folio {
13
+ --deck-bg: var(--theme-paper, #f6f0e4);
14
+ --deck-fg: #211b14;
15
+ --deck-muted: #675948;
16
+ --deck-accent: var(--theme-accent, #9b2c1c);
17
+ --deck-accent-2: #a2772a;
18
+ --deck-surface: rgba(33, 27, 20, 0.045);
19
+ --deck-border: rgba(33, 27, 20, 0.18);
20
+ --deck-live: var(--theme-accent, #9b2c1c);
21
+ --deck-controls-color: var(--deck-fg);
22
+ --folio-rule: #211b14;
23
+ --folio-ground:
24
+ radial-gradient(140% 100% at 50% 35%, transparent 55%, rgba(120, 88, 40, 0.09) 100%),
25
+ var(--deck-bg);
26
+ --folio-good: #3f6b2a;
27
+ --folio-warn: #8a5a00;
28
+ /* type */
29
+ --deck-heading-font: "Playfair Display", Georgia, "Times New Roman", serif;
30
+ --deck-serif-font: "Newsreader", Georgia, Cambria, "Times New Roman", serif;
31
+ --deck-body-font: var(--deck-serif-font);
32
+ --deck-mono-font: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
33
+ --deck-base-size: 38px;
34
+ /* code: Gruvbox, soft, on the paper */
35
+ --deck-code-bg: #efe6d3;
36
+ --deck-code-fg: #3c3836;
37
+ --deck-code-active: rgba(155, 44, 28, 0.1);
38
+ --deck-radius: 4px;
39
+ --deck-pad: 120px;
40
+ --deck-transition: 700ms;
41
+ }
42
+ .theme-folio[data-color-scheme="dark"] {
43
+ --deck-bg: #1a1612;
44
+ --deck-fg: #efe6d6;
45
+ --deck-muted: #b6a68f;
46
+ /* an accent set in themeConfig, lifted for the dark page; invalid (so skipped) when unset */
47
+ --folio-accent-lifted: color-mix(in oklab, var(--theme-accent) 60%, white);
48
+ --deck-accent: var(--theme-accent-dark, var(--folio-accent-lifted, #e8957c));
49
+ --deck-accent-2: #d9b46a;
50
+ --deck-surface: rgba(239, 230, 214, 0.06);
51
+ --deck-border: rgba(239, 230, 214, 0.17);
52
+ --deck-live: var(--deck-accent);
53
+ --folio-rule: #efe6d6;
54
+ --folio-ground:
55
+ radial-gradient(140% 100% at 50% 35%, transparent 50%, rgba(0, 0, 0, 0.32) 100%),
56
+ var(--deck-bg);
57
+ --folio-good: #a9c98a;
58
+ --folio-warn: #e3b55e;
59
+ --deck-code-bg: #221d17;
60
+ --deck-code-fg: #ebdbb2;
61
+ --deck-code-active: rgba(232, 149, 124, 0.12);
62
+ color-scheme: dark;
63
+ }
64
+
65
+ /* ── the page ──────────────────────────────────────────────────────────── */
66
+ .theme-folio :is(
67
+ .deck-backgrounds,
68
+ .deck-print-page,
69
+ .deck-overview-tile,
70
+ .deck-scroll-sticky,
71
+ .deck-thumbnail-capture
72
+ ),
73
+ .theme-folio .deck-background[data-color-scheme],
74
+ .theme-folio.deck-background[data-color-scheme] {
75
+ background: var(--folio-ground);
76
+ }
77
+
78
+ /* ── type ──────────────────────────────────────────────────────────────── */
79
+ .theme-folio .deck-slide {
80
+ line-height: 1.5;
81
+ font-feature-settings: "kern", "liga", "onum";
82
+ hanging-punctuation: first;
83
+ }
84
+ .theme-folio .deck-slide :is(h1, h2) {
85
+ font-weight: 700;
86
+ letter-spacing: -0.012em;
87
+ line-height: 1.06;
88
+ font-feature-settings: "kern", "liga", "lnum";
89
+ }
90
+ .theme-folio .deck-slide h1 {
91
+ font-size: 3.2em;
92
+ }
93
+ .theme-folio .deck-slide h2 {
94
+ font-size: 2.05em;
95
+ margin-bottom: 0.6em;
96
+ }
97
+ .theme-folio .deck-slide h3 {
98
+ font-size: 1.25em;
99
+ font-weight: 500;
100
+ font-style: italic;
101
+ letter-spacing: 0;
102
+ }
103
+ .theme-folio .deck-slide h4 {
104
+ font-family: var(--deck-serif-font);
105
+ font-size: 0.72em;
106
+ font-weight: 600;
107
+ letter-spacing: 0.16em;
108
+ text-transform: uppercase;
109
+ color: var(--deck-accent);
110
+ }
111
+ .theme-folio .deck-slide :is(p, li) {
112
+ text-wrap: pretty;
113
+ }
114
+ .theme-folio .deck-layout-default > p,
115
+ .theme-folio .deck-layout-default > ul,
116
+ .theme-folio .deck-layout-default > ol {
117
+ max-width: 34em;
118
+ }
119
+ .theme-folio .deck-slide ul {
120
+ list-style: none;
121
+ padding-inline-start: 1.3em;
122
+ }
123
+ .theme-folio .deck-slide ul > li {
124
+ position: relative;
125
+ }
126
+ .theme-folio .deck-slide ul > li::before {
127
+ content: "\2014";
128
+ position: absolute;
129
+ left: -1.3em;
130
+ color: var(--deck-accent);
131
+ }
132
+ .theme-folio .deck-slide ul ul > li::before {
133
+ content: "\2013";
134
+ color: var(--deck-muted);
135
+ }
136
+ .theme-folio .deck-slide ul ul {
137
+ margin: 0.15em 0 0.25em;
138
+ font-size: 0.92em;
139
+ color: var(--deck-muted);
140
+ }
141
+ .theme-folio .deck-slide ol > li::marker {
142
+ color: var(--deck-accent);
143
+ font-variant-numeric: oldstyle-nums;
144
+ font-style: italic;
145
+ }
146
+ .theme-folio .deck-slide em {
147
+ font-style: italic;
148
+ }
149
+ .theme-folio .deck-slide strong {
150
+ font-weight: 700;
151
+ }
152
+ .theme-folio .deck-slide a {
153
+ color: inherit;
154
+ text-decoration-color: var(--deck-accent);
155
+ text-decoration-thickness: 0.06em;
156
+ text-underline-offset: 0.16em;
157
+ }
158
+ .theme-folio .deck-slide a:hover {
159
+ color: var(--deck-accent);
160
+ }
161
+ .theme-folio .deck-slide blockquote {
162
+ margin: 0.6em 0;
163
+ padding: 0 0 0 1em;
164
+ border: 0;
165
+ border-inline-start: 1px solid var(--deck-accent);
166
+ border-radius: 0;
167
+ background: none;
168
+ color: var(--deck-fg);
169
+ font-style: italic;
170
+ font-size: 1.12em;
171
+ line-height: 1.4;
172
+ }
173
+ .theme-folio .deck-slide blockquote p:last-child {
174
+ margin-bottom: 0;
175
+ }
176
+ /* a rule is an asterism, centred, not a line */
177
+ .theme-folio .deck-slide hr {
178
+ border: 0;
179
+ margin: 0.8em 0;
180
+ text-align: center;
181
+ color: var(--deck-accent);
182
+ overflow: visible;
183
+ }
184
+ .theme-folio .deck-slide hr::after {
185
+ content: "\2042";
186
+ font-size: 1.1em;
187
+ letter-spacing: 0.4em;
188
+ }
189
+ /* booktabs: a heavy rule above and below, a light one under the head, nothing vertical */
190
+ .theme-folio .deck-slide table {
191
+ font-size: 0.78em;
192
+ border-top: 2px solid var(--folio-rule);
193
+ border-bottom: 2px solid var(--folio-rule);
194
+ font-variant-numeric: lining-nums tabular-nums;
195
+ }
196
+ .theme-folio .deck-slide th {
197
+ font-weight: 600;
198
+ font-size: 0.8em;
199
+ letter-spacing: 0.1em;
200
+ color: var(--deck-fg);
201
+ border-bottom: 1px solid var(--folio-rule);
202
+ }
203
+ .theme-folio .deck-slide td {
204
+ border-bottom: 0;
205
+ }
206
+ .theme-folio .deck-slide :is(th, td) {
207
+ padding: 0.45em 0.9em 0.45em 0;
208
+ }
209
+ .theme-folio .deck-slide tbody tr:first-child td {
210
+ padding-top: 0.65em;
211
+ }
212
+ .theme-folio .deck-slide tbody tr:last-child td {
213
+ padding-bottom: 0.65em;
214
+ }
215
+ .theme-folio .deck-slide :not(pre) > code {
216
+ font-size: 0.78em;
217
+ padding: 0.08em 0.32em;
218
+ border-radius: 3px;
219
+ background: var(--deck-surface);
220
+ color: var(--deck-fg);
221
+ }
222
+ .theme-folio .deck-kbd {
223
+ font-size: 0.68em;
224
+ border-color: var(--deck-border);
225
+ border-radius: 3px;
226
+ }
227
+ .theme-folio .deck-slide img {
228
+ border-radius: 2px;
229
+ }
230
+
231
+ /* ── code ──────────────────────────────────────────────────────────────── */
232
+ .theme-folio .deck-code-block {
233
+ border-radius: var(--deck-radius);
234
+ border: 1px solid var(--deck-border);
235
+ border-top: 2px solid var(--folio-rule);
236
+ }
237
+ .theme-folio .deck-code-title {
238
+ font: 600 0.48em var(--deck-mono-font);
239
+ letter-spacing: 0.08em;
240
+ color: var(--deck-muted);
241
+ padding: 0.6em 1.2em;
242
+ border-bottom-color: var(--deck-border);
243
+ }
244
+ .theme-folio .deck-code-title-dot {
245
+ width: 0.55em;
246
+ height: 0.55em;
247
+ border-radius: 0;
248
+ transform: rotate(45deg);
249
+ background: var(--deck-accent);
250
+ }
251
+ .theme-folio pre.deck-code,
252
+ .theme-folio .shiki-magic-move-wrap {
253
+ font-size: 0.56em;
254
+ line-height: 1.7;
255
+ }
256
+ .theme-folio pre.deck-code {
257
+ padding: 0.85em 0;
258
+ }
259
+ .theme-folio pre.deck-code .line {
260
+ padding: 0 1.4em;
261
+ }
262
+ .theme-folio .shiki-magic-move-wrap {
263
+ padding: 0.85em 1.4em;
264
+ }
265
+ .theme-folio pre.deck-code .line.is-active {
266
+ box-shadow: inset 3px 0 0 var(--deck-accent);
267
+ }
268
+ .theme-folio pre.deck-code .line.is-dim {
269
+ opacity: 0.32;
270
+ }
271
+
272
+ /* ── components ────────────────────────────────────────────────────────── */
273
+ /* a callout is a marginal note: a rule in the kind's colour, a small-capitals head, no box */
274
+ .theme-folio .deck-callout {
275
+ padding: 0.15em 0 0.15em 0.9em;
276
+ border: 0;
277
+ border-inline-start: 2px solid var(--folio-kind, var(--deck-accent));
278
+ border-radius: 0;
279
+ background: none;
280
+ font-size: 0.82em;
281
+ --folio-kind: var(--deck-accent);
282
+ }
283
+ .theme-folio .deck-callout.kind-tip {
284
+ --folio-kind: var(--folio-good);
285
+ }
286
+ .theme-folio .deck-callout.kind-warn {
287
+ --folio-kind: var(--folio-warn);
288
+ }
289
+ .theme-folio .deck-callout.kind-danger {
290
+ --folio-kind: var(--deck-accent);
291
+ }
292
+ .theme-folio .deck-callout.kind-note {
293
+ --folio-kind: var(--deck-muted);
294
+ }
295
+ .theme-folio .deck-callout-title {
296
+ font-size: 0.78em;
297
+ font-weight: 600;
298
+ letter-spacing: 0.16em;
299
+ text-transform: uppercase;
300
+ color: var(--folio-kind);
301
+ margin-bottom: 0.25em;
302
+ }
303
+ .theme-folio .deck-callout > div {
304
+ font-style: italic;
305
+ }
306
+ .theme-folio .deck-callout > div > :last-child {
307
+ margin-bottom: 0;
308
+ }
309
+ .theme-folio .deck-badge {
310
+ font-family: var(--deck-serif-font);
311
+ font-weight: 600;
312
+ letter-spacing: 0.14em;
313
+ border-radius: 2px;
314
+ }
315
+ .theme-folio .deck-toc {
316
+ counter-reset: folio-toc;
317
+ }
318
+ .theme-folio .deck-toc li {
319
+ margin: 0.25em 0;
320
+ }
321
+ .theme-folio .deck-toc li.level-1 {
322
+ counter-increment: folio-toc;
323
+ font-family: var(--deck-heading-font);
324
+ font-size: 1.05em;
325
+ }
326
+ .theme-folio .deck-toc li.level-1 > a::before {
327
+ content: counter(folio-toc, upper-roman) ".";
328
+ display: inline-block;
329
+ min-width: 2.2em;
330
+ font-family: var(--deck-serif-font);
331
+ font-size: 0.8em;
332
+ font-style: italic;
333
+ color: var(--deck-accent);
334
+ }
335
+ .theme-folio .deck-toc li:is(.level-2, .level-3) {
336
+ padding-inline-start: 2.6em;
337
+ font-style: italic;
338
+ }
339
+ .theme-folio .deck-toc li.is-current > a {
340
+ color: var(--deck-accent);
341
+ font-weight: 700;
342
+ }
343
+ .theme-folio .deck-mark {
344
+ --mark-color: var(--deck-accent);
345
+ }
346
+
347
+ /* ── chrome ────────────────────────────────────────────────────────────── */
348
+ .theme-folio .deck-progress {
349
+ height: 3px;
350
+ background: transparent;
351
+ }
352
+ .theme-folio .deck-progress span {
353
+ background: var(--deck-accent);
354
+ }
355
+ .theme-folio .deck-slide-number {
356
+ font: italic 15px var(--deck-serif-font);
357
+ font-variant-numeric: oldstyle-nums;
358
+ letter-spacing: 0.04em;
359
+ color: var(--deck-muted);
360
+ background: none;
361
+ padding: 4px 6px;
362
+ }
363
+
364
+ /* ── layouts ───────────────────────────────────────────────────────────── */
365
+ .theme-folio .deck-layout-center p {
366
+ max-width: 30em;
367
+ }
368
+ .theme-folio .deck-layout-cover {
369
+ justify-content: flex-end;
370
+ align-items: flex-start;
371
+ padding-bottom: 0.4em;
372
+ }
373
+ .theme-folio .deck-layout-cover::before {
374
+ content: "";
375
+ position: absolute;
376
+ top: 0;
377
+ left: 0;
378
+ right: 0;
379
+ border-top: 2px solid var(--folio-rule);
380
+ border-bottom: 1px solid var(--folio-rule);
381
+ height: 5px;
382
+ }
383
+ .theme-folio .deck-layout-cover h1 {
384
+ font-size: 4.6em;
385
+ font-weight: 800;
386
+ line-height: 0.98;
387
+ max-width: 11ch;
388
+ margin-bottom: 0.25em;
389
+ }
390
+ .theme-folio .deck-layout-cover > p {
391
+ font-size: 1.15em;
392
+ font-style: italic;
393
+ max-width: 30em;
394
+ color: var(--deck-muted);
395
+ }
396
+ .theme-folio .deck-layout-cover h4 {
397
+ margin-bottom: 0.9em;
398
+ }
399
+ .theme-folio .deck-layout-intro {
400
+ align-items: flex-start;
401
+ }
402
+ .theme-folio .deck-layout-intro h1 {
403
+ font-size: 3.4em;
404
+ max-width: 14ch;
405
+ padding-bottom: 0.25em;
406
+ margin-bottom: 0.4em;
407
+ border-bottom: 1px solid var(--deck-border);
408
+ }
409
+ .theme-folio .deck-layout-intro > p {
410
+ max-width: 30em;
411
+ font-size: 1.08em;
412
+ }
413
+ .theme-folio .deck-layout-section {
414
+ align-items: center;
415
+ text-align: center;
416
+ }
417
+ .theme-folio .deck-layout-section::before {
418
+ content: "\2766";
419
+ display: block;
420
+ font-size: 1.3em;
421
+ color: var(--deck-accent);
422
+ margin-bottom: 0.5em;
423
+ }
424
+ .theme-folio .deck-layout-section :is(h1, h2) {
425
+ font-size: 3.4em;
426
+ font-style: italic;
427
+ font-weight: 600;
428
+ max-width: 16ch;
429
+ }
430
+ .theme-folio .deck-layout-section > p {
431
+ font-style: italic;
432
+ color: var(--deck-muted);
433
+ max-width: 28em;
434
+ }
435
+ .theme-folio .deck-layout-end::before {
436
+ content: "\2766";
437
+ font-size: 1.4em;
438
+ color: var(--deck-accent);
439
+ margin-bottom: 0.4em;
440
+ }
441
+ .theme-folio .deck-layout-end :is(h1, h2) {
442
+ font-size: 3.6em;
443
+ font-style: italic;
444
+ font-weight: 600;
445
+ }
446
+ .theme-folio .deck-layout-end > p {
447
+ font-variant-caps: all-small-caps;
448
+ letter-spacing: 0.12em;
449
+ color: var(--deck-muted);
450
+ }
451
+ .theme-folio .deck-layout-fact > :is(h1, h2, p, .deck-counter):first-child {
452
+ font-family: var(--deck-heading-font);
453
+ font-size: 5.6em;
454
+ font-weight: 800;
455
+ line-height: 1;
456
+ letter-spacing: -0.03em;
457
+ color: var(--deck-accent);
458
+ font-variant-numeric: lining-nums;
459
+ margin-bottom: 0.15em;
460
+ }
461
+ .theme-folio .deck-layout-fact > :not(:first-child) {
462
+ font-size: 1.1em;
463
+ font-style: italic;
464
+ font-weight: 400;
465
+ max-width: 26em;
466
+ color: var(--deck-muted);
467
+ }
468
+ .theme-folio .deck-layout-quote {
469
+ padding-inline: 10%;
470
+ font-size: 1em;
471
+ font-style: normal;
472
+ align-items: center;
473
+ text-align: center;
474
+ }
475
+ .theme-folio .deck-layout-quote blockquote {
476
+ position: relative;
477
+ border: 0;
478
+ padding: 0;
479
+ font-family: var(--deck-heading-font);
480
+ font-size: 2em;
481
+ font-weight: 500;
482
+ line-height: 1.25;
483
+ text-wrap: balance;
484
+ }
485
+ .theme-folio .deck-layout-quote blockquote::before {
486
+ content: "\201C";
487
+ display: block;
488
+ height: 0.55em;
489
+ font-size: 2.6em;
490
+ line-height: 1;
491
+ color: var(--deck-accent);
492
+ }
493
+ .theme-folio .deck-layout-quote > p {
494
+ margin-top: 0.9em;
495
+ font-style: normal;
496
+ font-variant-caps: all-small-caps;
497
+ letter-spacing: 0.14em;
498
+ color: var(--deck-muted);
499
+ }
500
+ .theme-folio .deck-layout-quote > p::before {
501
+ content: "\2014\2002";
502
+ }
503
+ .theme-folio .deck-layout-statement :is(h1, h2) {
504
+ font-size: 3.2em;
505
+ font-weight: 600;
506
+ font-style: italic;
507
+ max-width: 17ch;
508
+ margin-inline: auto;
509
+ }
510
+ .theme-folio .deck-layout-full {
511
+ padding: 0;
512
+ }
513
+ /* two columns set like a newspaper: a hairline between them */
514
+ .theme-folio .deck-layout-two-cols {
515
+ column-gap: 3em;
516
+ }
517
+ .theme-folio .deck-layout-two-cols > .deck-slot-right {
518
+ position: relative;
519
+ }
520
+ .theme-folio .deck-layout-two-cols > .deck-slot-right::before {
521
+ content: "";
522
+ position: absolute;
523
+ top: 0.2em;
524
+ bottom: 0.2em;
525
+ left: -1.5em;
526
+ border-left: 1px solid var(--deck-border);
527
+ }
528
+ .theme-folio .deck-layout-two-cols > :is(.deck-slot-default, .deck-slot-right) > :first-child {
529
+ margin-top: 0;
530
+ }
531
+ .theme-folio .deck-layout-two-cols-header {
532
+ column-gap: 3em;
533
+ }
534
+ .theme-folio .deck-layout-two-cols-header > .deck-slot-default {
535
+ padding-bottom: 0.5em;
536
+ margin-bottom: 0.5em;
537
+ border-bottom: 3px double var(--folio-rule);
538
+ }
539
+ .theme-folio .deck-layout-two-cols-header > .deck-slot-right {
540
+ position: relative;
541
+ }
542
+ .theme-folio .deck-layout-two-cols-header > .deck-slot-right::before {
543
+ content: "";
544
+ position: absolute;
545
+ top: 0.2em;
546
+ bottom: 0.2em;
547
+ left: -1.5em;
548
+ border-left: 1px solid var(--deck-border);
549
+ }
550
+ .theme-folio .deck-layout-two-cols-header h3 {
551
+ margin-bottom: 0.35em;
552
+ }
553
+ .theme-folio .deck-layout-image .deck-layout-image-content {
554
+ background: linear-gradient(180deg, transparent, rgba(20, 14, 8, 0.78));
555
+ }
556
+ .theme-folio .deck-layout-image .deck-layout-image-content :is(h1, h2) {
557
+ font-style: italic;
558
+ }
559
+ .theme-folio :is(.deck-layout-image-left, .deck-layout-image-right) .deck-layout-image-content {
560
+ padding: var(--deck-pad) calc(var(--deck-pad) * 0.8);
561
+ }
562
+ .theme-folio :is(.deck-layout-image-left, .deck-layout-image-right) .deck-layout-image-content > p {
563
+ font-size: 0.95em;
564
+ }
565
+ .theme-folio .deck-layout-image-pane {
566
+ background-color: var(--deck-surface);
567
+ filter: saturate(0.88) sepia(0.06);
568
+ }
569
+ .theme-folio :is(.deck-layout-iframe, .deck-layout-iframe-left, .deck-layout-iframe-right) .deck-frame.deck-layout-iframe-pane {
570
+ border-radius: 2px;
571
+ border: 1px solid var(--folio-rule);
572
+ box-shadow: none;
573
+ }
574
+ .theme-folio :is(.deck-layout-iframe-left, .deck-layout-iframe-right) .deck-layout-iframe-content {
575
+ padding-inline: calc(var(--deck-pad) * 0.4);
576
+ }
577
+
578
+ /* ── the theme's own layouts (index.tsx) ───────────────────────────────── */
579
+ /* pull-quote: the line that carries the piece, between two rules */
580
+ .theme-folio .deck-layout-pull-quote {
581
+ justify-content: center;
582
+ align-items: flex-start;
583
+ padding-inline-end: 12%;
584
+ }
585
+ .theme-folio .folio-pull {
586
+ padding: 0.55em 0 0.6em;
587
+ border-top: 5px solid var(--deck-accent);
588
+ border-bottom: 1px solid var(--folio-rule);
589
+ }
590
+ .theme-folio .folio-pull > :is(blockquote, p:first-child) {
591
+ margin: 0;
592
+ padding: 0;
593
+ border: 0;
594
+ background: none;
595
+ font-family: var(--deck-heading-font);
596
+ font-size: 2.3em;
597
+ font-style: italic;
598
+ font-weight: 500;
599
+ line-height: 1.2;
600
+ color: var(--deck-fg);
601
+ text-wrap: balance;
602
+ }
603
+ .theme-folio .folio-pull > blockquote p {
604
+ margin: 0;
605
+ }
606
+ .theme-folio .folio-pull-by {
607
+ margin-top: 0.8em;
608
+ font-variant-caps: all-small-caps;
609
+ letter-spacing: 0.14em;
610
+ color: var(--deck-muted);
611
+ }
612
+ .theme-folio .folio-pull-by::before {
613
+ content: "\2014\2002";
614
+ }
615
+ /* essay: one column at reading measure, a drop cap, and an aside in the margin */
616
+ .theme-folio .deck-layout-essay {
617
+ display: grid;
618
+ grid-template-columns: minmax(0, 30em) minmax(0, 1fr);
619
+ column-gap: 2.6em;
620
+ align-content: start;
621
+ }
622
+ .theme-folio .deck-layout-essay > :not(.deck-slot-aside) {
623
+ grid-column: 1;
624
+ }
625
+ .theme-folio .deck-layout-essay > :is(.deck-slot-default, .deck-slot-aside) {
626
+ grid-row: 1;
627
+ }
628
+ /* the note sits level with the column's last lines, as a marginal note does */
629
+ .theme-folio .deck-layout-essay > .deck-slot-aside {
630
+ grid-column: 2;
631
+ align-self: end;
632
+ padding-top: 0.5em;
633
+ border-top: 1px solid var(--deck-border);
634
+ font-size: 0.72em;
635
+ font-style: italic;
636
+ color: var(--deck-muted);
637
+ }
638
+ .theme-folio .deck-layout-essay :is(h1, h2) {
639
+ font-size: 1.9em;
640
+ }
641
+ .theme-folio :is(.deck-layout-essay, .deck-layout-essay > .deck-slot-default, .folio-lede) > p:first-of-type::first-letter {
642
+ float: left;
643
+ font-family: var(--deck-heading-font);
644
+ font-weight: 700;
645
+ font-size: 3.6em;
646
+ line-height: 0.82;
647
+ padding: 0.06em 0.08em 0 0;
648
+ color: var(--deck-accent);
649
+ }
650
+ /* chapter: a roman numeral, the title, an epigraph */
651
+ .theme-folio .deck-layout-chapter {
652
+ justify-content: center;
653
+ align-items: center;
654
+ text-align: center;
655
+ }
656
+ .theme-folio .folio-chapter-number {
657
+ font-family: var(--deck-heading-font);
658
+ font-size: 1em;
659
+ font-weight: 600;
660
+ letter-spacing: 0.3em;
661
+ text-transform: uppercase;
662
+ color: var(--deck-accent);
663
+ margin-bottom: 0.4em;
664
+ }
665
+ .theme-folio .folio-chapter-number b {
666
+ display: block;
667
+ font-size: 3.4em;
668
+ letter-spacing: 0.04em;
669
+ line-height: 1;
670
+ font-weight: 400;
671
+ font-style: italic;
672
+ }
673
+ .theme-folio .deck-layout-chapter :is(h1, h2) {
674
+ font-size: 2.8em;
675
+ max-width: 18ch;
676
+ }
677
+ .theme-folio .deck-layout-chapter blockquote {
678
+ max-width: 26em;
679
+ margin: 0.6em auto 0;
680
+ padding: 0;
681
+ border: 0;
682
+ font-size: 0.86em;
683
+ color: var(--deck-muted);
684
+ }
685
+ .theme-folio .deck-layout-chapter blockquote + p {
686
+ font-variant-caps: all-small-caps;
687
+ letter-spacing: 0.12em;
688
+ font-size: 0.8em;
689
+ color: var(--deck-muted);
690
+ }
691
+ /* Byline and Lede */
692
+ .theme-folio .folio-byline {
693
+ display: flex;
694
+ flex-wrap: wrap;
695
+ gap: 0.2em 0.9em;
696
+ align-items: baseline;
697
+ margin: 0.4em 0 0.8em;
698
+ padding: 0.35em 0;
699
+ border-top: 1px solid var(--deck-border);
700
+ border-bottom: 1px solid var(--deck-border);
701
+ font-size: 0.66em;
702
+ letter-spacing: 0.12em;
703
+ text-transform: uppercase;
704
+ color: var(--deck-muted);
705
+ }
706
+ .theme-folio .folio-byline b {
707
+ color: var(--deck-fg);
708
+ font-weight: 600;
709
+ }
710
+ .theme-folio .folio-lede {
711
+ font-size: 1.12em;
712
+ line-height: 1.45;
713
+ max-width: 30em;
714
+ }
715
+
716
+ /* ── still copies ──────────────────────────────────────────────────────── */
717
+ .theme-folio .deck-print-page .deck-layout-image-pane {
718
+ filter: none;
719
+ }
720
+ @media print {
721
+ .theme-folio .deck-layout-image-pane {
722
+ filter: none;
723
+ }
724
+ }
725
+ @media (prefers-reduced-motion: reduce) {
726
+ .theme-folio .deck-progress span {
727
+ transition: none;
728
+ }
729
+ }