forgecad 0.9.14 → 0.9.15

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 (219) hide show
  1. package/LICENSE +6 -4
  2. package/README.md +8 -4
  3. package/dist/assets/{AdminPage-eWGs2K6H.js → AdminPage-CDyGUinA.js} +2 -2
  4. package/dist/assets/{BenchmarkPage-CTrLKfpo.js → BenchmarkPage-DfPMY_-d.js} +4 -15
  5. package/dist/assets/{BlogPage-5nPesyds.js → BlogPage-kF0fkdJT.js} +2 -2
  6. package/dist/assets/{DocsPage-C4Y3nbYc.js → DocsPage-B954L3YN.js} +9 -3
  7. package/dist/assets/EditorApp-Beb-IZ0y.js +14014 -0
  8. package/dist/assets/{EditorApp-BAnckbsk.css → EditorApp-CuDLxKqL.css} +698 -0
  9. package/dist/assets/{EmbedViewer-C8fB4n5U.js → EmbedViewer-C77B-TrF.js} +3 -3
  10. package/dist/assets/{LandingPageProofDriven-jSz0LaMM.js → LandingPageProofDriven-Cr6fXMDj.js} +35 -37
  11. package/dist/assets/LegalPage-BRlScr9A.css +91 -0
  12. package/dist/assets/LegalPage-Dzklqmmg.js +39 -0
  13. package/dist/assets/{PricingPage-BMedqFef.css → PricingPage-BPF6HKyO.css} +25 -0
  14. package/dist/assets/{PricingPage-B83B90zh.js → PricingPage-zWXkvlwl.js} +19 -19
  15. package/dist/assets/{SettingsPage-DY889pcu.js → SettingsPage-Bz0of4KQ.js} +2 -2
  16. package/dist/assets/app-CE3sYcV7.css +3890 -0
  17. package/dist/assets/{app-bEww1ic4.js → app-D3kDkggg.js} +2293 -946
  18. package/dist/assets/cli/{render-Cho2uKG_.js → render-DSY3mMQa.js} +337 -7
  19. package/dist/assets/{constructionHistoryWorker-HYwzJY4m.js → constructionHistoryWorker-gpDo-uH2.js} +927 -243
  20. package/dist/assets/{evalWorker-CjQwJSE-.js → evalWorker-CU0Ke6DP.js} +7800 -4164
  21. package/dist/assets/{forgecad_geometry-CH2nvuLA.js → forgecad_geometry-Dgceylq9.js} +43 -1
  22. package/dist/assets/forgecad_geometry_bg-dD4RNQF1.wasm +0 -0
  23. package/dist/assets/{inspectWorker-DeRnMVv1.js → inspectWorker-COyp8XXA.js} +927 -243
  24. package/dist/assets/{javascript-70-4uGcz.js → javascript-1kQXfVaz.js} +1 -1
  25. package/dist/assets/landing-proof-driven-DiGqdtWa.js +18 -0
  26. package/dist/assets/{landing-proof-driven-oFYW6mjz.css → landing-proof-driven-ORyigZ6p.css} +13 -7
  27. package/dist/assets/legalContent-ZfFGMmi4.js +251 -0
  28. package/dist/assets/{manifold-CG9Fokx-.js → manifold-BRI5prcH.js} +1 -1
  29. package/dist/assets/{manifold-uRzgk5O8.js → manifold-C-3h2M7p.js} +2 -2
  30. package/dist/assets/{manifold-rmfAcdwF.js → manifold-DNkrUWpA.js} +1 -1
  31. package/dist/assets/{reportWorker-4cW_ZpoS.js → reportWorker-CdBz5bNg.js} +7538 -10857
  32. package/dist/assets/{scalar-sampling-budget-CfDiFvh7.js → scalar-sampling-budget-wJF98aY9.js} +6935 -4331
  33. package/dist/assets/{scanProxyWorker-Bs2TDgLw.js → scanProxyWorker-B-9VbLIs.js} +32 -1
  34. package/dist/assets/{solver-DuJAO8S6.js → solver-BZ9LPTHs.js} +1 -1
  35. package/dist/assets/solver_bg-DAHZJ_rw.wasm +0 -0
  36. package/dist/assets/{targets-D6PWsv6X.js → targets-B9sGB5nB.js} +1 -1
  37. package/dist/assets/{vendor-react-Da3A2QmU.js → vendor-react-6j1Kke-Y.js} +6 -5
  38. package/dist/cli/render.html +1 -1
  39. package/dist/docs/index.html +2 -2
  40. package/dist/docs-raw/AI/ai-native-cad.md +50 -0
  41. package/dist/docs-raw/AI/usage.md +3 -12
  42. package/dist/docs-raw/CLI.md +30 -10
  43. package/dist/docs-raw/component-model.md +27 -11
  44. package/dist/docs-raw/generated/assembly.md +301 -212
  45. package/dist/docs-raw/generated/concepts.md +235 -237
  46. package/dist/docs-raw/generated/core.md +283 -6
  47. package/dist/docs-raw/generated/curves.md +274 -361
  48. package/dist/docs-raw/generated/lib.md +7 -1
  49. package/dist/docs-raw/generated/output.md +19 -4
  50. package/dist/docs-raw/generated/runtime-names.md +41 -0
  51. package/dist/docs-raw/generated/sdf.md +31 -0
  52. package/dist/docs-raw/generated/sheet-metal.md +9 -0
  53. package/dist/docs-raw/generated/sketch.md +44 -1
  54. package/dist/docs-raw/generated/viewport.md +11 -3
  55. package/dist/docs-raw/guides/coordinate-system.md +20 -16
  56. package/dist/docs-raw/guides/geometry-conventions.md +2 -2
  57. package/dist/docs-raw/guides/inspection-bundles.md +2 -1
  58. package/dist/docs-raw/guides/joint-design.md +24 -0
  59. package/dist/docs-raw/guides/positioning.md +13 -3
  60. package/dist/docs-raw/legal/privacy.md +63 -0
  61. package/dist/docs-raw/legal/software-license.md +55 -0
  62. package/dist/docs-raw/legal/terms.md +87 -0
  63. package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +1 -1
  64. package/dist/docs-raw/skills/forgecad-blockout-model.md +1 -1
  65. package/dist/docs-raw/skills/forgecad-component-model.md +11 -2
  66. package/dist/docs-raw/skills/forgecad-high-level-spec.md +1 -1
  67. package/dist/docs-raw/skills/forgecad-image-replicator.md +8 -8
  68. package/dist/docs-raw/skills/forgecad-lld.md +1 -1
  69. package/dist/docs-raw/skills/forgecad-make-a-model.md +1 -1
  70. package/dist/docs-raw/skills/forgecad-model-grader.md +2 -2
  71. package/dist/docs-raw/skills/forgecad-prepare-prompt.md +2 -2
  72. package/dist/docs-raw/skills/forgecad-project.md +1 -1
  73. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +1 -1
  74. package/dist/docs-raw/skills/forgecad-render-inspect.md +4 -2
  75. package/dist/docs-raw/skills/forgecad-visual-spec.md +1 -1
  76. package/dist/docs-raw/skills/forgecad.md +4 -3
  77. package/dist/index.html +40 -12
  78. package/dist/llms.txt +8 -0
  79. package/dist/site.webmanifest +1 -1
  80. package/dist/sitemap.xml +49 -13
  81. package/dist-cli/{check-compiler-U5SOPN7X.js → check-compiler-SDX5QIXI.js} +1 -2
  82. package/dist-cli/{check-query-propagation-XOKNSSYU.js → check-query-propagation-EAYEFT77.js} +1 -2
  83. package/dist-cli/{chunk-EXWGNL6K.js → chunk-N4O47JLF.js} +12540 -9046
  84. package/dist-cli/forgecad.js +1786 -679
  85. package/dist-cli/{forgecad_geometry-GYVNKPIE.js → forgecad_geometry-QOQIIP53.js} +42 -1
  86. package/dist-cli/forgecad_geometry_bg.wasm +0 -0
  87. package/dist-cli/{solver-46FFSK2U.js → solver-OK4HECRH.js} +0 -1
  88. package/dist-cli/solver_bg.wasm +0 -0
  89. package/dist-skill/CONTEXT.md +1117 -721
  90. package/dist-skill/SKILL.md +3 -2
  91. package/dist-skill/docs/API/core/concepts.md +64 -1
  92. package/dist-skill/docs/CLI.md +30 -10
  93. package/dist-skill/docs/generated/assembly.md +277 -229
  94. package/dist-skill/docs/generated/core.md +283 -6
  95. package/dist-skill/docs/generated/curves.md +272 -362
  96. package/dist-skill/docs/generated/lib.md +7 -1
  97. package/dist-skill/docs/generated/output.md +19 -4
  98. package/dist-skill/docs/generated/runtime-names.md +41 -0
  99. package/dist-skill/docs/generated/sdf.md +31 -0
  100. package/dist-skill/docs/generated/sheet-metal.md +9 -0
  101. package/dist-skill/docs/generated/sketch.md +44 -2
  102. package/dist-skill/docs/generated/viewport.md +2 -87
  103. package/dist-skill/docs/guides/coordinate-system.md +20 -16
  104. package/dist-skill/docs/guides/geometry-conventions.md +2 -2
  105. package/dist-skill/docs/guides/inspection-bundles.md +2 -1
  106. package/dist-skill/docs/guides/joint-design.md +24 -0
  107. package/dist-skill/docs/guides/positioning.md +13 -3
  108. package/dist-skill/library/forgecad-component-model/SKILL.md +10 -1
  109. package/dist-skill/library/forgecad-image-replicator/SKILL.md +6 -6
  110. package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.py +166 -0
  111. package/dist-skill/library/forgecad-model-grader/SKILL.md +1 -1
  112. package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +1 -1
  113. package/dist-skill/library/forgecad-render-inspect/SKILL.md +3 -1
  114. package/examples/api/assembly-kinematics-foundation.forge.js +65 -0
  115. package/examples/api/assembly-kinematics-four-bar.forge.js +115 -0
  116. package/examples/api/assembly-kinematics-limb.forge.js +116 -0
  117. package/examples/api/connector-frame-rig-chain.forge.js +102 -0
  118. package/examples/api/exact-sheet-shell-assembly.forge.js +0 -2
  119. package/examples/api/exact-surface-studio.forge.js +6 -8
  120. package/examples/api/helix-basics.forge.js +6 -6
  121. package/examples/api/lean-foundations/README.md +12 -0
  122. package/examples/api/lean-foundations/curve-blend-exact.forge.js +22 -0
  123. package/examples/api/lean-foundations/curve-fit-interpolation.forge.js +18 -0
  124. package/examples/api/lean-foundations/curve-helix-canonicalization.forge.js +27 -0
  125. package/examples/api/lean-foundations/curve-route-canonicalization.forge.js +16 -0
  126. package/examples/api/lean-foundations/curve-trim-reverse.forge.js +24 -0
  127. package/examples/api/lean-foundations/exact-curve-arc.forge.js +36 -0
  128. package/examples/api/mixed-edge-finishes-proof.forge.js +8 -11
  129. package/examples/api/route3d-elbow.forge.js +68 -0
  130. package/examples/api/transition-curves.forge.js +44 -15
  131. package/examples/api/y-blend-corner-showcase.forge.js +0 -2
  132. package/examples/generative/coral-vase.forge.js +1 -1
  133. package/examples/nurbs-tube.forge.js +1 -1
  134. package/package.json +14 -13
  135. package/dist/assets/EditorApp-lXv53A1m.js +0 -13610
  136. package/dist/assets/app-CsHnaBWt.css +0 -1789
  137. package/dist/assets/forgecad_geometry_bg-C5_E9Oa9.wasm +0 -0
  138. package/dist/assets/solver_bg-CWvv4lnN.wasm +0 -0
  139. package/dist/docs-raw/API/README.md +0 -16
  140. package/dist/docs-raw/API/core/concepts.md +0 -118
  141. package/dist/docs-raw/INDEX.md +0 -138
  142. package/dist/docs-raw/RELEASING.md +0 -87
  143. package/dist/docs-raw/agent-native-api.md +0 -27
  144. package/dist/docs-raw/beta-deployment.md +0 -304
  145. package/dist/docs-raw/beta-operations.md +0 -325
  146. package/dist/docs-raw/blueprint-first.md +0 -145
  147. package/dist/docs-raw/cli-monetization.md +0 -112
  148. package/dist/docs-raw/coding-best-practices.md +0 -120
  149. package/dist/docs-raw/coding.md +0 -340
  150. package/dist/docs-raw/deployment.md +0 -374
  151. package/dist/docs-raw/guides/skill-maintenance.md +0 -161
  152. package/dist/docs-raw/guides/surface-members.md +0 -82
  153. package/dist/docs-raw/harbor-cli.md +0 -854
  154. package/dist/docs-raw/internals/backend-vocabulary.md +0 -35
  155. package/dist/docs-raw/internals/compiler.md +0 -307
  156. package/dist/docs-raw/internals/constraint-solver-quality.md +0 -161
  157. package/dist/docs-raw/internals/constraint-solver.md +0 -176
  158. package/dist/docs-raw/internals/shape-from-slices.md +0 -152
  159. package/dist/docs-raw/internals/sketch-2d-pipeline.md +0 -108
  160. package/dist/docs-raw/platform/admin.md +0 -45
  161. package/dist/docs-raw/platform/architecture.md +0 -82
  162. package/dist/docs-raw/platform/auth.md +0 -139
  163. package/dist/docs-raw/platform/email.md +0 -67
  164. package/dist/docs-raw/platform/google-oauth-setup.md +0 -88
  165. package/dist/docs-raw/platform/observability.md +0 -197
  166. package/dist/docs-raw/platform/projects.md +0 -111
  167. package/dist/docs-raw/platform/sharing.md +0 -90
  168. package/dist/docs-raw/product/README.md +0 -39
  169. package/dist/docs-raw/product/api-as-product-language.md +0 -13
  170. package/dist/docs-raw/product/business-model.md +0 -15
  171. package/dist/docs-raw/product/competitive-positioning.md +0 -17
  172. package/dist/docs-raw/product/creative-manufacturing.md +0 -15
  173. package/dist/docs-raw/product/founder-story.md +0 -11
  174. package/dist/docs-raw/product/manufacturing-workflows.md +0 -15
  175. package/dist/docs-raw/product/onboarding-first-experience.md +0 -256
  176. package/dist/docs-raw/product/product-loop.md +0 -17
  177. package/dist/docs-raw/product/strategic-decisions.md +0 -22
  178. package/dist/docs-raw/product/user-outreach-email-templates.md +0 -161
  179. package/dist/docs-raw/product/user-segments.md +0 -15
  180. package/dist/docs-raw/product/vision.md +0 -26
  181. package/dist/docs-raw/rl-environments.md +0 -350
  182. package/dist/docs-raw/runbook.md +0 -611
  183. package/dist-cli/check-compiler-U5SOPN7X.js.map +0 -1
  184. package/dist-cli/check-query-propagation-XOKNSSYU.js.map +0 -1
  185. package/dist-cli/chunk-EXWGNL6K.js.map +0 -1
  186. package/dist-cli/forgecad.js.map +0 -1
  187. package/dist-cli/forgecad_geometry-GYVNKPIE.js.map +0 -1
  188. package/dist-cli/solver-46FFSK2U.js.map +0 -1
  189. package/dist-skill/SKILL-dev.md +0 -145
  190. package/dist-skill/docs-dev/API/core/concepts.md +0 -118
  191. package/dist-skill/docs-dev/CLI.md +0 -677
  192. package/dist-skill/docs-dev/agent-native-api.md +0 -27
  193. package/dist-skill/docs-dev/blueprint-first.md +0 -145
  194. package/dist-skill/docs-dev/coding-best-practices.md +0 -120
  195. package/dist-skill/docs-dev/coding.md +0 -340
  196. package/dist-skill/docs-dev/component-model.md +0 -164
  197. package/dist-skill/docs-dev/generated/assembly.md +0 -794
  198. package/dist-skill/docs-dev/generated/core.md +0 -2117
  199. package/dist-skill/docs-dev/generated/curves.md +0 -2583
  200. package/dist-skill/docs-dev/generated/lib.md +0 -169
  201. package/dist-skill/docs-dev/generated/output.md +0 -247
  202. package/dist-skill/docs-dev/generated/sdf.md +0 -446
  203. package/dist-skill/docs-dev/generated/sheet-metal.md +0 -504
  204. package/dist-skill/docs-dev/generated/sketch.md +0 -1811
  205. package/dist-skill/docs-dev/generated/viewport.md +0 -585
  206. package/dist-skill/docs-dev/generated/wood.md +0 -108
  207. package/dist-skill/docs-dev/guides/coordinate-system.md +0 -46
  208. package/dist-skill/docs-dev/guides/geometry-conventions.md +0 -52
  209. package/dist-skill/docs-dev/guides/inspection-bundles.md +0 -485
  210. package/dist-skill/docs-dev/guides/joint-design.md +0 -78
  211. package/dist-skill/docs-dev/guides/modeling-recipes.md +0 -78
  212. package/dist-skill/docs-dev/guides/positioning.md +0 -161
  213. package/dist-skill/docs-dev/guides/skill-maintenance.md +0 -161
  214. package/dist-skill/docs-dev/internals/backend-vocabulary.md +0 -35
  215. package/dist-skill/docs-dev/internals/compiler.md +0 -307
  216. package/dist-skill/docs-dev/internals/constraint-solver-quality.md +0 -161
  217. package/dist-skill/docs-dev/internals/constraint-solver.md +0 -176
  218. package/dist-skill/docs-dev/internals/sketch-2d-pipeline.md +0 -108
  219. package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.mjs +0 -289
@@ -1,1789 +0,0 @@
1
- /* ============================================================
2
- ForgeCAD — Global UI Polish Layer
3
- Adds transitions, hover states, custom scrollbars, and micro-
4
- interactions to every interactive element in the app.
5
- ============================================================ */
6
-
7
- /* --- Selection color --- */
8
- ::selection {
9
- background: var(--fc-accent);
10
- color: var(--fc-accentText);
11
- }
12
-
13
- /* --- Custom scrollbars (WebKit + Firefox) --- */
14
- ::-webkit-scrollbar {
15
- width: 8px;
16
- height: 8px;
17
- }
18
- ::-webkit-scrollbar-track {
19
- background: transparent;
20
- }
21
- ::-webkit-scrollbar-thumb {
22
- background: var(--fc-border);
23
- border-radius: 4px;
24
- border: 2px solid transparent;
25
- background-clip: content-box;
26
- }
27
- ::-webkit-scrollbar-thumb:hover {
28
- background: var(--fc-textDim);
29
- border: 2px solid transparent;
30
- background-clip: content-box;
31
- }
32
- ::-webkit-scrollbar-corner {
33
- background: transparent;
34
- }
35
- /* Firefox */
36
- * {
37
- scrollbar-width: thin;
38
- scrollbar-color: var(--fc-border) transparent;
39
- }
40
-
41
- /* --- Universal interactive element transitions --- */
42
- button,
43
- [role="button"],
44
- a,
45
- input,
46
- select,
47
- textarea {
48
- transition:
49
- background 0.15s ease,
50
- color 0.15s ease,
51
- border-color 0.15s ease,
52
- box-shadow 0.15s ease,
53
- opacity 0.15s ease,
54
- transform 0.1s ease;
55
- }
56
-
57
- /* --- Button hover/active/focus states --- */
58
- button:not(:disabled):hover,
59
- [role="button"]:not(:disabled):hover {
60
- filter: brightness(1.15);
61
- }
62
- button:not(:disabled):active,
63
- [role="button"]:not(:disabled):active {
64
- transform: scale(0.97);
65
- }
66
- button:focus-visible,
67
- [role="button"]:focus-visible,
68
- a:focus-visible,
69
- input:focus-visible,
70
- select:focus-visible,
71
- textarea:focus-visible {
72
- outline: 2px solid var(--fc-accent);
73
- outline-offset: 1px;
74
- }
75
- button:disabled {
76
- opacity: 0.5;
77
- cursor: not-allowed;
78
- }
79
-
80
- /* --- fc-btn: Themed button class for toolbar/panel buttons --- */
81
- .fc-btn {
82
- padding: 4px 10px;
83
- background: transparent;
84
- color: var(--fc-textMuted);
85
- border: 1px solid var(--fc-border);
86
- border-radius: 4px;
87
- cursor: pointer;
88
- font-size: 12px;
89
- font-family: inherit;
90
- display: inline-flex;
91
- align-items: center;
92
- gap: 5px;
93
- line-height: 1;
94
- white-space: nowrap;
95
- user-select: none;
96
- }
97
- .fc-btn:hover {
98
- background: var(--fc-bgHover);
99
- color: var(--fc-text);
100
- border-color: var(--fc-textDim);
101
- }
102
- .fc-btn:active {
103
- background: var(--fc-bgActive);
104
- }
105
- /* Card-style button: stacked title + description, full-width */
106
- .fc-btn.fc-btn-card {
107
- display: flex;
108
- flex-direction: column;
109
- align-items: flex-start;
110
- white-space: normal;
111
- width: 100%;
112
- text-align: left;
113
- padding: 8px 12px;
114
- gap: 2px;
115
- }
116
- .fc-btn-card .fc-btn-card-title {
117
- font-weight: 600;
118
- line-height: 1.3;
119
- }
120
- .fc-btn-card .fc-btn-card-desc {
121
- font-size: 11px;
122
- color: var(--fc-textDim);
123
- line-height: 1.3;
124
- }
125
- .fc-btn.active {
126
- background: var(--fc-accent);
127
- color: var(--fc-accentText);
128
- border-color: var(--fc-accent);
129
- }
130
- .fc-btn.active:hover {
131
- filter: brightness(1.1);
132
- }
133
-
134
- /* --- App crash recovery --- */
135
- .fc-crash-shell {
136
- position: relative;
137
- min-height: 100vh;
138
- padding: calc(env(safe-area-inset-top, 0px) + 24px) 16px calc(env(safe-area-inset-bottom, 0px) + 24px);
139
- display: flex;
140
- align-items: center;
141
- justify-content: center;
142
- overflow: auto;
143
- background:
144
- radial-gradient(circle at top left, color-mix(in srgb, var(--fc-accent) 20%, transparent), transparent 38%),
145
- radial-gradient(circle at bottom right, color-mix(in srgb, var(--fc-error) 22%, transparent), transparent 34%),
146
- linear-gradient(180deg, var(--fc-bg), var(--fc-bgOverlay));
147
- color: var(--fc-text);
148
- }
149
-
150
- .fc-crash-orb {
151
- position: fixed;
152
- border-radius: 999px;
153
- filter: blur(42px);
154
- opacity: 0.5;
155
- pointer-events: none;
156
- }
157
-
158
- .fc-crash-orb--one {
159
- width: 220px;
160
- height: 220px;
161
- top: 8vh;
162
- left: -60px;
163
- background: color-mix(in srgb, var(--fc-accent) 55%, transparent);
164
- }
165
-
166
- .fc-crash-orb--two {
167
- width: 260px;
168
- height: 260px;
169
- right: -80px;
170
- bottom: 6vh;
171
- background: color-mix(in srgb, var(--fc-error) 42%, transparent);
172
- }
173
-
174
- .fc-crash-panel {
175
- position: relative;
176
- width: min(720px, 100%);
177
- padding: 22px;
178
- border-radius: 24px;
179
- border: 1px solid var(--fc-border);
180
- background: color-mix(in srgb, var(--fc-bgPanel) 88%, transparent);
181
- box-shadow:
182
- 0 24px 80px rgba(0, 0, 0, 0.28),
183
- inset 0 1px 0 rgba(255, 255, 255, 0.04);
184
- backdrop-filter: blur(18px);
185
- -webkit-backdrop-filter: blur(18px);
186
- }
187
-
188
- .fc-crash-badge {
189
- display: inline-flex;
190
- align-items: center;
191
- gap: 6px;
192
- min-height: 28px;
193
- padding: 0 10px;
194
- margin-bottom: 16px;
195
- border-radius: 999px;
196
- background: color-mix(in srgb, var(--fc-errorBg) 76%, transparent);
197
- border: 1px solid color-mix(in srgb, var(--fc-error) 34%, var(--fc-border));
198
- color: var(--fc-error);
199
- font-size: 12px;
200
- font-weight: 700;
201
- letter-spacing: 0.04em;
202
- text-transform: uppercase;
203
- }
204
-
205
- .fc-crash-hero {
206
- display: flex;
207
- align-items: flex-start;
208
- gap: 16px;
209
- }
210
-
211
- .fc-crash-icon {
212
- width: 56px;
213
- height: 56px;
214
- border-radius: 18px;
215
- display: flex;
216
- align-items: center;
217
- justify-content: center;
218
- flex-shrink: 0;
219
- font-size: 28px;
220
- background:
221
- linear-gradient(135deg, color-mix(in srgb, var(--fc-error) 24%, transparent), color-mix(in srgb, var(--fc-accent) 18%, transparent)),
222
- var(--fc-bg);
223
- border: 1px solid color-mix(in srgb, var(--fc-error) 18%, var(--fc-border));
224
- }
225
-
226
- .fc-crash-title {
227
- margin-bottom: 8px;
228
- font-size: clamp(24px, 4vw, 32px);
229
- line-height: 1.05;
230
- font-weight: 800;
231
- letter-spacing: -0.03em;
232
- }
233
-
234
- .fc-crash-copy {
235
- max-width: 56ch;
236
- color: var(--fc-textMuted);
237
- font-size: 14px;
238
- line-height: 1.6;
239
- }
240
-
241
- .fc-crash-error-card {
242
- margin-top: 18px;
243
- padding: 16px;
244
- border-radius: 18px;
245
- border: 1px solid color-mix(in srgb, var(--fc-error) 22%, var(--fc-border));
246
- background: linear-gradient(
247
- 180deg,
248
- color-mix(in srgb, var(--fc-errorBg) 80%, transparent),
249
- color-mix(in srgb, var(--fc-bgPanel) 82%, transparent)
250
- );
251
- }
252
-
253
- .fc-crash-error-label {
254
- margin-bottom: 6px;
255
- color: var(--fc-textDim);
256
- font-size: 11px;
257
- font-weight: 700;
258
- text-transform: uppercase;
259
- letter-spacing: 0.08em;
260
- }
261
-
262
- .fc-crash-error-message {
263
- color: var(--fc-text);
264
- font-size: 15px;
265
- line-height: 1.55;
266
- word-break: break-word;
267
- }
268
-
269
- .fc-crash-actions {
270
- display: flex;
271
- flex-wrap: wrap;
272
- gap: 10px;
273
- margin-top: 18px;
274
- }
275
-
276
- .fc-crash-btn {
277
- min-height: 42px;
278
- padding: 0 16px;
279
- border-radius: 12px;
280
- border: 1px solid var(--fc-border);
281
- font-size: 14px;
282
- font-weight: 700;
283
- font-family: inherit;
284
- cursor: pointer;
285
- }
286
-
287
- .fc-crash-btn--primary {
288
- background: var(--fc-accent);
289
- color: var(--fc-accentText);
290
- border-color: var(--fc-accent);
291
- }
292
-
293
- .fc-crash-btn--secondary {
294
- background: var(--fc-bgSurface);
295
- color: var(--fc-text);
296
- }
297
-
298
- .fc-crash-btn--ghost {
299
- background: transparent;
300
- color: var(--fc-textMuted);
301
- }
302
-
303
- .fc-crash-editor-card {
304
- margin-top: 18px;
305
- padding: 16px;
306
- border-radius: 20px;
307
- border: 1px solid var(--fc-border);
308
- background: color-mix(in srgb, var(--fc-bg) 84%, transparent);
309
- }
310
-
311
- .fc-crash-editor-header {
312
- display: flex;
313
- align-items: flex-start;
314
- justify-content: space-between;
315
- gap: 14px;
316
- margin-bottom: 12px;
317
- }
318
-
319
- .fc-crash-editor-title {
320
- margin-bottom: 4px;
321
- font-size: 15px;
322
- font-weight: 700;
323
- }
324
-
325
- .fc-crash-editor-copy {
326
- color: var(--fc-textMuted);
327
- font-size: 13px;
328
- line-height: 1.5;
329
- }
330
-
331
- .fc-crash-editor-filepicker {
332
- display: flex;
333
- flex-direction: column;
334
- gap: 6px;
335
- min-width: min(220px, 100%);
336
- color: var(--fc-textDim);
337
- font-size: 12px;
338
- font-weight: 700;
339
- }
340
-
341
- .fc-crash-editor-filepicker select {
342
- min-height: 38px;
343
- }
344
-
345
- .fc-crash-editor {
346
- width: 100%;
347
- min-height: 250px;
348
- padding: 14px;
349
- border-radius: 16px;
350
- border: 1px solid var(--fc-border);
351
- background: var(--fc-bgInput);
352
- color: var(--fc-text);
353
- font-family:
354
- ui-monospace,
355
- SFMono-Regular,
356
- Menlo,
357
- Monaco,
358
- Consolas,
359
- Liberation Mono,
360
- monospace;
361
- font-size: 13px;
362
- line-height: 1.55;
363
- resize: vertical;
364
- white-space: pre;
365
- tab-size: 2;
366
- }
367
-
368
- .fc-crash-editor-note {
369
- margin-top: 10px;
370
- color: var(--fc-textDim);
371
- font-size: 12px;
372
- line-height: 1.5;
373
- }
374
-
375
- .fc-crash-run-error {
376
- margin-top: 16px;
377
- padding: 12px 14px;
378
- border-radius: 14px;
379
- background: color-mix(in srgb, var(--fc-errorBg) 60%, transparent);
380
- border: 1px solid color-mix(in srgb, var(--fc-error) 20%, var(--fc-border));
381
- color: var(--fc-textMuted);
382
- font-size: 13px;
383
- line-height: 1.5;
384
- }
385
-
386
- .fc-crash-details {
387
- margin-top: 16px;
388
- border-top: 1px solid var(--fc-border);
389
- padding-top: 14px;
390
- }
391
-
392
- .fc-crash-details summary {
393
- color: var(--fc-textMuted);
394
- font-size: 13px;
395
- font-weight: 700;
396
- cursor: pointer;
397
- user-select: none;
398
- }
399
-
400
- .fc-crash-details-pre {
401
- margin: 12px 0 0;
402
- padding: 14px;
403
- border-radius: 14px;
404
- border: 1px solid var(--fc-border);
405
- background: color-mix(in srgb, var(--fc-bg) 88%, transparent);
406
- color: var(--fc-textDim);
407
- font-size: 12px;
408
- line-height: 1.55;
409
- white-space: pre-wrap;
410
- word-break: break-word;
411
- }
412
-
413
- @media (max-width: 640px) {
414
- .fc-crash-panel {
415
- padding: 18px;
416
- border-radius: 20px;
417
- }
418
-
419
- .fc-crash-hero,
420
- .fc-crash-editor-header {
421
- flex-direction: column;
422
- }
423
-
424
- .fc-crash-icon {
425
- width: 48px;
426
- height: 48px;
427
- border-radius: 16px;
428
- font-size: 24px;
429
- }
430
-
431
- .fc-crash-actions {
432
- flex-direction: column;
433
- }
434
-
435
- .fc-crash-btn,
436
- .fc-crash-editor-filepicker {
437
- width: 100%;
438
- }
439
-
440
- .fc-crash-editor {
441
- min-height: 220px;
442
- }
443
- }
444
-
445
- /* --- fc-icon-btn: Small icon-only button --- */
446
- .fc-icon-btn {
447
- padding: 4px;
448
- background: transparent;
449
- color: var(--fc-textDim);
450
- border: 1px solid transparent;
451
- border-radius: 4px;
452
- cursor: pointer;
453
- font-size: 14px;
454
- line-height: 1;
455
- display: inline-flex;
456
- align-items: center;
457
- justify-content: center;
458
- }
459
- .fc-icon-btn:hover {
460
- background: var(--fc-bgHover);
461
- color: var(--fc-text);
462
- border-color: var(--fc-border);
463
- }
464
-
465
- /* --- Panel section headers --- */
466
- .fc-panel-header {
467
- padding: 6px 12px;
468
- font-size: 11px;
469
- color: var(--fc-textDim);
470
- text-transform: uppercase;
471
- letter-spacing: 1px;
472
- cursor: pointer;
473
- user-select: none;
474
- display: flex;
475
- justify-content: space-between;
476
- align-items: center;
477
- transition:
478
- background 0.12s ease,
479
- color 0.12s ease;
480
- }
481
- .fc-panel-header:hover {
482
- background: var(--fc-bgHover);
483
- color: var(--fc-textMuted);
484
- }
485
-
486
- /* --- Separator --- */
487
- .fc-separator {
488
- width: 1px;
489
- height: 20px;
490
- background: var(--fc-border);
491
- margin: 0 4px;
492
- flex-shrink: 0;
493
- }
494
-
495
- /* --- Toolbar --- */
496
- .fc-toolbar {
497
- padding: 0 10px;
498
- height: 46px;
499
- background: var(--fc-bgHover);
500
- border-bottom: 1px solid var(--fc-border);
501
- display: flex;
502
- align-items: center;
503
- gap: 8px;
504
- user-select: none;
505
- flex-shrink: 0;
506
- }
507
-
508
- /* Toolbar zones — left and right anchor to edges, center fills the middle */
509
- .fc-toolbar-zone {
510
- display: flex;
511
- align-items: center;
512
- gap: 3px;
513
- flex-shrink: 0;
514
- min-width: 0;
515
- }
516
- .fc-toolbar-center {
517
- flex: 1;
518
- display: flex;
519
- justify-content: center;
520
- align-items: center;
521
- min-width: 0;
522
- }
523
-
524
- /* File button in center — acts as both filename display and command palette trigger */
525
- .fc-toolbar-file {
526
- max-width: 340px;
527
- width: min(340px, 100%);
528
- padding: 5px 12px;
529
- border-radius: 8px;
530
- gap: 8px;
531
- background: var(--fc-bg);
532
- border-color: var(--fc-border);
533
- flex: 0 1 340px;
534
- min-width: 0;
535
- justify-content: space-between;
536
- }
537
- .fc-toolbar-file:hover {
538
- background: var(--fc-bgHover);
539
- border-color: var(--fc-textDim);
540
- }
541
- .fc-toolbar-file > * {
542
- min-width: 0;
543
- }
544
- .fc-toolbar-filename {
545
- color: var(--fc-text);
546
- font-size: 12px;
547
- font-weight: 500;
548
- flex: 1 1 auto;
549
- min-width: 0;
550
- overflow: hidden;
551
- text-overflow: ellipsis;
552
- white-space: nowrap;
553
- }
554
- .fc-toolbar-shortcut {
555
- color: var(--fc-textDim);
556
- font-size: 10px;
557
- flex-shrink: 0;
558
- padding: 1px 5px;
559
- border-radius: 4px;
560
- background: var(--fc-bgHover);
561
- border: 1px solid var(--fc-border);
562
- line-height: 1.3;
563
- }
564
-
565
- /* Icon-only toolbar button — square, centered icon, no text */
566
- .fc-toolbar-btn {
567
- width: 32px;
568
- height: 32px;
569
- padding: 0;
570
- display: inline-flex;
571
- align-items: center;
572
- justify-content: center;
573
- font-size: 15px;
574
- flex-shrink: 0;
575
- border-radius: 6px;
576
- }
577
- .fc-toolbar-ai-btn {
578
- --fc-ai-start: var(--fc-accent);
579
- --fc-ai-mid: color-mix(in srgb, var(--fc-accent) 38%, var(--fc-success));
580
- --fc-ai-end: var(--fc-warning);
581
- color: var(--fc-accentText);
582
- background: linear-gradient(135deg, var(--fc-ai-start) 0%, var(--fc-ai-mid) 52%, var(--fc-ai-end) 100%);
583
- border-color: color-mix(in srgb, var(--fc-ai-start) 48%, var(--fc-border));
584
- box-shadow:
585
- 0 0 0 1px color-mix(in srgb, var(--fc-accentText) 12%, transparent) inset,
586
- 0 0 18px color-mix(in srgb, var(--fc-ai-start) 28%, transparent);
587
- font-weight: 700;
588
- text-shadow: 0 1px 1px color-mix(in srgb, var(--fc-bg) 38%, transparent);
589
- }
590
- .fc-toolbar-ai-btn:hover {
591
- color: var(--fc-accentText);
592
- background: linear-gradient(
593
- 135deg,
594
- color-mix(in srgb, var(--fc-ai-start) 84%, var(--fc-text) 16%) 0%,
595
- color-mix(in srgb, var(--fc-ai-mid) 86%, var(--fc-text) 14%) 52%,
596
- color-mix(in srgb, var(--fc-ai-end) 86%, var(--fc-text) 14%) 100%
597
- );
598
- border-color: color-mix(in srgb, var(--fc-ai-start) 60%, var(--fc-text));
599
- box-shadow:
600
- 0 0 0 1px color-mix(in srgb, var(--fc-accentText) 18%, transparent) inset,
601
- 0 0 22px color-mix(in srgb, var(--fc-ai-mid) 34%, transparent);
602
- }
603
- :root[data-fc-theme="gruvbox"] .fc-toolbar-ai-btn {
604
- --fc-ai-start: var(--fc-warning);
605
- --fc-ai-mid: var(--fc-accent);
606
- --fc-ai-end: var(--fc-success);
607
- }
608
- :root[data-fc-theme="kanagawa-lotus"] .fc-toolbar-ai-btn {
609
- --fc-ai-start: var(--fc-accent);
610
- --fc-ai-mid: color-mix(in srgb, var(--fc-accent) 30%, var(--fc-warning));
611
- --fc-ai-end: var(--fc-success);
612
- }
613
-
614
- /* Labeled toolbar button — icon + text, for primary actions */
615
- .fc-toolbar-labeled {
616
- height: 32px;
617
- padding: 0 10px;
618
- display: inline-flex;
619
- align-items: center;
620
- justify-content: center;
621
- gap: 5px;
622
- font-size: 14px;
623
- flex-shrink: 0;
624
- border-radius: 6px;
625
- }
626
- .fc-toolbar-labeled span {
627
- font-size: 12px;
628
- }
629
- .fc-toolbar-project-chip {
630
- max-width: 180px;
631
- min-width: 0;
632
- overflow: hidden;
633
- text-overflow: ellipsis;
634
- white-space: nowrap;
635
- }
636
-
637
- /* --- Input fields --- */
638
- input:not([type="range"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]),
639
- textarea,
640
- select {
641
- background: var(--fc-bgInput);
642
- border: 1px solid var(--fc-border);
643
- border-radius: 4px;
644
- padding: 4px 6px;
645
- color: var(--fc-text);
646
- font-size: 12px;
647
- font-family: inherit;
648
- }
649
- input:not([type="range"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):focus,
650
- textarea:focus,
651
- select:focus {
652
- border-color: var(--fc-accent);
653
- box-shadow: 0 0 0 1px var(--fc-accent);
654
- }
655
-
656
- /* --- Tooltip-like subtle shadow for floating elements --- */
657
- .fc-floating {
658
- box-shadow:
659
- 0 4px 16px rgba(0, 0, 0, 0.3),
660
- 0 1px 4px rgba(0, 0, 0, 0.2);
661
- }
662
-
663
- /* --- Animations --- */
664
- @keyframes fc-fadein {
665
- from {
666
- opacity: 0;
667
- transform: translateY(4px);
668
- }
669
- to {
670
- opacity: 1;
671
- transform: translateY(0);
672
- }
673
- }
674
- @keyframes fc-fadein-up {
675
- from {
676
- opacity: 0;
677
- transform: translateY(8px);
678
- }
679
- to {
680
- opacity: 1;
681
- transform: translateY(0);
682
- }
683
- }
684
- @keyframes fc-slide-in-right {
685
- from {
686
- opacity: 0;
687
- transform: translateX(100%);
688
- }
689
- to {
690
- opacity: 1;
691
- transform: translateX(0);
692
- }
693
- }
694
- @keyframes fc-slide-out-right {
695
- from {
696
- opacity: 1;
697
- transform: translateX(0);
698
- }
699
- to {
700
- opacity: 0;
701
- transform: translateX(100%);
702
- }
703
- }
704
- @keyframes fc-pulse {
705
- 0%,
706
- 100% {
707
- opacity: 0.4;
708
- }
709
- 50% {
710
- opacity: 1;
711
- }
712
- }
713
- @keyframes fc-shimmer {
714
- 0% {
715
- background-position: -200% 0;
716
- }
717
- 100% {
718
- background-position: 200% 0;
719
- }
720
- }
721
- @keyframes fc-spin {
722
- from {
723
- transform: rotate(0deg);
724
- }
725
- to {
726
- transform: rotate(360deg);
727
- }
728
- }
729
- @keyframes fc-scale-in {
730
- from {
731
- opacity: 0;
732
- transform: scale(0.95);
733
- }
734
- to {
735
- opacity: 1;
736
- transform: scale(1);
737
- }
738
- }
739
-
740
- /* --- Range inputs (sliders) --- */
741
- input[type="range"] {
742
- -webkit-appearance: none;
743
- appearance: none;
744
- height: 4px;
745
- background: var(--fc-border);
746
- border-radius: 2px;
747
- outline: none;
748
- }
749
- input[type="range"]::-webkit-slider-thumb {
750
- -webkit-appearance: none;
751
- appearance: none;
752
- width: 14px;
753
- height: 14px;
754
- border-radius: 50%;
755
- background: var(--fc-accent);
756
- cursor: pointer;
757
- border: 2px solid var(--fc-bgPanel);
758
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
759
- transition:
760
- transform 0.1s ease,
761
- box-shadow 0.1s ease;
762
- }
763
- input[type="range"]::-webkit-slider-thumb:hover {
764
- transform: scale(1.15);
765
- box-shadow: 0 1px 6px rgba(0, 0, 0, 0.4);
766
- }
767
- input[type="range"]::-moz-range-thumb {
768
- width: 14px;
769
- height: 14px;
770
- border-radius: 50%;
771
- background: var(--fc-accent);
772
- cursor: pointer;
773
- border: 2px solid var(--fc-bgPanel);
774
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
775
- }
776
-
777
- /* --- Color input --- */
778
- input[type="color"] {
779
- -webkit-appearance: none;
780
- appearance: none;
781
- width: 24px;
782
- height: 24px;
783
- border: 1px solid var(--fc-border);
784
- border-radius: 4px;
785
- padding: 1px;
786
- cursor: pointer;
787
- background: transparent;
788
- }
789
- input[type="color"]::-webkit-color-swatch-wrapper {
790
- padding: 0;
791
- }
792
- input[type="color"]::-webkit-color-swatch {
793
- border: none;
794
- border-radius: 3px;
795
- }
796
-
797
- /* --- Resize handle polish --- */
798
- .fc-resize-handle {
799
- transition: background 0.15s ease;
800
- }
801
- .fc-resize-handle:hover {
802
- background: var(--fc-bgActive);
803
- }
804
-
805
- /* =====================================================================
806
- Documentation page styles
807
- ===================================================================== */
808
-
809
- /* --- Layout shell --- */
810
- .fc-docs-layout {
811
- min-height: 100vh;
812
- display: flex;
813
- flex-direction: column;
814
- background: var(--fc-bg);
815
- }
816
- .fc-docs-body {
817
- display: flex;
818
- flex: 1;
819
- padding-top: 56px;
820
- }
821
- .fc-docs-main {
822
- flex: 1;
823
- overflow-y: auto;
824
- height: calc(100vh - 56px);
825
- }
826
-
827
- /* --- Top nav --- */
828
- .fc-docs-nav {
829
- position: fixed;
830
- top: 0;
831
- left: 0;
832
- right: 0;
833
- height: 56px;
834
- display: flex;
835
- align-items: center;
836
- justify-content: space-between;
837
- padding: 0 24px;
838
- background: var(--fc-bg);
839
- border-bottom: 1px solid var(--fc-border);
840
- z-index: 100;
841
- backdrop-filter: blur(8px);
842
- }
843
- .fc-docs-nav-logo {
844
- display: flex;
845
- align-items: center;
846
- gap: 8px;
847
- text-decoration: none;
848
- color: var(--fc-text);
849
- }
850
- .fc-docs-nav-logo span:last-child {
851
- font-size: 16px;
852
- font-weight: 700;
853
- color: var(--fc-accent);
854
- letter-spacing: -0.02em;
855
- }
856
- .fc-docs-nav-links {
857
- display: flex;
858
- align-items: center;
859
- gap: 20px;
860
- }
861
- .fc-docs-nav-active {
862
- color: var(--fc-accent);
863
- text-decoration: none;
864
- font-size: 14px;
865
- font-weight: 600;
866
- }
867
- .fc-docs-nav-link {
868
- color: var(--fc-textMuted);
869
- text-decoration: none;
870
- font-size: 14px;
871
- }
872
- .fc-docs-nav-link:hover {
873
- color: var(--fc-text);
874
- }
875
- .fc-docs-nav-cta {
876
- padding: 6px 16px;
877
- font-size: 14px;
878
- font-weight: 600;
879
- background: var(--fc-accent);
880
- color: var(--fc-accentText);
881
- border-radius: 6px;
882
- text-decoration: none;
883
- transition: opacity 0.15s;
884
- }
885
- .fc-docs-nav-cta:hover {
886
- opacity: 0.9;
887
- }
888
-
889
- /* --- Search trigger in nav --- */
890
- .fc-docs-search-trigger {
891
- display: flex;
892
- align-items: center;
893
- gap: 6px;
894
- padding: 5px 12px;
895
- background: var(--fc-bgSurface);
896
- border: 1px solid var(--fc-border);
897
- border-radius: 6px;
898
- color: var(--fc-textDim);
899
- font-size: 13px;
900
- cursor: pointer;
901
- transition:
902
- border-color 0.15s,
903
- color 0.15s;
904
- }
905
- .fc-docs-search-trigger:hover {
906
- border-color: var(--fc-accent);
907
- color: var(--fc-textMuted);
908
- }
909
- .fc-docs-search-trigger kbd {
910
- margin-left: 4px;
911
- padding: 1px 5px;
912
- font-size: 11px;
913
- background: var(--fc-bgHover);
914
- border: 1px solid var(--fc-border);
915
- border-radius: 3px;
916
- font-family: var(--fc-mono, "SF Mono", "Fira Code", monospace);
917
- color: var(--fc-textDim);
918
- }
919
-
920
- /* --- Theme toggle --- */
921
- .fc-docs-theme-toggle {
922
- display: flex;
923
- align-items: center;
924
- justify-content: center;
925
- width: 32px;
926
- height: 32px;
927
- background: var(--fc-bgSurface);
928
- border: 1px solid var(--fc-border);
929
- border-radius: 6px;
930
- color: var(--fc-textDim);
931
- cursor: pointer;
932
- transition:
933
- border-color 0.15s,
934
- color 0.15s;
935
- }
936
- .fc-docs-theme-toggle:hover {
937
- border-color: var(--fc-accent);
938
- color: var(--fc-textMuted);
939
- }
940
-
941
- /* --- Sidebar backdrop (mobile only, visible via media query) --- */
942
- .fc-docs-sidebar-backdrop {
943
- display: none;
944
- }
945
-
946
- /* --- Sidebar --- */
947
- .fc-docs-sidebar {
948
- width: 260px;
949
- flex-shrink: 0;
950
- background: var(--fc-bgPanel);
951
- border-right: 1px solid var(--fc-border);
952
- padding: 20px 0;
953
- overflow-y: auto;
954
- height: calc(100vh - 56px);
955
- position: sticky;
956
- top: 56px;
957
- }
958
- /* Desktop: hide sidebar when not open (not in flow) */
959
- .fc-docs-sidebar:not(.open) {
960
- display: none;
961
- }
962
- .fc-docs-sidebar::-webkit-scrollbar {
963
- width: 4px;
964
- }
965
- .fc-docs-sidebar::-webkit-scrollbar-track {
966
- background: transparent;
967
- }
968
- .fc-docs-sidebar::-webkit-scrollbar-thumb {
969
- background: var(--fc-border);
970
- border-radius: 2px;
971
- }
972
-
973
- .fc-docs-sidebar-group-title {
974
- padding: 12px 20px 4px;
975
- font-size: 11px;
976
- font-weight: 600;
977
- text-transform: uppercase;
978
- letter-spacing: 0.08em;
979
- color: var(--fc-textDim);
980
- }
981
- .fc-docs-sidebar-link {
982
- display: block;
983
- padding: 5px 20px 5px 24px;
984
- font-size: 13px;
985
- color: var(--fc-textMuted);
986
- text-decoration: none;
987
- border-left: 2px solid transparent;
988
- transition:
989
- color 0.1s,
990
- background 0.1s,
991
- border-color 0.1s;
992
- }
993
- .fc-docs-sidebar-link:hover {
994
- color: var(--fc-text);
995
- background: var(--fc-bgHover);
996
- }
997
- .fc-docs-sidebar-link.active {
998
- color: var(--fc-accent);
999
- border-left-color: var(--fc-accent);
1000
- background: var(--fc-bgHover);
1001
- font-weight: 600;
1002
- }
1003
-
1004
- /* --- Index page --- */
1005
- .fc-docs-index {
1006
- padding: 40px 48px 80px;
1007
- max-width: 800px;
1008
- width: 100%;
1009
- margin: 0 auto;
1010
- box-sizing: border-box;
1011
- }
1012
- .fc-docs-index-hero {
1013
- padding: 60px 0 40px;
1014
- text-align: center;
1015
- }
1016
- .fc-docs-index-hero h1 {
1017
- font-size: 32px;
1018
- font-weight: 700;
1019
- color: var(--fc-text);
1020
- margin: 0 0 12px;
1021
- }
1022
- .fc-docs-index-hero p {
1023
- font-size: 16px;
1024
- color: var(--fc-textMuted);
1025
- margin: 0 0 8px;
1026
- }
1027
- .fc-docs-index-hint {
1028
- font-size: 13px;
1029
- color: var(--fc-textDim);
1030
- }
1031
- .fc-docs-index-hint kbd {
1032
- padding: 2px 6px;
1033
- font-size: 12px;
1034
- background: var(--fc-bgSurface);
1035
- border: 1px solid var(--fc-border);
1036
- border-radius: 4px;
1037
- font-family: var(--fc-mono, monospace);
1038
- color: var(--fc-accent);
1039
- }
1040
- .fc-docs-index-heading {
1041
- font-size: 14px;
1042
- font-weight: 600;
1043
- color: var(--fc-textDim);
1044
- text-transform: uppercase;
1045
- letter-spacing: 0.06em;
1046
- margin: 32px 0 12px;
1047
- }
1048
- .fc-docs-index-grid {
1049
- display: grid;
1050
- grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
1051
- gap: 12px;
1052
- margin-bottom: 8px;
1053
- }
1054
- .fc-docs-index-card {
1055
- display: block;
1056
- padding: 16px 20px;
1057
- background: var(--fc-bgSurface);
1058
- border: 1px solid var(--fc-border);
1059
- border-radius: 8px;
1060
- text-decoration: none;
1061
- transition:
1062
- border-color 0.15s,
1063
- background 0.15s;
1064
- }
1065
- .fc-docs-index-card:hover {
1066
- border-color: var(--fc-accent);
1067
- background: var(--fc-bgHover);
1068
- }
1069
- .fc-docs-index-card-title {
1070
- font-size: 15px;
1071
- font-weight: 600;
1072
- color: var(--fc-text);
1073
- margin-bottom: 4px;
1074
- }
1075
- .fc-docs-index-card-desc {
1076
- font-size: 13px;
1077
- color: var(--fc-textMuted);
1078
- }
1079
-
1080
- /* --- Doc content (markdown) --- */
1081
- .fc-docs-content {
1082
- padding: 40px 48px 80px;
1083
- max-width: 860px;
1084
- margin: 0 auto;
1085
- line-height: 1.7;
1086
- color: var(--fc-text);
1087
- font-size: 15px;
1088
- }
1089
- .fc-docs-content h1 {
1090
- font-size: 28px;
1091
- font-weight: 700;
1092
- margin: 0 0 16px;
1093
- padding-bottom: 12px;
1094
- border-bottom: 1px solid var(--fc-border);
1095
- color: var(--fc-text);
1096
- }
1097
- .fc-docs-content h2 {
1098
- font-size: 20px;
1099
- font-weight: 600;
1100
- margin: 36px 0 12px;
1101
- padding-bottom: 8px;
1102
- border-bottom: 1px solid var(--fc-border);
1103
- color: var(--fc-text);
1104
- }
1105
- .fc-docs-content h3 {
1106
- font-size: 16px;
1107
- font-weight: 600;
1108
- margin: 28px 0 8px;
1109
- color: var(--fc-text);
1110
- }
1111
- .fc-docs-content h4 {
1112
- font-size: 14px;
1113
- font-weight: 600;
1114
- margin: 24px 0 6px;
1115
- padding-top: 16px;
1116
- border-top: 1px solid color-mix(in srgb, var(--fc-border) 50%, transparent);
1117
- color: var(--fc-accent);
1118
- }
1119
- /* First h4 after a group heading or section start — no top border */
1120
- .fc-docs-content h3 + h4,
1121
- .fc-docs-content strong + h4,
1122
- .fc-docs-content p + h4:first-of-type {
1123
- border-top: none;
1124
- padding-top: 0;
1125
- }
1126
- .fc-docs-content p {
1127
- margin: 0 0 12px;
1128
- color: var(--fc-text);
1129
- }
1130
- .fc-docs-content ul,
1131
- .fc-docs-content ol {
1132
- padding-left: 24px;
1133
- margin: 0 0 12px;
1134
- }
1135
- .fc-docs-content li {
1136
- margin-bottom: 4px;
1137
- }
1138
- .fc-docs-content li > ul,
1139
- .fc-docs-content li > ol {
1140
- margin-top: 4px;
1141
- margin-bottom: 0;
1142
- }
1143
- .fc-docs-content a {
1144
- color: var(--fc-accent);
1145
- text-decoration: none;
1146
- }
1147
- .fc-docs-content a:hover {
1148
- text-decoration: underline;
1149
- }
1150
- .fc-docs-content strong {
1151
- font-weight: 600;
1152
- color: var(--fc-text);
1153
- }
1154
- .fc-docs-content hr {
1155
- border: none;
1156
- border-top: 1px solid var(--fc-border);
1157
- margin: 24px 0;
1158
- }
1159
- .fc-docs-content img {
1160
- max-width: 100%;
1161
- border-radius: 8px;
1162
- }
1163
-
1164
- /* Anchor links on headings */
1165
- .fc-docs-anchor {
1166
- opacity: 0;
1167
- margin-left: 8px;
1168
- color: var(--fc-textMuted);
1169
- text-decoration: none;
1170
- font-weight: 400;
1171
- font-size: 0.8em;
1172
- transition: opacity 0.15s;
1173
- }
1174
- .fc-docs-content h1:hover .fc-docs-anchor,
1175
- .fc-docs-content h2:hover .fc-docs-anchor,
1176
- .fc-docs-content h3:hover .fc-docs-anchor,
1177
- .fc-docs-content h4:hover .fc-docs-anchor {
1178
- opacity: 1;
1179
- }
1180
-
1181
- /* Scroll-to highlight */
1182
- .fc-docs-highlight {
1183
- animation: fc-docs-flash 1.5s ease-out;
1184
- }
1185
- @keyframes fc-docs-flash {
1186
- 0% {
1187
- background: var(--fc-bgActive);
1188
- }
1189
- 100% {
1190
- background: transparent;
1191
- }
1192
- }
1193
-
1194
- /* Code blocks */
1195
- .fc-docs-code {
1196
- background: var(--fc-bgPanel);
1197
- border: 1px solid var(--fc-border);
1198
- border-radius: 8px;
1199
- padding: 16px;
1200
- overflow-x: auto;
1201
- font-size: 13px;
1202
- line-height: 1.5;
1203
- margin: 0 0 16px;
1204
- font-family: var(--fc-mono, "JetBrains Mono", "Fira Code", "SF Mono", monospace);
1205
- }
1206
- .fc-docs-code code {
1207
- background: none;
1208
- padding: 0;
1209
- border: none;
1210
- font-size: 13px;
1211
- color: var(--fc-text);
1212
- }
1213
-
1214
- /* Inline code — cyan tint for visibility */
1215
- .fc-docs-inline-code {
1216
- background: var(--fc-bgSurface);
1217
- border: 1px solid var(--fc-border);
1218
- border-radius: 4px;
1219
- padding: 1px 6px;
1220
- font-size: 0.9em;
1221
- font-family: var(--fc-mono, "JetBrains Mono", "Fira Code", "SF Mono", monospace);
1222
- color: var(--fc-accent);
1223
- }
1224
-
1225
- /* Blockquotes */
1226
- .fc-docs-blockquote {
1227
- border-left: 3px solid var(--fc-accent);
1228
- margin: 0 0 12px;
1229
- padding: 8px 16px;
1230
- background: var(--fc-bgSurface);
1231
- border-radius: 0 4px 4px 0;
1232
- color: var(--fc-textMuted);
1233
- }
1234
- .fc-docs-blockquote p {
1235
- margin: 0;
1236
- }
1237
-
1238
- /* Tables */
1239
- .fc-docs-table {
1240
- width: 100%;
1241
- border-collapse: collapse;
1242
- margin: 0 0 16px;
1243
- font-size: 13px;
1244
- }
1245
- .fc-docs-table th,
1246
- .fc-docs-table td {
1247
- padding: 8px 12px;
1248
- border: 1px solid var(--fc-border);
1249
- text-align: left;
1250
- }
1251
- .fc-docs-table th {
1252
- background: var(--fc-bgSurface);
1253
- font-weight: 600;
1254
- color: var(--fc-text);
1255
- }
1256
- .fc-docs-table td {
1257
- color: var(--fc-textMuted);
1258
- }
1259
-
1260
- /* Details/summary (collapsible sections in API docs) */
1261
- .fc-docs-content details {
1262
- margin: 0 0 12px;
1263
- border: 1px solid var(--fc-border);
1264
- border-radius: 8px;
1265
- overflow: hidden;
1266
- }
1267
- .fc-docs-content details summary {
1268
- padding: 10px 16px;
1269
- cursor: pointer;
1270
- font-weight: 500;
1271
- color: var(--fc-textMuted);
1272
- background: var(--fc-bgSurface);
1273
- transition: color 0.1s;
1274
- }
1275
- .fc-docs-content details summary:hover {
1276
- color: var(--fc-text);
1277
- }
1278
- .fc-docs-content details[open] summary {
1279
- border-bottom: 1px solid var(--fc-border);
1280
- color: var(--fc-text);
1281
- }
1282
- .fc-docs-content details > :not(summary) {
1283
- padding: 0 16px;
1284
- }
1285
- .fc-docs-content details > pre {
1286
- margin: 12px 0;
1287
- border: none;
1288
- border-radius: 0;
1289
- }
1290
-
1291
- /* --- Highlight.js token colors (scoped to docs) ---
1292
- Uses theme-aware CSS variables so tokens adapt to any app theme.
1293
- Default palette matches Tokyo Night. */
1294
- .fc-docs-content .hljs-keyword,
1295
- .fc-docs-content .hljs-tag {
1296
- color: var(--fc-accent);
1297
- }
1298
- .fc-docs-content .hljs-string,
1299
- .fc-docs-content .hljs-template-variable {
1300
- color: var(--fc-success, #9ece6a);
1301
- }
1302
- .fc-docs-content .hljs-number,
1303
- .fc-docs-content .hljs-literal {
1304
- color: var(--fc-warning, #ff9e64);
1305
- }
1306
- .fc-docs-content .hljs-type,
1307
- .fc-docs-content .hljs-title.class_,
1308
- .fc-docs-content .hljs-built_in {
1309
- color: var(--fc-warning, #e0af68);
1310
- }
1311
- .fc-docs-content .hljs-comment {
1312
- color: var(--fc-textDim);
1313
- font-style: italic;
1314
- }
1315
- .fc-docs-content .hljs-attr,
1316
- .fc-docs-content .hljs-attribute {
1317
- color: var(--fc-accent);
1318
- }
1319
- .fc-docs-content .hljs-params {
1320
- color: var(--fc-text);
1321
- }
1322
- .fc-docs-content .hljs-title.function_ {
1323
- color: var(--fc-accent);
1324
- }
1325
- .fc-docs-content .hljs-punctuation {
1326
- color: var(--fc-textMuted);
1327
- }
1328
- .fc-docs-content .hljs-property {
1329
- color: var(--fc-text);
1330
- }
1331
- .fc-docs-content .hljs-variable {
1332
- color: var(--fc-text);
1333
- }
1334
- .fc-docs-content .hljs-regexp {
1335
- color: var(--fc-error, #f7768e);
1336
- }
1337
- .fc-docs-content .hljs-meta {
1338
- color: var(--fc-textDim);
1339
- }
1340
- .fc-docs-content .hljs-selector-class {
1341
- color: var(--fc-accent);
1342
- }
1343
-
1344
- /* --- Search overlay --- */
1345
- .fc-docs-search-overlay {
1346
- position: fixed;
1347
- inset: 0;
1348
- z-index: 200;
1349
- background: rgba(0, 0, 0, 0.5);
1350
- backdrop-filter: blur(4px);
1351
- display: flex;
1352
- align-items: flex-start;
1353
- justify-content: center;
1354
- padding-top: min(20vh, 160px);
1355
- }
1356
- .fc-docs-search-modal {
1357
- width: 560px;
1358
- max-width: calc(100vw - 32px);
1359
- background: var(--fc-bgPanel);
1360
- border: 1px solid var(--fc-border);
1361
- border-radius: 12px;
1362
- box-shadow: 0 24px 48px rgba(0, 0, 0, 0.4);
1363
- overflow: hidden;
1364
- }
1365
- .fc-docs-search-input-wrap {
1366
- display: flex;
1367
- align-items: center;
1368
- gap: 12px;
1369
- padding: 16px;
1370
- border-bottom: 1px solid var(--fc-border);
1371
- }
1372
- .fc-docs-search-input-wrap input {
1373
- flex: 1;
1374
- background: none;
1375
- border: none;
1376
- outline: none;
1377
- font-size: 16px;
1378
- font-family: inherit;
1379
- color: var(--fc-text);
1380
- }
1381
- .fc-docs-search-input-wrap input::placeholder {
1382
- color: var(--fc-textDim);
1383
- }
1384
- .fc-docs-search-input-wrap kbd {
1385
- padding: 2px 6px;
1386
- font-size: 11px;
1387
- background: var(--fc-bgSurface);
1388
- border: 1px solid var(--fc-border);
1389
- border-radius: 4px;
1390
- color: var(--fc-textDim);
1391
- font-family: var(--fc-mono, monospace);
1392
- }
1393
- .fc-docs-search-results {
1394
- max-height: 400px;
1395
- overflow-y: auto;
1396
- }
1397
- .fc-docs-search-results::-webkit-scrollbar {
1398
- width: 4px;
1399
- }
1400
- .fc-docs-search-results::-webkit-scrollbar-thumb {
1401
- background: var(--fc-border);
1402
- border-radius: 2px;
1403
- }
1404
-
1405
- .fc-docs-search-result {
1406
- padding: 10px 16px;
1407
- cursor: pointer;
1408
- border-bottom: 1px solid var(--fc-border);
1409
- transition: background 0.08s;
1410
- }
1411
- .fc-docs-search-result:last-child {
1412
- border-bottom: none;
1413
- }
1414
- .fc-docs-search-result:hover,
1415
- .fc-docs-search-result.selected {
1416
- background: var(--fc-bgHover);
1417
- }
1418
- .fc-docs-search-result.selected {
1419
- background: var(--fc-bgActive);
1420
- }
1421
- .fc-docs-search-result-title {
1422
- font-size: 14px;
1423
- font-weight: 500;
1424
- color: var(--fc-text);
1425
- }
1426
- .fc-docs-search-result-category {
1427
- font-size: 12px;
1428
- color: var(--fc-textDim);
1429
- margin-top: 2px;
1430
- }
1431
- .fc-docs-search-result-snippet {
1432
- font-size: 12px;
1433
- color: var(--fc-textMuted);
1434
- margin-top: 4px;
1435
- overflow: hidden;
1436
- text-overflow: ellipsis;
1437
- white-space: nowrap;
1438
- }
1439
- .fc-docs-search-empty {
1440
- padding: 24px 16px;
1441
- text-align: center;
1442
- color: var(--fc-textDim);
1443
- font-size: 14px;
1444
- }
1445
- .fc-docs-search-footer {
1446
- display: flex;
1447
- gap: 16px;
1448
- padding: 8px 16px;
1449
- border-top: 1px solid var(--fc-border);
1450
- font-size: 12px;
1451
- color: var(--fc-textDim);
1452
- }
1453
- .fc-docs-search-footer kbd {
1454
- padding: 1px 5px;
1455
- font-size: 11px;
1456
- background: var(--fc-bgSurface);
1457
- border: 1px solid var(--fc-border);
1458
- border-radius: 3px;
1459
- font-family: var(--fc-mono, monospace);
1460
- color: var(--fc-textMuted);
1461
- }
1462
-
1463
- /* --- TOC backdrop (mobile only, visible via media query) --- */
1464
- .fc-docs-toc-backdrop {
1465
- display: none;
1466
- }
1467
- /* --- TOC handle (mobile bottom sheet, hidden on desktop) --- */
1468
- .fc-docs-toc-handle {
1469
- display: none;
1470
- }
1471
-
1472
- /* --- On-this-page right sidebar --- */
1473
- .fc-docs-toc {
1474
- width: 220px;
1475
- flex-shrink: 0;
1476
- padding: 20px 12px 20px 0;
1477
- overflow-y: auto;
1478
- height: calc(100vh - 56px);
1479
- position: sticky;
1480
- top: 56px;
1481
- border-left: 1px solid var(--fc-border);
1482
- background: var(--fc-bgPanel);
1483
- }
1484
- /* Desktop: hide TOC when not open */
1485
- .fc-docs-toc:not(.open) {
1486
- display: none;
1487
- }
1488
- .fc-docs-toc::-webkit-scrollbar {
1489
- width: 4px;
1490
- }
1491
- .fc-docs-toc::-webkit-scrollbar-track {
1492
- background: transparent;
1493
- }
1494
- .fc-docs-toc::-webkit-scrollbar-thumb {
1495
- background: var(--fc-border);
1496
- border-radius: 2px;
1497
- }
1498
- .fc-docs-toc-title {
1499
- padding: 0 12px 8px;
1500
- font-size: 11px;
1501
- font-weight: 600;
1502
- text-transform: uppercase;
1503
- letter-spacing: 0.05em;
1504
- color: var(--fc-textDim);
1505
- }
1506
- .fc-docs-toc-link {
1507
- display: block;
1508
- padding: 3px 12px;
1509
- font-size: 12px;
1510
- line-height: 1.4;
1511
- color: var(--fc-textMuted);
1512
- text-decoration: none;
1513
- border-left: 2px solid transparent;
1514
- overflow: hidden;
1515
- text-overflow: ellipsis;
1516
- white-space: nowrap;
1517
- }
1518
- .fc-docs-toc-link.indent {
1519
- padding-left: 24px;
1520
- font-size: 11.5px;
1521
- }
1522
- .fc-docs-toc-link:hover {
1523
- color: var(--fc-text);
1524
- }
1525
- .fc-docs-toc-link.active {
1526
- color: var(--fc-accent, #58a6ff);
1527
- border-left-color: var(--fc-accent, #58a6ff);
1528
- }
1529
-
1530
- /* --- Sidebar toggle buttons --- */
1531
- .fc-docs-nav-left {
1532
- display: flex;
1533
- align-items: center;
1534
- gap: 8px;
1535
- }
1536
- .fc-docs-sidebar-toggle {
1537
- display: flex;
1538
- align-items: center;
1539
- justify-content: center;
1540
- width: 28px;
1541
- height: 28px;
1542
- border: 1px solid var(--fc-border);
1543
- border-radius: 6px;
1544
- background: transparent;
1545
- color: var(--fc-textMuted);
1546
- cursor: pointer;
1547
- flex-shrink: 0;
1548
- }
1549
- .fc-docs-sidebar-toggle:hover {
1550
- background: var(--fc-bgSurface);
1551
- color: var(--fc-text);
1552
- }
1553
-
1554
- /* --- Project Selector --- */
1555
- .fc-project-item:hover {
1556
- background: var(--fc-bgHover, rgba(255, 255, 255, 0.06));
1557
- }
1558
-
1559
- /* --- Responsive ---
1560
- Desktop (>900px): sidebars in normal flow, toggled via JS.
1561
- Mobile (<=900px): sidebar = overlay from left, TOC = bottom sheet.
1562
- */
1563
- @media (max-width: 900px) {
1564
- /* --- Prevent horizontal scroll --- */
1565
- .fc-docs-layout {
1566
- overflow-x: hidden;
1567
- }
1568
-
1569
- /* --- Compact nav --- */
1570
- .fc-docs-nav {
1571
- height: 48px;
1572
- padding: 0 12px;
1573
- }
1574
- .fc-docs-nav-left {
1575
- gap: 6px;
1576
- min-width: 0;
1577
- }
1578
- .fc-docs-nav-links {
1579
- gap: 8px;
1580
- min-width: 0;
1581
- }
1582
- .fc-docs-nav-logo span:last-child {
1583
- font-size: 14px;
1584
- }
1585
- .fc-docs-body {
1586
- padding-top: 48px;
1587
- }
1588
- .fc-docs-main {
1589
- height: calc(100vh - 48px);
1590
- }
1591
-
1592
- /* Hide text-based nav links — you're already on docs */
1593
- .fc-docs-nav-active,
1594
- .fc-docs-nav-link {
1595
- display: none;
1596
- }
1597
-
1598
- /* Search trigger: icon only, hide label and kbd */
1599
- .fc-docs-search-trigger span,
1600
- .fc-docs-search-trigger kbd {
1601
- display: none;
1602
- }
1603
- .fc-docs-search-trigger {
1604
- padding: 5px 8px;
1605
- min-width: 32px;
1606
- justify-content: center;
1607
- }
1608
-
1609
- /* CTA button: compact */
1610
- .fc-docs-nav-cta {
1611
- padding: 5px 10px;
1612
- font-size: 12px;
1613
- }
1614
-
1615
- /* --- Sidebar overlay mode --- */
1616
- .fc-docs-sidebar-backdrop {
1617
- display: block;
1618
- position: fixed;
1619
- inset: 0;
1620
- background: rgba(0, 0, 0, 0.5);
1621
- backdrop-filter: blur(2px);
1622
- z-index: 150;
1623
- opacity: 0;
1624
- pointer-events: none;
1625
- transition: opacity 0.2s ease;
1626
- }
1627
- .fc-docs-sidebar-backdrop.open {
1628
- opacity: 1;
1629
- pointer-events: auto;
1630
- }
1631
-
1632
- .fc-docs-sidebar,
1633
- .fc-docs-sidebar:not(.open) {
1634
- display: block; /* Override desktop display:none — mobile uses transform */
1635
- position: fixed;
1636
- top: 0;
1637
- left: 0;
1638
- bottom: 0;
1639
- width: 280px;
1640
- max-width: 85vw;
1641
- height: 100vh;
1642
- z-index: 160;
1643
- transform: translateX(-100%);
1644
- transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1645
- padding-top: 56px;
1646
- -webkit-overflow-scrolling: touch;
1647
- }
1648
- .fc-docs-sidebar.open {
1649
- transform: translateX(0);
1650
- }
1651
- /* Bigger tap targets on mobile */
1652
- .fc-docs-sidebar-link {
1653
- padding: 8px 20px 8px 24px;
1654
- font-size: 14px;
1655
- }
1656
-
1657
- /* --- TOC bottom sheet mode --- */
1658
- .fc-docs-toc-backdrop {
1659
- display: block;
1660
- position: fixed;
1661
- inset: 0;
1662
- background: rgba(0, 0, 0, 0.5);
1663
- backdrop-filter: blur(2px);
1664
- z-index: 150;
1665
- opacity: 0;
1666
- pointer-events: none;
1667
- transition: opacity 0.2s ease;
1668
- }
1669
- .fc-docs-toc-backdrop.open {
1670
- opacity: 1;
1671
- pointer-events: auto;
1672
- }
1673
-
1674
- .fc-docs-toc,
1675
- .fc-docs-toc:not(.open) {
1676
- display: block; /* Override desktop display:none — mobile uses transform */
1677
- position: fixed;
1678
- bottom: 0;
1679
- left: 0;
1680
- right: 0;
1681
- top: auto;
1682
- width: 100%;
1683
- max-height: 60vh;
1684
- height: auto;
1685
- border-left: none;
1686
- border-top: 1px solid var(--fc-border);
1687
- border-radius: 16px 16px 0 0;
1688
- z-index: 160;
1689
- transform: translateY(100%);
1690
- transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1691
- padding: 12px 0 24px;
1692
- -webkit-overflow-scrolling: touch;
1693
- }
1694
- .fc-docs-toc.open {
1695
- transform: translateY(0);
1696
- }
1697
- .fc-docs-toc-handle {
1698
- display: block;
1699
- width: 36px;
1700
- height: 4px;
1701
- background: var(--fc-textDim);
1702
- border-radius: 2px;
1703
- margin: 0 auto 12px;
1704
- }
1705
- .fc-docs-toc-link {
1706
- padding: 6px 20px;
1707
- font-size: 14px;
1708
- }
1709
- .fc-docs-toc-link.indent {
1710
- padding-left: 36px;
1711
- font-size: 13px;
1712
- }
1713
-
1714
- /* --- Content adjustments --- */
1715
- .fc-docs-content {
1716
- padding: 20px 16px 60px;
1717
- }
1718
- .fc-docs-content h1 {
1719
- font-size: 24px;
1720
- }
1721
- .fc-docs-content h2 {
1722
- font-size: 18px;
1723
- }
1724
- /* Tables scroll horizontally instead of the page */
1725
- .fc-docs-content .fc-docs-table {
1726
- display: block;
1727
- overflow-x: auto;
1728
- -webkit-overflow-scrolling: touch;
1729
- }
1730
-
1731
- .fc-docs-index {
1732
- padding: 20px 16px 60px;
1733
- }
1734
- .fc-docs-index-hero {
1735
- padding: 24px 0 20px;
1736
- }
1737
- .fc-docs-index-hero h1 {
1738
- font-size: 24px;
1739
- }
1740
- .fc-docs-index-grid {
1741
- grid-template-columns: 1fr;
1742
- }
1743
- }
1744
-
1745
- @media (max-width: 1280px) {
1746
- .fc-toolbar {
1747
- padding: 0 8px;
1748
- gap: 6px;
1749
- }
1750
-
1751
- .fc-toolbar .fc-separator {
1752
- margin: 0 2px;
1753
- }
1754
-
1755
- .fc-toolbar-file {
1756
- max-width: 260px;
1757
- width: min(260px, 100%);
1758
- padding: 5px 10px;
1759
- }
1760
-
1761
- .fc-toolbar-project-chip {
1762
- max-width: 150px;
1763
- }
1764
-
1765
- .fc-toolbar-shortcut {
1766
- display: none;
1767
- }
1768
- }
1769
-
1770
- @media (max-width: 1120px) {
1771
- .fc-toolbar-file {
1772
- max-width: 220px;
1773
- width: min(220px, 100%);
1774
- }
1775
-
1776
- .fc-toolbar-project-chip {
1777
- max-width: 124px;
1778
- }
1779
-
1780
- .fc-toolbar-collapse-label {
1781
- width: 32px;
1782
- padding: 0;
1783
- gap: 0;
1784
- }
1785
-
1786
- .fc-toolbar-collapse-label > span:last-child {
1787
- display: none;
1788
- }
1789
- }