contour-deck 0.0.0-stage → 0.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 (53) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +159 -2
  3. package/dist/astro/Deck.astro +61 -0
  4. package/dist/astro/host.d.ts +13 -0
  5. package/dist/astro/host.js +116 -0
  6. package/dist/astro/legacy.d.ts +22 -0
  7. package/dist/astro/legacy.js +42 -0
  8. package/dist/core/deck.d.ts +2 -0
  9. package/dist/core/deck.js +587 -0
  10. package/dist/core/dom.d.ts +8 -0
  11. package/dist/core/dom.js +22 -0
  12. package/dist/core/gestures.d.ts +6 -0
  13. package/dist/core/gestures.js +24 -0
  14. package/dist/core/index.d.ts +3 -0
  15. package/dist/core/index.js +2 -0
  16. package/dist/core/labels.d.ts +2 -0
  17. package/dist/core/labels.js +19 -0
  18. package/dist/core/model.d.ts +37 -0
  19. package/dist/core/model.js +51 -0
  20. package/dist/core/navigator.d.ts +6 -0
  21. package/dist/core/navigator.js +12 -0
  22. package/dist/core/notes.d.ts +11 -0
  23. package/dist/core/notes.js +34 -0
  24. package/dist/core/overview.d.ts +11 -0
  25. package/dist/core/overview.js +104 -0
  26. package/dist/core/rail.d.ts +8 -0
  27. package/dist/core/rail.js +26 -0
  28. package/dist/core/stops.d.ts +17 -0
  29. package/dist/core/stops.js +40 -0
  30. package/dist/core/transitions.d.ts +9 -0
  31. package/dist/core/transitions.js +37 -0
  32. package/dist/core/types.d.ts +70 -0
  33. package/dist/core/types.js +1 -0
  34. package/dist/rehype/hast.d.ts +26 -0
  35. package/dist/rehype/hast.js +48 -0
  36. package/dist/rehype/index.d.ts +12 -0
  37. package/dist/rehype/index.js +221 -0
  38. package/dist/rehype/page.d.ts +2 -0
  39. package/dist/rehype/page.js +84 -0
  40. package/dist/rehype/reading.d.ts +11 -0
  41. package/dist/rehype/reading.js +9 -0
  42. package/dist/rehype/titles.d.ts +19 -0
  43. package/dist/rehype/titles.js +63 -0
  44. package/dist/remark/index.d.ts +20 -0
  45. package/dist/remark/index.js +117 -0
  46. package/dist/shared/markers.d.ts +15 -0
  47. package/dist/shared/markers.js +15 -0
  48. package/dist/style.css +629 -0
  49. package/docs/CONTRACT.md +164 -0
  50. package/package.json +82 -4
  51. package/styles/base.css +3 -0
  52. package/styles/deck.css +151 -0
  53. package/styles/index.css +3 -0
package/dist/style.css ADDED
@@ -0,0 +1,629 @@
1
+ /* styles/base.css */
2
+ [data-ct-notes] {
3
+ display: none;
4
+ }
5
+ html[data-ct-open] {
6
+ overflow: hidden;
7
+ }
8
+
9
+ /* styles/deck.css */
10
+ :where(.ct-app) {
11
+ --ct-bg: var(--background, Canvas);
12
+ --ct-fg: var(--foreground, CanvasText);
13
+ --ct-accent: var(--accent, #e3311d);
14
+ --ct-accent-fg: var(--accent-foreground, #fff);
15
+ --ct-border: var(--border, color-mix(in srgb, var(--ct-fg) 24%, var(--ct-bg)));
16
+ --ct-muted: var(--muted-foreground, color-mix(in srgb, var(--ct-fg) 62%, var(--ct-bg)));
17
+ --ct-measure: 62rem;
18
+ --ct-mono:
19
+ ui-monospace,
20
+ "SF Mono",
21
+ Menlo,
22
+ Consolas,
23
+ monospace;
24
+ }
25
+ .ct-app {
26
+ --ct-panel: color-mix(in srgb, var(--ct-fg) 4%, var(--ct-bg));
27
+ --ct-tint: color-mix(in srgb, var(--ct-accent) 10%, var(--ct-bg));
28
+ --ct-ease: cubic-bezier(.22, 1, .36, 1);
29
+ --ct-notes-w: min(24rem, 38vw);
30
+ --ct-lift: 12px;
31
+ position: fixed;
32
+ inset: 0;
33
+ z-index: 1000;
34
+ display: grid;
35
+ grid-template-rows: 3rem minmax(0, 1fr);
36
+ overflow: hidden;
37
+ background: var(--ct-bg);
38
+ color: var(--ct-fg);
39
+ line-height: 1.5;
40
+ }
41
+ :where(.ct-app, .ct-app *) {
42
+ box-sizing: border-box;
43
+ }
44
+ .ct-app :focus-visible {
45
+ outline: 2px dashed var(--ct-accent);
46
+ outline-offset: 2px;
47
+ }
48
+ .ct-app :is(.ct-open, .ct-thumb, .ct-rl, .ct-rc, .ct-sh) {
49
+ font: inherit;
50
+ color: inherit;
51
+ background: none;
52
+ border: 0;
53
+ padding: 0;
54
+ cursor: pointer;
55
+ text-align: left;
56
+ }
57
+ .ct-live {
58
+ position: absolute;
59
+ width: 1px;
60
+ height: 1px;
61
+ overflow: hidden;
62
+ clip-path: inset(50%);
63
+ }
64
+ .ct-meta {
65
+ font: .66rem/1 var(--ct-mono);
66
+ color: var(--ct-muted);
67
+ white-space: nowrap;
68
+ }
69
+ .ct-badge {
70
+ font: 650 .62rem/1 var(--ct-mono);
71
+ letter-spacing: .1em;
72
+ padding: .28rem .4rem;
73
+ background: color-mix(in srgb, var(--ct-fg) 10%, var(--ct-bg));
74
+ color: var(--ct-muted);
75
+ }
76
+ .ct-bar {
77
+ display: flex;
78
+ align-items: center;
79
+ gap: .6rem;
80
+ padding: 0 .7rem;
81
+ min-width: 0;
82
+ background: var(--ct-panel);
83
+ }
84
+ .ct-btn {
85
+ font: 650 .68rem/1 var(--ct-mono);
86
+ letter-spacing: .08em;
87
+ padding: .5rem .6rem;
88
+ border: 1px solid var(--ct-border);
89
+ background: var(--ct-bg);
90
+ color: inherit;
91
+ cursor: pointer;
92
+ white-space: nowrap;
93
+ min-height: 2rem;
94
+ }
95
+ .ct-btn:hover {
96
+ background: var(--ct-tint);
97
+ }
98
+ .ct-btn[aria-pressed=true] {
99
+ background: var(--ct-fg);
100
+ color: var(--ct-bg);
101
+ border-color: var(--ct-fg);
102
+ }
103
+ .ct-app[data-ct-mode=overview] :is([data-ct-act=overview], [data-ct-act=notes]),
104
+ .ct-app:not([data-ct-mode=overview]) :is([data-ct-act="3d"], [data-ct-act=script]),
105
+ .ct-app[data-ct-mode=notes] [data-ct-act=notes] {
106
+ display: none;
107
+ }
108
+ .ct-title {
109
+ font-size: .8rem;
110
+ font-weight: 700;
111
+ white-space: nowrap;
112
+ overflow: hidden;
113
+ text-overflow: ellipsis;
114
+ max-width: 16rem;
115
+ }
116
+ .ct-rail {
117
+ position: relative;
118
+ flex: 1;
119
+ min-width: 0;
120
+ height: 100%;
121
+ display: flex;
122
+ align-items: flex-start;
123
+ justify-content: center;
124
+ gap: .7rem;
125
+ padding-top: .55rem;
126
+ overflow: hidden;
127
+ }
128
+ .ct-rg {
129
+ display: flex;
130
+ align-items: flex-start;
131
+ gap: 3px;
132
+ }
133
+ .ct-app .ct-rl {
134
+ font: 650 .62rem/11px var(--ct-mono);
135
+ color: var(--ct-muted);
136
+ padding-right: .2rem;
137
+ }
138
+ .ct-app .ct-rg[data-cur] .ct-rl {
139
+ color: var(--ct-fg);
140
+ }
141
+ .ct-app .ct-rc {
142
+ display: flex;
143
+ flex-direction: column;
144
+ gap: 2px;
145
+ padding-bottom: 8px;
146
+ }
147
+ .ct-rc i {
148
+ display: block;
149
+ width: 12px;
150
+ height: 5px;
151
+ background: var(--ct-border);
152
+ }
153
+ .ct-rg[data-cur] i {
154
+ background: var(--ct-muted);
155
+ }
156
+ .ct-rg[data-kind=appendix] i {
157
+ opacity: .55;
158
+ }
159
+ .ct-rm {
160
+ position: absolute;
161
+ left: 0;
162
+ top: 0;
163
+ width: 12px;
164
+ height: 5px;
165
+ background: var(--ct-accent);
166
+ outline: 2px solid color-mix(in srgb, var(--ct-accent) 35%, transparent);
167
+ pointer-events: none;
168
+ transition: transform .34s var(--ct-ease);
169
+ }
170
+ .ct-vp {
171
+ position: relative;
172
+ overflow: hidden;
173
+ perspective: 1700px;
174
+ }
175
+ .ct-ov {
176
+ position: absolute;
177
+ inset: 0;
178
+ overflow: auto;
179
+ padding: 1.1rem;
180
+ }
181
+ .ct-plane {
182
+ position: relative;
183
+ display: grid;
184
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr));
185
+ gap: 1rem;
186
+ max-width: 86rem;
187
+ margin: 0 auto;
188
+ transform-style: preserve-3d;
189
+ transition: transform .7s var(--ct-ease);
190
+ }
191
+ .ct-tile {
192
+ border: 1px solid var(--ct-border);
193
+ background: var(--ct-bg);
194
+ padding: .7rem .8rem .9rem;
195
+ transform-style: preserve-3d;
196
+ min-width: 0;
197
+ }
198
+ .ct-tile[data-kind=appendix] {
199
+ background: var(--ct-panel);
200
+ }
201
+ @media (min-width: 900px) {
202
+ .ct-tile[data-wide] {
203
+ grid-column: span 2;
204
+ }
205
+ }
206
+ .ct-app .ct-open {
207
+ display: flex;
208
+ align-items: baseline;
209
+ gap: .5rem;
210
+ width: 100%;
211
+ padding: .1rem 0;
212
+ }
213
+ .ct-open:hover .ct-tt {
214
+ text-decoration: underline;
215
+ text-underline-offset: .2em;
216
+ }
217
+ .ct-tt {
218
+ font-size: .95rem;
219
+ font-weight: 800;
220
+ }
221
+ .ct-open .ct-meta {
222
+ margin-left: auto;
223
+ }
224
+ .ct-strip {
225
+ list-style: none;
226
+ display: flex;
227
+ flex-wrap: wrap;
228
+ gap: 1.5rem .8rem;
229
+ margin: .7rem 0 0;
230
+ padding: 0;
231
+ transform-style: preserve-3d;
232
+ }
233
+ .ct-strip li {
234
+ transform-style: preserve-3d;
235
+ margin: 0;
236
+ }
237
+ .ct-app .ct-thumb {
238
+ position: relative;
239
+ display: block;
240
+ width: 7.6rem;
241
+ aspect-ratio: 16 / 11;
242
+ transform-style: preserve-3d;
243
+ margin: 0 calc((var(--n) - 1) * 3px) calc((var(--n) - 1) * 3px) 0;
244
+ transition: transform .25s var(--ct-ease);
245
+ }
246
+ .ct-layer,
247
+ .ct-face {
248
+ position: absolute;
249
+ inset: 0;
250
+ border: 1px solid var(--ct-border);
251
+ background: var(--ct-bg);
252
+ transition: transform .7s var(--ct-ease), background-color .2s;
253
+ }
254
+ .ct-layer {
255
+ transform: translate(calc(var(--k) * 3px), calc(var(--k) * 3px));
256
+ }
257
+ .ct-face {
258
+ padding: .35rem .4rem;
259
+ display: flex;
260
+ flex-direction: column;
261
+ gap: .2rem;
262
+ overflow: hidden;
263
+ }
264
+ .ct-thumb:is(:hover, :focus-visible) .ct-face {
265
+ background: var(--ct-tint);
266
+ }
267
+ .ct-app .ct-thumb:focus-visible {
268
+ outline: none;
269
+ }
270
+ .ct-num {
271
+ font: .56rem/1 var(--ct-mono);
272
+ color: var(--ct-muted);
273
+ display: flex;
274
+ justify-content: space-between;
275
+ }
276
+ .ct-t {
277
+ font-size: .64rem;
278
+ line-height: 1.25;
279
+ font-weight: 750;
280
+ display: -webkit-box;
281
+ -webkit-line-clamp: 2;
282
+ -webkit-box-orient: vertical;
283
+ overflow: hidden;
284
+ }
285
+ .ct-sk {
286
+ margin-top: auto;
287
+ display: flex;
288
+ flex-direction: column;
289
+ gap: 3px;
290
+ }
291
+ .ct-g {
292
+ display: block;
293
+ height: 7px;
294
+ }
295
+ .ct-g-text,
296
+ .ct-g-list {
297
+ width: 92%;
298
+ background: repeating-linear-gradient(var(--ct-border) 0 2px, transparent 2px 5px);
299
+ }
300
+ .ct-g-list {
301
+ width: 66%;
302
+ margin-left: 6px;
303
+ height: calc(var(--c) * 5px - 3px);
304
+ }
305
+ .ct-g-table {
306
+ height: 13px;
307
+ border: 1px solid var(--ct-border);
308
+ background:
309
+ linear-gradient(
310
+ 90deg,
311
+ transparent 33%,
312
+ var(--ct-border) 33% calc(33% + 1px),
313
+ transparent 0 66%,
314
+ var(--ct-border) 66% calc(66% + 1px),
315
+ transparent 0),
316
+ linear-gradient(
317
+ transparent 6px,
318
+ var(--ct-border) 6px 7px,
319
+ transparent 0);
320
+ }
321
+ .ct-g-figure {
322
+ height: 13px;
323
+ width: 60%;
324
+ border: 1px solid var(--ct-border);
325
+ background:
326
+ linear-gradient(
327
+ to top right,
328
+ transparent calc(50% - .5px),
329
+ var(--ct-border) 0 calc(50% + .5px),
330
+ transparent 0);
331
+ }
332
+ .ct-g-grid,
333
+ .ct-g-flow,
334
+ .ct-g-nums {
335
+ display: flex;
336
+ gap: 3px;
337
+ height: 12px;
338
+ }
339
+ .ct-g-grid b,
340
+ .ct-g-flow b {
341
+ flex: 1;
342
+ border: 1px solid var(--ct-border);
343
+ }
344
+ .ct-g-flow {
345
+ gap: 6px;
346
+ background: linear-gradient(var(--ct-border), var(--ct-border)) center / 100% 1px no-repeat;
347
+ }
348
+ .ct-g-flow b {
349
+ background: var(--ct-bg);
350
+ }
351
+ .ct-g-nums b {
352
+ width: 16px;
353
+ background: color-mix(in srgb, var(--ct-accent) 55%, var(--ct-bg));
354
+ }
355
+ .ct-g-quote {
356
+ background: var(--ct-tint);
357
+ height: 9px;
358
+ }
359
+ .ct-ring {
360
+ position: absolute;
361
+ left: 0;
362
+ top: 0;
363
+ pointer-events: none;
364
+ outline: 2px solid var(--ct-accent);
365
+ outline-offset: 3px;
366
+ z-index: 3;
367
+ transition:
368
+ left .38s var(--ct-ease),
369
+ top .38s var(--ct-ease),
370
+ width .38s var(--ct-ease),
371
+ height .38s var(--ct-ease),
372
+ transform .7s var(--ct-ease);
373
+ }
374
+ .ct-ring::after {
375
+ content: attr(data-label);
376
+ position: absolute;
377
+ left: -5px;
378
+ top: calc(100% + 5px);
379
+ font: 650 .56rem/1 var(--ct-mono);
380
+ letter-spacing: .08em;
381
+ padding: .2rem .3rem;
382
+ background: var(--ct-accent);
383
+ color: var(--ct-accent-fg);
384
+ white-space: nowrap;
385
+ }
386
+ .ct-app[data-ct-3d] .ct-ov {
387
+ overflow: hidden;
388
+ }
389
+ .ct-app[data-ct-3d] .ct-plane {
390
+ transform: translateY(-4%) rotateX(52deg) rotateZ(-24deg) scale(.86);
391
+ }
392
+ .ct-app[data-ct-3d] .ct-layer {
393
+ transform: translateZ(calc((var(--n) - 1 - var(--k)) * var(--ct-lift)));
394
+ }
395
+ .ct-app[data-ct-3d] .ct-face {
396
+ transform: translateZ(calc((var(--n) - 1) * var(--ct-lift)));
397
+ }
398
+ .ct-app[data-ct-3d] .ct-thumb:is(:hover, :focus-visible) {
399
+ transform: translateZ(22px);
400
+ }
401
+ .ct-app[data-ct-3d] .ct-ring {
402
+ transform: translateZ(calc((var(--n) - 1) * var(--ct-lift) + 1px));
403
+ }
404
+ .ct-stage {
405
+ position: absolute;
406
+ inset: 0;
407
+ background: var(--ct-bg);
408
+ border: 1px solid var(--ct-border);
409
+ transform-origin: 0 0;
410
+ z-index: 2;
411
+ overflow: hidden;
412
+ outline: none;
413
+ container-type: size;
414
+ }
415
+ .ct-app[data-ct-panel] .ct-stage {
416
+ right: var(--ct-notes-w);
417
+ }
418
+ .ct-app:not([data-ct-mode=stage]) :is(.ct-stage, .ct-notes),
419
+ .ct-app:not([data-ct-mode=overview]) .ct-ov {
420
+ visibility: hidden;
421
+ }
422
+ .ct-app[data-ct-busy] :is(.ct-stage, .ct-ov) {
423
+ visibility: visible;
424
+ }
425
+ .ct-app .ct-stage :is([data-ct-deck], [data-ct-block], [data-ct-slide], [data-ct-page]) {
426
+ max-width: none;
427
+ margin: 0;
428
+ border: 0;
429
+ }
430
+ .ct-app .ct-stage :is([data-ct-deck], [data-ct-block], [data-ct-slide]) {
431
+ height: 100%;
432
+ padding: 0;
433
+ }
434
+ .ct-stage [data-ct-block] {
435
+ display: none;
436
+ }
437
+ .ct-stage [data-ct-block][data-ct-active] {
438
+ display: flex;
439
+ overflow: auto hidden;
440
+ scroll-snap-type: x mandatory;
441
+ overscroll-behavior: contain;
442
+ scrollbar-width: none;
443
+ }
444
+ .ct-stage [data-ct-slide] {
445
+ position: relative;
446
+ flex: 0 0 100%;
447
+ overflow-y: auto;
448
+ scroll-snap-align: start;
449
+ scroll-snap-stop: always;
450
+ scroll-snap-type: y mandatory;
451
+ overscroll-behavior-y: contain;
452
+ scrollbar-width: none;
453
+ }
454
+ .ct-stage :is([data-ct-block], [data-ct-slide])::-webkit-scrollbar {
455
+ display: none;
456
+ }
457
+ .ct-app .ct-stage [data-ct-page] {
458
+ min-height: 100%;
459
+ scroll-snap-align: start;
460
+ scroll-snap-stop: always;
461
+ display: flex;
462
+ flex-direction: column;
463
+ justify-content: center;
464
+ padding: clamp(1.4rem, 5cqh, 3.2rem) max(clamp(1.1rem, 6cqw, 5.5rem), (100cqw - var(--ct-measure)) / 2);
465
+ font-size: clamp(1rem, min(2.05cqw, 3.7cqh), 3rem);
466
+ }
467
+ .ct-app[data-ct-paging=free] [data-ct-slide] {
468
+ scroll-snap-type: y proximity;
469
+ }
470
+ .ct-app[data-ct-paging=free] [data-ct-page] {
471
+ scroll-snap-stop: normal;
472
+ }
473
+ .ct-stage [data-ct-step] {
474
+ transition: opacity .45s var(--ct-ease), transform .45s var(--ct-ease);
475
+ }
476
+ .ct-stage [data-ct-step]:not([data-ct-on]) {
477
+ opacity: 0;
478
+ transform: translateY(.45em);
479
+ }
480
+ .ct-stage tr[data-ct-step]:not([data-ct-on]) {
481
+ visibility: collapse;
482
+ }
483
+ .ct-pager {
484
+ display: flex;
485
+ flex-direction: column;
486
+ gap: 5px;
487
+ position: absolute;
488
+ right: .55rem;
489
+ top: 50%;
490
+ transform: translateY(-50%);
491
+ z-index: 4;
492
+ }
493
+ .ct-pager i {
494
+ display: block;
495
+ width: 5px;
496
+ height: 14px;
497
+ background: var(--ct-border);
498
+ }
499
+ .ct-pager i[data-on] {
500
+ background: linear-gradient(var(--ct-accent) calc(var(--f, 1) * 100%), color-mix(in srgb, var(--ct-accent) 30%, var(--ct-bg)) 0);
501
+ }
502
+ .ct-ctl {
503
+ display: flex;
504
+ gap: .35rem;
505
+ position: absolute;
506
+ right: 1.4rem;
507
+ bottom: .6rem;
508
+ z-index: 4;
509
+ }
510
+ .ct-ctl .ct-btn {
511
+ min-width: 2.4rem;
512
+ min-height: 2.4rem;
513
+ font-size: .9rem;
514
+ }
515
+ .ct-notes {
516
+ position: absolute;
517
+ top: 0;
518
+ right: 0;
519
+ bottom: 0;
520
+ width: var(--ct-notes-w);
521
+ background: var(--ct-bg);
522
+ border: 1px solid var(--ct-border);
523
+ padding: .9rem 1rem;
524
+ overflow: auto;
525
+ z-index: 6;
526
+ }
527
+ .ct-app:not([data-ct-panel]) .ct-notes {
528
+ visibility: hidden;
529
+ }
530
+ .ct-notes h2 {
531
+ font: 650 .66rem/1 var(--ct-mono);
532
+ letter-spacing: .12em;
533
+ margin: 0 0 .8rem;
534
+ color: var(--ct-muted);
535
+ }
536
+ .ct-nb {
537
+ font-size: 1rem;
538
+ line-height: 1.75;
539
+ }
540
+ .ct-script {
541
+ display: none;
542
+ position: absolute;
543
+ inset: 0;
544
+ overflow: auto;
545
+ padding: 0 1rem 40vh;
546
+ background: var(--ct-bg);
547
+ z-index: 7;
548
+ outline: none;
549
+ }
550
+ .ct-app[data-ct-mode=notes] .ct-script {
551
+ display: block;
552
+ }
553
+ .ct-sb {
554
+ max-width: 40rem;
555
+ margin: 0 auto;
556
+ }
557
+ .ct-sbh {
558
+ position: sticky;
559
+ top: 0;
560
+ z-index: 1;
561
+ display: flex;
562
+ align-items: baseline;
563
+ gap: .5rem;
564
+ margin: 0;
565
+ padding: .7rem 0 .5rem;
566
+ font-size: .95rem;
567
+ font-weight: 800;
568
+ background: var(--ct-bg);
569
+ }
570
+ .ct-se {
571
+ scroll-margin-top: 2.6rem;
572
+ padding-bottom: 1rem;
573
+ }
574
+ .ct-app .ct-sh {
575
+ display: flex;
576
+ flex-direction: column;
577
+ gap: .3rem;
578
+ width: 100%;
579
+ padding: .55rem .7rem;
580
+ background: var(--ct-panel);
581
+ font-size: 1rem;
582
+ line-height: 1.3;
583
+ }
584
+ .ct-sn {
585
+ padding: .5rem .7rem 0;
586
+ font-size: 1.12rem;
587
+ line-height: 1.8;
588
+ }
589
+ .ct-sn p,
590
+ .ct-nb p {
591
+ margin: 0 0 .8em;
592
+ }
593
+ @media (max-width: 760px) {
594
+ .ct-app {
595
+ --ct-notes-w: 100%;
596
+ }
597
+ .ct-rail {
598
+ gap: .35rem;
599
+ }
600
+ .ct-rg {
601
+ gap: 2px;
602
+ }
603
+ .ct-rl,
604
+ .ct-title {
605
+ display: none;
606
+ }
607
+ .ct-rc i,
608
+ .ct-rm {
609
+ width: 6px;
610
+ height: 4px;
611
+ }
612
+ .ct-app[data-ct-panel] .ct-stage {
613
+ right: 0;
614
+ bottom: 42%;
615
+ }
616
+ .ct-notes {
617
+ top: 58%;
618
+ }
619
+ .ct-app .ct-stage [data-ct-page] {
620
+ padding-bottom: 4.2rem;
621
+ }
622
+ }
623
+ @media (prefers-reduced-motion: reduce) {
624
+ .ct-app :is(.ct-plane, .ct-layer, .ct-face, .ct-thumb, .ct-ring, .ct-rm, [data-ct-step]) {
625
+ transition-duration: .01ms !important;
626
+ }
627
+ }
628
+
629
+ /* styles/index.css */