@farthershore/farthershore-js 0.1.2 → 0.1.4

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