canofold 0.2.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.
@@ -0,0 +1,1739 @@
1
+ /* Canofold site shell: quiet structure, coloured navigation, precise motion. */
2
+
3
+ *,
4
+ *::before,
5
+ *::after {
6
+ box-sizing: border-box;
7
+ border: 0;
8
+ }
9
+
10
+ html {
11
+ min-width: 20rem;
12
+ background: var(--cf-canvas);
13
+ overscroll-behavior: none;
14
+ scroll-behavior: smooth;
15
+ }
16
+
17
+ body {
18
+ min-width: 20rem;
19
+ margin: 0;
20
+ overscroll-behavior: none;
21
+ color: var(--cf-ink-body);
22
+ background: var(--cf-canvas);
23
+ font-family: var(--cf-font-sans);
24
+ font-size: var(--cf-body-font-size);
25
+ line-height: var(--cf-body-line-height);
26
+ text-rendering: optimizeLegibility;
27
+ font-optical-sizing: auto;
28
+ -webkit-font-smoothing: antialiased;
29
+ }
30
+
31
+ .cf-page-root {
32
+ display: contents;
33
+ }
34
+
35
+ button,
36
+ input,
37
+ select,
38
+ textarea {
39
+ font: inherit;
40
+ }
41
+
42
+ button,
43
+ a {
44
+ -webkit-tap-highlight-color: transparent;
45
+ }
46
+
47
+ button {
48
+ border: 0;
49
+ }
50
+
51
+ a {
52
+ color: inherit;
53
+ }
54
+
55
+ ::selection {
56
+ color: var(--cf-surface);
57
+ background: var(--cf-accent-500);
58
+ }
59
+
60
+ .cf-header {
61
+ position: fixed;
62
+ inset: 0 0 auto;
63
+ z-index: 20;
64
+ width: 100%;
65
+ min-height: var(--cf-header-height);
66
+ border-bottom: 1px solid color-mix(in srgb, var(--cf-accent-500) 18%, transparent);
67
+ background: color-mix(in srgb, var(--cf-surface) 68%, transparent);
68
+ box-shadow: none;
69
+ backdrop-filter: blur(22px) saturate(160%);
70
+ -webkit-backdrop-filter: blur(22px) saturate(160%);
71
+ transition:
72
+ border-color var(--cf-duration-fast) var(--cf-easing-default),
73
+ background var(--cf-duration-fast) var(--cf-easing-default),
74
+ backdrop-filter var(--cf-duration-fast) var(--cf-easing-default);
75
+ }
76
+
77
+ .cf-header-home {
78
+ --cf-header-surface-mix: 0%;
79
+ --cf-header-backdrop-blur: 0px;
80
+ --cf-header-backdrop-saturation: 100%;
81
+
82
+ border-bottom-color: transparent;
83
+ background: transparent;
84
+ background: color-mix(in srgb, var(--cf-surface) var(--cf-header-surface-mix), transparent);
85
+ backdrop-filter: blur(var(--cf-header-backdrop-blur)) saturate(var(--cf-header-backdrop-saturation));
86
+ -webkit-backdrop-filter: blur(var(--cf-header-backdrop-blur)) saturate(var(--cf-header-backdrop-saturation));
87
+ }
88
+
89
+ .cf-header-inner {
90
+ display: grid;
91
+ grid-template-columns: calc(var(--cf-sidebar-width) - 24px) minmax(0, 1fr) auto;
92
+ align-items: center;
93
+ min-height: var(--cf-header-height);
94
+ gap: 0;
95
+ width: 100%;
96
+ padding: 10px 24px;
97
+ }
98
+
99
+ .cf-brand {
100
+ grid-column: 1;
101
+ display: inline-flex;
102
+ flex: 0 0 auto;
103
+ align-items: center;
104
+ min-width: 0;
105
+ color: var(--cf-ink);
106
+ text-decoration: none;
107
+ }
108
+
109
+ .cf-brand-logo {
110
+ display: block;
111
+ flex: 0 0 auto;
112
+ width: auto;
113
+ height: 2rem;
114
+ object-fit: contain;
115
+ }
116
+
117
+ .cf-brand-logo-dark {
118
+ display: none;
119
+ }
120
+
121
+ .dark .cf-brand-logo-light {
122
+ display: none;
123
+ }
124
+
125
+ .dark .cf-brand-logo-dark {
126
+ display: block;
127
+ }
128
+
129
+ .cf-brand-mark {
130
+ display: block;
131
+ flex: 0 0 auto;
132
+ width: 3rem;
133
+ height: 3rem;
134
+ }
135
+
136
+ .cf-sidebar-toggle,
137
+ .cf-search-trigger,
138
+ .cf-icon-button,
139
+ .cf-version-badge,
140
+ .cf-menu-item,
141
+ .cf-header-link,
142
+ .cf-btn,
143
+ .cf-page-source,
144
+ .cf-doc-pagination-link {
145
+ transition:
146
+ color var(--cf-duration-fast) var(--cf-easing-default),
147
+ background var(--cf-duration-fast) var(--cf-easing-default),
148
+ opacity var(--cf-duration-fast) var(--cf-easing-default);
149
+ }
150
+
151
+ .cf-sidebar-toggle,
152
+ .cf-icon-button,
153
+ .cf-version-badge,
154
+ .cf-search-trigger {
155
+ display: inline-flex;
156
+ align-items: center;
157
+ justify-content: center;
158
+ min-height: 36px;
159
+ border-radius: var(--cf-radius-sm);
160
+ color: var(--cf-ink-secondary);
161
+ background: transparent;
162
+ box-shadow: none;
163
+ cursor: pointer;
164
+ }
165
+
166
+ .cf-sidebar-toggle {
167
+ display: none;
168
+ }
169
+
170
+ .cf-sidebar-toggle,
171
+ .cf-icon-button {
172
+ width: 36px;
173
+ padding: 8px;
174
+ }
175
+
176
+ .cf-sidebar-toggle:hover,
177
+ .cf-icon-button:hover,
178
+ .cf-version-badge:hover {
179
+ color: var(--cf-accent-500);
180
+ background: transparent;
181
+ }
182
+
183
+ .cf-search-trigger:hover {
184
+ color: var(--cf-accent-500);
185
+ background: var(--cf-surface-secondary);
186
+ }
187
+
188
+ .cf-sidebar-toggle:active,
189
+ .cf-icon-button:active,
190
+ .cf-search-trigger:active,
191
+ .cf-version-badge:active,
192
+ .cf-btn:active,
193
+ .cf-page-source:active {
194
+ opacity: 1;
195
+ }
196
+
197
+ .cf-search-trigger {
198
+ grid-column: 2;
199
+ justify-self: start;
200
+ justify-content: flex-start;
201
+ gap: 8px;
202
+ width: clamp(11.5rem, 16vw, 14rem);
203
+ margin: 0;
204
+ padding: 7px 9px 7px 11px;
205
+ background: var(--cf-surface-secondary);
206
+ backdrop-filter: blur(var(--cf-glass-blur)) saturate(145%);
207
+ -webkit-backdrop-filter: blur(var(--cf-glass-blur)) saturate(145%);
208
+ font-size: 0.84rem;
209
+ text-align: start;
210
+ }
211
+
212
+ .cf-kbd {
213
+ margin-inline-start: auto;
214
+ padding: 2px 5px;
215
+ border-radius: var(--cf-radius-sm);
216
+ color: var(--cf-ink-tertiary);
217
+ background: var(--cf-surface-secondary);
218
+ font: 0.68rem/1 var(--cf-font-mono);
219
+ }
220
+
221
+ .cf-header-right {
222
+ grid-column: 3;
223
+ display: inline-flex;
224
+ align-items: center;
225
+ gap: 7px;
226
+ margin-inline-start: 0;
227
+ }
228
+
229
+ .cf-header-nav {
230
+ display: inline-flex;
231
+ align-items: center;
232
+ gap: 2px;
233
+ }
234
+
235
+ .cf-header-link {
236
+ display: inline-flex;
237
+ align-items: center;
238
+ min-height: 36px;
239
+ padding: 7px 10px;
240
+ border-radius: var(--cf-radius-sm);
241
+ color: var(--cf-ink-secondary);
242
+ font-size: 0.9375rem;
243
+ text-decoration: none;
244
+ }
245
+
246
+ .cf-header-link:hover,
247
+ .cf-header-link-active {
248
+ color: var(--cf-accent-500);
249
+ background: transparent;
250
+ }
251
+
252
+ .cf-version-badge {
253
+ gap: 5px;
254
+ padding: 7px 10px;
255
+ font: 0.8125rem/1 var(--cf-font-mono);
256
+ }
257
+
258
+ .cf-menu {
259
+ position: relative;
260
+ }
261
+
262
+ .cf-menu > summary {
263
+ list-style: none;
264
+ }
265
+
266
+ .cf-menu > summary::-webkit-details-marker {
267
+ display: none;
268
+ }
269
+
270
+ .cf-menu-list {
271
+ position: absolute;
272
+ inset: calc(100% + 8px) 0 auto auto;
273
+ z-index: 30;
274
+ min-width: 150px;
275
+ padding: 5px;
276
+ border-radius: var(--cf-radius-md);
277
+ background: color-mix(in srgb, var(--cf-surface-elevated) 92%, transparent);
278
+ box-shadow: var(--cf-shadow-raised-sm), var(--cf-shadow-inset);
279
+ backdrop-filter: blur(var(--cf-glass-blur));
280
+ }
281
+
282
+ .cf-menu-item {
283
+ display: flex;
284
+ align-items: center;
285
+ min-height: 32px;
286
+ padding: 6px 8px;
287
+ border-radius: var(--cf-radius-sm);
288
+ color: var(--cf-ink-secondary);
289
+ font-size: 0.8rem;
290
+ text-decoration: none;
291
+ }
292
+
293
+ .cf-menu-item:hover,
294
+ .cf-menu-item-active {
295
+ color: var(--cf-accent-500);
296
+ background: var(--cf-accent-soft);
297
+ }
298
+
299
+ .cf-lang-trigger {
300
+ width: auto;
301
+ gap: 2px;
302
+ padding: 7px 6px 7px 8px;
303
+ }
304
+
305
+ .cf-menu > summary .lucide-chevron-down {
306
+ transition: transform var(--cf-duration-fast) var(--cf-easing-default);
307
+ }
308
+
309
+ .cf-menu[open] > summary .lucide-chevron-down {
310
+ transform: rotate(180deg);
311
+ }
312
+
313
+ .cf-language-menu-list {
314
+ width: 8rem;
315
+ min-width: 8rem;
316
+ padding: 0.375rem;
317
+ }
318
+
319
+ .cf-language-menu-item {
320
+ width: 100%;
321
+ min-height: 2.375rem;
322
+ padding: 0.5rem 0.75rem;
323
+ font-size: 0.875rem;
324
+ }
325
+
326
+ .cf-language-menu-item:hover {
327
+ color: var(--cf-ink);
328
+ background: var(--cf-surface-secondary);
329
+ }
330
+
331
+ .cf-language-menu-item.cf-menu-item-active {
332
+ color: var(--cf-accent-500);
333
+ background: transparent;
334
+ }
335
+
336
+ .cf-language-menu-item.cf-menu-item-active:hover {
337
+ background: var(--cf-surface-secondary);
338
+ }
339
+
340
+ .cf-icon-sun {
341
+ display: none;
342
+ }
343
+
344
+ .dark .cf-icon-sun {
345
+ display: block;
346
+ }
347
+
348
+ .dark .cf-icon-moon {
349
+ display: none;
350
+ }
351
+
352
+ .cf-progress {
353
+ position: absolute;
354
+ inset: auto 0 0;
355
+ height: 2px;
356
+ overflow: hidden;
357
+ background: transparent;
358
+ }
359
+
360
+ .cf-progress > span {
361
+ display: block;
362
+ width: 100%;
363
+ height: 100%;
364
+ background: var(--cf-accent-500);
365
+ transform: scaleX(0);
366
+ transform-origin: left center;
367
+ }
368
+
369
+ .cf-shell {
370
+ display: grid;
371
+ grid-template-columns: var(--cf-sidebar-width) minmax(0, 1fr) var(--cf-outline-width);
372
+ min-height: 100vh;
373
+ padding-top: var(--cf-header-height);
374
+ background: var(--cf-canvas);
375
+ }
376
+
377
+ .cf-header-hidden .cf-shell {
378
+ padding-top: 0;
379
+ }
380
+
381
+ .cf-header-hidden :where(.cf-sidebar, .cf-outline) {
382
+ top: 0;
383
+ height: auto;
384
+ }
385
+
386
+ .cf-sidebar,
387
+ .cf-outline {
388
+ min-width: 0;
389
+ overflow-y: auto;
390
+ overflow-anchor: none;
391
+ overscroll-behavior-y: none;
392
+ scrollbar-width: none;
393
+ }
394
+
395
+ .cf-sidebar::-webkit-scrollbar,
396
+ .cf-outline::-webkit-scrollbar {
397
+ display: none;
398
+ }
399
+
400
+ .cf-sidebar {
401
+ --cf-sidebar-indent: 0px;
402
+ position: fixed;
403
+ inset: var(--cf-header-height) auto 0 0;
404
+ width: var(--cf-sidebar-width);
405
+ height: auto;
406
+ z-index: 10;
407
+ background: var(--cf-surface-soft);
408
+ }
409
+
410
+ .cf-sidebar-nav {
411
+ padding: 1.5rem 0.875rem 2rem;
412
+ }
413
+
414
+ .cf-sidebar-primary-nav {
415
+ display: none;
416
+ }
417
+
418
+ .cf-sidebar-items + .cf-sidebar-items {
419
+ margin-top: 1.125rem;
420
+ padding-top: 1.125rem;
421
+ }
422
+
423
+ .cf-sidebar-link,
424
+ .cf-sidebar-subgroup-title {
425
+ display: flex;
426
+ align-items: center;
427
+ min-height: 2.375rem;
428
+ gap: 0.5rem;
429
+ width: 100%;
430
+ padding-block: 0.5rem;
431
+ padding-inline: calc(0.625rem + var(--cf-sidebar-indent, 0rem)) 0.625rem;
432
+ border-radius: var(--cf-radius-sm);
433
+ color: var(--cf-ink-secondary);
434
+ font-size: 0.875rem;
435
+ text-decoration: none;
436
+ cursor: pointer;
437
+ transition:
438
+ color var(--cf-duration-fast) var(--cf-easing-default),
439
+ opacity var(--cf-duration-fast) var(--cf-easing-default);
440
+ }
441
+
442
+ .cf-sidebar-link:hover,
443
+ .cf-sidebar-subgroup-title:hover,
444
+ .cf-sidebar-link-active {
445
+ color: var(--cf-accent-500);
446
+ }
447
+
448
+ .dark :where(.cf-sidebar-link:hover, .cf-sidebar-subgroup-title:hover, .cf-sidebar-link-active) {
449
+ color: var(--cf-accent-700);
450
+ }
451
+
452
+ .cf-sidebar-subgroup {
453
+ margin-top: 0.3125rem;
454
+ }
455
+
456
+ .cf-sidebar-subgroup-title {
457
+ list-style: none;
458
+ font-weight: 700;
459
+ }
460
+
461
+ .cf-sidebar-subgroup-title::-webkit-details-marker {
462
+ display: none;
463
+ }
464
+
465
+ .cf-chevron {
466
+ margin-inline-start: auto;
467
+ transition: transform var(--cf-duration-normal) var(--cf-easing-spring);
468
+ }
469
+
470
+ .cf-sidebar-subgroup[open] .cf-chevron {
471
+ transform: rotate(180deg);
472
+ }
473
+
474
+ .cf-sidebar-subgroup-items {
475
+ margin: 0.25rem 0;
476
+ }
477
+
478
+ .cf-sidebar-subgroup-items .cf-sidebar-link {
479
+ min-height: 2rem;
480
+ padding-block: 0.375rem;
481
+ font-size: 0.8125rem;
482
+ }
483
+
484
+ .cf-main {
485
+ grid-column: 2;
486
+ min-width: 0;
487
+ min-height: calc(100vh - var(--cf-header-height));
488
+ overscroll-behavior-y: none;
489
+ background: var(--cf-surface);
490
+ }
491
+
492
+ .cf-shell-playground {
493
+ grid-template-columns: var(--cf-sidebar-width) minmax(0, 1fr);
494
+ }
495
+
496
+ .cf-playground-page {
497
+ overflow: hidden;
498
+ }
499
+
500
+ .cf-playground-page .cf-progress {
501
+ display: none;
502
+ }
503
+
504
+ .cf-playground-main {
505
+ grid-column: 2 / -1;
506
+ height: calc(100dvh - var(--cf-header-height));
507
+ overflow: clip;
508
+ }
509
+
510
+ .cf-header-hidden .cf-playground-main {
511
+ height: 100dvh;
512
+ }
513
+
514
+ .cf-playground {
515
+ --cf-playground-source-width: 45%;
516
+
517
+ position: relative;
518
+ display: grid;
519
+ grid-template-columns:
520
+ minmax(12rem, var(--cf-playground-source-width, 45%))
521
+ 0.5rem
522
+ minmax(0, 1fr);
523
+ height: 100%;
524
+ min-height: 0;
525
+ background: var(--cf-surface);
526
+ }
527
+
528
+ .cf-playground-toggle {
529
+ display: none;
530
+ }
531
+
532
+ .cf-playground-pane {
533
+ display: grid;
534
+ grid-template-rows: minmax(0, 1fr);
535
+ min-width: 0;
536
+ min-height: 0;
537
+ overflow: clip;
538
+ }
539
+
540
+ .cf-playground-source {
541
+ background: var(--cf-surface);
542
+ }
543
+
544
+ .cf-playground-source > textarea {
545
+ display: block;
546
+ width: 100%;
547
+ height: 100%;
548
+ min-width: 0;
549
+ min-height: 0;
550
+ margin: 0;
551
+ padding: clamp(1rem, 2vw, 1.5rem);
552
+ resize: none;
553
+ border: 0;
554
+ outline: 0;
555
+ overflow: auto;
556
+ color: var(--cf-code-ink);
557
+ background: transparent;
558
+ tab-size: 2;
559
+ font: 0.82rem/1.65 var(--cf-font-mono);
560
+ white-space: pre;
561
+ }
562
+
563
+ .cf-playground-preview-scroll {
564
+ min-width: 0;
565
+ min-height: 0;
566
+ overflow: auto;
567
+ overscroll-behavior: contain;
568
+ background: var(--cf-surface);
569
+ }
570
+
571
+ .cf-playground-source > textarea,
572
+ .cf-playground-preview-scroll {
573
+ scrollbar-width: none;
574
+ -ms-overflow-style: none;
575
+ }
576
+
577
+ .cf-playground-source > textarea::-webkit-scrollbar,
578
+ .cf-playground-preview-scroll::-webkit-scrollbar {
579
+ display: none;
580
+ width: 0;
581
+ height: 0;
582
+ }
583
+
584
+ .cf-playground-status {
585
+ margin: clamp(1rem, 2vw, 1.5rem);
586
+ color: var(--cf-ink-secondary);
587
+ font-size: 0.875rem;
588
+ }
589
+
590
+ .cf-playground-error {
591
+ color: var(--cf-danger-deep, #b42318);
592
+ white-space: pre-wrap;
593
+ }
594
+
595
+ .cf-playground-resizer {
596
+ position: relative;
597
+ z-index: 4;
598
+ min-width: 0.5rem;
599
+ min-height: 0;
600
+ cursor: col-resize;
601
+ touch-action: none;
602
+ }
603
+
604
+ .cf-playground-resizer::before {
605
+ position: absolute;
606
+ inset: 0 50%;
607
+ width: 1px;
608
+ background: color-mix(in srgb, var(--cf-ink) 14%, transparent);
609
+ content: '';
610
+ transform: translateX(-50%);
611
+ transition: background var(--cf-duration-fast) var(--cf-easing-default);
612
+ }
613
+
614
+ .cf-playground-resizer:hover::before,
615
+ .cf-playground-resizer:focus-visible::before,
616
+ .cf-playground[data-resizing] > .cf-playground-resizer::before {
617
+ background: var(--cf-accent-500);
618
+ }
619
+
620
+ .cf-playground-resizer:focus-visible {
621
+ outline: 0;
622
+ }
623
+
624
+ .cf-playground[data-resizing] {
625
+ cursor: col-resize;
626
+ user-select: none;
627
+ }
628
+
629
+ .cf-skip-link {
630
+ position: fixed;
631
+ z-index: 1000;
632
+ inset-block-start: 8px;
633
+ inset-inline-start: 8px;
634
+ padding: 8px 12px;
635
+ border: 2px solid var(--cf-accent-600);
636
+ border-radius: var(--cf-radius-sm);
637
+ background: var(--cf-surface-elevated);
638
+ color: var(--cf-ink);
639
+ font-weight: 700;
640
+ transform: translateY(calc(-100% - 16px));
641
+ }
642
+
643
+ .cf-skip-link:focus {
644
+ transform: translateY(0);
645
+ }
646
+
647
+ .cf-outline {
648
+ position: fixed;
649
+ inset: var(--cf-header-height) 0 0 auto;
650
+ width: var(--cf-outline-width);
651
+ height: auto;
652
+ padding: 1.75rem 1.375rem 2.25rem 1.5rem;
653
+ background: color-mix(in srgb, var(--cf-surface) 88%, transparent);
654
+ box-shadow: none;
655
+ backdrop-filter: blur(18px) saturate(125%);
656
+ -webkit-backdrop-filter: blur(18px) saturate(125%);
657
+ }
658
+
659
+ .cf-outline-nav {
660
+ display: grid;
661
+ position: relative;
662
+ gap: 0;
663
+ padding-inline-start: 0.75rem;
664
+ }
665
+
666
+ .cf-outline-nav::before {
667
+ position: absolute;
668
+ inset-block: 0.1875rem;
669
+ inset-inline-start: 0;
670
+ width: 1px;
671
+ background: color-mix(in srgb, var(--cf-ink-tertiary) 16%, transparent);
672
+ content: '';
673
+ }
674
+
675
+ .cf-outline-link {
676
+ position: relative;
677
+ display: block;
678
+ padding: 0.3125rem 0;
679
+ border-radius: var(--cf-radius-sm);
680
+ color: var(--cf-ink-secondary);
681
+ font-size: 0.8125rem;
682
+ line-height: 1.35;
683
+ text-decoration: none;
684
+ transition:
685
+ color var(--cf-duration-fast) var(--cf-easing-default),
686
+ opacity var(--cf-duration-fast) var(--cf-easing-default);
687
+ }
688
+
689
+ .cf-outline-link::before {
690
+ position: absolute;
691
+ inset-block: 0.35rem;
692
+ inset-inline-start: -0.75rem;
693
+ width: 2px;
694
+ border-radius: 1px;
695
+ background: var(--cf-accent-500);
696
+ content: '';
697
+ opacity: 0;
698
+ transition: opacity var(--cf-duration-fast) var(--cf-easing-default);
699
+ }
700
+
701
+ .cf-outline-link-1 {
702
+ color: var(--cf-ink);
703
+ font-size: 0.875rem;
704
+ font-weight: 700;
705
+ }
706
+
707
+ .cf-outline-link-2 {
708
+ padding-inline-start: 0.5rem;
709
+ font-size: 0.85rem;
710
+ font-weight: 650;
711
+ }
712
+
713
+ .cf-outline-link-3 {
714
+ padding-inline-start: 1.125rem;
715
+ font-weight: 600;
716
+ }
717
+
718
+ .cf-outline-link-4 {
719
+ padding-inline-start: 1.75rem;
720
+ font-weight: 550;
721
+ }
722
+
723
+ .cf-outline-link-5 {
724
+ padding-inline-start: 2.375rem;
725
+ color: var(--cf-ink-tertiary);
726
+ font-weight: 500;
727
+ }
728
+
729
+ .cf-outline-link-6 {
730
+ padding-inline-start: 3rem;
731
+ color: var(--cf-ink-tertiary);
732
+ font-weight: 500;
733
+ }
734
+
735
+ .cf-outline-link:hover,
736
+ .cf-outline-link[data-active='true'] {
737
+ color: var(--cf-accent-500);
738
+ }
739
+
740
+ .cf-outline-link[data-active='true']::before {
741
+ opacity: 1;
742
+ }
743
+
744
+ .cf-outline-ad {
745
+ display: block;
746
+ margin-top: 26px;
747
+ color: var(--cf-ink-secondary);
748
+ font-size: 0.72rem;
749
+ text-decoration: none;
750
+ }
751
+
752
+ .cf-outline-ad img {
753
+ display: block;
754
+ width: 100%;
755
+ margin-top: 8px;
756
+ border-radius: var(--cf-radius-sm);
757
+ }
758
+
759
+ .cf-page-footer {
760
+ padding: 0 var(--cf-site-gutter) 48px;
761
+ }
762
+
763
+ .cf-page-meta {
764
+ display: flex;
765
+ align-items: center;
766
+ justify-content: space-between;
767
+ gap: 12px;
768
+ padding: 20px 0;
769
+ color: var(--cf-ink-secondary);
770
+ font-size: 0.78rem;
771
+ }
772
+
773
+ .cf-page-meta-actions {
774
+ display: inline-flex;
775
+ align-items: center;
776
+ gap: 10px;
777
+ }
778
+
779
+ .cf-page-meta-actions a,
780
+ .cf-page-source {
781
+ color: var(--cf-accent-500);
782
+ background: none;
783
+ cursor: pointer;
784
+ text-decoration: none;
785
+ }
786
+
787
+ .cf-page-meta-actions a:hover,
788
+ .cf-page-source:hover {
789
+ color: var(--cf-accent-700);
790
+ }
791
+
792
+ .cf-doc-pagination {
793
+ display: grid;
794
+ grid-template-columns: 1fr 1fr;
795
+ gap: 12px;
796
+ }
797
+
798
+ .cf-doc-pagination-link {
799
+ display: grid;
800
+ gap: 4px;
801
+ min-width: 0;
802
+ padding: 14px 16px;
803
+ border-radius: var(--cf-radius-md);
804
+ background: var(--cf-surface-soft);
805
+ text-decoration: none;
806
+ box-shadow: none;
807
+ }
808
+
809
+ .cf-doc-pagination-link:hover {
810
+ background: var(--cf-accent-soft);
811
+ }
812
+
813
+ .cf-doc-pagination-link-next {
814
+ text-align: end;
815
+ }
816
+
817
+ .cf-doc-pagination-label {
818
+ color: var(--cf-ink-secondary);
819
+ font-size: 0.72rem;
820
+ }
821
+
822
+ .cf-doc-pagination-title {
823
+ overflow: hidden;
824
+ color: var(--cf-ink);
825
+ font-size: 0.9rem;
826
+ text-overflow: ellipsis;
827
+ white-space: nowrap;
828
+ }
829
+
830
+ /* Home page */
831
+ .cf-home {
832
+ position: relative;
833
+ overflow: clip;
834
+ min-height: 100dvh;
835
+ padding: var(--cf-header-height) 0 0;
836
+ background:
837
+ radial-gradient(circle at 88% 14%, color-mix(in oklab, #8c5cff 17%, transparent), transparent 31rem),
838
+ radial-gradient(circle at 55% 34%, color-mix(in oklab, #38c8ff 10%, transparent), transparent 28rem),
839
+ linear-gradient(135deg, color-mix(in oklab, var(--cf-surface) 94%, #eef4ff), #f6f7ff 58%, #f1f4ff);
840
+ }
841
+
842
+ .dark .cf-home {
843
+ background:
844
+ radial-gradient(circle at 86% 12%, color-mix(in oklab, #7658ff 18%, transparent), transparent 30rem),
845
+ radial-gradient(circle at 57% 31%, color-mix(in oklab, #1abcf2 9%, transparent), transparent 27rem),
846
+ linear-gradient(
847
+ 135deg,
848
+ color-mix(in oklab, var(--cf-canvas) 91%, #11182c),
849
+ color-mix(in oklab, var(--cf-canvas) 86%, #19172b) 58%,
850
+ color-mix(in oklab, var(--cf-canvas) 92%, #10172a)
851
+ );
852
+ }
853
+
854
+ .cf-header-hidden .cf-home {
855
+ padding-top: 0;
856
+ }
857
+
858
+ .cf-hero {
859
+ position: relative;
860
+ isolation: isolate;
861
+ display: grid;
862
+ align-items: center;
863
+ max-width: 72.5rem;
864
+ margin: 0 auto;
865
+ padding: clamp(2rem, 3vw, 2.5rem) clamp(1.5rem, 4vw, 3rem) clamp(2.25rem, 3.4vw, 2.75rem);
866
+ }
867
+
868
+ .cf-hero-with-visual {
869
+ grid-template-columns: minmax(0, 0.96fr) minmax(25rem, 1.04fr);
870
+ gap: clamp(1.5rem, 3vw, 3.5rem);
871
+ }
872
+
873
+ .cf-hero-copy {
874
+ position: relative;
875
+ z-index: 2;
876
+ grid-column: 1;
877
+ min-width: 0;
878
+ max-width: 36.5rem;
879
+ }
880
+
881
+ .cf-hero-title {
882
+ display: block;
883
+ margin: 0;
884
+ padding-inline-end: 0.16em;
885
+ color: transparent;
886
+ background: linear-gradient(105deg, #06185f 0%, #0d6df0 54%, #8f43eb 100%);
887
+ background-clip: text;
888
+ -webkit-background-clip: text;
889
+ font-family: Inter, 'DM Sans', system-ui, sans-serif;
890
+ font-size: clamp(4.35rem, 7.5vw, 5.65rem);
891
+ font-weight: 700;
892
+ line-height: 0.92;
893
+ overflow-wrap: anywhere;
894
+ text-wrap: balance;
895
+ -webkit-text-fill-color: transparent;
896
+ }
897
+
898
+ .dark .cf-hero-title {
899
+ background-image: linear-gradient(105deg, #f2f5ff 0%, #70b4ff 54%, #c679ff 100%);
900
+ }
901
+
902
+ @media (forced-colors: active) {
903
+ .cf-hero-title {
904
+ color: CanvasText;
905
+ background: none;
906
+ -webkit-text-fill-color: currentColor;
907
+ }
908
+ }
909
+
910
+ .cf-hero-accent {
911
+ max-width: 36rem;
912
+ margin: 1rem 0 0;
913
+ color: color-mix(in oklab, var(--cf-ink) 92%, #243b82);
914
+ font-size: clamp(1.5rem, 2.35vw, 1.9rem);
915
+ font-weight: 700;
916
+ letter-spacing: -0.03em;
917
+ line-height: 1.3;
918
+ }
919
+
920
+ .cf-hero-tagline {
921
+ max-width: 36.5rem;
922
+ margin: 1.35rem 0 0;
923
+ color: var(--cf-ink-secondary);
924
+ font-size: clamp(1rem, 1.3vw, 1.075rem);
925
+ line-height: 1.8;
926
+ }
927
+
928
+ .cf-hero-actions {
929
+ display: flex;
930
+ flex-wrap: wrap;
931
+ gap: 1.1rem;
932
+ margin-top: 1.5rem;
933
+ }
934
+
935
+ .cf-btn {
936
+ display: inline-flex;
937
+ align-items: center;
938
+ justify-content: center;
939
+ gap: 0.65rem;
940
+ min-height: 2.75rem;
941
+ padding: 0.5rem 1.4rem;
942
+ border-radius: 999px;
943
+ font-size: 0.94rem;
944
+ font-weight: 650;
945
+ text-decoration: none;
946
+ transition:
947
+ color var(--cf-duration-fast) var(--cf-easing-default),
948
+ background var(--cf-duration-fast) var(--cf-easing-default),
949
+ box-shadow var(--cf-duration-fast) var(--cf-easing-default);
950
+ }
951
+
952
+ .cf-btn svg {
953
+ width: 1.1rem;
954
+ height: 1.1rem;
955
+ }
956
+
957
+ .cf-btn-primary {
958
+ color: #fff;
959
+ background: linear-gradient(110deg, #087af7, #395cf4 52%, #9344ec);
960
+ box-shadow: 0 0.8rem 1.8rem color-mix(in oklab, #5060f5 28%, transparent);
961
+ }
962
+
963
+ .cf-btn-primary:hover {
964
+ color: #fff;
965
+ box-shadow: 0 1rem 2rem color-mix(in oklab, #684ff1 38%, transparent);
966
+ }
967
+
968
+ .dark .cf-btn-primary {
969
+ box-shadow: none;
970
+ }
971
+
972
+ .cf-btn-secondary {
973
+ color: #3262e8;
974
+ padding-inline: 1.4rem;
975
+ border: 0;
976
+ background: color-mix(in oklab, #dfe6ff 72%, var(--cf-surface));
977
+ box-shadow: none;
978
+ }
979
+
980
+ .cf-btn-secondary:hover {
981
+ color: #5e45e7;
982
+ background: color-mix(in oklab, #d5dcff 78%, var(--cf-surface));
983
+ box-shadow: none;
984
+ }
985
+
986
+ .dark .cf-btn-secondary {
987
+ color: #bec8ff;
988
+ background: color-mix(in oklab, #6268dc 24%, var(--cf-surface));
989
+ box-shadow: none;
990
+ }
991
+
992
+ .dark .cf-btn-secondary:hover {
993
+ color: #d3d9ff;
994
+ background: color-mix(in oklab, #696ee5 32%, var(--cf-surface));
995
+ box-shadow: none;
996
+ }
997
+
998
+ .cf-btn:focus-visible {
999
+ outline: 3px solid color-mix(in oklab, #5e63f4 58%, transparent);
1000
+ outline-offset: 3px;
1001
+ }
1002
+
1003
+ .cf-hero-visual {
1004
+ position: relative;
1005
+ z-index: 1;
1006
+ grid-column: 2;
1007
+ width: min(100%, 33rem);
1008
+ aspect-ratio: 4 / 3;
1009
+ min-width: 0;
1010
+ align-self: center;
1011
+ justify-self: end;
1012
+ pointer-events: none;
1013
+ }
1014
+
1015
+ .cf-hero-visual img {
1016
+ display: block;
1017
+ width: 100%;
1018
+ height: 100%;
1019
+ object-fit: contain;
1020
+ object-position: center;
1021
+ filter: drop-shadow(0 2rem 3rem color-mix(in oklab, #6a68f5 16%, transparent));
1022
+ animation: cf-home-visual-float 8s ease-in-out infinite;
1023
+ }
1024
+
1025
+ .dark .cf-hero-visual {
1026
+ opacity: 0.74;
1027
+ }
1028
+
1029
+ .dark .cf-hero-visual img {
1030
+ filter: brightness(0.88) saturate(1.12) contrast(1.06)
1031
+ drop-shadow(0 2rem 3rem color-mix(in oklab, #6155f4 22%, transparent));
1032
+ }
1033
+
1034
+ .cf-feature-section {
1035
+ position: relative;
1036
+ z-index: 2;
1037
+ padding: clamp(2rem, 3.2vw, 2.5rem) clamp(1.5rem, 4vw, 3rem);
1038
+ }
1039
+
1040
+ .cf-features {
1041
+ display: grid;
1042
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1043
+ gap: 1.5rem 1.75rem;
1044
+ max-width: 66.875rem;
1045
+ margin: 0 auto;
1046
+ }
1047
+
1048
+ .cf-feature {
1049
+ display: flex;
1050
+ overflow: hidden;
1051
+ flex-direction: column;
1052
+ padding: 1.8rem 2rem 1.45rem;
1053
+ border: 0;
1054
+ border-radius: 0.75rem;
1055
+ color: inherit;
1056
+ background: linear-gradient(
1057
+ 145deg,
1058
+ color-mix(in oklab, var(--cf-surface) 94%, #f4f6ff),
1059
+ color-mix(in oklab, var(--cf-surface) 78%, #eff1ff)
1060
+ );
1061
+ box-shadow:
1062
+ inset 0 1px 0 color-mix(in oklab, #fff 90%, transparent),
1063
+ 0 1rem 2.5rem color-mix(in oklab, #5461bf 9%, transparent);
1064
+ }
1065
+
1066
+ .dark .cf-feature {
1067
+ background: linear-gradient(
1068
+ 145deg,
1069
+ color-mix(in oklab, var(--cf-surface) 92%, #181b2d),
1070
+ color-mix(in oklab, var(--cf-surface) 84%, #121725)
1071
+ );
1072
+ box-shadow:
1073
+ inset 0 1px 0 rgb(255 255 255 / 5%),
1074
+ 0 1rem 2.5rem rgb(0 0 0 / 24%);
1075
+ }
1076
+
1077
+ .dark .cf-feature h3 {
1078
+ color: var(--cf-ink);
1079
+ }
1080
+
1081
+ .cf-feature-icon {
1082
+ display: inline-flex;
1083
+ width: 3rem;
1084
+ height: 3rem;
1085
+ align-items: center;
1086
+ justify-content: center;
1087
+ color: #5b62ed;
1088
+ border-radius: 0.75rem;
1089
+ background: color-mix(in oklab, #7467f4 14%, var(--cf-surface));
1090
+ }
1091
+
1092
+ .dark .cf-feature-icon {
1093
+ background: color-mix(in oklab, #786af8 24%, var(--cf-surface));
1094
+ }
1095
+
1096
+ .cf-feature-icon svg {
1097
+ width: 2.5rem;
1098
+ height: 2.5rem;
1099
+ }
1100
+
1101
+ .cf-feature-icon img {
1102
+ display: block;
1103
+ width: 2.5rem;
1104
+ height: 2.5rem;
1105
+ object-fit: contain;
1106
+ }
1107
+
1108
+ .cf-feature h3 {
1109
+ margin: 1.2rem 0 0.4rem;
1110
+ color: color-mix(in oklab, var(--cf-ink) 92%, #0d1a55);
1111
+ font-size: 1.08rem;
1112
+ letter-spacing: -0.015em;
1113
+ }
1114
+
1115
+ .cf-feature p {
1116
+ margin: 0;
1117
+ color: var(--cf-ink-secondary);
1118
+ font-size: 0.86rem;
1119
+ line-height: 1.62;
1120
+ }
1121
+
1122
+ @keyframes cf-home-visual-float {
1123
+ 0%,
1124
+ 100% {
1125
+ transform: translate3d(0, 0, 0);
1126
+ }
1127
+ 50% {
1128
+ transform: translate3d(0, -0.55rem, 0);
1129
+ }
1130
+ }
1131
+
1132
+ /* Search and source overlays: material belongs to transient UI only. */
1133
+ .cf-search-modal,
1134
+ .cf-source-sheet {
1135
+ position: fixed;
1136
+ inset: 0;
1137
+ z-index: 100;
1138
+ }
1139
+
1140
+ .cf-search-modal[hidden],
1141
+ .cf-source-sheet[hidden] {
1142
+ display: none;
1143
+ }
1144
+
1145
+ .cf-search-backdrop,
1146
+ .cf-source-backdrop {
1147
+ position: absolute;
1148
+ inset: 0;
1149
+ width: 100%;
1150
+ height: 100%;
1151
+ padding: 0;
1152
+ background: var(--cf-overlay);
1153
+ cursor: default;
1154
+ }
1155
+
1156
+ .cf-search-panel,
1157
+ .cf-source-panel {
1158
+ position: absolute;
1159
+ z-index: 1;
1160
+ overflow: hidden;
1161
+ border-radius: var(--cf-radius-lg);
1162
+ background: color-mix(in srgb, var(--cf-surface-elevated) 94%, transparent);
1163
+ box-shadow: var(--cf-shadow-raised);
1164
+ backdrop-filter: blur(var(--cf-glass-blur));
1165
+ }
1166
+
1167
+ .cf-search-panel {
1168
+ top: 12dvh;
1169
+ left: 50%;
1170
+ width: min(620px, calc(100vw - 32px));
1171
+ max-height: 76dvh;
1172
+ transform: translateX(-50%);
1173
+ }
1174
+
1175
+ .cf-search-field {
1176
+ display: flex;
1177
+ align-items: center;
1178
+ gap: 9px;
1179
+ padding: 12px 14px;
1180
+ background: color-mix(in srgb, var(--cf-surface) 70%, transparent);
1181
+ }
1182
+
1183
+ .cf-search-input {
1184
+ min-width: 0;
1185
+ flex: 1;
1186
+ padding: 4px 0;
1187
+ border: 0;
1188
+ outline: 0;
1189
+ color: var(--cf-ink);
1190
+ background: transparent;
1191
+ }
1192
+
1193
+ .cf-search-close {
1194
+ padding: 5px 7px;
1195
+ border-radius: var(--cf-radius-sm);
1196
+ color: var(--cf-ink-secondary);
1197
+ background: var(--cf-surface-secondary);
1198
+ cursor: pointer;
1199
+ }
1200
+
1201
+ .cf-search-body {
1202
+ max-height: calc(76dvh - var(--cf-header-height));
1203
+ overflow: auto;
1204
+ padding: 10px;
1205
+ }
1206
+
1207
+ .cf-search-section-label {
1208
+ margin: 7px 8px;
1209
+ color: var(--cf-ink-tertiary);
1210
+ font-size: 0.72rem;
1211
+ font-weight: 700;
1212
+ letter-spacing: 0.07em;
1213
+ text-transform: uppercase;
1214
+ }
1215
+
1216
+ .cf-command-item,
1217
+ .cf-search-result {
1218
+ display: flex;
1219
+ align-items: center;
1220
+ width: 100%;
1221
+ border-radius: var(--cf-radius-sm);
1222
+ color: var(--cf-ink-body);
1223
+ background: transparent;
1224
+ text-align: start;
1225
+ text-decoration: none;
1226
+ cursor: pointer;
1227
+ }
1228
+
1229
+ .cf-command-item {
1230
+ gap: 10px;
1231
+ padding: 10px;
1232
+ }
1233
+
1234
+ .cf-search-result {
1235
+ align-items: flex-start;
1236
+ gap: 12px;
1237
+ padding: 11px 12px;
1238
+ }
1239
+
1240
+ .cf-command-item:hover {
1241
+ color: var(--cf-accent-500);
1242
+ background: var(--cf-accent-soft);
1243
+ }
1244
+
1245
+ .cf-search-result:hover {
1246
+ background: color-mix(in srgb, var(--cf-accent-500) 7%, transparent);
1247
+ }
1248
+
1249
+ .cf-command-glyph {
1250
+ display: inline-grid;
1251
+ flex: 0 0 32px;
1252
+ width: 32px;
1253
+ height: 32px;
1254
+ place-items: center;
1255
+ border-radius: var(--cf-radius-sm);
1256
+ color: var(--cf-accent-500);
1257
+ background: var(--cf-accent-soft);
1258
+ font: 700 0.72rem/1 var(--cf-font-mono);
1259
+ }
1260
+
1261
+ .cf-search-result-copy {
1262
+ min-width: 0;
1263
+ flex: 1;
1264
+ }
1265
+
1266
+ .cf-search-result strong,
1267
+ .cf-search-result small {
1268
+ display: block;
1269
+ }
1270
+
1271
+ .cf-search-result strong {
1272
+ color: var(--cf-ink);
1273
+ font-size: 0.94rem;
1274
+ line-height: 1.35;
1275
+ }
1276
+
1277
+ .cf-search-result small {
1278
+ display: -webkit-box;
1279
+ overflow: hidden;
1280
+ margin-top: 3px;
1281
+ color: var(--cf-ink-secondary);
1282
+ font-size: 0.82rem;
1283
+ line-height: 1.5;
1284
+ -webkit-box-orient: vertical;
1285
+ -webkit-line-clamp: 2;
1286
+ }
1287
+
1288
+ .cf-search-result mark {
1289
+ padding: 0 0.08em;
1290
+ border-radius: 2px;
1291
+ color: inherit;
1292
+ background: color-mix(in srgb, var(--cf-warning) 24%, transparent);
1293
+ }
1294
+
1295
+ .cf-search-result-arrow {
1296
+ flex: 0 0 auto;
1297
+ margin-top: 1px;
1298
+ color: var(--cf-ink-tertiary);
1299
+ font-size: 1rem;
1300
+ line-height: 1.25;
1301
+ }
1302
+
1303
+ .cf-search-result:hover .cf-search-result-arrow {
1304
+ color: var(--cf-accent-500);
1305
+ }
1306
+
1307
+ .cf-command-item strong,
1308
+ .cf-command-item small {
1309
+ display: block;
1310
+ }
1311
+
1312
+ .cf-command-item strong {
1313
+ font-size: 0.86rem;
1314
+ }
1315
+
1316
+ .cf-command-item small {
1317
+ margin-top: 2px;
1318
+ color: var(--cf-ink-secondary);
1319
+ font-size: 0.74rem;
1320
+ }
1321
+
1322
+ .cf-search-results[hidden] {
1323
+ display: none;
1324
+ }
1325
+
1326
+ .cf-search-empty {
1327
+ padding: 32px 12px;
1328
+ color: var(--cf-ink-secondary);
1329
+ text-align: center;
1330
+ }
1331
+
1332
+ .cf-source-panel {
1333
+ inset: 24px 24px 24px auto;
1334
+ display: flex;
1335
+ flex-direction: column;
1336
+ width: min(680px, calc(100vw - 48px));
1337
+ }
1338
+
1339
+ .cf-source-head {
1340
+ display: flex;
1341
+ align-items: center;
1342
+ justify-content: space-between;
1343
+ gap: 10px;
1344
+ padding: 14px 16px;
1345
+ }
1346
+
1347
+ .cf-source-head p {
1348
+ margin: 0;
1349
+ color: var(--cf-ink);
1350
+ font-weight: 700;
1351
+ }
1352
+
1353
+ .cf-source-head span {
1354
+ display: block;
1355
+ margin-top: 3px;
1356
+ color: var(--cf-ink-secondary);
1357
+ font: 0.72rem/1.3 var(--cf-font-mono);
1358
+ }
1359
+
1360
+ .cf-source-actions {
1361
+ display: inline-flex;
1362
+ gap: 5px;
1363
+ }
1364
+
1365
+ .cf-source-panel textarea {
1366
+ min-height: 0;
1367
+ flex: 1;
1368
+ width: 100%;
1369
+ resize: none;
1370
+ padding: 18px;
1371
+ outline: 0;
1372
+ color: var(--cf-code-ink);
1373
+ background: var(--cf-surface-code);
1374
+ font: 0.8rem/1.65 var(--cf-font-mono);
1375
+ }
1376
+
1377
+ .cf-not-found {
1378
+ display: grid;
1379
+ min-height: 100dvh;
1380
+ place-content: center;
1381
+ gap: 8px;
1382
+ padding: 32px;
1383
+ background: var(--cf-surface);
1384
+ text-align: center;
1385
+ }
1386
+
1387
+ .cf-not-found-code {
1388
+ color: var(--cf-accent-500);
1389
+ font: 700 clamp(4rem, 12vw, 8rem)/0.9 var(--cf-font-display);
1390
+ letter-spacing: -0.08em;
1391
+ }
1392
+
1393
+ .cf-not-found-title {
1394
+ margin: 0;
1395
+ color: var(--cf-ink);
1396
+ font-size: 1.7rem;
1397
+ }
1398
+
1399
+ .cf-not-found-desc {
1400
+ margin: 0;
1401
+ color: var(--cf-ink-secondary);
1402
+ }
1403
+
1404
+ .cf-not-found-link {
1405
+ justify-self: center;
1406
+ margin-top: 10px;
1407
+ padding: 9px 13px;
1408
+ border-radius: var(--cf-radius-md);
1409
+ color: #fff;
1410
+ background: var(--cf-accent-500);
1411
+ text-decoration: none;
1412
+ }
1413
+
1414
+ .cf-not-found-link:hover {
1415
+ background: var(--cf-accent-700);
1416
+ }
1417
+
1418
+ .cf-sidebar-backdrop {
1419
+ display: none;
1420
+ }
1421
+
1422
+ @media (max-width: 73.75rem) {
1423
+ :root {
1424
+ --cf-outline-width: 17.5rem;
1425
+ }
1426
+ }
1427
+
1428
+ @media (max-width: 61.25rem) {
1429
+ .cf-shell {
1430
+ grid-template-columns: var(--cf-sidebar-width) minmax(0, 1fr);
1431
+ }
1432
+
1433
+ .cf-outline {
1434
+ display: none;
1435
+ }
1436
+ }
1437
+
1438
+ @media (max-width: 52.5rem) {
1439
+ .cf-sidebar-toggle {
1440
+ display: inline-flex;
1441
+ }
1442
+ .cf-header-inner {
1443
+ display: flex;
1444
+ padding-inline: 16px;
1445
+ gap: 12px;
1446
+ }
1447
+
1448
+ .cf-header-nav {
1449
+ display: none;
1450
+ }
1451
+
1452
+ .cf-search-trigger {
1453
+ justify-self: auto;
1454
+ width: auto;
1455
+ margin-inline-start: 8px;
1456
+ }
1457
+
1458
+ .cf-search-trigger > span {
1459
+ display: none;
1460
+ }
1461
+
1462
+ .cf-shell {
1463
+ display: block;
1464
+ }
1465
+
1466
+ .cf-sidebar {
1467
+ position: fixed;
1468
+ inset: var(--cf-header-height) auto 0 0;
1469
+ z-index: 60;
1470
+ width: min(var(--cf-sidebar-width), 84vw);
1471
+ transform: translateX(-102%);
1472
+ transition: transform var(--cf-duration-normal) var(--cf-easing-spring);
1473
+ }
1474
+
1475
+ .cf-sidebar[data-open='true'] {
1476
+ transform: translateX(0);
1477
+ }
1478
+
1479
+ .cf-sidebar-primary-nav {
1480
+ display: grid;
1481
+ gap: 0.125rem;
1482
+ padding: 1rem 0.875rem 0.5rem;
1483
+ }
1484
+
1485
+ .cf-sidebar-primary-link {
1486
+ display: flex;
1487
+ align-items: center;
1488
+ min-height: 2.75rem;
1489
+ padding: 0.625rem;
1490
+ border-radius: var(--cf-radius-sm);
1491
+ color: var(--cf-ink-secondary);
1492
+ font-size: 0.9375rem;
1493
+ text-decoration: none;
1494
+ transition: color var(--cf-duration-fast) var(--cf-easing-default);
1495
+ }
1496
+
1497
+ .cf-sidebar-primary-link:hover,
1498
+ .cf-sidebar-primary-link-active {
1499
+ color: var(--cf-accent-500);
1500
+ }
1501
+
1502
+ .cf-sidebar-primary-nav + .cf-sidebar-nav {
1503
+ padding-top: 0.5rem;
1504
+ }
1505
+
1506
+ .cf-sidebar-backdrop {
1507
+ position: fixed;
1508
+ inset: var(--cf-header-height) 0 0;
1509
+ z-index: 50;
1510
+ width: 100%;
1511
+ background: var(--cf-overlay);
1512
+ }
1513
+
1514
+ .cf-sidebar-backdrop:not([hidden]) {
1515
+ display: block;
1516
+ }
1517
+
1518
+ .cf-main {
1519
+ min-height: calc(100dvh - var(--cf-header-height));
1520
+ }
1521
+
1522
+ .cf-playground-main {
1523
+ height: calc(100dvh - var(--cf-header-height));
1524
+ }
1525
+
1526
+ .cf-header-hidden .cf-playground-main {
1527
+ height: 100dvh;
1528
+ }
1529
+
1530
+ .cf-playground {
1531
+ grid-template-columns: minmax(0, 1fr);
1532
+ grid-template-rows: minmax(0, 1fr);
1533
+ }
1534
+
1535
+ .cf-playground-toggle {
1536
+ position: absolute;
1537
+ z-index: 5;
1538
+ inset-block-start: 0.75rem;
1539
+ inset-inline-end: 0.75rem;
1540
+ display: inline-flex;
1541
+ align-items: center;
1542
+ justify-content: center;
1543
+ width: 2.25rem;
1544
+ height: 2.25rem;
1545
+ border: 0;
1546
+ color: var(--cf-ink-secondary);
1547
+ background: transparent;
1548
+ cursor: pointer;
1549
+ opacity: 1;
1550
+ transition: color var(--cf-duration-fast) var(--cf-easing-default);
1551
+ }
1552
+
1553
+ .cf-playground-toggle:hover {
1554
+ color: var(--cf-ink);
1555
+ }
1556
+
1557
+ .cf-playground-toggle:focus-visible {
1558
+ outline: 2px solid var(--cf-accent-500);
1559
+ outline-offset: 2px;
1560
+ }
1561
+
1562
+ .cf-playground-toggle-preview {
1563
+ display: none;
1564
+ }
1565
+
1566
+ .cf-playground[data-view='source'] .cf-playground-toggle-source {
1567
+ display: none;
1568
+ }
1569
+
1570
+ .cf-playground[data-view='source'] .cf-playground-toggle-preview {
1571
+ display: block;
1572
+ }
1573
+
1574
+ .cf-playground-pane {
1575
+ display: none;
1576
+ grid-row: 1;
1577
+ }
1578
+
1579
+ .cf-playground-resizer {
1580
+ display: none;
1581
+ }
1582
+
1583
+ .cf-playground[data-view='source'] .cf-playground-source,
1584
+ .cf-playground[data-view='preview'] .cf-playground-preview {
1585
+ display: grid;
1586
+ }
1587
+
1588
+ .cf-playground-source {
1589
+ border-inline-end: 0;
1590
+ }
1591
+
1592
+ .cf-hero {
1593
+ grid-template-columns: minmax(0, 1fr);
1594
+ }
1595
+
1596
+ .cf-hero-copy {
1597
+ max-width: 35rem;
1598
+ }
1599
+
1600
+ .cf-hero-visual {
1601
+ position: absolute;
1602
+ grid-column: auto;
1603
+ top: 50%;
1604
+ right: -8rem;
1605
+ width: 30rem;
1606
+ justify-self: auto;
1607
+ transform: translateY(-50%);
1608
+ opacity: 0.22;
1609
+ }
1610
+
1611
+ .dark .cf-hero-visual {
1612
+ opacity: 0.24;
1613
+ }
1614
+
1615
+ .cf-features {
1616
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1617
+ max-width: 45rem;
1618
+ }
1619
+ }
1620
+
1621
+ @media (max-width: 35rem) {
1622
+ .cf-header-inner {
1623
+ gap: 4px;
1624
+ padding-inline: 12px;
1625
+ }
1626
+
1627
+ .cf-brand-logo {
1628
+ max-width: min(7.5rem, 30vw);
1629
+ height: auto;
1630
+ max-height: 2.25rem;
1631
+ }
1632
+
1633
+ .cf-search-trigger {
1634
+ width: 36px;
1635
+ margin-inline-start: 0;
1636
+ padding: 8px;
1637
+ }
1638
+
1639
+ .cf-kbd {
1640
+ display: none;
1641
+ }
1642
+
1643
+ .cf-header-right {
1644
+ margin-inline-start: auto;
1645
+ }
1646
+
1647
+ .cf-version-badge {
1648
+ display: none;
1649
+ }
1650
+
1651
+ .cf-header-right {
1652
+ gap: 4px;
1653
+ }
1654
+
1655
+ .cf-hero {
1656
+ padding: 2rem 1.25rem 2.25rem;
1657
+ }
1658
+
1659
+ .cf-hero-copy {
1660
+ max-width: none;
1661
+ }
1662
+
1663
+ .cf-hero-title {
1664
+ font-size: clamp(3.1rem, 16vw, 4.25rem);
1665
+ }
1666
+
1667
+ .cf-hero-accent {
1668
+ font-size: clamp(1.45rem, 7vw, 1.85rem);
1669
+ }
1670
+
1671
+ .cf-hero-tagline {
1672
+ font-size: 0.94rem;
1673
+ }
1674
+
1675
+ .cf-hero-actions {
1676
+ align-items: stretch;
1677
+ flex-direction: column;
1678
+ }
1679
+
1680
+ .cf-btn {
1681
+ width: 100%;
1682
+ }
1683
+
1684
+ .cf-hero-visual {
1685
+ top: 4rem;
1686
+ right: -12rem;
1687
+ width: 26rem;
1688
+ transform: none;
1689
+ opacity: 0.12;
1690
+ }
1691
+
1692
+ .dark .cf-hero-visual {
1693
+ opacity: 0.14;
1694
+ }
1695
+
1696
+ .cf-feature-section {
1697
+ padding: 2rem 1.25rem;
1698
+ }
1699
+
1700
+ .cf-features {
1701
+ grid-template-columns: 1fr;
1702
+ }
1703
+
1704
+ .cf-feature {
1705
+ padding: 1.6rem 1.5rem 1.35rem;
1706
+ }
1707
+
1708
+ .cf-page-meta {
1709
+ align-items: flex-start;
1710
+ flex-direction: column-reverse;
1711
+ }
1712
+
1713
+ .cf-doc-pagination {
1714
+ grid-template-columns: 1fr;
1715
+ }
1716
+
1717
+ .cf-doc-pagination-link-next {
1718
+ text-align: start;
1719
+ }
1720
+
1721
+ .cf-source-panel {
1722
+ inset: 12px;
1723
+ width: auto;
1724
+ }
1725
+ }
1726
+
1727
+ @media (prefers-reduced-motion: reduce) {
1728
+ html {
1729
+ scroll-behavior: auto;
1730
+ }
1731
+
1732
+ *,
1733
+ *::before,
1734
+ *::after {
1735
+ transition-duration: 0.01ms !important;
1736
+ animation-duration: 0.01ms !important;
1737
+ animation-iteration-count: 1 !important;
1738
+ }
1739
+ }