@lincyaw/web 1.0.0-rc.0 → 1.0.0-rc.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 (58) hide show
  1. package/README.md +33 -4
  2. package/package.json +20 -19
  3. package/src/app/base.css +117 -0
  4. package/src/app/block-playback.ts +81 -0
  5. package/src/app/block-report.ts +104 -0
  6. package/src/app/document-modules.ts +30 -0
  7. package/src/app/env.d.ts +12 -0
  8. package/src/app/main.ts +198 -0
  9. package/src/app/page-app.ts +166 -0
  10. package/src/app/router.ts +109 -0
  11. package/src/app/server.ts +32 -0
  12. package/src/app/site/home.tsx +117 -0
  13. package/src/app/site/layout.tsx +78 -0
  14. package/src/app/site/search.tsx +22 -0
  15. package/src/app/site.css +1416 -0
  16. package/src/client/document.css +172 -0
  17. package/src/client/host.ts +22 -94
  18. package/src/client/preview-frame.ts +152 -0
  19. package/src/client/runtime.ts +159 -0
  20. package/src/domain/app-config.ts +89 -0
  21. package/src/domain/config.ts +17 -9
  22. package/src/domain/dev-updates.ts +12 -0
  23. package/src/domain/index.ts +17 -7
  24. package/src/domain/landing.ts +83 -0
  25. package/src/domain/links.ts +23 -18
  26. package/src/domain/messages.ts +74 -63
  27. package/src/domain/pages.ts +12 -39
  28. package/src/domain/themes.ts +59 -0
  29. package/src/domain/workspace-home.ts +12 -0
  30. package/src/node/client-modules.ts +92 -0
  31. package/src/node/document-bundle.ts +227 -0
  32. package/src/node/landing-template.ts +34 -0
  33. package/src/node/landing.ts +82 -0
  34. package/src/node/offline.ts +34 -11
  35. package/src/node/publish.ts +83 -15
  36. package/src/node/renderer.ts +78 -117
  37. package/src/node/site-assets.ts +17 -0
  38. package/src/node/site-build.ts +297 -0
  39. package/src/node/site-files.ts +87 -0
  40. package/src/node/site-model.ts +333 -0
  41. package/src/node/site-page.ts +82 -0
  42. package/src/node/site-server.ts +817 -0
  43. package/src/node/slides.ts +135 -0
  44. package/src/node/viewer-app.ts +504 -0
  45. package/src/node/viewer-build.ts +38 -0
  46. package/custom-nav-controls.vue +0 -17
  47. package/src/client/env.d.ts +0 -1
  48. package/src/client/home.ts +0 -182
  49. package/src/client/index.ts +0 -4
  50. package/src/client/page.ts +0 -38
  51. package/src/client/preview.ts +0 -71
  52. package/src/client/style.css +0 -427
  53. package/src/client/theme.ts +0 -322
  54. package/src/node/addons.ts +0 -76
  55. package/src/node/site.ts +0 -349
  56. package/src/node/sites.ts +0 -531
  57. package/src/node/vite.ts +0 -166
  58. package/src/node/vitepress.ts +0 -72
@@ -0,0 +1,1416 @@
1
+ @import '../client/document.css';
2
+
3
+ /*
4
+ * The web form's pages: a document's site (header, chapters, page, sections, pager, footer), the workspace's home page,
5
+ * a missing page, and a document alone on the workbench's canvas. Every value comes from the design tokens.
6
+ */
7
+
8
+ .pm-site {
9
+ /* What sticks to the top of the page stays below the header. */
10
+ --pm-sticky-top: var(--pm-site-header-height);
11
+ min-height: 100vh;
12
+ background: var(--pm-color-bg);
13
+ color: var(--pm-color-ink);
14
+ }
15
+
16
+ .pm-site .pm-ui-icon {
17
+ width: var(--pm-size-icon);
18
+ height: var(--pm-size-icon);
19
+ }
20
+
21
+ .pm-site__skip {
22
+ position: absolute;
23
+ top: var(--pm-space-2);
24
+ left: var(--pm-space-2);
25
+ z-index: calc(var(--pm-z-site-header) + 1);
26
+ padding: var(--pm-space-2) var(--pm-space-3);
27
+ border-radius: var(--pm-radius-control);
28
+ background: var(--pm-color-surface);
29
+ color: var(--pm-color-accent);
30
+ font-weight: 600;
31
+ box-shadow: var(--pm-shadow-float);
32
+ translate: 0 calc(-1 * var(--pm-site-header-height) - var(--pm-space-4));
33
+ }
34
+
35
+ .pm-site__skip:focus-visible {
36
+ translate: 0;
37
+ }
38
+
39
+ /* The header. */
40
+
41
+ .pm-site-header {
42
+ position: sticky;
43
+ top: 0;
44
+ z-index: var(--pm-z-site-header);
45
+ display: flex;
46
+ align-items: center;
47
+ gap: var(--pm-space-4);
48
+ height: var(--pm-site-header-height);
49
+ padding: 0 var(--pm-space-6);
50
+ border-bottom: var(--pm-size-hairline) solid var(--pm-color-line);
51
+ background: var(--pm-color-bg);
52
+ font-family: var(--pm-font-sans);
53
+ }
54
+
55
+ /* The showcase theme shares a product homepage's surface: a cool background, a translucent header and a wordmark. */
56
+ .pm-site[data-pm-site-theme='showcase'] {
57
+ background: var(--pm-color-product-bg);
58
+ }
59
+
60
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-header {
61
+ border-bottom-color: color-mix(in srgb, var(--pm-color-line) 70%, transparent);
62
+ background: color-mix(in srgb, var(--pm-color-surface) 68%, transparent);
63
+ backdrop-filter: blur(var(--pm-product-glass-blur));
64
+ }
65
+
66
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-header__title {
67
+ font-family: var(--pm-font-sans);
68
+ font-size: var(--pm-text-title);
69
+ font-weight: var(--pm-weight-semibold);
70
+ }
71
+
72
+ .pm-site-header__start {
73
+ display: flex;
74
+ flex: 1 1 auto;
75
+ align-items: center;
76
+ gap: var(--pm-space-2);
77
+ min-width: 0;
78
+ }
79
+
80
+ .pm-site-header .pm-site-header__menu {
81
+ display: none;
82
+ }
83
+
84
+ .pm-site-header__title {
85
+ display: inline-flex;
86
+ align-items: center;
87
+ gap: var(--pm-space-2);
88
+ min-width: 0;
89
+ overflow: hidden;
90
+ color: var(--pm-color-ink);
91
+ font-family: var(--pm-site-reading-font);
92
+ font-size: var(--pm-text-lg);
93
+ font-weight: 600;
94
+ text-overflow: ellipsis;
95
+ white-space: nowrap;
96
+ }
97
+
98
+ .pm-site-header__title > span {
99
+ min-width: 0;
100
+ overflow: hidden;
101
+ text-overflow: ellipsis;
102
+ }
103
+
104
+ .pm-site-header__logo {
105
+ flex: none;
106
+ width: var(--pm-size-avatar);
107
+ height: var(--pm-size-avatar);
108
+ object-fit: contain;
109
+ }
110
+
111
+ .pm-site-header__nav {
112
+ flex: none;
113
+ }
114
+
115
+ .pm-site-header__tools {
116
+ display: flex;
117
+ flex: none;
118
+ align-items: center;
119
+ gap: var(--pm-space-2);
120
+ }
121
+
122
+ .pm-site-nav,
123
+ .pm-site-nav__items {
124
+ margin: 0;
125
+ padding: 0;
126
+ list-style: none;
127
+ }
128
+
129
+ .pm-site-nav {
130
+ display: flex;
131
+ align-items: center;
132
+ gap: var(--pm-space-1);
133
+ }
134
+
135
+ .pm-site-nav__items {
136
+ display: grid;
137
+ gap: var(--pm-space-px);
138
+ min-width: 10rem;
139
+ }
140
+
141
+ .pm-site-nav__link {
142
+ display: inline-flex;
143
+ align-items: center;
144
+ gap: var(--pm-space-1);
145
+ padding: var(--pm-space-1) var(--pm-space-2);
146
+ border: 0;
147
+ border-radius: var(--pm-radius-control);
148
+ background: none;
149
+ color: var(--pm-color-ink);
150
+ font: inherit;
151
+ font-size: var(--pm-text-md);
152
+ font-weight: 500;
153
+ cursor: pointer;
154
+ }
155
+
156
+ .pm-site-nav__link:hover {
157
+ background: var(--pm-color-hover);
158
+ color: var(--pm-color-accent);
159
+ }
160
+
161
+ .pm-site-nav__link .pm-ui-icon {
162
+ width: var(--pm-size-icon-sm);
163
+ height: var(--pm-size-icon-sm);
164
+ }
165
+
166
+ .pm-site-nav--vertical {
167
+ flex-direction: column;
168
+ align-items: stretch;
169
+ margin-bottom: var(--pm-space-4);
170
+ padding-bottom: var(--pm-space-4);
171
+ border-bottom: var(--pm-size-hairline) solid var(--pm-color-line);
172
+ }
173
+
174
+ .pm-site-nav__heading {
175
+ margin: var(--pm-space-2) 0 var(--pm-space-1);
176
+ padding: 0 var(--pm-space-2);
177
+ color: var(--pm-color-muted);
178
+ font-size: var(--pm-text-xs);
179
+ font-weight: 600;
180
+ letter-spacing: var(--pm-tracking-label);
181
+ }
182
+
183
+ .pm-site-search-button {
184
+ min-width: 11rem;
185
+ cursor: pointer;
186
+ }
187
+
188
+ .pm-site-search-button__text {
189
+ flex: 1;
190
+ color: var(--pm-color-muted);
191
+ text-align: start;
192
+ }
193
+
194
+ .pm-site-languages {
195
+ display: grid;
196
+ gap: var(--pm-space-px);
197
+ margin: 0;
198
+ padding: 0;
199
+ list-style: none;
200
+ }
201
+
202
+ .pm-site-languages__link {
203
+ display: block;
204
+ padding: var(--pm-space-1) var(--pm-space-3);
205
+ border-radius: var(--pm-radius-small);
206
+ color: var(--pm-color-ink);
207
+ font-size: var(--pm-text-md);
208
+ }
209
+
210
+ .pm-site-languages__link:hover {
211
+ background: var(--pm-color-hover);
212
+ }
213
+
214
+ .pm-site-languages__link[aria-current] {
215
+ color: var(--pm-color-accent);
216
+ font-weight: 600;
217
+ }
218
+
219
+ .pm-site-link {
220
+ display: inline-flex;
221
+ align-items: center;
222
+ gap: var(--pm-space-1);
223
+ padding: var(--pm-space-1) var(--pm-space-3);
224
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
225
+ border-radius: var(--pm-radius-control);
226
+ color: var(--pm-color-ink);
227
+ font-size: var(--pm-text-sm);
228
+ font-weight: 500;
229
+ white-space: nowrap;
230
+ }
231
+
232
+ .pm-site-link:hover {
233
+ border-color: var(--pm-color-accent);
234
+ color: var(--pm-color-accent);
235
+ }
236
+
237
+ /* On a phone: the chapters and the page's sections, a bar below the header. */
238
+
239
+ .pm-site-localnav {
240
+ display: none;
241
+ }
242
+
243
+ .pm-site-localnav__button {
244
+ display: inline-flex;
245
+ align-items: center;
246
+ gap: var(--pm-space-1);
247
+ padding: var(--pm-space-1) var(--pm-space-2);
248
+ border: 0;
249
+ border-radius: var(--pm-radius-control);
250
+ background: none;
251
+ color: var(--pm-color-ink);
252
+ font: inherit;
253
+ font-size: var(--pm-text-sm);
254
+ cursor: pointer;
255
+ }
256
+
257
+ .pm-site-localnav__button:hover {
258
+ background: var(--pm-color-hover);
259
+ }
260
+
261
+ .pm-site-outline-menu__panel .pm-site-outline__items {
262
+ border-left: 0;
263
+ }
264
+
265
+ /* The columns: the chapters, the page, the page's sections. */
266
+
267
+ .pm-site__body {
268
+ display: grid;
269
+ grid-template-columns: var(--pm-site-sidebar-width) minmax(0, 1fr) var(--pm-site-outline-width);
270
+ max-width: calc(var(--pm-site-sidebar-width) + var(--pm-site-reading-width) + var(--pm-site-outline-width) + 2 * var(--pm-space-12));
271
+ margin: 0 auto;
272
+ }
273
+
274
+ .pm-site__sidebar,
275
+ .pm-site__aside {
276
+ position: sticky;
277
+ top: var(--pm-site-header-height);
278
+ align-self: start;
279
+ max-height: calc(100vh - var(--pm-site-header-height));
280
+ overflow-y: auto;
281
+ padding: var(--pm-space-6) var(--pm-space-4);
282
+ font-family: var(--pm-font-sans);
283
+ }
284
+
285
+ .pm-site__sidebar {
286
+ border-right: var(--pm-size-hairline) solid var(--pm-color-line);
287
+ }
288
+
289
+ .pm-site__main {
290
+ min-width: 0;
291
+ padding: var(--pm-space-8) var(--pm-space-8) var(--pm-space-12);
292
+ outline: none;
293
+ }
294
+
295
+ .pm-site__article {
296
+ max-width: var(--pm-site-reading-width);
297
+ margin: 0 auto;
298
+ }
299
+
300
+ .pm-site-sidebar__chapters,
301
+ .pm-site-sidebar__sections,
302
+ .pm-site-outline__items {
303
+ margin: 0;
304
+ padding: 0;
305
+ list-style: none;
306
+ }
307
+
308
+ .pm-site-sidebar__chapters {
309
+ display: grid;
310
+ gap: var(--pm-space-1);
311
+ }
312
+
313
+ .pm-site-sidebar__link,
314
+ .pm-site-sidebar__section {
315
+ display: block;
316
+ padding: var(--pm-space-1) var(--pm-space-2);
317
+ border-radius: var(--pm-radius-control);
318
+ line-height: var(--pm-leading-tight);
319
+ }
320
+
321
+ .pm-site-sidebar__link {
322
+ color: var(--pm-color-ink);
323
+ font-size: var(--pm-text-md);
324
+ font-weight: 600;
325
+ overflow-wrap: anywhere;
326
+ }
327
+
328
+ .pm-site-sidebar__link:hover,
329
+ .pm-site-sidebar__section:hover {
330
+ background: var(--pm-color-hover);
331
+ }
332
+
333
+ .pm-site-sidebar__link[aria-current='page'] {
334
+ background: var(--pm-color-accent-soft);
335
+ color: var(--pm-color-accent);
336
+ }
337
+
338
+ .pm-site-sidebar__sections {
339
+ margin: var(--pm-space-1) 0 var(--pm-space-2) var(--pm-space-3);
340
+ padding-left: var(--pm-space-2);
341
+ border-left: var(--pm-size-hairline) solid var(--pm-color-line);
342
+ }
343
+
344
+ .pm-site-sidebar__section {
345
+ color: var(--pm-color-muted);
346
+ font-size: var(--pm-text-sm);
347
+ }
348
+
349
+ .pm-site-sidebar__section:hover {
350
+ color: var(--pm-color-ink);
351
+ }
352
+
353
+ .pm-site-outline__title {
354
+ margin: 0 0 var(--pm-space-2);
355
+ color: var(--pm-color-ink);
356
+ font-size: var(--pm-text-sm);
357
+ font-weight: 600;
358
+ }
359
+
360
+ .pm-site-outline__items {
361
+ border-left: var(--pm-size-hairline) solid var(--pm-color-line);
362
+ }
363
+
364
+ .pm-site-outline__link {
365
+ display: block;
366
+ margin-left: calc(-1 * var(--pm-size-hairline));
367
+ padding: var(--pm-space-1) var(--pm-space-3);
368
+ border-left: var(--pm-size-stroke) solid transparent;
369
+ color: var(--pm-color-muted);
370
+ font-size: var(--pm-text-sm);
371
+ line-height: var(--pm-leading-tight);
372
+ }
373
+
374
+ .pm-site-outline__link:hover {
375
+ color: var(--pm-color-ink);
376
+ }
377
+
378
+ .pm-site-outline__link[aria-current] {
379
+ border-left-color: var(--pm-color-accent);
380
+ color: var(--pm-color-accent);
381
+ }
382
+
383
+ /* The pager and the footer below the page. */
384
+
385
+ .pm-site-pager {
386
+ display: grid;
387
+ grid-template-columns: 1fr 1fr;
388
+ gap: var(--pm-space-4);
389
+ max-width: var(--pm-site-reading-width);
390
+ margin: var(--pm-space-10) auto 0;
391
+ padding-top: var(--pm-space-6);
392
+ border-top: var(--pm-size-hairline) solid var(--pm-color-line);
393
+ font-family: var(--pm-font-sans);
394
+ }
395
+
396
+ .pm-site-pager__link {
397
+ display: grid;
398
+ gap: var(--pm-space-1);
399
+ padding: var(--pm-space-3) var(--pm-space-4);
400
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
401
+ border-radius: var(--pm-radius-card);
402
+ }
403
+
404
+ .pm-site-pager__link:hover {
405
+ border-color: var(--pm-color-accent);
406
+ }
407
+
408
+ .pm-site-pager__link--next {
409
+ text-align: end;
410
+ }
411
+
412
+ .pm-site-pager__label {
413
+ color: var(--pm-color-muted);
414
+ font-size: var(--pm-text-xs);
415
+ }
416
+
417
+ .pm-site-pager__title {
418
+ color: var(--pm-color-accent);
419
+ font-size: var(--pm-text-md);
420
+ font-weight: 600;
421
+ }
422
+
423
+ .pm-site-footer {
424
+ box-sizing: border-box;
425
+ width: 100%;
426
+ max-width: var(--pm-site-reading-width);
427
+ margin: var(--pm-space-8) auto 0;
428
+ padding-top: var(--pm-space-6);
429
+ border-top: var(--pm-size-hairline) solid var(--pm-color-line);
430
+ color: var(--pm-color-muted);
431
+ font-family: var(--pm-font-sans);
432
+ font-size: var(--pm-text-sm);
433
+ line-height: var(--pm-leading-ui);
434
+ text-align: center;
435
+ }
436
+
437
+ .pm-site-footer p {
438
+ margin: 0;
439
+ }
440
+
441
+ .pm-site-footer a {
442
+ text-decoration: underline;
443
+ text-underline-offset: var(--pm-space-px);
444
+ }
445
+
446
+ .pm-site-footer a:hover {
447
+ color: var(--pm-color-ink);
448
+ }
449
+
450
+ /* The drawer that holds the chapters and the tools on a phone. */
451
+
452
+ .pm-site-menu__panel .pm-site-sidebar {
453
+ font-family: var(--pm-font-sans);
454
+ }
455
+
456
+ .pm-site-menu__tools {
457
+ display: flex;
458
+ flex-wrap: wrap;
459
+ align-items: center;
460
+ gap: var(--pm-space-2);
461
+ margin-top: var(--pm-space-4);
462
+ padding-top: var(--pm-space-4);
463
+ border-top: var(--pm-size-hairline) solid var(--pm-color-line);
464
+ }
465
+
466
+ /* The search. */
467
+
468
+ .pm-site-search__panel {
469
+ width: min(100vw - 2 * var(--pm-space-4), 40rem);
470
+ }
471
+
472
+ .pm-site-search__field {
473
+ width: 100%;
474
+ }
475
+
476
+ .pm-site-search__input {
477
+ flex: 1;
478
+ min-width: 0;
479
+ border: 0;
480
+ background: none;
481
+ color: inherit;
482
+ font: inherit;
483
+ outline: none;
484
+ }
485
+
486
+ .pm-site-search__results {
487
+ display: grid;
488
+ gap: var(--pm-space-1);
489
+ max-height: min(60vh, 32rem);
490
+ margin: var(--pm-space-3) 0 0;
491
+ padding: 0;
492
+ overflow-y: auto;
493
+ list-style: none;
494
+ }
495
+
496
+ .pm-site-search__link {
497
+ display: grid;
498
+ gap: var(--pm-space-px);
499
+ padding: var(--pm-space-2) var(--pm-space-3);
500
+ border-radius: var(--pm-radius-control);
501
+ color: var(--pm-color-ink);
502
+ }
503
+
504
+ .pm-site-search__result[aria-selected='true'] .pm-site-search__link {
505
+ background: var(--pm-color-accent-soft);
506
+ }
507
+
508
+ .pm-site-search__path {
509
+ color: var(--pm-color-muted);
510
+ font-size: var(--pm-text-xs);
511
+ }
512
+
513
+ .pm-site-search__title {
514
+ font-weight: 600;
515
+ }
516
+
517
+ .pm-site-search__empty {
518
+ margin: var(--pm-space-4) 0;
519
+ color: var(--pm-color-muted);
520
+ text-align: center;
521
+ }
522
+
523
+ .pm-site-search__keys {
524
+ display: flex;
525
+ flex-wrap: wrap;
526
+ gap: var(--pm-space-4);
527
+ margin: var(--pm-space-3) 0 0;
528
+ color: var(--pm-color-muted);
529
+ font-size: var(--pm-text-xs);
530
+ }
531
+
532
+ /* The document's typography on its site and on the canvas: Presmium's, over the reading styles of `.pm-document`. */
533
+
534
+ .pm-document .pm-block--markdown,
535
+ .pm-document .pm-section__title,
536
+ .pm-document .pm-section :is(h1, h2, h3, h4) {
537
+ font-family: var(--pm-site-reading-font);
538
+ }
539
+
540
+ .pm-document .pm-block--markdown {
541
+ font-size: var(--pm-text-reading);
542
+ line-height: var(--pm-leading-reading);
543
+ }
544
+
545
+ .pm-document .pm-block--markdown :is(code, pre, kbd) {
546
+ font-family: var(--pm-font-mono);
547
+ }
548
+
549
+ .pm-document .pm-section :is(h1, h2, h3, h4) {
550
+ font-weight: 600;
551
+ letter-spacing: normal;
552
+ line-height: var(--pm-leading-tight);
553
+ }
554
+
555
+ .pm-document a {
556
+ text-underline-offset: var(--pm-space-px);
557
+ }
558
+
559
+ .pm-document .pm-section h1 {
560
+ font-size: var(--pm-text-display);
561
+ }
562
+
563
+ .pm-document .pm-section h2 {
564
+ font-size: 1.5rem;
565
+ }
566
+
567
+ .pm-document .pm-section h3 {
568
+ font-size: 1.25rem;
569
+ }
570
+
571
+ .pm-document .pm-section :is(h4, h5, h6) {
572
+ font-size: 1.0625rem;
573
+ }
574
+
575
+ .pm-document :is(strong, b, th),
576
+ .pm-present :is(strong, b),
577
+ .pm-presenter :is(strong, b) {
578
+ font-synthesis: weight style;
579
+ }
580
+
581
+ .pm-section {
582
+ scroll-margin-top: calc(var(--pm-site-header-height) + var(--pm-space-4));
583
+ }
584
+
585
+ .pm-document .pm-section__title {
586
+ margin-top: 0;
587
+ padding-top: 0;
588
+ border-top: none;
589
+ }
590
+
591
+ .pm-site__article .pm-section + .pm-section {
592
+ padding-top: var(--pm-space-6);
593
+ border-top: var(--pm-size-hairline) solid var(--pm-color-line);
594
+ }
595
+
596
+ .pm-document .pm-block div[class*='language-'] {
597
+ margin-left: 0;
598
+ margin-right: 0;
599
+ }
600
+
601
+ .pm-view-menu:focus-visible,
602
+ .pm-site :is(a, button, input, select):focus-visible,
603
+ .pm-block :is(button, input, select, textarea, summary, [tabindex]):focus-visible,
604
+ .pm-present :is(button, input, select, textarea, summary):focus-visible,
605
+ .pm-presenter :is(button, input, select, textarea, summary):focus-visible,
606
+ .pm-toolbar :is(button, input, select, textarea, a):focus-visible {
607
+ outline: var(--pm-size-stroke) solid var(--pm-color-accent);
608
+ outline-offset: var(--pm-space-px);
609
+ }
610
+
611
+ /* The link from a section to the same place in the slides. */
612
+
613
+ .pm-document .pm-open-slides {
614
+ display: inline-flex;
615
+ gap: 0.25em;
616
+ align-items: center;
617
+ margin-left: 0.5em;
618
+ padding: 0 0.5em;
619
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
620
+ border-radius: var(--pm-radius-pill);
621
+ color: var(--pm-color-muted);
622
+ font-family: var(--pm-font-sans);
623
+ font-size: var(--pm-text-sm);
624
+ font-weight: 500;
625
+ letter-spacing: normal;
626
+ line-height: 1.75;
627
+ text-decoration: none;
628
+ vertical-align: middle;
629
+ white-space: nowrap;
630
+ }
631
+
632
+ .pm-document .pm-open-slides .pm-ui-icon {
633
+ width: 1em;
634
+ height: 1em;
635
+ }
636
+
637
+ .pm-document .pm-open-slides::after {
638
+ content: attr(data-label);
639
+ }
640
+
641
+ .pm-document .pm-open-slides:hover {
642
+ border-color: var(--pm-color-accent);
643
+ color: var(--pm-color-accent);
644
+ }
645
+
646
+ /* The view menu. */
647
+
648
+ .pm-view-menu {
649
+ padding: var(--pm-space-1) var(--pm-space-2);
650
+ border: var(--pm-size-hairline) solid var(--pm-color-line-strong);
651
+ border-radius: var(--pm-radius-control);
652
+ background: var(--pm-color-surface);
653
+ color: var(--pm-color-ink);
654
+ font-family: var(--pm-font-sans);
655
+ font-size: var(--pm-text-sm);
656
+ cursor: pointer;
657
+ }
658
+
659
+ /* Where the browser lets a select's list be styled, the view menu's list is drawn as the design system's menu. */
660
+ @supports (appearance: base-select) {
661
+ .pm-view-menu,
662
+ .pm-view-menu::picker(select) {
663
+ appearance: base-select;
664
+ }
665
+
666
+ .pm-view-menu {
667
+ display: inline-flex;
668
+ align-items: center;
669
+ gap: var(--pm-space-1);
670
+ }
671
+
672
+ .pm-view-menu:hover {
673
+ background: var(--pm-color-sunk);
674
+ }
675
+
676
+ .pm-view-menu::picker-icon {
677
+ content: '';
678
+ width: var(--pm-size-icon-sm);
679
+ height: var(--pm-size-icon-sm);
680
+ background: currentColor;
681
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
682
+ transition: rotate var(--pm-duration-fast);
683
+ }
684
+
685
+ .pm-view-menu:open::picker-icon {
686
+ rotate: 180deg;
687
+ }
688
+
689
+ .pm-view-menu::picker(select) {
690
+ margin-block: var(--pm-space-1);
691
+ padding: var(--pm-space-1);
692
+ border: var(--pm-size-hairline) solid var(--pm-color-line);
693
+ border-radius: var(--pm-radius-control);
694
+ background: var(--pm-color-surface);
695
+ color: var(--pm-color-ink);
696
+ box-shadow: var(--pm-shadow-float);
697
+ }
698
+
699
+ .pm-view-menu option {
700
+ gap: var(--pm-space-2);
701
+ padding: var(--pm-space-1) var(--pm-space-3);
702
+ border-radius: var(--pm-radius-small);
703
+ font-family: var(--pm-font-sans);
704
+ font-size: var(--pm-text-sm);
705
+ cursor: pointer;
706
+ }
707
+
708
+ .pm-view-menu option:hover,
709
+ .pm-view-menu option:focus-visible {
710
+ background: var(--pm-color-sunk);
711
+ outline: none;
712
+ }
713
+
714
+ .pm-view-menu option:checked {
715
+ color: var(--pm-color-accent);
716
+ font-weight: 600;
717
+ }
718
+ }
719
+
720
+ .pm-toolbar--screen {
721
+ flex-wrap: wrap;
722
+ }
723
+
724
+ .pm-present,
725
+ .pm-presenter {
726
+ z-index: var(--pm-z-overlay-view);
727
+ }
728
+
729
+ html.pm-presenting {
730
+ --pm-cue-z: calc(var(--pm-z-overlay-view) + 1);
731
+ }
732
+
733
+ /* The workspace's home page. */
734
+
735
+ .pm-site-home {
736
+ display: flex;
737
+ flex-direction: column;
738
+ gap: var(--pm-space-8);
739
+ max-width: var(--pm-site-wide-width);
740
+ margin: 0 auto;
741
+ padding: var(--pm-space-8) var(--pm-space-6) var(--pm-space-10);
742
+ outline: none;
743
+ }
744
+
745
+ .pm-site-home__title {
746
+ margin: 0;
747
+ font-family: var(--pm-site-reading-font);
748
+ font-size: var(--pm-text-display);
749
+ font-weight: 600;
750
+ line-height: var(--pm-leading-tight);
751
+ }
752
+
753
+ .pm-site-home__section {
754
+ display: grid;
755
+ gap: var(--pm-space-4);
756
+ }
757
+
758
+ .pm-site-home__hero,
759
+ .pm-site-home__card-content {
760
+ display: grid;
761
+ gap: var(--pm-space-3);
762
+ min-width: 0;
763
+ }
764
+
765
+ .pm-site-home__hero {
766
+ max-width: var(--pm-site-hero-width);
767
+ }
768
+
769
+ .pm-site-home__intro {
770
+ max-width: var(--pm-site-reading-width);
771
+ margin: 0;
772
+ color: var(--pm-color-muted);
773
+ font-family: var(--pm-site-reading-font);
774
+ font-size: var(--pm-text-reading);
775
+ line-height: var(--pm-leading-reading);
776
+ overflow-wrap: anywhere;
777
+ }
778
+
779
+ .pm-site-home__actions {
780
+ display: flex;
781
+ flex-wrap: wrap;
782
+ gap: var(--pm-space-3);
783
+ margin-top: var(--pm-space-3);
784
+ }
785
+
786
+ .pm-site-home__filters {
787
+ display: flex;
788
+ flex-wrap: wrap;
789
+ align-items: center;
790
+ gap: var(--pm-space-3);
791
+ }
792
+
793
+ .pm-site-home__filters > .pm-ui-heading {
794
+ margin-right: auto;
795
+ }
796
+
797
+ .pm-site-home__search-box {
798
+ flex: 1 1 15rem;
799
+ max-width: 24rem;
800
+ }
801
+
802
+ .pm-site-home__search {
803
+ flex: 1;
804
+ min-width: 0;
805
+ border: 0;
806
+ background: none;
807
+ color: inherit;
808
+ font: inherit;
809
+ outline: none;
810
+ }
811
+
812
+ .pm-site-home__tags {
813
+ flex-wrap: wrap;
814
+ }
815
+
816
+ .pm-site-home__documents {
817
+ display: grid;
818
+ grid-template-columns: repeat(auto-fill, minmax(min(var(--pm-site-card-min-width), 100%), 1fr));
819
+ gap: var(--pm-space-4);
820
+ margin: 0;
821
+ padding: 0;
822
+ list-style: none;
823
+ }
824
+
825
+ .pm-site-home__document {
826
+ position: relative;
827
+ gap: var(--pm-space-3);
828
+ margin: 0;
829
+ }
830
+
831
+ .pm-site-home__link {
832
+ color: var(--pm-color-ink);
833
+ font-family: var(--pm-site-reading-font);
834
+ font-size: var(--pm-text-title);
835
+ font-weight: 600;
836
+ line-height: var(--pm-leading-tight);
837
+ text-decoration: none;
838
+ overflow-wrap: anywhere;
839
+ }
840
+
841
+ .pm-site-home__link::after {
842
+ content: '';
843
+ position: absolute;
844
+ inset: 0;
845
+ border-radius: inherit;
846
+ }
847
+
848
+ .pm-site-home__link:hover {
849
+ color: var(--pm-color-accent);
850
+ }
851
+
852
+ .pm-site-home__link:focus-visible {
853
+ outline: none;
854
+ }
855
+
856
+ .pm-site-home__document:focus-within {
857
+ outline: var(--pm-size-stroke) solid var(--pm-color-accent);
858
+ outline-offset: var(--pm-space-px);
859
+ }
860
+
861
+ .pm-site-home__description {
862
+ margin: 0;
863
+ color: var(--pm-color-muted);
864
+ overflow-wrap: anywhere;
865
+ }
866
+
867
+ /* Presets change the content's composition; shared cards, badges and buttons retain their public styling. */
868
+
869
+ .pm-site[data-pm-site-theme='course'] .pm-site-home__hero,
870
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-home__hero {
871
+ padding-block: var(--pm-space-8);
872
+ }
873
+
874
+ .pm-site[data-pm-site-theme='course'] .pm-site-home__documents {
875
+ grid-template-columns: minmax(0, 1fr);
876
+ }
877
+
878
+ .pm-site[data-pm-site-theme='course'] .pm-site-home__document {
879
+ display: grid;
880
+ grid-template-columns: var(--pm-size-row) minmax(0, 1fr);
881
+ align-items: start;
882
+ }
883
+
884
+ .pm-site-home__order {
885
+ display: flex;
886
+ justify-content: center;
887
+ }
888
+
889
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-home__title {
890
+ font-size: var(--pm-site-hero-title);
891
+ }
892
+
893
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-home__documents {
894
+ grid-template-columns: repeat(2, minmax(0, 1fr));
895
+ }
896
+
897
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-home__document {
898
+ min-height: var(--pm-site-showcase-card-height);
899
+ justify-content: center;
900
+ }
901
+
902
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-home__document:first-child {
903
+ grid-column: 1 / -1;
904
+ }
905
+
906
+ .pm-site-sidebar__intro {
907
+ display: grid;
908
+ gap: var(--pm-space-2);
909
+ margin-bottom: var(--pm-space-6);
910
+ padding-inline: var(--pm-space-2);
911
+ }
912
+
913
+ .pm-site-sidebar__title {
914
+ margin: 0;
915
+ font-family: var(--pm-site-reading-font);
916
+ font-size: var(--pm-text-title);
917
+ font-weight: var(--pm-weight-semibold);
918
+ line-height: var(--pm-leading-tight);
919
+ overflow-wrap: anywhere;
920
+ }
921
+
922
+ .pm-site[data-pm-site-theme='course'] .pm-site-sidebar__link {
923
+ display: flex;
924
+ align-items: baseline;
925
+ gap: var(--pm-space-2);
926
+ }
927
+
928
+ .pm-site-sidebar__number {
929
+ flex: none;
930
+ color: var(--pm-color-muted);
931
+ font-family: var(--pm-font-mono);
932
+ font-size: var(--pm-text-xs);
933
+ }
934
+
935
+ .pm-site-chapterbar {
936
+ display: flex;
937
+ gap: var(--pm-space-2);
938
+ max-width: var(--pm-site-wide-width);
939
+ margin-inline: auto;
940
+ padding: var(--pm-space-4) var(--pm-space-6) 0;
941
+ overflow-x: auto;
942
+ }
943
+
944
+ /* The page buttons keep their width and the bar scrolls sideways on narrow screens. */
945
+ .pm-site-chapterbar > * {
946
+ flex: none;
947
+ }
948
+
949
+ .pm-site[data-pm-site-layout='wide'] .pm-site__body {
950
+ grid-template-columns: var(--pm-site-sidebar-width) minmax(0, 1fr);
951
+ max-width: calc(var(--pm-site-sidebar-width) + var(--pm-site-wide-width) + 2 * var(--pm-space-8));
952
+ }
953
+
954
+ .pm-site[data-pm-site-layout='wide'] .pm-site__article {
955
+ max-width: var(--pm-site-wide-width);
956
+ }
957
+
958
+ .pm-site[data-pm-site-layout='landing'] .pm-site__body,
959
+ .pm-site[data-pm-site-theme='showcase'] .pm-site__body {
960
+ grid-template-columns: minmax(0, 1fr);
961
+ max-width: var(--pm-site-wide-width);
962
+ }
963
+
964
+ .pm-site[data-pm-site-theme='showcase'] .pm-site__article {
965
+ max-width: var(--pm-site-reading-width);
966
+ }
967
+
968
+ .pm-site[data-pm-site-layout='landing'] .pm-site__article {
969
+ max-width: none;
970
+ }
971
+
972
+ .pm-site[data-pm-site-layout='landing'] .pm-site__main {
973
+ padding-block: var(--pm-space-10) var(--pm-space-12);
974
+ }
975
+
976
+ /* A landing document's first authored section is its hero. Its headings, prose and columns remain content. */
977
+ .pm-site[data-pm-site-layout='landing'] .pm-view--document > .pm-section:first-child {
978
+ max-width: var(--pm-site-hero-width);
979
+ margin-inline: auto;
980
+ padding-block: var(--pm-space-12) calc(2 * var(--pm-space-12));
981
+ }
982
+
983
+ .pm-site[data-pm-site-layout='landing'] .pm-view--document > .pm-section:first-child > .pm-section__title {
984
+ margin-bottom: var(--pm-space-6);
985
+ font-size: var(--pm-site-hero-title);
986
+ line-height: var(--pm-leading-tight);
987
+ overflow-wrap: anywhere;
988
+ }
989
+
990
+ .pm-site[data-pm-site-layout='landing'] .pm-view--document > .pm-section:first-child > .pm-section__body {
991
+ max-width: var(--pm-site-reading-width);
992
+ }
993
+
994
+ .pm-site[data-pm-site-layout='landing'] .pm-view--document > .pm-section + .pm-section {
995
+ margin-top: 0;
996
+ padding-block: var(--pm-space-10);
997
+ }
998
+
999
+ .pm-site[data-pm-site-layout='landing'] .pm-section .pm-layout-columns {
1000
+ gap: var(--pm-space-8);
1001
+ }
1002
+
1003
+ .pm-site[data-pm-site-layout='landing'] .pm-section .pm-layout__item {
1004
+ padding-block: var(--pm-space-4);
1005
+ }
1006
+
1007
+ .pm-site[data-pm-site-theme='course'][data-pm-site-layout='landing'] .pm-view--document > .pm-section:first-child {
1008
+ border-top: var(--pm-size-rule) solid var(--pm-color-accent);
1009
+ }
1010
+
1011
+ .pm-site[data-pm-site-theme='showcase'][data-pm-site-layout='landing'] .pm-view--document > .pm-section:first-child {
1012
+ max-width: none;
1013
+ padding-inline: var(--pm-space-6);
1014
+ border-radius: var(--pm-radius-panel);
1015
+ background: var(--pm-site-hero-surface);
1016
+ text-align: center;
1017
+ }
1018
+
1019
+ .pm-site[data-pm-site-theme='showcase'][data-pm-site-layout='landing'] .pm-view--document > .pm-section:first-child > .pm-section__body {
1020
+ max-width: var(--pm-site-hero-width);
1021
+ margin-inline: auto;
1022
+ }
1023
+
1024
+ /* Independent site pages compose their own hero and sections, without a teaching-document viewer. */
1025
+
1026
+ .pm-site-landing {
1027
+ box-sizing: border-box;
1028
+ display: grid;
1029
+ gap: calc(2 * var(--pm-space-8));
1030
+ max-width: var(--pm-site-wide-width);
1031
+ margin-inline: auto;
1032
+ padding: var(--pm-space-10) var(--pm-space-6) var(--pm-space-12);
1033
+ outline: none;
1034
+ }
1035
+
1036
+ .pm-site-landing__hero {
1037
+ box-sizing: border-box;
1038
+ display: grid;
1039
+ align-items: center;
1040
+ gap: var(--pm-space-10);
1041
+ max-width: var(--pm-site-hero-width);
1042
+ padding-block: var(--pm-space-10);
1043
+ }
1044
+
1045
+ .pm-site-landing__hero[data-with-image] {
1046
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1047
+ max-width: none;
1048
+ }
1049
+
1050
+ .pm-site-landing__hero-content,
1051
+ .pm-site-landing__section,
1052
+ .pm-site-landing__section-heading {
1053
+ display: grid;
1054
+ gap: var(--pm-space-4);
1055
+ min-width: 0;
1056
+ }
1057
+
1058
+ .pm-site-landing__title,
1059
+ .pm-site-landing__section-title {
1060
+ margin: 0;
1061
+ font-family: var(--pm-site-reading-font);
1062
+ font-weight: var(--pm-weight-semibold);
1063
+ line-height: var(--pm-leading-tight);
1064
+ overflow-wrap: anywhere;
1065
+ text-wrap: balance;
1066
+ }
1067
+
1068
+ .pm-site-landing__title {
1069
+ font-size: var(--pm-site-hero-title);
1070
+ }
1071
+
1072
+ .pm-site-landing__section-title {
1073
+ font-size: var(--pm-text-display);
1074
+ }
1075
+
1076
+ .pm-site-landing__description {
1077
+ max-width: var(--pm-site-reading-width);
1078
+ margin: 0;
1079
+ color: var(--pm-color-muted);
1080
+ font-family: var(--pm-site-reading-font);
1081
+ font-size: var(--pm-text-reading);
1082
+ line-height: var(--pm-leading-reading);
1083
+ overflow-wrap: anywhere;
1084
+ }
1085
+
1086
+ .pm-site-landing__actions {
1087
+ display: flex;
1088
+ flex-wrap: wrap;
1089
+ gap: var(--pm-space-3);
1090
+ margin-top: var(--pm-space-3);
1091
+ }
1092
+
1093
+ .pm-site-landing__hero-visual,
1094
+ .pm-site-landing__media {
1095
+ min-width: 0;
1096
+ margin: 0;
1097
+ }
1098
+
1099
+ .pm-site-landing__hero-visual img,
1100
+ .pm-site-landing__feature-image,
1101
+ .pm-site-landing__media :is(img, video) {
1102
+ display: block;
1103
+ width: 100%;
1104
+ height: auto;
1105
+ }
1106
+
1107
+ .pm-site-landing__hero-visual img {
1108
+ max-block-size: var(--pm-site-landing-image-max);
1109
+ object-fit: contain;
1110
+ }
1111
+
1112
+ .pm-site-landing__features,
1113
+ .pm-site-landing__documents {
1114
+ display: grid;
1115
+ grid-template-columns: repeat(auto-fit, minmax(min(var(--pm-site-card-min-width), 100%), 1fr));
1116
+ gap: var(--pm-space-4);
1117
+ margin: 0;
1118
+ padding: 0;
1119
+ list-style: none;
1120
+ }
1121
+
1122
+ .pm-site-landing__feature,
1123
+ .pm-site-landing__document {
1124
+ margin: 0;
1125
+ }
1126
+
1127
+ .pm-site-landing__section {
1128
+ scroll-margin-top: calc(var(--pm-site-header-height) + var(--pm-space-6));
1129
+ }
1130
+
1131
+ .pm-site-landing__text {
1132
+ max-width: var(--pm-site-reading-width);
1133
+ font-family: var(--pm-site-reading-font);
1134
+ font-size: var(--pm-text-reading);
1135
+ line-height: var(--pm-leading-reading);
1136
+ overflow-wrap: anywhere;
1137
+ }
1138
+
1139
+ .pm-site-landing__text p {
1140
+ margin-block: 0 var(--pm-space-4);
1141
+ white-space: pre-line;
1142
+ }
1143
+
1144
+ .pm-site-landing__section--cta {
1145
+ justify-items: center;
1146
+ text-align: center;
1147
+ }
1148
+
1149
+ .pm-site-landing__section--cta .pm-site-landing__actions {
1150
+ justify-content: center;
1151
+ }
1152
+
1153
+ .pm-site[data-pm-site-theme='course'] .pm-site-landing__hero {
1154
+ border-top: var(--pm-size-rule) solid var(--pm-color-accent);
1155
+ }
1156
+
1157
+ .pm-site[data-pm-site-theme='course'] .pm-site-landing__documents {
1158
+ grid-template-columns: minmax(0, 1fr);
1159
+ }
1160
+
1161
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-landing__hero {
1162
+ max-width: none;
1163
+ padding: var(--pm-space-10) var(--pm-space-8);
1164
+ border-radius: var(--pm-radius-panel);
1165
+ background: var(--pm-site-hero-surface);
1166
+ }
1167
+
1168
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-landing__hero:not([data-with-image]) {
1169
+ justify-items: center;
1170
+ text-align: center;
1171
+ }
1172
+
1173
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-landing__hero:not([data-with-image]) .pm-site-landing__hero-content {
1174
+ max-width: var(--pm-site-hero-width);
1175
+ justify-items: center;
1176
+ }
1177
+
1178
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-landing__hero:not([data-with-image]) .pm-site-landing__actions {
1179
+ justify-content: center;
1180
+ }
1181
+
1182
+ /* A missing page. */
1183
+
1184
+ .pm-site-missing {
1185
+ display: grid;
1186
+ justify-items: center;
1187
+ gap: var(--pm-space-3);
1188
+ padding: var(--pm-space-12) var(--pm-space-6);
1189
+ text-align: center;
1190
+ }
1191
+
1192
+ .pm-site-missing__code {
1193
+ margin: 0;
1194
+ color: var(--pm-color-muted);
1195
+ font-size: var(--pm-text-display);
1196
+ font-weight: 600;
1197
+ }
1198
+
1199
+ .pm-site-missing__title {
1200
+ margin: 0;
1201
+ font-family: var(--pm-site-reading-font);
1202
+ font-size: var(--pm-text-title);
1203
+ font-weight: 600;
1204
+ }
1205
+
1206
+ .pm-site-missing__text {
1207
+ margin: 0 0 var(--pm-space-4);
1208
+ color: var(--pm-color-muted);
1209
+ }
1210
+
1211
+ /* In a workbench: the document as one page on the editor's canvas, as a word processor shows it. */
1212
+
1213
+ html.pm-in-workbench,
1214
+ html.pm-in-workbench body {
1215
+ background: var(--pm-color-canvas);
1216
+ }
1217
+
1218
+ html.pm-in-workbench .pm-section {
1219
+ scroll-margin-top: var(--pm-space-4);
1220
+ }
1221
+
1222
+ .pm-sheet-canvas {
1223
+ box-sizing: border-box;
1224
+ min-height: 100vh;
1225
+ padding: var(--pm-space-6) var(--pm-space-6) var(--pm-space-10);
1226
+ background: var(--pm-color-canvas);
1227
+ }
1228
+
1229
+ .pm-sheet {
1230
+ box-sizing: border-box;
1231
+ width: min(100%, var(--pm-sheet-width));
1232
+ margin: 0 auto;
1233
+ padding: clamp(var(--pm-space-8), 7vw, 4.5rem) clamp(var(--pm-space-6), 8vw, 5.5rem) clamp(var(--pm-space-10), 8vw, 6rem);
1234
+ border-radius: var(--pm-radius-sheet);
1235
+ background: var(--pm-color-surface);
1236
+ box-shadow: var(--pm-shadow-page);
1237
+ }
1238
+
1239
+ .pm-sheet .pm-section + .pm-section {
1240
+ margin-top: var(--pm-space-4);
1241
+ padding-top: var(--pm-space-5);
1242
+ border-top: none;
1243
+ }
1244
+
1245
+ /* A page in an editor has no permalinks to copy. */
1246
+ .pm-sheet .header-anchor {
1247
+ display: none;
1248
+ }
1249
+
1250
+ .pm-sheet .pm-section h1 {
1251
+ margin-bottom: var(--pm-space-3);
1252
+ font-size: var(--pm-text-display);
1253
+ }
1254
+
1255
+ /* Author marks remain small and symbolic; labels are available on hover and to screen readers. */
1256
+ .pm-content-marks { display: none; }
1257
+ html.pm-author-marks[data-preview-picking] .pm-view--document .pm-content-marks {
1258
+ display: flex;
1259
+ flex-wrap: wrap;
1260
+ gap: var(--pm-space-1);
1261
+ margin-block-end: var(--pm-space-1);
1262
+ user-select: none;
1263
+ }
1264
+ .pm-content-mark {
1265
+ display: inline-flex;
1266
+ align-items: center;
1267
+ gap: var(--pm-space-1);
1268
+ min-height: var(--pm-size-tool);
1269
+ padding: 0 var(--pm-space-1);
1270
+ border: 0;
1271
+ border-radius: var(--pm-radius-chip);
1272
+ background: transparent;
1273
+ color: var(--pm-color-muted);
1274
+ font-family: var(--pm-font-mono);
1275
+ font-size: var(--pm-text-xs);
1276
+ line-height: var(--pm-leading-tight);
1277
+ cursor: pointer;
1278
+ }
1279
+ .pm-content-mark:hover, .pm-content-mark:focus-visible {
1280
+ color: var(--pm-color-accent);
1281
+ background: var(--pm-color-accent-soft);
1282
+ }
1283
+ .pm-content-mark .pm-ui-icon { width: var(--pm-size-icon); height: var(--pm-size-icon); }
1284
+
1285
+ /* The presentation in a workbench: the slide on the canvas, with navigation and lecture playback in the viewer. */
1286
+ html.pm-in-workbench .pm-present {
1287
+ background: var(--pm-color-canvas);
1288
+ }
1289
+
1290
+ html.pm-in-workbench .pm-present__slide {
1291
+ padding: var(--pm-space-4);
1292
+ }
1293
+
1294
+ /* The slides in the workbench: its stage has their shape and frame, so the slide fills it. */
1295
+ html.pm-in-workbench .pm-slides-page .pm-present__slide {
1296
+ padding: 0;
1297
+ }
1298
+
1299
+ html.pm-in-workbench .pm-slides-page .pm-slide-fit__canvas {
1300
+ box-shadow: none;
1301
+ }
1302
+
1303
+ @media (max-width: 1279px) {
1304
+ .pm-site__body {
1305
+ grid-template-columns: var(--pm-site-sidebar-width) minmax(0, 1fr);
1306
+ }
1307
+
1308
+ .pm-site__aside {
1309
+ display: none;
1310
+ }
1311
+ }
1312
+
1313
+ @media (max-width: 767px) {
1314
+ .pm-site-header {
1315
+ gap: var(--pm-space-2);
1316
+ padding: 0 var(--pm-space-3);
1317
+ }
1318
+
1319
+ .pm-site-header .pm-site-header__menu {
1320
+ display: inline-flex;
1321
+ }
1322
+
1323
+ .pm-site-header .pm-site-header__nav,
1324
+ .pm-site-header .pm-site-header__tools .pm-view-menu,
1325
+ .pm-site-header .pm-site-header__tools .pm-toolbar--bar,
1326
+ .pm-site-header .pm-site-header__tools .pm-site-link,
1327
+ .pm-site-header .pm-site-search-button__text,
1328
+ .pm-site-header .pm-site-search-button .pm-ui-kbd {
1329
+ display: none;
1330
+ }
1331
+
1332
+ .pm-site-search-button {
1333
+ min-width: 0;
1334
+ }
1335
+
1336
+ .pm-site__body {
1337
+ display: block;
1338
+ }
1339
+
1340
+ .pm-site__sidebar {
1341
+ display: none;
1342
+ }
1343
+
1344
+ .pm-site-localnav {
1345
+ position: sticky;
1346
+ top: var(--pm-site-header-height);
1347
+ z-index: calc(var(--pm-z-site-header) - 1);
1348
+ display: flex;
1349
+ justify-content: space-between;
1350
+ padding: var(--pm-space-1) var(--pm-space-3);
1351
+ border-bottom: var(--pm-size-hairline) solid var(--pm-color-line);
1352
+ background: var(--pm-color-bg);
1353
+ font-family: var(--pm-font-sans);
1354
+ }
1355
+
1356
+ .pm-site__main {
1357
+ padding: var(--pm-space-6) var(--pm-space-4) var(--pm-space-10);
1358
+ }
1359
+
1360
+ .pm-site-pager {
1361
+ grid-template-columns: 1fr;
1362
+ }
1363
+
1364
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-home__documents {
1365
+ grid-template-columns: minmax(0, 1fr);
1366
+ }
1367
+
1368
+ .pm-site[data-pm-site-theme='course'] .pm-site-home__hero,
1369
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-home__hero {
1370
+ padding-block: var(--pm-space-4);
1371
+ }
1372
+
1373
+ .pm-site[data-pm-site-layout='landing'] .pm-view--document > .pm-section:first-child {
1374
+ padding-block: var(--pm-space-8) var(--pm-space-12);
1375
+ }
1376
+
1377
+ .pm-site-landing {
1378
+ gap: var(--pm-space-10);
1379
+ padding: var(--pm-space-6) var(--pm-space-4) var(--pm-space-10);
1380
+ }
1381
+
1382
+ .pm-site-landing__hero[data-with-image] {
1383
+ grid-template-columns: minmax(0, 1fr);
1384
+ }
1385
+
1386
+ .pm-site-landing__hero-visual img {
1387
+ max-block-size: var(--pm-site-landing-image-mobile-max);
1388
+ }
1389
+
1390
+ .pm-site-landing__hero,
1391
+ .pm-site[data-pm-site-theme='showcase'] .pm-site-landing__hero {
1392
+ padding: var(--pm-space-6) var(--pm-space-4);
1393
+ }
1394
+
1395
+ .pm-sheet-canvas {
1396
+ padding: var(--pm-space-3) var(--pm-space-3) var(--pm-space-8);
1397
+ }
1398
+ }
1399
+
1400
+ @media (min-width: 768px) {
1401
+ .pm-site-menu__panel .pm-site-menu__tools {
1402
+ display: none;
1403
+ }
1404
+ }
1405
+
1406
+ @media (max-width: 440px) {
1407
+ .pm-sheet-canvas {
1408
+ padding: 0;
1409
+ }
1410
+
1411
+ .pm-sheet {
1412
+ min-height: 100vh;
1413
+ border-radius: 0;
1414
+ box-shadow: none;
1415
+ }
1416
+ }