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