forgecad 0.9.13 → 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 (216) hide show
  1. package/LICENSE +6 -4
  2. package/README.md +8 -4
  3. package/dist/assets/{AdminPage-DramHHDf.js → AdminPage-CDyGUinA.js} +2 -2
  4. package/dist/assets/{BenchmarkPage-Bjgkh5m9.js → BenchmarkPage-DfPMY_-d.js} +4 -15
  5. package/dist/assets/{BlogPage-n_HGP3Qm.js → BlogPage-kF0fkdJT.js} +2 -2
  6. package/dist/assets/{DocsPage-WCIkPmzC.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-DEZKqdfW.js → EmbedViewer-C77B-TrF.js} +3 -3
  10. package/dist/assets/{LandingPageProofDriven-CeRIctuj.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-rIRa8p4Y.js → PricingPage-zWXkvlwl.js} +19 -19
  15. package/dist/assets/{SettingsPage-BqCUvEXM.js → SettingsPage-Bz0of4KQ.js} +2 -2
  16. package/dist/assets/app-CE3sYcV7.css +3890 -0
  17. package/dist/assets/{app-BUZqJvSO.js → app-D3kDkggg.js} +2305 -960
  18. package/dist/assets/cli/{render-lhGxj50Y.js → render-DSY3mMQa.js} +423 -30
  19. package/dist/assets/{constructionHistoryWorker-ipD1jcIv.js → constructionHistoryWorker-gpDo-uH2.js} +927 -243
  20. package/dist/assets/{evalWorker-CHXSe_-u.js → evalWorker-CU0Ke6DP.js} +7799 -4163
  21. package/dist/assets/{forgecad_geometry-BVnIeXMG.js → forgecad_geometry-Dgceylq9.js} +43 -1
  22. package/dist/assets/{forgecad_geometry_bg-DufhhCBV.wasm → 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-D1LZIHqn.js → manifold-BRI5prcH.js} +1 -1
  29. package/dist/assets/{manifold-C2fwoTgd.js → manifold-C-3h2M7p.js} +2 -2
  30. package/dist/assets/{manifold-BTkzxi9V.js → manifold-DNkrUWpA.js} +1 -1
  31. package/dist/assets/{reportWorker-Cq1qGmg0.js → reportWorker-CdBz5bNg.js} +7537 -10856
  32. package/dist/assets/{scalar-sampling-budget-D9Qv_UlJ.js → scalar-sampling-budget-wJF98aY9.js} +6943 -4345
  33. package/dist/assets/{scanProxyWorker-Bs2TDgLw.js → scanProxyWorker-B-9VbLIs.js} +32 -1
  34. package/dist/assets/{renderSceneState-Dr0xPq1A.js → targets-B9sGB5nB.js} +27 -1
  35. package/dist/assets/{vendor-react-Da3A2QmU.js → vendor-react-6j1Kke-Y.js} +6 -5
  36. package/dist/cli/render.html +1 -1
  37. package/dist/docs/index.html +2 -2
  38. package/dist/docs-raw/AI/ai-native-cad.md +50 -0
  39. package/dist/docs-raw/AI/usage.md +9 -17
  40. package/dist/docs-raw/CLI.md +71 -21
  41. package/dist/docs-raw/component-model.md +27 -11
  42. package/dist/docs-raw/generated/assembly.md +301 -212
  43. package/dist/docs-raw/generated/concepts.md +238 -240
  44. package/dist/docs-raw/generated/core.md +283 -6
  45. package/dist/docs-raw/generated/curves.md +274 -361
  46. package/dist/docs-raw/generated/lib.md +7 -1
  47. package/dist/docs-raw/generated/output.md +19 -4
  48. package/dist/docs-raw/generated/runtime-names.md +41 -0
  49. package/dist/docs-raw/generated/sdf.md +31 -0
  50. package/dist/docs-raw/generated/sheet-metal.md +9 -0
  51. package/dist/docs-raw/generated/sketch.md +44 -1
  52. package/dist/docs-raw/generated/viewport.md +14 -6
  53. package/dist/docs-raw/guides/coordinate-system.md +20 -16
  54. package/dist/docs-raw/guides/geometry-conventions.md +2 -2
  55. package/dist/docs-raw/guides/inspection-bundles.md +2 -1
  56. package/dist/docs-raw/guides/joint-design.md +24 -0
  57. package/dist/docs-raw/guides/positioning.md +13 -3
  58. package/dist/docs-raw/legal/privacy.md +63 -0
  59. package/dist/docs-raw/legal/software-license.md +55 -0
  60. package/dist/docs-raw/legal/terms.md +87 -0
  61. package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +3 -3
  62. package/dist/docs-raw/skills/forgecad-blockout-model.md +1 -1
  63. package/dist/docs-raw/skills/forgecad-component-model.md +11 -2
  64. package/dist/docs-raw/skills/forgecad-high-level-spec.md +1 -1
  65. package/dist/docs-raw/skills/forgecad-image-replicator.md +8 -8
  66. package/dist/docs-raw/skills/forgecad-lld.md +1 -1
  67. package/dist/docs-raw/skills/forgecad-make-a-model.md +4 -4
  68. package/dist/docs-raw/skills/forgecad-model-grader.md +2 -2
  69. package/dist/docs-raw/skills/forgecad-prepare-prompt.md +2 -2
  70. package/dist/docs-raw/skills/forgecad-project.md +1 -1
  71. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +4 -4
  72. package/dist/docs-raw/skills/forgecad-render-inspect.md +4 -2
  73. package/dist/docs-raw/skills/forgecad-visual-spec.md +1 -1
  74. package/dist/docs-raw/skills/forgecad.md +4 -3
  75. package/dist/index.html +40 -12
  76. package/dist/llms.txt +8 -0
  77. package/dist/site.webmanifest +1 -1
  78. package/dist/sitemap.xml +49 -13
  79. package/dist-cli/{check-compiler-LOXCPEOI.js → check-compiler-SDX5QIXI.js} +1 -2
  80. package/dist-cli/{check-query-propagation-BAKNVWXR.js → check-query-propagation-EAYEFT77.js} +1 -2
  81. package/dist-cli/{chunk-RY43WF46.js → chunk-N4O47JLF.js} +13772 -9938
  82. package/dist-cli/forgecad.js +2387 -899
  83. package/dist-cli/{forgecad_geometry-GYVNKPIE.js → forgecad_geometry-QOQIIP53.js} +42 -1
  84. package/dist-cli/forgecad_geometry_bg.wasm +0 -0
  85. package/dist-cli/{solver-46FFSK2U.js → solver-OK4HECRH.js} +0 -1
  86. package/dist-skill/CONTEXT.md +1120 -724
  87. package/dist-skill/SKILL.md +3 -2
  88. package/dist-skill/docs/API/core/concepts.md +64 -1
  89. package/dist-skill/docs/CLI.md +71 -21
  90. package/dist-skill/docs/generated/assembly.md +277 -229
  91. package/dist-skill/docs/generated/core.md +283 -6
  92. package/dist-skill/docs/generated/curves.md +272 -362
  93. package/dist-skill/docs/generated/lib.md +7 -1
  94. package/dist-skill/docs/generated/output.md +19 -4
  95. package/dist-skill/docs/generated/runtime-names.md +41 -0
  96. package/dist-skill/docs/generated/sdf.md +31 -0
  97. package/dist-skill/docs/generated/sheet-metal.md +9 -0
  98. package/dist-skill/docs/generated/sketch.md +44 -2
  99. package/dist-skill/docs/generated/viewport.md +5 -90
  100. package/dist-skill/docs/guides/coordinate-system.md +20 -16
  101. package/dist-skill/docs/guides/geometry-conventions.md +2 -2
  102. package/dist-skill/docs/guides/inspection-bundles.md +2 -1
  103. package/dist-skill/docs/guides/joint-design.md +24 -0
  104. package/dist-skill/docs/guides/positioning.md +13 -3
  105. package/dist-skill/library/forgecad-3d-reconstruction/SKILL.md +2 -2
  106. package/dist-skill/library/forgecad-component-model/SKILL.md +10 -1
  107. package/dist-skill/library/forgecad-image-replicator/SKILL.md +6 -6
  108. package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.py +166 -0
  109. package/dist-skill/library/forgecad-make-a-model/SKILL.md +3 -3
  110. package/dist-skill/library/forgecad-model-grader/SKILL.md +1 -1
  111. package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +1 -1
  112. package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +3 -3
  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 -18
  135. package/dist/assets/EditorApp-CP9Za6tm.js +0 -13630
  136. package/dist/assets/app-CsHnaBWt.css +0 -1789
  137. package/dist/docs-raw/API/README.md +0 -16
  138. package/dist/docs-raw/API/core/concepts.md +0 -118
  139. package/dist/docs-raw/INDEX.md +0 -138
  140. package/dist/docs-raw/RELEASING.md +0 -87
  141. package/dist/docs-raw/agent-native-api.md +0 -27
  142. package/dist/docs-raw/beta-deployment.md +0 -304
  143. package/dist/docs-raw/beta-operations.md +0 -325
  144. package/dist/docs-raw/blueprint-first.md +0 -145
  145. package/dist/docs-raw/cli-monetization.md +0 -112
  146. package/dist/docs-raw/coding-best-practices.md +0 -120
  147. package/dist/docs-raw/coding.md +0 -340
  148. package/dist/docs-raw/deployment.md +0 -374
  149. package/dist/docs-raw/guides/skill-maintenance.md +0 -161
  150. package/dist/docs-raw/guides/surface-members.md +0 -82
  151. package/dist/docs-raw/internals/backend-vocabulary.md +0 -35
  152. package/dist/docs-raw/internals/compiler.md +0 -307
  153. package/dist/docs-raw/internals/constraint-solver-quality.md +0 -161
  154. package/dist/docs-raw/internals/constraint-solver.md +0 -176
  155. package/dist/docs-raw/internals/shape-from-slices.md +0 -152
  156. package/dist/docs-raw/internals/sketch-2d-pipeline.md +0 -108
  157. package/dist/docs-raw/platform/admin.md +0 -45
  158. package/dist/docs-raw/platform/architecture.md +0 -82
  159. package/dist/docs-raw/platform/auth.md +0 -139
  160. package/dist/docs-raw/platform/email.md +0 -67
  161. package/dist/docs-raw/platform/google-oauth-setup.md +0 -88
  162. package/dist/docs-raw/platform/observability.md +0 -197
  163. package/dist/docs-raw/platform/projects.md +0 -111
  164. package/dist/docs-raw/platform/sharing.md +0 -90
  165. package/dist/docs-raw/product/README.md +0 -39
  166. package/dist/docs-raw/product/api-as-product-language.md +0 -13
  167. package/dist/docs-raw/product/business-model.md +0 -15
  168. package/dist/docs-raw/product/competitive-positioning.md +0 -17
  169. package/dist/docs-raw/product/creative-manufacturing.md +0 -15
  170. package/dist/docs-raw/product/founder-story.md +0 -11
  171. package/dist/docs-raw/product/manufacturing-workflows.md +0 -15
  172. package/dist/docs-raw/product/onboarding-first-experience.md +0 -256
  173. package/dist/docs-raw/product/product-loop.md +0 -17
  174. package/dist/docs-raw/product/strategic-decisions.md +0 -22
  175. package/dist/docs-raw/product/user-outreach-email-templates.md +0 -161
  176. package/dist/docs-raw/product/user-segments.md +0 -15
  177. package/dist/docs-raw/product/vision.md +0 -26
  178. package/dist/docs-raw/rl-environments.md +0 -508
  179. package/dist/docs-raw/runbook.md +0 -611
  180. package/dist-cli/check-compiler-LOXCPEOI.js.map +0 -1
  181. package/dist-cli/check-query-propagation-BAKNVWXR.js.map +0 -1
  182. package/dist-cli/chunk-RY43WF46.js.map +0 -1
  183. package/dist-cli/forgecad.js.map +0 -1
  184. package/dist-cli/forgecad_geometry-GYVNKPIE.js.map +0 -1
  185. package/dist-cli/solver-46FFSK2U.js.map +0 -1
  186. package/dist-skill/SKILL-dev.md +0 -145
  187. package/dist-skill/docs-dev/API/core/concepts.md +0 -118
  188. package/dist-skill/docs-dev/CLI.md +0 -647
  189. package/dist-skill/docs-dev/agent-native-api.md +0 -27
  190. package/dist-skill/docs-dev/blueprint-first.md +0 -145
  191. package/dist-skill/docs-dev/coding-best-practices.md +0 -120
  192. package/dist-skill/docs-dev/coding.md +0 -340
  193. package/dist-skill/docs-dev/component-model.md +0 -164
  194. package/dist-skill/docs-dev/generated/assembly.md +0 -794
  195. package/dist-skill/docs-dev/generated/core.md +0 -2117
  196. package/dist-skill/docs-dev/generated/curves.md +0 -2583
  197. package/dist-skill/docs-dev/generated/lib.md +0 -169
  198. package/dist-skill/docs-dev/generated/output.md +0 -247
  199. package/dist-skill/docs-dev/generated/sdf.md +0 -446
  200. package/dist-skill/docs-dev/generated/sheet-metal.md +0 -504
  201. package/dist-skill/docs-dev/generated/sketch.md +0 -1811
  202. package/dist-skill/docs-dev/generated/viewport.md +0 -585
  203. package/dist-skill/docs-dev/generated/wood.md +0 -108
  204. package/dist-skill/docs-dev/guides/coordinate-system.md +0 -46
  205. package/dist-skill/docs-dev/guides/geometry-conventions.md +0 -52
  206. package/dist-skill/docs-dev/guides/inspection-bundles.md +0 -485
  207. package/dist-skill/docs-dev/guides/joint-design.md +0 -78
  208. package/dist-skill/docs-dev/guides/modeling-recipes.md +0 -78
  209. package/dist-skill/docs-dev/guides/positioning.md +0 -161
  210. package/dist-skill/docs-dev/guides/skill-maintenance.md +0 -161
  211. package/dist-skill/docs-dev/internals/backend-vocabulary.md +0 -35
  212. package/dist-skill/docs-dev/internals/compiler.md +0 -307
  213. package/dist-skill/docs-dev/internals/constraint-solver-quality.md +0 -161
  214. package/dist-skill/docs-dev/internals/constraint-solver.md +0 -176
  215. package/dist-skill/docs-dev/internals/sketch-2d-pipeline.md +0 -108
  216. package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.mjs +0 -289
@@ -0,0 +1,3890 @@
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
+ .fc-file-context-menu {
615
+ overflow: hidden;
616
+ color: var(--fc-text);
617
+ font-size: 12px;
618
+ }
619
+
620
+ .fc-file-context-menu-header {
621
+ max-width: 240px;
622
+ padding: 6px 10px 5px;
623
+ overflow: hidden;
624
+ color: var(--fc-textDim);
625
+ font-size: 11px;
626
+ font-weight: 600;
627
+ text-overflow: ellipsis;
628
+ white-space: nowrap;
629
+ background: color-mix(in srgb, var(--fc-bgHover) 42%, transparent);
630
+ border-bottom: 1px solid var(--fc-borderLight);
631
+ }
632
+
633
+ .fc-file-context-menu-item {
634
+ padding: 7px 10px;
635
+ color: var(--fc-text);
636
+ line-height: 1.25;
637
+ white-space: nowrap;
638
+ cursor: pointer;
639
+ }
640
+
641
+ .fc-file-context-menu-item:hover {
642
+ background: var(--fc-bgHover);
643
+ color: var(--fc-text);
644
+ }
645
+
646
+ .fc-file-context-menu-item--accent {
647
+ color: var(--fc-accent);
648
+ }
649
+
650
+ .fc-file-context-menu-item--danger {
651
+ color: var(--fc-error);
652
+ }
653
+
654
+ .fc-file-context-menu-separator {
655
+ height: 1px;
656
+ margin: 4px 0;
657
+ background: var(--fc-borderLight);
658
+ }
659
+
660
+ /* --- Shield theme: tactical CAD HUD chrome --- */
661
+ :root[data-fc-hud-theme="shield"] {
662
+ --fc-hud-font: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
663
+ --fc-shield-line: rgba(54, 232, 255, 0.28);
664
+ --fc-shield-line-soft: rgba(54, 232, 255, 0.14);
665
+ --fc-shield-amber-soft: rgba(255, 157, 54, 0.16);
666
+ --fc-shield-glow: 0 0 20px rgba(54, 232, 255, 0.14);
667
+ --fc-shield-panel-glow: 0 0 34px rgba(54, 232, 255, 0.08), inset 0 1px 0 rgba(217, 251, 255, 0.05);
668
+ --fc-palette-backdrop-bg: rgba(0, 9, 13, 0.88);
669
+ --fc-palette-backdrop-opacity: 1;
670
+ --fc-palette-bg:
671
+ linear-gradient(180deg, rgba(54, 232, 255, 0.08), transparent 28%), color-mix(in srgb, var(--fc-bgPanel) 92%, transparent);
672
+ --fc-palette-border: rgba(54, 232, 255, 0.32);
673
+ --fc-palette-radius: 4px;
674
+ --fc-palette-shadow: 0 18px 70px rgba(0, 0, 0, 0.56), 0 0 42px rgba(54, 232, 255, 0.14), inset 0 1px 0 rgba(217, 251, 255, 0.06);
675
+ --fc-palette-font: var(--fc-hud-font);
676
+ --fc-palette-row-selected: linear-gradient(90deg, rgba(54, 232, 255, 0.2), rgba(54, 232, 255, 0.06) 58%, rgba(255, 157, 54, 0.08));
677
+ --fc-palette-kbd-bg: rgba(1, 12, 17, 0.78);
678
+ --fc-palette-kbd-border: rgba(54, 232, 255, 0.26);
679
+ --fc-modal-backdrop-bg: rgba(0, 9, 13, 0.78);
680
+ --fc-modal-backdrop-opacity: 1;
681
+ --fc-modal-surface-bg:
682
+ linear-gradient(180deg, rgba(54, 232, 255, 0.075), transparent 28%), color-mix(in srgb, var(--fc-bgPanel) 91%, transparent);
683
+ --fc-modal-border: rgba(54, 232, 255, 0.32);
684
+ --fc-modal-radius: 4px;
685
+ --fc-modal-shadow: 0 22px 70px rgba(0, 0, 0, 0.55), 0 0 46px rgba(54, 232, 255, 0.14), inset 0 1px 0 rgba(217, 251, 255, 0.06);
686
+ --fc-popover-bg: linear-gradient(180deg, rgba(54, 232, 255, 0.07), transparent 45%), rgba(1, 8, 12, 0.97);
687
+ --fc-popover-border: rgba(54, 232, 255, 0.3);
688
+ --fc-popover-radius: 4px;
689
+ --fc-popover-shadow: 0 18px 52px rgba(0, 0, 0, 0.46), 0 0 34px rgba(54, 232, 255, 0.12), inset 0 1px 0 rgba(217, 251, 255, 0.05);
690
+ --fc-floating-panel-bg: linear-gradient(180deg, rgba(54, 232, 255, 0.08), rgba(1, 8, 12, 0.86));
691
+ --fc-floating-panel-border: rgba(54, 232, 255, 0.28);
692
+ --fc-floating-panel-radius: 4px;
693
+ --fc-floating-panel-shadow: 0 16px 38px rgba(0, 0, 0, 0.38), 0 0 26px rgba(54, 232, 255, 0.12), inset 0 1px 0 rgba(217, 251, 255, 0.05);
694
+ --fc-measure-banner-bg: linear-gradient(90deg, rgba(255, 157, 54, 0.92), rgba(54, 232, 255, 0.84));
695
+ --fc-measure-banner-border: rgba(217, 251, 255, 0.22);
696
+ --fc-measure-banner-color: #001114;
697
+ --fc-measure-banner-radius: 4px;
698
+ --fc-measure-banner-shadow: 0 12px 28px rgba(0, 0, 0, 0.36), 0 0 24px rgba(255, 157, 54, 0.18);
699
+ --fc-measure-panel-bg: var(--fc-floating-panel-bg);
700
+ --fc-measure-panel-border: var(--fc-floating-panel-border);
701
+ --fc-measure-panel-text: var(--fc-text);
702
+ --fc-performance-title-letter-spacing: 0;
703
+ --fc-project-menu-title-letter-spacing: 0;
704
+ --fc-project-item-bg: transparent;
705
+ --fc-project-item-hover-bg: linear-gradient(90deg, rgba(54, 232, 255, 0.13), rgba(54, 232, 255, 0.035) 62%, transparent);
706
+ --fc-project-item-active-bg: linear-gradient(90deg, rgba(54, 232, 255, 0.24), rgba(54, 232, 255, 0.065) 70%, rgba(255, 157, 54, 0.08));
707
+ --fc-publish-label-letter-spacing: 0;
708
+ --fc-toast-radius: 4px;
709
+ --fc-toast-container-top: 56px;
710
+ --fc-toast-container-right: 50%;
711
+ --fc-toast-container-transform: translateX(50%);
712
+ --fc-toast-shadow: 0 14px 34px rgba(0, 0, 0, 0.42), 0 0 26px rgba(54, 232, 255, 0.12), inset 0 1px 0 rgba(217, 251, 255, 0.05);
713
+ --fc-toast-success-bg: linear-gradient(90deg, rgba(67, 220, 150, 0.2), rgba(1, 12, 17, 0.95));
714
+ --fc-toast-success-border: rgba(67, 220, 150, 0.52);
715
+ --fc-toast-error-bg: linear-gradient(90deg, rgba(255, 76, 99, 0.22), rgba(1, 12, 17, 0.95));
716
+ --fc-toast-error-border: rgba(255, 76, 99, 0.58);
717
+ --fc-toast-info-bg: linear-gradient(90deg, rgba(54, 232, 255, 0.16), rgba(1, 12, 17, 0.95));
718
+ --fc-toast-info-border: rgba(54, 232, 255, 0.5);
719
+ --fc-toast-icon-color: #001114;
720
+ --fc-toast-icon-radius: 3px;
721
+ --fc-statusbar-file-color: #8ebdc6;
722
+ --fc-statusbar-chip-bg: rgba(1, 12, 17, 0.66);
723
+ --fc-statusbar-chip-border: rgba(54, 232, 255, 0.2);
724
+ --fc-statusbar-chip-color: #8ebdc6;
725
+ --fc-statusbar-chip-radius: 3px;
726
+ --fc-statusbar-chip-letter-spacing: 0;
727
+ --fc-draw-label-letter-spacing: 0;
728
+ --fc-draw-divider-bg: linear-gradient(90deg, transparent, rgba(54, 232, 255, 0.4), transparent);
729
+ --fc-draw-palette-gap: 3px;
730
+ --fc-draw-palette-padding: 5px;
731
+ --fc-draw-kbd-bg: rgba(1, 12, 17, 0.6);
732
+ --fc-draw-kbd-radius: 3px;
733
+ --fc-draw-tool-bg: rgba(1, 12, 17, 0.28);
734
+ --fc-draw-tool-hover-bg: linear-gradient(135deg, rgba(54, 232, 255, 0.16), rgba(1, 12, 17, 0.66));
735
+ --fc-draw-tool-active-bg: linear-gradient(135deg, rgba(54, 232, 255, 0.9), rgba(31, 141, 160, 0.86));
736
+ --fc-draw-tool-active-color: #001114;
737
+ --fc-draw-tool-color: var(--fc-textMuted);
738
+ --fc-draw-tool-border: rgba(54, 232, 255, 0.12);
739
+ --fc-draw-tool-radius: 4px;
740
+ --fc-draw-status-bg: linear-gradient(90deg, rgba(54, 232, 255, 0.86), rgba(31, 141, 160, 0.72) 62%, rgba(255, 157, 54, 0.74));
741
+ --fc-draw-status-color: #001114;
742
+ --fc-draw-status-radius: 4px;
743
+ --fc-draw-status-shadow: 0 10px 32px rgba(0, 0, 0, 0.38), 0 0 28px rgba(54, 232, 255, 0.2);
744
+ --fc-draw-status-badge-bg: rgba(1, 12, 17, 0.62);
745
+ --fc-draw-apply-bg: linear-gradient(90deg, rgba(54, 232, 255, 0.9), rgba(255, 157, 54, 0.78));
746
+ --fc-draw-apply-border: rgba(217, 251, 255, 0.22);
747
+ --fc-draw-apply-color: #001114;
748
+ --fc-build-ledger-header-bg: linear-gradient(90deg, rgba(54, 232, 255, 0.1), rgba(255, 157, 54, 0.04));
749
+ --fc-build-ledger-divider-bg: rgba(54, 232, 255, 0.13);
750
+ --fc-build-ledger-metric-bg: rgba(1, 12, 17, 0.7);
751
+ --fc-file-panel-bg:
752
+ linear-gradient(rgba(54, 232, 255, 0.018) 1px, transparent 1px), linear-gradient(90deg, rgba(54, 232, 255, 0.018) 1px, transparent 1px),
753
+ color-mix(in srgb, var(--fc-bgSurface) 90%, transparent);
754
+ --fc-file-panel-border: var(--fc-shield-line);
755
+ --fc-file-header-bg: linear-gradient(90deg, rgba(54, 232, 255, 0.09), rgba(255, 157, 54, 0.035));
756
+ --fc-file-header-border: var(--fc-shield-line-soft);
757
+ --fc-file-row-text: #8ebdc6;
758
+ --fc-file-row-active-text: #d9fbff;
759
+ --fc-file-row-hover: linear-gradient(90deg, rgba(54, 232, 255, 0.13), transparent 74%);
760
+ --fc-file-row-selected: linear-gradient(90deg, rgba(54, 232, 255, 0.22), rgba(54, 232, 255, 0.07));
761
+ --fc-file-input-bg: rgba(1, 8, 12, 0.86);
762
+ --fc-file-input-border: rgba(54, 232, 255, 0.58);
763
+ --fc-param-panel-bg: linear-gradient(180deg, rgba(54, 232, 255, 0.045), rgba(1, 8, 12, 0.9));
764
+ --fc-param-panel-border: var(--fc-shield-line);
765
+ --fc-param-card-bg: linear-gradient(135deg, rgba(54, 232, 255, 0.07), rgba(1, 8, 12, 0.78));
766
+ --fc-param-row-bg: rgba(1, 8, 12, 0.62);
767
+ --fc-param-card-border: rgba(54, 232, 255, 0.24);
768
+ --fc-param-card-radius: 4px;
769
+ --fc-number-input-bg: rgba(1, 8, 12, 0.82);
770
+ --fc-number-input-border: rgba(54, 232, 255, 0.28);
771
+ --fc-small-button-bg: rgba(54, 232, 255, 0.055);
772
+ --fc-small-button-border: rgba(54, 232, 255, 0.24);
773
+ }
774
+
775
+ :root[data-fc-theme="shield-light"] {
776
+ --fc-shield-line: rgba(0, 138, 166, 0.34);
777
+ --fc-shield-line-soft: rgba(0, 138, 166, 0.18);
778
+ --fc-shield-amber-soft: rgba(192, 107, 22, 0.22);
779
+ --fc-shield-glow: 0 0 20px rgba(0, 138, 166, 0.16);
780
+ --fc-shield-panel-glow: 0 0 34px rgba(0, 138, 166, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.74);
781
+ --fc-palette-backdrop-bg: rgba(166, 181, 180, 0.62);
782
+ --fc-palette-bg:
783
+ linear-gradient(180deg, rgba(0, 138, 166, 0.14), transparent 30%), color-mix(in srgb, var(--fc-bgPanel) 94%, transparent);
784
+ --fc-palette-border: rgba(0, 138, 166, 0.42);
785
+ --fc-palette-shadow: 0 18px 70px rgba(38, 55, 58, 0.24), 0 0 42px rgba(0, 138, 166, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.88);
786
+ --fc-palette-row-selected: linear-gradient(90deg, rgba(0, 138, 166, 0.22), rgba(0, 138, 166, 0.08) 58%, rgba(192, 107, 22, 0.12));
787
+ --fc-palette-kbd-bg: rgba(255, 255, 255, 0.76);
788
+ --fc-palette-kbd-border: rgba(0, 138, 166, 0.28);
789
+ --fc-modal-backdrop-bg: rgba(166, 181, 180, 0.62);
790
+ --fc-modal-surface-bg:
791
+ linear-gradient(180deg, rgba(0, 138, 166, 0.13), transparent 30%), color-mix(in srgb, var(--fc-bgPanel) 94%, transparent);
792
+ --fc-modal-border: rgba(0, 138, 166, 0.42);
793
+ --fc-modal-shadow: 0 22px 70px rgba(38, 55, 58, 0.22), 0 0 42px rgba(0, 138, 166, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.88);
794
+ --fc-popover-bg: linear-gradient(180deg, rgba(0, 138, 166, 0.12), transparent 46%), rgba(219, 227, 224, 0.97);
795
+ --fc-popover-border: rgba(0, 138, 166, 0.38);
796
+ --fc-popover-shadow: 0 18px 52px rgba(38, 55, 58, 0.18), 0 0 32px rgba(0, 138, 166, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.86);
797
+ --fc-floating-panel-bg: linear-gradient(180deg, rgba(0, 138, 166, 0.13), rgba(219, 227, 224, 0.9));
798
+ --fc-floating-panel-border: rgba(0, 138, 166, 0.36);
799
+ --fc-floating-panel-shadow: 0 16px 38px rgba(38, 55, 58, 0.18), 0 0 28px rgba(0, 138, 166, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.84);
800
+ --fc-measure-banner-bg: linear-gradient(90deg, rgba(192, 107, 22, 0.9), rgba(0, 138, 166, 0.86));
801
+ --fc-measure-banner-border: rgba(255, 255, 255, 0.58);
802
+ --fc-measure-banner-color: #ffffff;
803
+ --fc-measure-banner-shadow: 0 12px 28px rgba(38, 55, 58, 0.18), 0 0 24px rgba(192, 107, 22, 0.18);
804
+ --fc-project-item-hover-bg: linear-gradient(90deg, rgba(0, 138, 166, 0.16), rgba(0, 138, 166, 0.05) 62%, transparent);
805
+ --fc-project-item-active-bg: linear-gradient(90deg, rgba(0, 138, 166, 0.24), rgba(0, 138, 166, 0.08) 70%, rgba(192, 107, 22, 0.12));
806
+ --fc-toast-shadow: 0 14px 34px rgba(38, 55, 58, 0.18), 0 0 26px rgba(0, 138, 166, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.82);
807
+ --fc-toast-success-bg: linear-gradient(90deg, rgba(10, 143, 102, 0.16), rgba(219, 227, 224, 0.95));
808
+ --fc-toast-error-bg: linear-gradient(90deg, rgba(217, 56, 79, 0.16), rgba(219, 227, 224, 0.95));
809
+ --fc-toast-info-bg: linear-gradient(90deg, rgba(0, 138, 166, 0.16), rgba(219, 227, 224, 0.95));
810
+ --fc-toast-icon-color: #ffffff;
811
+ --fc-statusbar-file-color: #24494f;
812
+ --fc-statusbar-chip-bg: rgba(255, 255, 255, 0.58);
813
+ --fc-statusbar-chip-border: rgba(0, 138, 166, 0.26);
814
+ --fc-statusbar-chip-color: #24494f;
815
+ --fc-draw-divider-bg: linear-gradient(90deg, transparent, rgba(0, 138, 166, 0.44), transparent);
816
+ --fc-draw-kbd-bg: rgba(255, 255, 255, 0.62);
817
+ --fc-draw-tool-bg: rgba(255, 255, 255, 0.36);
818
+ --fc-draw-tool-hover-bg: linear-gradient(135deg, rgba(0, 138, 166, 0.16), rgba(255, 255, 255, 0.78));
819
+ --fc-draw-tool-active-bg: linear-gradient(135deg, rgba(0, 138, 166, 0.9), rgba(18, 111, 128, 0.86));
820
+ --fc-draw-tool-active-color: #ffffff;
821
+ --fc-draw-tool-border: rgba(0, 138, 166, 0.18);
822
+ --fc-draw-status-bg: linear-gradient(90deg, rgba(0, 138, 166, 0.88), rgba(18, 111, 128, 0.74) 62%, rgba(192, 107, 22, 0.76));
823
+ --fc-draw-status-color: #ffffff;
824
+ --fc-draw-status-shadow: 0 10px 32px rgba(38, 55, 58, 0.18), 0 0 28px rgba(0, 138, 166, 0.18);
825
+ --fc-draw-status-badge-bg: rgba(255, 255, 255, 0.52);
826
+ --fc-draw-apply-bg: linear-gradient(90deg, rgba(0, 138, 166, 0.9), rgba(192, 107, 22, 0.78));
827
+ --fc-draw-apply-border: rgba(255, 255, 255, 0.58);
828
+ --fc-draw-apply-color: #ffffff;
829
+ --fc-build-ledger-header-bg: linear-gradient(90deg, rgba(0, 138, 166, 0.12), rgba(192, 107, 22, 0.06));
830
+ --fc-build-ledger-divider-bg: rgba(0, 138, 166, 0.16);
831
+ --fc-build-ledger-metric-bg: rgba(255, 255, 255, 0.62);
832
+ --fc-file-panel-bg:
833
+ linear-gradient(rgba(0, 138, 166, 0.035) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 138, 166, 0.035) 1px, transparent 1px),
834
+ color-mix(in srgb, var(--fc-bgSurface) 92%, transparent);
835
+ --fc-file-header-bg: linear-gradient(90deg, rgba(0, 138, 166, 0.12), rgba(192, 107, 22, 0.05));
836
+ --fc-file-row-text: #24494f;
837
+ --fc-file-row-active-text: #071518;
838
+ --fc-file-row-hover: linear-gradient(90deg, rgba(0, 138, 166, 0.16), transparent 74%);
839
+ --fc-file-row-selected: linear-gradient(90deg, rgba(0, 138, 166, 0.22), rgba(0, 138, 166, 0.08));
840
+ --fc-file-input-bg: rgba(255, 255, 255, 0.82);
841
+ --fc-file-input-border: rgba(0, 138, 166, 0.58);
842
+ --fc-param-panel-bg: linear-gradient(180deg, rgba(0, 138, 166, 0.08), rgba(219, 227, 224, 0.88));
843
+ --fc-param-card-bg: linear-gradient(135deg, rgba(0, 138, 166, 0.09), rgba(255, 255, 255, 0.72));
844
+ --fc-param-row-bg: rgba(255, 255, 255, 0.58);
845
+ --fc-param-card-border: rgba(0, 138, 166, 0.26);
846
+ --fc-number-input-bg: rgba(255, 255, 255, 0.78);
847
+ --fc-number-input-border: rgba(0, 138, 166, 0.32);
848
+ --fc-small-button-bg: rgba(0, 138, 166, 0.08);
849
+ --fc-small-button-border: rgba(0, 138, 166, 0.26);
850
+ }
851
+
852
+ :root[data-fc-hud-theme="shield"] * {
853
+ scrollbar-color: rgba(54, 232, 255, 0.42) rgba(1, 8, 12, 0.7);
854
+ }
855
+
856
+ :root[data-fc-hud-theme="shield"] ::-webkit-scrollbar {
857
+ width: 10px;
858
+ height: 10px;
859
+ }
860
+
861
+ :root[data-fc-hud-theme="shield"] ::-webkit-scrollbar-track {
862
+ background: rgba(1, 8, 12, 0.72);
863
+ }
864
+
865
+ :root[data-fc-hud-theme="shield"] ::-webkit-scrollbar-thumb {
866
+ border: 2px solid rgba(1, 8, 12, 0.72);
867
+ border-radius: 0;
868
+ background: linear-gradient(180deg, rgba(54, 232, 255, 0.58), rgba(14, 88, 104, 0.8));
869
+ }
870
+
871
+ :root[data-fc-hud-theme="shield"] ::-webkit-scrollbar-thumb:hover {
872
+ background: linear-gradient(180deg, rgba(54, 232, 255, 0.8), rgba(255, 157, 54, 0.58));
873
+ }
874
+
875
+ :root[data-fc-hud-theme="shield"] .fc-app-shell {
876
+ background:
877
+ linear-gradient(rgba(54, 232, 255, 0.025) 1px, transparent 1px), linear-gradient(90deg, rgba(54, 232, 255, 0.025) 1px, transparent 1px),
878
+ radial-gradient(circle at 54% 46%, rgba(54, 232, 255, 0.08), transparent 34%),
879
+ linear-gradient(180deg, var(--fc-bgOverlay), var(--fc-bg));
880
+ background-size:
881
+ 34px 34px,
882
+ 34px 34px,
883
+ cover,
884
+ cover;
885
+ }
886
+
887
+ :root[data-fc-hud-theme="shield"] .fc-app-shell::before {
888
+ position: absolute;
889
+ inset: 0;
890
+ z-index: 100;
891
+ pointer-events: none;
892
+ content: "";
893
+ background: repeating-linear-gradient(180deg, rgba(217, 251, 255, 0.028) 0 1px, transparent 1px 4px);
894
+ opacity: 0.32;
895
+ mix-blend-mode: screen;
896
+ }
897
+
898
+ :root[data-fc-hud-theme="shield"] .fc-app-shell::after {
899
+ position: absolute;
900
+ inset: 0;
901
+ z-index: 101;
902
+ pointer-events: none;
903
+ content: "";
904
+ background:
905
+ linear-gradient(90deg, rgba(0, 0, 0, 0.36), transparent 12%, transparent 88%, rgba(0, 0, 0, 0.36)),
906
+ linear-gradient(180deg, rgba(0, 0, 0, 0.18), transparent 18%, transparent 82%, rgba(0, 0, 0, 0.32));
907
+ }
908
+
909
+ :root[data-fc-hud-theme="shield"] .fc-boot-screen {
910
+ position: relative;
911
+ overflow: hidden;
912
+ background:
913
+ radial-gradient(circle at 50% 44%, rgba(54, 232, 255, 0.11), transparent 26%),
914
+ linear-gradient(rgba(54, 232, 255, 0.026) 1px, transparent 1px), linear-gradient(90deg, rgba(54, 232, 255, 0.026) 1px, transparent 1px),
915
+ var(--fc-bg);
916
+ background-size:
917
+ cover,
918
+ 36px 36px,
919
+ 36px 36px,
920
+ cover;
921
+ font-family: var(--fc-hud-font);
922
+ }
923
+
924
+ :root[data-fc-hud-theme="shield"] .fc-boot-screen::before,
925
+ :root[data-fc-hud-theme="shield"] .fc-boot-screen::after {
926
+ position: absolute;
927
+ pointer-events: none;
928
+ content: "";
929
+ }
930
+
931
+ :root[data-fc-hud-theme="shield"] .fc-boot-screen::before {
932
+ inset: 18px;
933
+ border: 1px solid rgba(54, 232, 255, 0.14);
934
+ background:
935
+ linear-gradient(90deg, var(--fc-accent) 0 52px, transparent 52px) top left / 180px 1px no-repeat,
936
+ linear-gradient(90deg, transparent calc(100% - 52px), var(--fc-warning) calc(100% - 52px)) bottom right / 180px 1px no-repeat,
937
+ linear-gradient(180deg, var(--fc-accent) 0 52px, transparent 52px) top left / 1px 180px no-repeat,
938
+ linear-gradient(180deg, transparent calc(100% - 52px), var(--fc-warning) calc(100% - 52px)) bottom right / 1px 180px no-repeat;
939
+ opacity: 0.84;
940
+ }
941
+
942
+ :root[data-fc-hud-theme="shield"] .fc-boot-screen::after {
943
+ inset: 0;
944
+ background:
945
+ radial-gradient(circle at 50% 50%, transparent 0 18%, rgba(54, 232, 255, 0.12) 18.2% 18.45%, transparent 18.7% 29%),
946
+ conic-gradient(
947
+ from 20deg at 50% 50%,
948
+ transparent 0deg 54deg,
949
+ rgba(255, 157, 54, 0.12) 54deg 55deg,
950
+ transparent 55deg 148deg,
951
+ rgba(54, 232, 255, 0.12) 148deg 149deg,
952
+ transparent 149deg 360deg
953
+ ),
954
+ repeating-linear-gradient(180deg, rgba(217, 251, 255, 0.018) 0 1px, transparent 1px 5px);
955
+ opacity: 0.46;
956
+ animation: fc-shield-viewport-scan 18s linear infinite;
957
+ }
958
+
959
+ :root[data-fc-hud-theme="shield"] .fc-boot-card {
960
+ position: relative;
961
+ z-index: 1;
962
+ min-width: 280px;
963
+ padding: 24px 28px 26px;
964
+ border: 1px solid rgba(54, 232, 255, 0.28);
965
+ background: linear-gradient(180deg, rgba(54, 232, 255, 0.075), rgba(1, 8, 12, 0.72));
966
+ box-shadow:
967
+ 0 18px 60px rgba(0, 0, 0, 0.42),
968
+ 0 0 42px rgba(54, 232, 255, 0.12),
969
+ inset 0 1px 0 rgba(217, 251, 255, 0.06);
970
+ clip-path: polygon(12px 0, 100% 0, 100% calc(100% - 12px), calc(100% - 12px) 100%, 0 100%, 0 12px);
971
+ }
972
+
973
+ :root[data-fc-hud-theme="shield"] .fc-boot-mark {
974
+ --fc-boot-mark-font-size: 0;
975
+ --fc-boot-mark-margin-bottom: 18px;
976
+ position: relative;
977
+ width: 72px;
978
+ height: 72px;
979
+ margin-right: auto;
980
+ margin-left: auto;
981
+ color: transparent;
982
+ border: 1px solid rgba(54, 232, 255, 0.34);
983
+ border-radius: 50%;
984
+ background:
985
+ radial-gradient(circle, rgba(54, 232, 255, 0.9) 0 8%, transparent 9% 22%, rgba(54, 232, 255, 0.22) 23% 24%, transparent 25%),
986
+ conic-gradient(
987
+ from 0deg,
988
+ rgba(54, 232, 255, 0.16),
989
+ transparent 24deg 74deg,
990
+ rgba(255, 157, 54, 0.24) 74deg 88deg,
991
+ transparent 88deg 180deg,
992
+ rgba(54, 232, 255, 0.18),
993
+ transparent 220deg
994
+ );
995
+ box-shadow:
996
+ 0 0 28px rgba(54, 232, 255, 0.18),
997
+ inset 0 0 24px rgba(54, 232, 255, 0.08);
998
+ }
999
+
1000
+ :root[data-fc-hud-theme="shield"] .fc-boot-mark::before,
1001
+ :root[data-fc-hud-theme="shield"] .fc-boot-mark::after {
1002
+ position: absolute;
1003
+ inset: 13px;
1004
+ pointer-events: none;
1005
+ content: "";
1006
+ border: 1px solid rgba(54, 232, 255, 0.44);
1007
+ border-radius: 50%;
1008
+ }
1009
+
1010
+ :root[data-fc-hud-theme="shield"] .fc-boot-mark::after {
1011
+ inset: 24px;
1012
+ border-color: rgba(255, 157, 54, 0.44);
1013
+ box-shadow: 0 0 14px rgba(255, 157, 54, 0.18);
1014
+ }
1015
+
1016
+ :root[data-fc-hud-theme="shield"] .fc-boot-title {
1017
+ --fc-boot-title-letter-spacing: 0;
1018
+ font-family: var(--fc-hud-font);
1019
+ text-shadow: 0 0 14px rgba(54, 232, 255, 0.22);
1020
+ }
1021
+
1022
+ :root[data-fc-hud-theme="shield"] .fc-boot-subtitle {
1023
+ --fc-boot-subtitle-color: var(--fc-textMuted);
1024
+ font-family: var(--fc-hud-font);
1025
+ }
1026
+
1027
+ :root[data-fc-hud-theme="shield"] .fc-boot-progress {
1028
+ --fc-boot-progress-height: 4px;
1029
+ --fc-boot-progress-bg: rgba(1, 12, 17, 0.74);
1030
+ border: 1px solid rgba(54, 232, 255, 0.2);
1031
+ box-shadow:
1032
+ inset 0 0 10px rgba(54, 232, 255, 0.06),
1033
+ 0 0 16px rgba(54, 232, 255, 0.12);
1034
+ }
1035
+
1036
+ :root[data-fc-hud-theme="shield"] .fc-boot-progress-fill {
1037
+ --fc-boot-progress-fill-bg: linear-gradient(90deg, transparent, var(--fc-accent), var(--fc-warning), transparent);
1038
+ }
1039
+
1040
+ :root[data-fc-hud-theme="shield"] .fc-toolbar {
1041
+ position: relative;
1042
+ background:
1043
+ linear-gradient(90deg, rgba(54, 232, 255, 0.12), transparent 22%), linear-gradient(270deg, rgba(255, 157, 54, 0.09), transparent 22%),
1044
+ color-mix(in srgb, var(--fc-bgPanel) 92%, transparent);
1045
+ border-bottom-color: var(--fc-shield-line);
1046
+ box-shadow: var(--fc-shield-panel-glow);
1047
+ }
1048
+
1049
+ :root[data-fc-hud-theme="shield"] .fc-toolbar::before {
1050
+ position: absolute;
1051
+ inset: 0;
1052
+ pointer-events: none;
1053
+ content: "";
1054
+ background:
1055
+ linear-gradient(90deg, var(--fc-accent) 0 44px, transparent 44px) top left / 140px 1px no-repeat,
1056
+ linear-gradient(90deg, transparent calc(100% - 44px), var(--fc-warning) calc(100% - 44px)) bottom right / 140px 1px no-repeat;
1057
+ opacity: 0.8;
1058
+ }
1059
+
1060
+ :root[data-fc-hud-theme="shield"] .fc-separator {
1061
+ background: linear-gradient(180deg, transparent, var(--fc-accent), transparent);
1062
+ box-shadow: 0 0 12px rgba(54, 232, 255, 0.45);
1063
+ }
1064
+
1065
+ :root[data-fc-hud-theme="shield"] .fc-btn {
1066
+ background: color-mix(in srgb, var(--fc-bgInput) 82%, transparent);
1067
+ border-color: var(--fc-shield-line-soft);
1068
+ color: var(--fc-textMuted);
1069
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.035);
1070
+ }
1071
+
1072
+ :root[data-fc-hud-theme="shield"] .fc-btn:hover {
1073
+ background: color-mix(in srgb, var(--fc-accent) 12%, var(--fc-bgInput));
1074
+ border-color: color-mix(in srgb, var(--fc-accent) 68%, transparent);
1075
+ color: var(--fc-text);
1076
+ box-shadow:
1077
+ inset 0 -2px 0 color-mix(in srgb, var(--fc-accent) 72%, transparent),
1078
+ var(--fc-shield-glow);
1079
+ }
1080
+
1081
+ :root[data-fc-hud-theme="shield"] .fc-btn.active {
1082
+ background: linear-gradient(
1083
+ 180deg,
1084
+ color-mix(in srgb, var(--fc-accent) 28%, transparent),
1085
+ color-mix(in srgb, var(--fc-accent) 12%, var(--fc-bgInput))
1086
+ );
1087
+ border-color: color-mix(in srgb, var(--fc-accent) 78%, transparent);
1088
+ color: var(--fc-text);
1089
+ box-shadow:
1090
+ inset 0 -2px 0 var(--fc-accent),
1091
+ 0 0 18px rgba(54, 232, 255, 0.18);
1092
+ }
1093
+
1094
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-file {
1095
+ border-radius: 4px;
1096
+ background:
1097
+ linear-gradient(90deg, color-mix(in srgb, var(--fc-accent) 10%, transparent), transparent 18%),
1098
+ color-mix(in srgb, var(--fc-bgInput) 88%, transparent);
1099
+ clip-path: polygon(8px 0, 100% 0, 100% 100%, 0 100%, 0 8px);
1100
+ }
1101
+
1102
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-filename {
1103
+ color: var(--fc-text);
1104
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
1105
+ }
1106
+
1107
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-shortcut {
1108
+ background: color-mix(in srgb, var(--fc-accent) 11%, transparent);
1109
+ border-color: var(--fc-shield-line-soft);
1110
+ color: var(--fc-textDim);
1111
+ }
1112
+
1113
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph {
1114
+ position: relative;
1115
+ display: inline-grid;
1116
+ flex: 0 0 14px;
1117
+ width: 14px;
1118
+ height: 14px;
1119
+ place-items: center;
1120
+ overflow: visible;
1121
+ color: transparent;
1122
+ font-size: 0;
1123
+ line-height: 1;
1124
+ }
1125
+
1126
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph::before,
1127
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph::after {
1128
+ position: absolute;
1129
+ pointer-events: none;
1130
+ content: "";
1131
+ }
1132
+
1133
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph--files::before {
1134
+ bottom: 2px;
1135
+ left: 1px;
1136
+ width: 12px;
1137
+ height: 8px;
1138
+ border: 1px solid var(--fc-accent);
1139
+ background: rgba(54, 232, 255, 0.08);
1140
+ box-shadow: 0 0 10px rgba(54, 232, 255, 0.28);
1141
+ clip-path: polygon(0 2px, 36% 2px, 46% 0, 100% 0, 100% 100%, 0 100%);
1142
+ }
1143
+
1144
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph--inspector::before {
1145
+ inset: 1px;
1146
+ border: 1px solid var(--fc-accent);
1147
+ border-radius: 50%;
1148
+ background:
1149
+ linear-gradient(90deg, transparent 46%, var(--fc-accent) 47% 53%, transparent 54%),
1150
+ linear-gradient(180deg, transparent 46%, var(--fc-accent) 47% 53%, transparent 54%);
1151
+ box-shadow: 0 0 11px rgba(54, 232, 255, 0.3);
1152
+ opacity: 0.92;
1153
+ }
1154
+
1155
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph--measure::before {
1156
+ top: 6px;
1157
+ left: 1px;
1158
+ width: 13px;
1159
+ height: 3px;
1160
+ border: 1px solid var(--fc-warning);
1161
+ background: repeating-linear-gradient(90deg, rgba(1, 12, 17, 0.92) 0 2px, rgba(255, 157, 54, 0.75) 2px 3px);
1162
+ box-shadow: 0 0 10px rgba(255, 157, 54, 0.25);
1163
+ transform: rotate(-38deg);
1164
+ }
1165
+
1166
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph--draw::before {
1167
+ top: 1px;
1168
+ left: 6px;
1169
+ width: 3px;
1170
+ height: 12px;
1171
+ border-radius: 2px;
1172
+ background: linear-gradient(180deg, var(--fc-accent), var(--fc-warning));
1173
+ box-shadow: 0 0 10px rgba(54, 232, 255, 0.24);
1174
+ transform: rotate(36deg);
1175
+ }
1176
+
1177
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph--live::before {
1178
+ inset: 1px 3px;
1179
+ background: var(--fc-warning);
1180
+ box-shadow: 0 0 12px rgba(255, 157, 54, 0.35);
1181
+ clip-path: polygon(58% 0, 26% 42%, 52% 42%, 40% 100%, 78% 36%, 52% 36%);
1182
+ }
1183
+
1184
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph--build::before {
1185
+ inset: 2px;
1186
+ border: 1px solid var(--fc-accent);
1187
+ border-left-color: transparent;
1188
+ border-radius: 50%;
1189
+ box-shadow: 0 0 9px rgba(54, 232, 255, 0.25);
1190
+ }
1191
+
1192
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph--build::after {
1193
+ top: 1px;
1194
+ right: 1px;
1195
+ width: 4px;
1196
+ height: 4px;
1197
+ border-top: 1px solid var(--fc-accent);
1198
+ border-right: 1px solid var(--fc-accent);
1199
+ transform: rotate(18deg);
1200
+ }
1201
+
1202
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-glyph--ai::before {
1203
+ color: var(--fc-warning);
1204
+ font-size: 14px;
1205
+ line-height: 14px;
1206
+ content: "✦";
1207
+ text-shadow:
1208
+ 0 0 8px rgba(255, 157, 54, 0.45),
1209
+ 0 0 16px rgba(54, 232, 255, 0.2);
1210
+ }
1211
+
1212
+ :root[data-fc-hud-theme="shield"] .fc-toolbar-ai-btn {
1213
+ --fc-ai-start: var(--fc-accent);
1214
+ --fc-ai-mid: color-mix(in srgb, var(--fc-accent) 34%, var(--fc-warning));
1215
+ --fc-ai-end: var(--fc-warning);
1216
+ color: #fff0d8;
1217
+ text-shadow: 0 0 8px rgba(255, 157, 54, 0.4);
1218
+ }
1219
+
1220
+ :root[data-fc-hud-theme="shield"] .fc-panel-header {
1221
+ border-top: 1px solid var(--fc-shield-line-soft);
1222
+ background: linear-gradient(90deg, rgba(54, 232, 255, 0.08), transparent);
1223
+ color: var(--fc-accent);
1224
+ font-family: var(--fc-hud-font);
1225
+ letter-spacing: 0;
1226
+ }
1227
+
1228
+ :root[data-fc-hud-theme="shield"] .fc-view-panel {
1229
+ background:
1230
+ linear-gradient(rgba(54, 232, 255, 0.025) 1px, transparent 1px), linear-gradient(90deg, rgba(54, 232, 255, 0.025) 1px, transparent 1px),
1231
+ color-mix(in srgb, var(--fc-bgPanel) 94%, transparent);
1232
+ background-size:
1233
+ 28px 28px,
1234
+ 28px 28px,
1235
+ cover;
1236
+ border-left-color: var(--fc-shield-line);
1237
+ box-shadow: var(--fc-shield-panel-glow);
1238
+ }
1239
+
1240
+ :root[data-fc-hud-theme="shield"] .fc-view-panel-header,
1241
+ :root[data-fc-hud-theme="shield"] .fc-view-panel-tabs,
1242
+ :root[data-fc-hud-theme="shield"] .fc-view-panel-section {
1243
+ border-color: var(--fc-shield-line-soft);
1244
+ }
1245
+
1246
+ :root[data-fc-hud-theme="shield"] .fc-view-panel-header {
1247
+ background: linear-gradient(90deg, rgba(54, 232, 255, 0.1), rgba(255, 157, 54, 0.035));
1248
+ }
1249
+
1250
+ :root[data-fc-hud-theme="shield"] .fc-view-panel-title,
1251
+ :root[data-fc-hud-theme="shield"] .fc-view-panel-section-title {
1252
+ color: var(--fc-accent);
1253
+ font-family: var(--fc-hud-font);
1254
+ }
1255
+
1256
+ :root[data-fc-hud-theme="shield"] .fc-view-panel-tab {
1257
+ border-radius: 3px;
1258
+ color: var(--fc-textMuted);
1259
+ }
1260
+
1261
+ :root[data-fc-hud-theme="shield"] .fc-view-panel-tab.active {
1262
+ background: color-mix(in srgb, var(--fc-accent) 14%, transparent);
1263
+ border-color: color-mix(in srgb, var(--fc-accent) 64%, transparent);
1264
+ box-shadow: inset 0 -2px 0 var(--fc-accent);
1265
+ }
1266
+
1267
+ .fc-viewport-shield-scan {
1268
+ display: none;
1269
+ }
1270
+
1271
+ :root[data-fc-hud-theme="shield"] .fc-viewport-shell {
1272
+ isolation: isolate;
1273
+ overflow: hidden;
1274
+ background:
1275
+ radial-gradient(circle at 50% 50%, transparent 0 20%, rgba(54, 232, 255, 0.035) 20.2% 20.6%, transparent 20.8% 33%),
1276
+ radial-gradient(circle at 50% 50%, transparent 0 41%, rgba(255, 157, 54, 0.04) 41.2% 41.6%, transparent 41.8%),
1277
+ linear-gradient(rgba(54, 232, 255, 0.032) 1px, transparent 1px), linear-gradient(90deg, rgba(54, 232, 255, 0.032) 1px, transparent 1px),
1278
+ radial-gradient(circle at 50% 48%, rgba(54, 232, 255, 0.08), transparent 38%), var(--fc-viewportBg);
1279
+ background-size:
1280
+ cover,
1281
+ cover,
1282
+ 40px 40px,
1283
+ 40px 40px,
1284
+ cover,
1285
+ cover;
1286
+ }
1287
+
1288
+ :root[data-fc-hud-theme="shield"] .fc-viewport-shell::before,
1289
+ :root[data-fc-hud-theme="shield"] .fc-viewport-shell::after {
1290
+ position: absolute;
1291
+ inset: 0;
1292
+ z-index: 2;
1293
+ pointer-events: none;
1294
+ content: "";
1295
+ }
1296
+
1297
+ :root[data-fc-hud-theme="shield"] .fc-viewport-shell::before {
1298
+ background:
1299
+ conic-gradient(
1300
+ from 12deg at 50% 50%,
1301
+ transparent 0deg 22deg,
1302
+ rgba(54, 232, 255, 0.18) 22deg 23deg,
1303
+ transparent 23deg 68deg,
1304
+ rgba(255, 157, 54, 0.13) 68deg 69deg,
1305
+ transparent 69deg 132deg,
1306
+ rgba(54, 232, 255, 0.13) 132deg 133deg,
1307
+ transparent 133deg 360deg
1308
+ ),
1309
+ radial-gradient(
1310
+ circle at 50% 50%,
1311
+ transparent 0 25%,
1312
+ rgba(54, 232, 255, 0.18) 25.1% 25.25%,
1313
+ transparent 25.4% 39%,
1314
+ rgba(255, 157, 54, 0.16) 39.1% 39.25%,
1315
+ transparent 39.4%
1316
+ ),
1317
+ linear-gradient(90deg, transparent 49.9%, rgba(54, 232, 255, 0.09) 50%, transparent 50.1%),
1318
+ linear-gradient(180deg, transparent 49.9%, rgba(54, 232, 255, 0.09) 50%, transparent 50.1%);
1319
+ opacity: 0.31;
1320
+ }
1321
+
1322
+ :root[data-fc-hud-theme="shield"] .fc-viewport-shield-scan {
1323
+ display: block;
1324
+ position: absolute;
1325
+ inset: -76px;
1326
+ z-index: 2;
1327
+ pointer-events: none;
1328
+ background:
1329
+ linear-gradient(90deg, transparent 0 37px, rgba(54, 232, 255, 0.08) 37px 38px, transparent 38px),
1330
+ linear-gradient(180deg, transparent 0 37px, rgba(54, 232, 255, 0.06) 37px 38px, transparent 38px);
1331
+ background-size:
1332
+ 76px 76px,
1333
+ 76px 76px;
1334
+ background-repeat: repeat;
1335
+ opacity: 0.31;
1336
+ transform: translate3d(0, 0, 0);
1337
+ animation: fc-shield-viewport-scan-drift 16s linear infinite;
1338
+ will-change: transform;
1339
+ }
1340
+
1341
+ :root[data-fc-hud-theme="shield"] .fc-viewport-shell::after {
1342
+ inset: 16px;
1343
+ border: 1px solid rgba(54, 232, 255, 0.11);
1344
+ background:
1345
+ linear-gradient(90deg, var(--fc-accent) 0 42px, transparent 42px) top left / 150px 1px no-repeat,
1346
+ linear-gradient(90deg, transparent calc(100% - 42px), var(--fc-warning) calc(100% - 42px)) bottom right / 150px 1px no-repeat,
1347
+ linear-gradient(180deg, var(--fc-accent) 0 42px, transparent 42px) top left / 1px 150px no-repeat,
1348
+ linear-gradient(180deg, transparent calc(100% - 42px), var(--fc-warning) calc(100% - 42px)) bottom right / 1px 150px no-repeat,
1349
+ repeating-linear-gradient(180deg, rgba(54, 232, 255, 0.16) 0 1px, transparent 1px 12px) left 28px center / 10px 72% no-repeat,
1350
+ repeating-linear-gradient(180deg, rgba(54, 232, 255, 0.1) 0 1px, transparent 1px 12px) right 28px center / 10px 72% no-repeat,
1351
+ linear-gradient(90deg, transparent, rgba(54, 232, 255, 0.08), transparent) center top / 62% 1px no-repeat,
1352
+ linear-gradient(90deg, transparent, rgba(54, 232, 255, 0.055), transparent) center bottom / 62% 1px no-repeat;
1353
+ opacity: 0.82;
1354
+ box-shadow:
1355
+ inset 0 0 28px rgba(54, 232, 255, 0.035),
1356
+ inset 0 0 80px rgba(0, 0, 0, 0.18);
1357
+ }
1358
+
1359
+ :root[data-fc-hud-theme="shield"] .fc-statusbar {
1360
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.14);
1361
+ }
1362
+
1363
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-file {
1364
+ max-width: min(34vw, 360px);
1365
+ overflow: hidden;
1366
+ text-overflow: ellipsis;
1367
+ white-space: nowrap;
1368
+ }
1369
+
1370
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-state,
1371
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-metric,
1372
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-backend,
1373
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-select {
1374
+ font-family: var(--fc-hud-font);
1375
+ }
1376
+
1377
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-metric,
1378
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-backend {
1379
+ padding: 0 2px;
1380
+ color: var(--fc-textDim);
1381
+ }
1382
+
1383
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-backend {
1384
+ height: 18px;
1385
+ padding: 0 6px;
1386
+ display: inline-flex;
1387
+ align-items: center;
1388
+ border: 1px solid rgba(54, 232, 255, 0.12);
1389
+ border-radius: var(--fc-statusbar-chip-radius);
1390
+ background: rgba(1, 12, 17, 0.38);
1391
+ }
1392
+
1393
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-select {
1394
+ box-shadow:
1395
+ inset 0 1px 0 rgba(217, 251, 255, 0.035),
1396
+ 0 0 10px rgba(54, 232, 255, 0.06);
1397
+ }
1398
+
1399
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-select:hover {
1400
+ border-color: rgba(54, 232, 255, 0.44);
1401
+ color: var(--fc-text);
1402
+ box-shadow:
1403
+ inset 0 1px 0 rgba(217, 251, 255, 0.05),
1404
+ 0 0 14px rgba(54, 232, 255, 0.12);
1405
+ }
1406
+
1407
+ :root[data-fc-hud-theme="shield"] .fc-statusbar-select {
1408
+ appearance: none;
1409
+ background-image:
1410
+ linear-gradient(45deg, transparent 50%, var(--fc-accent) 50%), linear-gradient(135deg, var(--fc-accent) 50%, transparent 50%);
1411
+ background-position:
1412
+ calc(100% - 10px) 7px,
1413
+ calc(100% - 6px) 7px;
1414
+ background-repeat: no-repeat;
1415
+ background-size:
1416
+ 4px 4px,
1417
+ 4px 4px;
1418
+ text-transform: lowercase;
1419
+ }
1420
+
1421
+ :root[data-fc-hud-theme="shield"] .fc-crash-panel,
1422
+ :root[data-fc-hud-theme="shield"] .fc-crash-error-card,
1423
+ :root[data-fc-hud-theme="shield"] .fc-crash-editor-card {
1424
+ border-color: var(--fc-shield-line);
1425
+ box-shadow: var(--fc-shield-panel-glow);
1426
+ }
1427
+
1428
+ :root[data-fc-hud-theme="shield"] .fc-modal-overlay,
1429
+ :root[data-fc-hud-theme="shield"] .fc-palette-overlay {
1430
+ font-family: var(--fc-hud-font);
1431
+ }
1432
+
1433
+ :root[data-fc-hud-theme="shield"] .fc-modal-surface,
1434
+ :root[data-fc-hud-theme="shield"] .fc-popover-surface,
1435
+ :root[data-fc-hud-theme="shield"] .fc-viewport-floating-panel {
1436
+ position: relative;
1437
+ overflow: hidden;
1438
+ color: var(--fc-text);
1439
+ font-family: var(--fc-hud-font);
1440
+ }
1441
+
1442
+ :root[data-fc-hud-theme="shield"] .fc-modal-surface::before,
1443
+ :root[data-fc-hud-theme="shield"] .fc-popover-surface::before,
1444
+ :root[data-fc-hud-theme="shield"] .fc-viewport-floating-panel::before {
1445
+ position: absolute;
1446
+ inset: 0;
1447
+ z-index: 0;
1448
+ pointer-events: none;
1449
+ content: "";
1450
+ background:
1451
+ linear-gradient(90deg, var(--fc-accent) 0 44px, transparent 44px) top left / 150px 1px no-repeat,
1452
+ linear-gradient(90deg, transparent calc(100% - 44px), var(--fc-warning) calc(100% - 44px)) bottom right / 150px 1px no-repeat;
1453
+ opacity: 0.78;
1454
+ }
1455
+
1456
+ :root[data-fc-hud-theme="shield"] .fc-modal-surface::after,
1457
+ :root[data-fc-hud-theme="shield"] .fc-popover-surface::after,
1458
+ :root[data-fc-hud-theme="shield"] .fc-viewport-floating-panel::after {
1459
+ position: absolute;
1460
+ inset: 0;
1461
+ z-index: 0;
1462
+ pointer-events: none;
1463
+ content: "";
1464
+ background: repeating-linear-gradient(180deg, rgba(217, 251, 255, 0.022) 0 1px, transparent 1px 5px);
1465
+ mix-blend-mode: screen;
1466
+ opacity: 0.42;
1467
+ }
1468
+
1469
+ :root[data-fc-hud-theme="shield"] .fc-modal-surface > *,
1470
+ :root[data-fc-hud-theme="shield"] .fc-popover-surface > *,
1471
+ :root[data-fc-hud-theme="shield"] .fc-viewport-floating-panel > * {
1472
+ position: relative;
1473
+ z-index: 1;
1474
+ }
1475
+
1476
+ :root[data-fc-hud-theme="shield"] .fc-share-popover .fc-btn-card,
1477
+ :root[data-fc-hud-theme="shield"] .fc-ai-dialog section,
1478
+ :root[data-fc-hud-theme="shield"] .fc-export-dialog button:not(.fc-btn),
1479
+ :root[data-fc-hud-theme="shield"] .fc-publish-change-list,
1480
+ :root[data-fc-hud-theme="shield"] .fc-publish-change-section,
1481
+ :root[data-fc-hud-theme="shield"] .fc-shortcuts-kbd {
1482
+ border-color: rgba(54, 232, 255, 0.24);
1483
+ background: rgba(1, 8, 12, 0.66);
1484
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.04);
1485
+ }
1486
+
1487
+ :root[data-fc-hud-theme="shield"] .fc-project-menu,
1488
+ :root[data-fc-hud-theme="shield"] .fc-publish-tooltip {
1489
+ min-width: min(360px, calc(100vw - 24px));
1490
+ }
1491
+
1492
+ :root[data-fc-hud-theme="shield"] .fc-project-menu-title,
1493
+ :root[data-fc-hud-theme="shield"] .fc-publish-change-label {
1494
+ color: var(--fc-accent);
1495
+ font-family: var(--fc-hud-font);
1496
+ text-shadow: 0 0 12px rgba(54, 232, 255, 0.28);
1497
+ }
1498
+
1499
+ :root[data-fc-hud-theme="shield"] .fc-toast {
1500
+ position: relative;
1501
+ overflow: hidden;
1502
+ font-family: var(--fc-hud-font);
1503
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.16);
1504
+ }
1505
+
1506
+ :root[data-fc-hud-theme="shield"] .fc-toast::before,
1507
+ :root[data-fc-hud-theme="shield"] .fc-toast::after {
1508
+ position: absolute;
1509
+ inset: 0;
1510
+ pointer-events: none;
1511
+ content: "";
1512
+ }
1513
+
1514
+ :root[data-fc-hud-theme="shield"] .fc-toast::before {
1515
+ background:
1516
+ linear-gradient(90deg, currentColor 0 30px, transparent 30px) top left / 92px 1px no-repeat,
1517
+ linear-gradient(90deg, transparent calc(100% - 30px), currentColor calc(100% - 30px)) bottom right / 92px 1px no-repeat;
1518
+ color: var(--fc-accent);
1519
+ opacity: 0.58;
1520
+ }
1521
+
1522
+ :root[data-fc-hud-theme="shield"] .fc-toast::after {
1523
+ background: repeating-linear-gradient(180deg, rgba(217, 251, 255, 0.022) 0 1px, transparent 1px 5px);
1524
+ mix-blend-mode: screen;
1525
+ }
1526
+
1527
+ :root[data-fc-hud-theme="shield"] .fc-toast > * {
1528
+ position: relative;
1529
+ z-index: 1;
1530
+ }
1531
+
1532
+ :root[data-fc-hud-theme="shield"] .fc-toast-icon {
1533
+ box-shadow: 0 0 16px color-mix(in srgb, currentColor 42%, transparent);
1534
+ }
1535
+
1536
+ :root[data-fc-hud-theme="shield"] .fc-draw-palette,
1537
+ :root[data-fc-hud-theme="shield"] .fc-draw-popup {
1538
+ font-family: var(--fc-hud-font);
1539
+ }
1540
+
1541
+ :root[data-fc-hud-theme="shield"] .fc-draw-section-label {
1542
+ color: var(--fc-accent);
1543
+ opacity: 0.78;
1544
+ text-shadow: 0 0 12px rgba(54, 232, 255, 0.28);
1545
+ }
1546
+
1547
+ :root[data-fc-hud-theme="shield"] .fc-draw-tool-btn {
1548
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.2);
1549
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.035);
1550
+ }
1551
+
1552
+ :root[data-fc-hud-theme="shield"] .fc-draw-tool-btn.hovered {
1553
+ --fc-draw-tool-border: rgba(54, 232, 255, 0.28);
1554
+ color: var(--fc-text);
1555
+ box-shadow:
1556
+ 0 0 18px rgba(54, 232, 255, 0.14),
1557
+ inset 0 1px 0 rgba(217, 251, 255, 0.05);
1558
+ }
1559
+
1560
+ :root[data-fc-hud-theme="shield"] .fc-draw-tool-btn.active {
1561
+ --fc-draw-tool-border: rgba(217, 251, 255, 0.32);
1562
+ text-shadow: none;
1563
+ box-shadow:
1564
+ 0 0 22px rgba(54, 232, 255, 0.24),
1565
+ inset 0 1px 0 rgba(217, 251, 255, 0.16);
1566
+ }
1567
+
1568
+ :root[data-fc-hud-theme="shield"] .fc-draw-kbd {
1569
+ border: 1px solid rgba(54, 232, 255, 0.22);
1570
+ color: var(--fc-text);
1571
+ }
1572
+
1573
+ :root[data-fc-hud-theme="shield"] .fc-draw-status {
1574
+ font-family: var(--fc-hud-font);
1575
+ text-shadow: 0 0 8px rgba(217, 251, 255, 0.25);
1576
+ }
1577
+
1578
+ :root[data-fc-hud-theme="shield"] .fc-draw-status-badge {
1579
+ color: var(--fc-warning);
1580
+ text-shadow: 0 0 10px rgba(255, 157, 54, 0.35);
1581
+ }
1582
+
1583
+ :root[data-fc-hud-theme="shield"] .fc-build-ledger-panel {
1584
+ font-family: var(--fc-hud-font);
1585
+ }
1586
+
1587
+ :root[data-fc-hud-theme="shield"] .fc-build-ledger-header,
1588
+ :root[data-fc-hud-theme="shield"] .fc-build-ledger-events,
1589
+ :root[data-fc-hud-theme="shield"] .fc-build-ledger-event,
1590
+ :root[data-fc-hud-theme="shield"] .fc-build-ledger-node {
1591
+ border-color: rgba(54, 232, 255, 0.12);
1592
+ }
1593
+
1594
+ :root[data-fc-hud-theme="shield"] .fc-build-ledger-header {
1595
+ color: var(--fc-accent);
1596
+ text-shadow: 0 0 12px rgba(54, 232, 255, 0.22);
1597
+ }
1598
+
1599
+ :root[data-fc-hud-theme="shield"] .fc-build-ledger-event-dot {
1600
+ box-shadow: 0 0 12px currentColor;
1601
+ }
1602
+
1603
+ :root[data-fc-hud-theme="shield"] .fc-build-ledger-metric {
1604
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.04);
1605
+ }
1606
+
1607
+ :root[data-fc-hud-theme="shield"] .fc-project-menu-section,
1608
+ :root[data-fc-hud-theme="shield"] .fc-publish-dialog-header,
1609
+ :root[data-fc-hud-theme="shield"] .fc-publish-dialog-footer,
1610
+ :root[data-fc-hud-theme="shield"] .fc-publish-tooltip > div:last-child {
1611
+ border-color: rgba(54, 232, 255, 0.16);
1612
+ }
1613
+
1614
+ :root[data-fc-hud-theme="shield"] .fc-publish-dialog-header {
1615
+ background: linear-gradient(90deg, rgba(54, 232, 255, 0.08), rgba(255, 157, 54, 0.035));
1616
+ }
1617
+
1618
+ :root[data-fc-hud-theme="shield"] .fc-publish-change-list {
1619
+ border: 1px solid rgba(54, 232, 255, 0.16);
1620
+ border-radius: 4px;
1621
+ }
1622
+
1623
+ :root[data-fc-hud-theme="shield"] .fc-publish-change-section {
1624
+ padding: 10px 12px 8px;
1625
+ border-bottom: 1px solid rgba(54, 232, 255, 0.09);
1626
+ }
1627
+
1628
+ :root[data-fc-hud-theme="shield"] .fc-publish-change-section:last-child {
1629
+ border-bottom: 0;
1630
+ }
1631
+
1632
+ :root[data-fc-hud-theme="shield"] .fc-publish-tooltip-row {
1633
+ border-bottom: 1px solid rgba(54, 232, 255, 0.07);
1634
+ }
1635
+
1636
+ :root[data-fc-hud-theme="shield"] .fc-publish-tooltip-row:last-of-type {
1637
+ border-bottom: 0;
1638
+ }
1639
+
1640
+ :root[data-fc-hud-theme="shield"] .fc-shortcuts-dialog table tr {
1641
+ border-bottom-color: rgba(54, 232, 255, 0.08);
1642
+ }
1643
+
1644
+ :root[data-fc-hud-theme="shield"] .fc-viewport-floating-panel button:hover {
1645
+ background: color-mix(in srgb, var(--fc-accent) 12%, transparent);
1646
+ color: var(--fc-text);
1647
+ }
1648
+
1649
+ :root[data-fc-hud-theme="shield"] .fc-animation-bar,
1650
+ :root[data-fc-hud-theme="shield"] .fc-trajectory-timeline {
1651
+ overflow: visible;
1652
+ font-family: var(--fc-hud-font);
1653
+ }
1654
+
1655
+ :root[data-fc-hud-theme="shield"] .fc-animation-step-label,
1656
+ :root[data-fc-hud-theme="shield"] .fc-trajectory-preset-menu,
1657
+ :root[data-fc-hud-theme="shield"] .fc-model-journey-bar,
1658
+ :root[data-fc-hud-theme="shield"] .fc-model-journey-launcher,
1659
+ :root[data-fc-hud-theme="shield"] .fc-evaluation-indicator,
1660
+ :root[data-fc-hud-theme="shield"] .fc-hover-tooltip {
1661
+ font-family: var(--fc-hud-font);
1662
+ }
1663
+
1664
+ :root[data-fc-hud-theme="shield"] .fc-trajectory-preset-menu {
1665
+ --fc-trajectory-preset-bg:
1666
+ linear-gradient(135deg, rgba(54, 232, 255, 0.16), rgba(1, 8, 12, 0.94) 42%),
1667
+ linear-gradient(315deg, rgba(255, 157, 54, 0.12), transparent 38%), rgba(1, 8, 12, 0.96);
1668
+ --fc-trajectory-preset-border: rgba(54, 232, 255, 0.52);
1669
+ --fc-trajectory-preset-shadow: 0 22px 58px rgba(0, 0, 0, 0.58), 0 0 0 1px rgba(54, 232, 255, 0.13), 0 0 26px rgba(54, 232, 255, 0.16);
1670
+ --fc-trajectory-preset-item-bg: rgba(1, 12, 17, 0.54);
1671
+ --fc-trajectory-preset-item-border: rgba(54, 232, 255, 0.08);
1672
+ --fc-trajectory-preset-selected-bg: linear-gradient(90deg, rgba(54, 232, 255, 0.24), rgba(255, 157, 54, 0.08));
1673
+ --fc-trajectory-preset-selected-border: rgba(54, 232, 255, 0.5);
1674
+ --fc-trajectory-preset-icon-bg: rgba(1, 8, 12, 0.86);
1675
+ --fc-trajectory-preset-icon-border: rgba(54, 232, 255, 0.18);
1676
+ --fc-trajectory-preset-icon-radius: 3px;
1677
+ --fc-trajectory-preset-name-color: var(--fc-text);
1678
+ --fc-trajectory-preset-desc-color: rgba(177, 226, 232, 0.84);
1679
+ backdrop-filter: blur(14px) saturate(130%);
1680
+ }
1681
+
1682
+ :root[data-fc-hud-theme="shield"] .fc-trajectory-preset-menu > div:not([style*="height"]) {
1683
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.18);
1684
+ }
1685
+
1686
+ :root[data-fc-hud-theme="shield"] .fc-object-context-menu,
1687
+ :root[data-fc-hud-theme="shield"] .fc-face-info-panel {
1688
+ --fc-floating-panel-bg:
1689
+ linear-gradient(135deg, rgba(54, 232, 255, 0.14), rgba(1, 8, 12, 0.94) 44%),
1690
+ linear-gradient(315deg, rgba(255, 157, 54, 0.1), transparent 36%), rgba(1, 8, 12, 0.96);
1691
+ --fc-floating-panel-border: rgba(54, 232, 255, 0.48);
1692
+ --fc-floating-panel-shadow: 0 20px 54px rgba(0, 0, 0, 0.58), 0 0 0 1px rgba(54, 232, 255, 0.12), 0 0 28px rgba(54, 232, 255, 0.16);
1693
+ }
1694
+
1695
+ :root[data-fc-hud-theme="shield"] .fc-object-context-menu {
1696
+ --fc-object-context-menu-item-bg: rgba(1, 12, 17, 0.62);
1697
+ --fc-object-context-menu-item-border: rgba(54, 232, 255, 0.1);
1698
+ --fc-object-context-menu-item-color: var(--fc-text);
1699
+ --fc-object-context-menu-item-radius: 3px;
1700
+ display: flex;
1701
+ flex-direction: column;
1702
+ gap: 3px;
1703
+ }
1704
+
1705
+ :root[data-fc-hud-theme="shield"] .fc-object-context-menu-item {
1706
+ position: relative;
1707
+ padding-left: 18px;
1708
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.2);
1709
+ }
1710
+
1711
+ :root[data-fc-hud-theme="shield"] .fc-object-context-menu-item::before {
1712
+ position: absolute;
1713
+ top: 50%;
1714
+ left: 8px;
1715
+ width: 4px;
1716
+ height: 4px;
1717
+ content: "";
1718
+ background: var(--fc-accent);
1719
+ box-shadow: 0 0 8px rgba(54, 232, 255, 0.44);
1720
+ transform: translateY(-50%) rotate(45deg);
1721
+ }
1722
+
1723
+ :root[data-fc-hud-theme="shield"] .fc-object-context-menu-item:hover {
1724
+ --fc-object-context-menu-item-bg: linear-gradient(90deg, rgba(54, 232, 255, 0.2), rgba(255, 157, 54, 0.06));
1725
+ --fc-object-context-menu-item-border: rgba(54, 232, 255, 0.38);
1726
+ }
1727
+
1728
+ :root[data-fc-hud-theme="shield"] .fc-face-info-panel {
1729
+ line-height: 1.35;
1730
+ }
1731
+
1732
+ :root[data-fc-hud-theme="shield"] .fc-measure-mode-banner {
1733
+ letter-spacing: 0;
1734
+ text-shadow: none;
1735
+ }
1736
+
1737
+ :root[data-fc-hud-theme="shield"] .fc-measure-info-panel {
1738
+ line-height: 1.35;
1739
+ }
1740
+
1741
+ :root[data-fc-hud-theme="shield"] .fc-palette-overlay {
1742
+ font-family: var(--fc-hud-font);
1743
+ }
1744
+
1745
+ :root[data-fc-hud-theme="shield"] .fc-palette-surface::before,
1746
+ :root[data-fc-hud-theme="shield"] .fc-palette-surface::after {
1747
+ position: absolute;
1748
+ z-index: 1;
1749
+ pointer-events: none;
1750
+ content: "";
1751
+ }
1752
+
1753
+ :root[data-fc-hud-theme="shield"] .fc-palette-surface::before {
1754
+ inset: 0;
1755
+ border: 1px solid transparent;
1756
+ background:
1757
+ linear-gradient(90deg, var(--fc-accent) 0 52px, transparent 52px) top left / 170px 1px no-repeat,
1758
+ linear-gradient(90deg, transparent calc(100% - 52px), var(--fc-warning) calc(100% - 52px)) bottom right / 170px 1px no-repeat,
1759
+ linear-gradient(180deg, var(--fc-accent) 0 28px, transparent 28px) top left / 1px 96px no-repeat,
1760
+ linear-gradient(180deg, transparent calc(100% - 28px), var(--fc-warning) calc(100% - 28px)) bottom right / 1px 96px no-repeat;
1761
+ opacity: 0.82;
1762
+ }
1763
+
1764
+ :root[data-fc-hud-theme="shield"] .fc-palette-surface::after {
1765
+ inset: 0;
1766
+ background: repeating-linear-gradient(180deg, rgba(217, 251, 255, 0.026) 0 1px, transparent 1px 5px);
1767
+ mix-blend-mode: screen;
1768
+ opacity: 0.44;
1769
+ }
1770
+
1771
+ :root[data-fc-hud-theme="shield"] .fc-palette-input,
1772
+ :root[data-fc-hud-theme="shield"] .fc-palette-list {
1773
+ position: relative;
1774
+ z-index: 2;
1775
+ }
1776
+
1777
+ :root[data-fc-hud-theme="shield"] .fc-palette-input::placeholder {
1778
+ color: rgba(142, 189, 198, 0.7);
1779
+ }
1780
+
1781
+ :root[data-fc-hud-theme="shield"] .fc-palette-row {
1782
+ position: relative;
1783
+ min-height: 32px;
1784
+ border-bottom: 1px solid rgba(54, 232, 255, 0.07);
1785
+ font-family: var(--fc-hud-font);
1786
+ }
1787
+
1788
+ :root[data-fc-hud-theme="shield"] .fc-palette-row.selected {
1789
+ color: var(--fc-text);
1790
+ text-shadow: 0 0 12px rgba(54, 232, 255, 0.28);
1791
+ }
1792
+
1793
+ :root[data-fc-hud-theme="shield"] .fc-palette-row.selected::before {
1794
+ position: absolute;
1795
+ top: 6px;
1796
+ bottom: 6px;
1797
+ left: 0;
1798
+ width: 2px;
1799
+ content: "";
1800
+ background: var(--fc-accent);
1801
+ box-shadow: 0 0 16px rgba(54, 232, 255, 0.75);
1802
+ }
1803
+
1804
+ :root[data-fc-hud-theme="shield"] .fc-palette-kbd,
1805
+ :root[data-fc-hud-theme="shield"] .fc-palette-kind {
1806
+ color: var(--fc-textMuted);
1807
+ font-family: var(--fc-hud-font);
1808
+ box-shadow: inset 0 -1px 0 rgba(54, 232, 255, 0.18);
1809
+ }
1810
+
1811
+ :root[data-fc-hud-theme="shield"] .fc-file-explorer {
1812
+ background-size:
1813
+ 24px 24px,
1814
+ 24px 24px,
1815
+ cover;
1816
+ box-shadow: inset -1px 0 0 rgba(54, 232, 255, 0.08);
1817
+ }
1818
+
1819
+ :root[data-fc-hud-theme="shield"] .fc-file-explorer-header {
1820
+ font-family: var(--fc-hud-font);
1821
+ box-shadow: inset 0 -1px 0 rgba(54, 232, 255, 0.08);
1822
+ }
1823
+
1824
+ :root[data-fc-hud-theme="shield"] .fc-file-node {
1825
+ position: relative;
1826
+ border-bottom: 1px solid rgba(54, 232, 255, 0.045);
1827
+ font-family: var(--fc-hud-font);
1828
+ }
1829
+
1830
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon {
1831
+ position: relative;
1832
+ display: inline-grid;
1833
+ flex: 0 0 16px;
1834
+ height: 16px;
1835
+ place-items: center;
1836
+ color: transparent;
1837
+ font-size: 0;
1838
+ }
1839
+
1840
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon::before,
1841
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon::after {
1842
+ position: absolute;
1843
+ pointer-events: none;
1844
+ content: "";
1845
+ }
1846
+
1847
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon--folder::before {
1848
+ bottom: 2px;
1849
+ left: 1px;
1850
+ width: 13px;
1851
+ height: 9px;
1852
+ border: 1px solid rgba(255, 157, 54, 0.76);
1853
+ background: linear-gradient(180deg, rgba(255, 157, 54, 0.18), rgba(54, 232, 255, 0.05));
1854
+ box-shadow: 0 0 8px rgba(255, 157, 54, 0.18);
1855
+ clip-path: polygon(0 3px, 36% 3px, 45% 0, 100% 0, 100% 100%, 0 100%);
1856
+ }
1857
+
1858
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon--file::before {
1859
+ top: 1px;
1860
+ left: 3px;
1861
+ width: 9px;
1862
+ height: 12px;
1863
+ border: 1px solid rgba(54, 232, 255, 0.68);
1864
+ background: linear-gradient(180deg, rgba(54, 232, 255, 0.1), rgba(1, 12, 17, 0.12));
1865
+ clip-path: polygon(0 0, 68% 0, 100% 28%, 100% 100%, 0 100%);
1866
+ }
1867
+
1868
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon--file::after {
1869
+ top: 1px;
1870
+ right: 3px;
1871
+ width: 4px;
1872
+ height: 4px;
1873
+ border-bottom: 1px solid rgba(54, 232, 255, 0.5);
1874
+ border-left: 1px solid rgba(54, 232, 255, 0.5);
1875
+ }
1876
+
1877
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon--mesh::before,
1878
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon--exact::before {
1879
+ inset: 3px;
1880
+ border: 1px solid var(--fc-warning);
1881
+ background: rgba(255, 157, 54, 0.1);
1882
+ box-shadow: 0 0 8px rgba(255, 157, 54, 0.22);
1883
+ }
1884
+
1885
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon--mesh::before {
1886
+ transform: rotate(45deg);
1887
+ }
1888
+
1889
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon--exact::before {
1890
+ clip-path: polygon(25% 0, 75% 0, 100% 50%, 75% 100%, 25% 100%, 0 50%);
1891
+ }
1892
+
1893
+ :root[data-fc-hud-theme="shield"] .fc-file-node-icon--image::before {
1894
+ inset: 2px;
1895
+ border: 1px solid rgba(54, 232, 255, 0.65);
1896
+ background: linear-gradient(135deg, transparent 52%, rgba(255, 157, 54, 0.3) 53% 72%, transparent 73%), rgba(54, 232, 255, 0.08);
1897
+ }
1898
+
1899
+ :root[data-fc-hud-theme="shield"] .fc-file-node.active,
1900
+ :root[data-fc-hud-theme="shield"] .fc-file-node.selected {
1901
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.22);
1902
+ }
1903
+
1904
+ :root[data-fc-hud-theme="shield"] .fc-file-node.active::after,
1905
+ :root[data-fc-hud-theme="shield"] .fc-file-node.selected::after {
1906
+ position: absolute;
1907
+ top: 6px;
1908
+ right: 0;
1909
+ bottom: 6px;
1910
+ width: 2px;
1911
+ content: "";
1912
+ background: var(--fc-accent);
1913
+ box-shadow: 0 0 12px rgba(54, 232, 255, 0.65);
1914
+ }
1915
+
1916
+ :root[data-fc-hud-theme="shield"] .fc-file-node.published::before {
1917
+ position: absolute;
1918
+ top: 5px;
1919
+ bottom: 5px;
1920
+ left: 0;
1921
+ width: 2px;
1922
+ content: "";
1923
+ background: var(--fc-warning);
1924
+ box-shadow: 0 0 10px rgba(255, 157, 54, 0.5);
1925
+ }
1926
+
1927
+ :root[data-fc-hud-theme="shield"] .fc-file-node-modified {
1928
+ box-shadow: 0 0 10px rgba(255, 157, 54, 0.58);
1929
+ }
1930
+
1931
+ :root[data-fc-hud-theme="shield"] .fc-file-create-input,
1932
+ :root[data-fc-hud-theme="shield"] .fc-file-rename-input {
1933
+ font-family: var(--fc-hud-font);
1934
+ box-shadow: var(--fc-shield-glow);
1935
+ }
1936
+
1937
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu {
1938
+ min-width: 178px;
1939
+ padding: 0;
1940
+ overflow: hidden;
1941
+ background:
1942
+ linear-gradient(135deg, rgba(54, 232, 255, 0.16), transparent 28%), linear-gradient(315deg, rgba(255, 157, 54, 0.12), transparent 34%),
1943
+ color-mix(in srgb, var(--fc-bgPanel) 96%, transparent);
1944
+ border-color: color-mix(in srgb, var(--fc-accent) 62%, transparent);
1945
+ border-radius: 2px;
1946
+ clip-path: polygon(8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%, 0 8px);
1947
+ font-family: var(--fc-hud-font);
1948
+ box-shadow:
1949
+ 0 18px 44px rgba(0, 0, 0, 0.52),
1950
+ 0 0 0 1px rgba(54, 232, 255, 0.12),
1951
+ 0 0 24px rgba(54, 232, 255, 0.12);
1952
+ }
1953
+
1954
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu::before {
1955
+ position: absolute;
1956
+ inset: 0;
1957
+ pointer-events: none;
1958
+ content: "";
1959
+ background:
1960
+ repeating-linear-gradient(180deg, rgba(217, 251, 255, 0.025) 0 1px, transparent 1px 5px),
1961
+ linear-gradient(90deg, var(--fc-accent) 0 26px, transparent 26px) top left / 84px 1px no-repeat,
1962
+ linear-gradient(90deg, transparent calc(100% - 26px), var(--fc-warning) calc(100% - 26px)) bottom right / 84px 1px no-repeat;
1963
+ opacity: 0.82;
1964
+ }
1965
+
1966
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-header,
1967
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-item,
1968
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-separator {
1969
+ position: relative;
1970
+ z-index: 1;
1971
+ }
1972
+
1973
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-header {
1974
+ padding: 7px 12px 5px;
1975
+ overflow: hidden;
1976
+ color: var(--fc-textDim);
1977
+ font-size: 10px;
1978
+ font-weight: 700;
1979
+ text-overflow: ellipsis;
1980
+ text-transform: uppercase;
1981
+ white-space: nowrap;
1982
+ background: rgba(54, 232, 255, 0.055);
1983
+ border-bottom: 1px solid rgba(54, 232, 255, 0.16);
1984
+ }
1985
+
1986
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-item {
1987
+ position: relative;
1988
+ padding: 7px 12px 7px 18px;
1989
+ color: var(--fc-text);
1990
+ font-size: 12px;
1991
+ cursor: pointer;
1992
+ border-bottom: 1px solid rgba(54, 232, 255, 0.06);
1993
+ }
1994
+
1995
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-item::before {
1996
+ position: absolute;
1997
+ top: 50%;
1998
+ left: 8px;
1999
+ width: 4px;
2000
+ height: 4px;
2001
+ content: "";
2002
+ background: color-mix(in srgb, var(--fc-accent) 72%, transparent);
2003
+ box-shadow: 0 0 8px rgba(54, 232, 255, 0.42);
2004
+ transform: translateY(-50%) rotate(45deg);
2005
+ }
2006
+
2007
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-item:hover {
2008
+ color: var(--fc-text);
2009
+ background: linear-gradient(90deg, rgba(54, 232, 255, 0.18), transparent 74%), rgba(54, 232, 255, 0.045);
2010
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.35);
2011
+ }
2012
+
2013
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-item--accent {
2014
+ color: var(--fc-accent);
2015
+ font-weight: 700;
2016
+ }
2017
+
2018
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-item--danger {
2019
+ color: color-mix(in srgb, var(--fc-error) 88%, white 12%);
2020
+ }
2021
+
2022
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-item--danger::before {
2023
+ background: var(--fc-error);
2024
+ box-shadow: 0 0 8px rgba(255, 97, 118, 0.45);
2025
+ }
2026
+
2027
+ :root[data-fc-hud-theme="shield"] .fc-file-context-menu-separator {
2028
+ height: 1px;
2029
+ margin: 3px 0;
2030
+ background: linear-gradient(90deg, transparent, rgba(54, 232, 255, 0.26), transparent);
2031
+ }
2032
+
2033
+ :root[data-fc-hud-theme="shield"] .fc-param-panel {
2034
+ box-shadow: 0 -16px 38px rgba(54, 232, 255, 0.05);
2035
+ }
2036
+
2037
+ :root[data-fc-hud-theme="shield"] .fc-param-panel-body {
2038
+ scrollbar-gutter: stable;
2039
+ }
2040
+
2041
+ :root[data-fc-hud-theme="shield"] .fc-param-snapshot-shelf,
2042
+ :root[data-fc-hud-theme="shield"] .fc-param-control {
2043
+ border: 1px solid var(--fc-param-card-border);
2044
+ border-radius: var(--fc-param-card-radius);
2045
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.04);
2046
+ }
2047
+
2048
+ :root[data-fc-hud-theme="shield"] .fc-param-control {
2049
+ padding: 7px 8px;
2050
+ background: rgba(1, 8, 12, 0.48);
2051
+ }
2052
+
2053
+ :root[data-fc-hud-theme="shield"] .fc-param-control.changed {
2054
+ border-color: rgba(255, 157, 54, 0.34);
2055
+ background: linear-gradient(90deg, rgba(255, 157, 54, 0.09), rgba(1, 8, 12, 0.5) 46%);
2056
+ }
2057
+
2058
+ :root[data-fc-hud-theme="shield"] .fc-param-number-input {
2059
+ font-family: var(--fc-hud-font);
2060
+ box-shadow: inset 0 0 12px rgba(54, 232, 255, 0.05);
2061
+ }
2062
+
2063
+ :root[data-fc-hud-theme="shield"] .fc-param-snapshot-row {
2064
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.035);
2065
+ }
2066
+
2067
+ /* Labeled toolbar button — icon + text, for primary actions */
2068
+ .fc-toolbar-labeled {
2069
+ height: 32px;
2070
+ padding: 0 10px;
2071
+ display: inline-flex;
2072
+ align-items: center;
2073
+ justify-content: center;
2074
+ gap: 5px;
2075
+ font-size: 14px;
2076
+ flex-shrink: 0;
2077
+ border-radius: 6px;
2078
+ }
2079
+ .fc-toolbar-labeled span {
2080
+ font-size: 12px;
2081
+ }
2082
+ .fc-toolbar-project-chip {
2083
+ max-width: 180px;
2084
+ min-width: 0;
2085
+ overflow: hidden;
2086
+ text-overflow: ellipsis;
2087
+ white-space: nowrap;
2088
+ }
2089
+
2090
+ /* --- Input fields --- */
2091
+ input:not([type="range"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]),
2092
+ textarea,
2093
+ select {
2094
+ background: var(--fc-bgInput);
2095
+ border: 1px solid var(--fc-border);
2096
+ border-radius: 4px;
2097
+ padding: 4px 6px;
2098
+ color: var(--fc-text);
2099
+ font-size: 12px;
2100
+ font-family: inherit;
2101
+ }
2102
+ input:not([type="range"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):focus,
2103
+ textarea:focus,
2104
+ select:focus {
2105
+ border-color: var(--fc-accent);
2106
+ box-shadow: 0 0 0 1px var(--fc-accent);
2107
+ }
2108
+
2109
+ :root[data-fc-hud-theme="shield"] input:not([type="range"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]),
2110
+ :root[data-fc-hud-theme="shield"] textarea,
2111
+ :root[data-fc-hud-theme="shield"] select {
2112
+ background: color-mix(in srgb, var(--fc-bgInput) 82%, transparent);
2113
+ border-color: var(--fc-shield-line-soft);
2114
+ color: var(--fc-textMuted);
2115
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.035);
2116
+ }
2117
+
2118
+ :root[data-fc-hud-theme="shield"] select {
2119
+ appearance: none;
2120
+ background-image:
2121
+ linear-gradient(45deg, transparent 50%, var(--fc-accent) 50%), linear-gradient(135deg, var(--fc-accent) 50%, transparent 50%);
2122
+ background-position:
2123
+ calc(100% - 10px) 50%,
2124
+ calc(100% - 6px) 50%;
2125
+ background-repeat: no-repeat;
2126
+ background-size:
2127
+ 4px 4px,
2128
+ 4px 4px;
2129
+ padding-right: 20px;
2130
+ }
2131
+
2132
+ :root[data-fc-hud-theme="shield"] input:not([type="range"]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):focus,
2133
+ :root[data-fc-hud-theme="shield"] textarea:focus,
2134
+ :root[data-fc-hud-theme="shield"] select:focus {
2135
+ background: color-mix(in srgb, var(--fc-accent) 12%, var(--fc-bgInput));
2136
+ border-color: color-mix(in srgb, var(--fc-accent) 68%, transparent);
2137
+ color: var(--fc-text);
2138
+ box-shadow:
2139
+ inset 0 -2px 0 color-mix(in srgb, var(--fc-accent) 72%, transparent),
2140
+ var(--fc-shield-glow);
2141
+ }
2142
+
2143
+ :root[data-fc-hud-theme="shield"] input[type="checkbox"],
2144
+ :root[data-fc-hud-theme="shield"] input[type="radio"] {
2145
+ position: relative;
2146
+ flex: 0 0 auto;
2147
+ width: 13px;
2148
+ height: 13px;
2149
+ margin: 0 4px 0 0;
2150
+ vertical-align: -2px;
2151
+ appearance: none;
2152
+ cursor: pointer;
2153
+ background: linear-gradient(180deg, rgba(54, 232, 255, 0.08), rgba(1, 12, 17, 0.7)), rgba(1, 8, 12, 0.9);
2154
+ border: 1px solid rgba(54, 232, 255, 0.44);
2155
+ border-radius: 3px;
2156
+ box-shadow:
2157
+ inset 0 1px 0 rgba(217, 251, 255, 0.06),
2158
+ 0 0 8px rgba(54, 232, 255, 0.08);
2159
+ }
2160
+
2161
+ :root[data-fc-hud-theme="shield"] input[type="radio"] {
2162
+ border-radius: 50%;
2163
+ }
2164
+
2165
+ :root[data-fc-hud-theme="shield"] input[type="checkbox"]::before,
2166
+ :root[data-fc-hud-theme="shield"] input[type="radio"]::before {
2167
+ position: absolute;
2168
+ inset: 2px;
2169
+ pointer-events: none;
2170
+ content: "";
2171
+ background: transparent;
2172
+ opacity: 0;
2173
+ transition:
2174
+ opacity 120ms ease,
2175
+ transform 120ms ease;
2176
+ transform: scale(0.72);
2177
+ }
2178
+
2179
+ :root[data-fc-hud-theme="shield"] input[type="checkbox"]:checked,
2180
+ :root[data-fc-hud-theme="shield"] input[type="radio"]:checked {
2181
+ background: linear-gradient(180deg, rgba(54, 232, 255, 0.24), rgba(1, 12, 17, 0.78)), rgba(1, 8, 12, 0.9);
2182
+ border-color: rgba(54, 232, 255, 0.9);
2183
+ box-shadow:
2184
+ inset 0 0 10px rgba(54, 232, 255, 0.16),
2185
+ 0 0 12px rgba(54, 232, 255, 0.34);
2186
+ }
2187
+
2188
+ :root[data-fc-hud-theme="shield"] input[type="checkbox"]:checked::before {
2189
+ inset: 2px 1px 3px 2px;
2190
+ background: var(--fc-accent);
2191
+ opacity: 1;
2192
+ transform: scale(1);
2193
+ clip-path: polygon(14% 48%, 36% 70%, 86% 18%, 100% 32%, 37% 92%, 0 58%);
2194
+ }
2195
+
2196
+ :root[data-fc-hud-theme="shield"] input[type="radio"]:checked::before {
2197
+ background: var(--fc-accent);
2198
+ border-radius: 50%;
2199
+ opacity: 1;
2200
+ box-shadow: 0 0 8px rgba(54, 232, 255, 0.52);
2201
+ transform: scale(1);
2202
+ }
2203
+
2204
+ :root[data-fc-hud-theme="shield"] input[type="checkbox"]:hover,
2205
+ :root[data-fc-hud-theme="shield"] input[type="radio"]:hover {
2206
+ border-color: rgba(54, 232, 255, 0.74);
2207
+ box-shadow:
2208
+ inset 0 1px 0 rgba(217, 251, 255, 0.08),
2209
+ 0 0 12px rgba(54, 232, 255, 0.2);
2210
+ }
2211
+
2212
+ :root[data-fc-hud-theme="shield"] input[type="checkbox"]:focus-visible,
2213
+ :root[data-fc-hud-theme="shield"] input[type="radio"]:focus-visible {
2214
+ outline: none;
2215
+ box-shadow:
2216
+ 0 0 0 1px rgba(1, 8, 12, 0.95),
2217
+ 0 0 0 2px var(--fc-accent),
2218
+ 0 0 16px rgba(54, 232, 255, 0.3);
2219
+ }
2220
+
2221
+ :root[data-fc-hud-theme="shield"] input[type="checkbox"]:disabled,
2222
+ :root[data-fc-hud-theme="shield"] input[type="radio"]:disabled {
2223
+ cursor: not-allowed;
2224
+ opacity: 0.42;
2225
+ }
2226
+
2227
+ /* --- Tooltip-like subtle shadow for floating elements --- */
2228
+ .fc-floating {
2229
+ box-shadow:
2230
+ 0 4px 16px rgba(0, 0, 0, 0.3),
2231
+ 0 1px 4px rgba(0, 0, 0, 0.2);
2232
+ }
2233
+
2234
+ /* --- Animations --- */
2235
+ @keyframes fc-fadein {
2236
+ from {
2237
+ opacity: 0;
2238
+ transform: translateY(4px);
2239
+ }
2240
+ to {
2241
+ opacity: 1;
2242
+ transform: translateY(0);
2243
+ }
2244
+ }
2245
+ @keyframes fc-fadein-up {
2246
+ from {
2247
+ opacity: 0;
2248
+ transform: translateY(8px);
2249
+ }
2250
+ to {
2251
+ opacity: 1;
2252
+ transform: translateY(0);
2253
+ }
2254
+ }
2255
+ @keyframes fc-slide-in-right {
2256
+ from {
2257
+ opacity: 0;
2258
+ transform: translateX(100%);
2259
+ }
2260
+ to {
2261
+ opacity: 1;
2262
+ transform: translateX(0);
2263
+ }
2264
+ }
2265
+ @keyframes fc-slide-out-right {
2266
+ from {
2267
+ opacity: 1;
2268
+ transform: translateX(0);
2269
+ }
2270
+ to {
2271
+ opacity: 0;
2272
+ transform: translateX(100%);
2273
+ }
2274
+ }
2275
+ @keyframes fc-pulse {
2276
+ 0%,
2277
+ 100% {
2278
+ opacity: 0.4;
2279
+ }
2280
+ 50% {
2281
+ opacity: 1;
2282
+ }
2283
+ }
2284
+ @keyframes fc-shimmer {
2285
+ 0% {
2286
+ background-position: -200% 0;
2287
+ }
2288
+ 100% {
2289
+ background-position: 200% 0;
2290
+ }
2291
+ }
2292
+ @keyframes fc-shield-viewport-scan {
2293
+ 0% {
2294
+ background-position:
2295
+ center,
2296
+ center,
2297
+ 0 0,
2298
+ 0 0,
2299
+ center,
2300
+ center;
2301
+ }
2302
+ 100% {
2303
+ background-position:
2304
+ center,
2305
+ center,
2306
+ 76px 38px,
2307
+ 38px 76px,
2308
+ center,
2309
+ center;
2310
+ }
2311
+ }
2312
+ @keyframes fc-shield-viewport-scan-drift {
2313
+ from {
2314
+ transform: translate3d(0, 0, 0);
2315
+ }
2316
+ to {
2317
+ transform: translate3d(76px, 38px, 0);
2318
+ }
2319
+ }
2320
+ @keyframes fc-spin {
2321
+ from {
2322
+ transform: rotate(0deg);
2323
+ }
2324
+ to {
2325
+ transform: rotate(360deg);
2326
+ }
2327
+ }
2328
+ @keyframes fc-scale-in {
2329
+ from {
2330
+ opacity: 0;
2331
+ transform: scale(0.95);
2332
+ }
2333
+ to {
2334
+ opacity: 1;
2335
+ transform: scale(1);
2336
+ }
2337
+ }
2338
+
2339
+ @media (prefers-reduced-motion: reduce) {
2340
+ :root[data-fc-hud-theme="shield"] .fc-boot-screen::after,
2341
+ :root[data-fc-hud-theme="shield"] .fc-viewport-shell::before,
2342
+ :root[data-fc-hud-theme="shield"] .fc-viewport-shield-scan {
2343
+ animation: none;
2344
+ }
2345
+ }
2346
+
2347
+ /* --- Range inputs (sliders) --- */
2348
+ input[type="range"] {
2349
+ -webkit-appearance: none;
2350
+ appearance: none;
2351
+ height: 4px;
2352
+ background: var(--fc-border);
2353
+ border-radius: 2px;
2354
+ outline: none;
2355
+ }
2356
+ input[type="range"]::-webkit-slider-thumb {
2357
+ -webkit-appearance: none;
2358
+ appearance: none;
2359
+ width: 14px;
2360
+ height: 14px;
2361
+ border-radius: 50%;
2362
+ background: var(--fc-accent);
2363
+ cursor: pointer;
2364
+ border: 2px solid var(--fc-bgPanel);
2365
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
2366
+ transition:
2367
+ transform 0.1s ease,
2368
+ box-shadow 0.1s ease;
2369
+ }
2370
+ input[type="range"]::-webkit-slider-thumb:hover {
2371
+ transform: scale(1.15);
2372
+ box-shadow: 0 1px 6px rgba(0, 0, 0, 0.4);
2373
+ }
2374
+ input[type="range"]::-moz-range-thumb {
2375
+ width: 14px;
2376
+ height: 14px;
2377
+ border-radius: 50%;
2378
+ background: var(--fc-accent);
2379
+ cursor: pointer;
2380
+ border: 2px solid var(--fc-bgPanel);
2381
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
2382
+ }
2383
+
2384
+ :root[data-fc-hud-theme="shield"] input[type="range"] {
2385
+ background: linear-gradient(90deg, var(--fc-accent), var(--fc-warning));
2386
+ box-shadow: 0 0 14px rgba(54, 232, 255, 0.16);
2387
+ }
2388
+
2389
+ :root[data-fc-hud-theme="shield"] input[type="range"]::-webkit-slider-thumb {
2390
+ background: var(--fc-warning);
2391
+ border-color: var(--fc-bgInput);
2392
+ box-shadow: 0 0 14px rgba(255, 157, 54, 0.54);
2393
+ }
2394
+
2395
+ :root[data-fc-hud-theme="shield"] input[type="range"]::-moz-range-thumb {
2396
+ background: var(--fc-warning);
2397
+ border-color: var(--fc-bgInput);
2398
+ box-shadow: 0 0 14px rgba(255, 157, 54, 0.54);
2399
+ }
2400
+
2401
+ /* --- Color input --- */
2402
+ input[type="color"] {
2403
+ -webkit-appearance: none;
2404
+ appearance: none;
2405
+ width: 24px;
2406
+ height: 24px;
2407
+ border: 1px solid var(--fc-border);
2408
+ border-radius: 4px;
2409
+ padding: 1px;
2410
+ cursor: pointer;
2411
+ background: transparent;
2412
+ }
2413
+ input[type="color"]::-webkit-color-swatch-wrapper {
2414
+ padding: 0;
2415
+ }
2416
+ input[type="color"]::-webkit-color-swatch {
2417
+ border: none;
2418
+ border-radius: 3px;
2419
+ }
2420
+
2421
+ /* --- Resize handle polish --- */
2422
+ .fc-resize-handle {
2423
+ transition: background 0.15s ease;
2424
+ }
2425
+ .fc-resize-handle:hover {
2426
+ background: var(--fc-bgActive);
2427
+ }
2428
+
2429
+ :root[data-fc-hud-theme="shield"] .fc-resize-handle {
2430
+ background: linear-gradient(180deg, transparent, rgba(54, 232, 255, 0.18), transparent);
2431
+ }
2432
+
2433
+ :root[data-fc-hud-theme="shield"] .fc-resize-handle:hover {
2434
+ background: linear-gradient(180deg, transparent, rgba(54, 232, 255, 0.46), transparent);
2435
+ box-shadow: 0 0 18px rgba(54, 232, 255, 0.34);
2436
+ }
2437
+
2438
+ /* =====================================================================
2439
+ Documentation page styles
2440
+ ===================================================================== */
2441
+
2442
+ /* --- Layout shell --- */
2443
+ .fc-docs-layout {
2444
+ min-height: 100vh;
2445
+ display: flex;
2446
+ flex-direction: column;
2447
+ background: var(--fc-bg);
2448
+ }
2449
+ .fc-docs-body {
2450
+ display: flex;
2451
+ flex: 1;
2452
+ padding-top: 56px;
2453
+ }
2454
+ .fc-docs-main {
2455
+ flex: 1;
2456
+ overflow-y: auto;
2457
+ height: calc(100vh - 56px);
2458
+ }
2459
+
2460
+ /* --- Top nav --- */
2461
+ .fc-docs-nav {
2462
+ position: fixed;
2463
+ top: 0;
2464
+ left: 0;
2465
+ right: 0;
2466
+ height: 56px;
2467
+ display: flex;
2468
+ align-items: center;
2469
+ justify-content: space-between;
2470
+ padding: 0 24px;
2471
+ background: var(--fc-bg);
2472
+ border-bottom: 1px solid var(--fc-border);
2473
+ z-index: 100;
2474
+ backdrop-filter: blur(8px);
2475
+ }
2476
+ .fc-docs-nav-logo {
2477
+ display: flex;
2478
+ align-items: center;
2479
+ gap: 8px;
2480
+ text-decoration: none;
2481
+ color: var(--fc-text);
2482
+ }
2483
+ .fc-docs-nav-logo span:last-child {
2484
+ font-size: 16px;
2485
+ font-weight: 700;
2486
+ color: var(--fc-accent);
2487
+ letter-spacing: -0.02em;
2488
+ }
2489
+ .fc-docs-nav-links {
2490
+ display: flex;
2491
+ align-items: center;
2492
+ gap: 20px;
2493
+ }
2494
+ .fc-docs-nav-active {
2495
+ color: var(--fc-accent);
2496
+ text-decoration: none;
2497
+ font-size: 14px;
2498
+ font-weight: 600;
2499
+ }
2500
+ .fc-docs-nav-link {
2501
+ color: var(--fc-textMuted);
2502
+ text-decoration: none;
2503
+ font-size: 14px;
2504
+ }
2505
+ .fc-docs-nav-link:hover {
2506
+ color: var(--fc-text);
2507
+ }
2508
+ .fc-docs-nav-cta {
2509
+ padding: 6px 16px;
2510
+ font-size: 14px;
2511
+ font-weight: 600;
2512
+ background: var(--fc-accent);
2513
+ color: var(--fc-accentText);
2514
+ border-radius: 6px;
2515
+ text-decoration: none;
2516
+ transition: opacity 0.15s;
2517
+ }
2518
+ .fc-docs-nav-cta:hover {
2519
+ opacity: 0.9;
2520
+ }
2521
+
2522
+ /* --- Search trigger in nav --- */
2523
+ .fc-docs-search-trigger {
2524
+ display: flex;
2525
+ align-items: center;
2526
+ gap: 6px;
2527
+ padding: 5px 12px;
2528
+ background: var(--fc-bgSurface);
2529
+ border: 1px solid var(--fc-border);
2530
+ border-radius: 6px;
2531
+ color: var(--fc-textDim);
2532
+ font-size: 13px;
2533
+ cursor: pointer;
2534
+ transition:
2535
+ border-color 0.15s,
2536
+ color 0.15s;
2537
+ }
2538
+ .fc-docs-search-trigger:hover {
2539
+ border-color: var(--fc-accent);
2540
+ color: var(--fc-textMuted);
2541
+ }
2542
+ .fc-docs-search-trigger kbd {
2543
+ margin-left: 4px;
2544
+ padding: 1px 5px;
2545
+ font-size: 11px;
2546
+ background: var(--fc-bgHover);
2547
+ border: 1px solid var(--fc-border);
2548
+ border-radius: 3px;
2549
+ font-family: var(--fc-mono, "SF Mono", "Fira Code", monospace);
2550
+ color: var(--fc-textDim);
2551
+ }
2552
+
2553
+ /* --- Theme toggle --- */
2554
+ .fc-docs-theme-toggle {
2555
+ display: flex;
2556
+ align-items: center;
2557
+ justify-content: center;
2558
+ width: 32px;
2559
+ height: 32px;
2560
+ background: var(--fc-bgSurface);
2561
+ border: 1px solid var(--fc-border);
2562
+ border-radius: 6px;
2563
+ color: var(--fc-textDim);
2564
+ cursor: pointer;
2565
+ transition:
2566
+ border-color 0.15s,
2567
+ color 0.15s;
2568
+ }
2569
+ .fc-docs-theme-toggle:hover {
2570
+ border-color: var(--fc-accent);
2571
+ color: var(--fc-textMuted);
2572
+ }
2573
+
2574
+ /* --- Sidebar backdrop (mobile only, visible via media query) --- */
2575
+ .fc-docs-sidebar-backdrop {
2576
+ display: none;
2577
+ }
2578
+
2579
+ /* --- Sidebar --- */
2580
+ .fc-docs-sidebar {
2581
+ width: 260px;
2582
+ flex-shrink: 0;
2583
+ background: var(--fc-bgPanel);
2584
+ border-right: 1px solid var(--fc-border);
2585
+ padding: 20px 0;
2586
+ overflow-y: auto;
2587
+ height: calc(100vh - 56px);
2588
+ position: sticky;
2589
+ top: 56px;
2590
+ }
2591
+ /* Desktop: hide sidebar when not open (not in flow) */
2592
+ .fc-docs-sidebar:not(.open) {
2593
+ display: none;
2594
+ }
2595
+ .fc-docs-sidebar::-webkit-scrollbar {
2596
+ width: 4px;
2597
+ }
2598
+ .fc-docs-sidebar::-webkit-scrollbar-track {
2599
+ background: transparent;
2600
+ }
2601
+ .fc-docs-sidebar::-webkit-scrollbar-thumb {
2602
+ background: var(--fc-border);
2603
+ border-radius: 2px;
2604
+ }
2605
+
2606
+ .fc-docs-sidebar-group-title {
2607
+ padding: 12px 20px 4px;
2608
+ font-size: 11px;
2609
+ font-weight: 600;
2610
+ text-transform: uppercase;
2611
+ letter-spacing: 0.08em;
2612
+ color: var(--fc-textDim);
2613
+ }
2614
+ .fc-docs-sidebar-link {
2615
+ display: block;
2616
+ padding: 5px 20px 5px 24px;
2617
+ font-size: 13px;
2618
+ color: var(--fc-textMuted);
2619
+ text-decoration: none;
2620
+ border-left: 2px solid transparent;
2621
+ transition:
2622
+ color 0.1s,
2623
+ background 0.1s,
2624
+ border-color 0.1s;
2625
+ }
2626
+ .fc-docs-sidebar-link:hover {
2627
+ color: var(--fc-text);
2628
+ background: var(--fc-bgHover);
2629
+ }
2630
+ .fc-docs-sidebar-link.active {
2631
+ color: var(--fc-accent);
2632
+ border-left-color: var(--fc-accent);
2633
+ background: var(--fc-bgHover);
2634
+ font-weight: 600;
2635
+ }
2636
+
2637
+ /* --- Index page --- */
2638
+ .fc-docs-index {
2639
+ padding: 40px 48px 80px;
2640
+ max-width: 800px;
2641
+ width: 100%;
2642
+ margin: 0 auto;
2643
+ box-sizing: border-box;
2644
+ }
2645
+ .fc-docs-index-hero {
2646
+ padding: 60px 0 40px;
2647
+ text-align: center;
2648
+ }
2649
+ .fc-docs-index-hero h1 {
2650
+ font-size: 32px;
2651
+ font-weight: 700;
2652
+ color: var(--fc-text);
2653
+ margin: 0 0 12px;
2654
+ }
2655
+ .fc-docs-index-hero p {
2656
+ font-size: 16px;
2657
+ color: var(--fc-textMuted);
2658
+ margin: 0 0 8px;
2659
+ }
2660
+ .fc-docs-index-hint {
2661
+ font-size: 13px;
2662
+ color: var(--fc-textDim);
2663
+ }
2664
+ .fc-docs-index-hint kbd {
2665
+ padding: 2px 6px;
2666
+ font-size: 12px;
2667
+ background: var(--fc-bgSurface);
2668
+ border: 1px solid var(--fc-border);
2669
+ border-radius: 4px;
2670
+ font-family: var(--fc-mono, monospace);
2671
+ color: var(--fc-accent);
2672
+ }
2673
+ .fc-docs-index-heading {
2674
+ font-size: 14px;
2675
+ font-weight: 600;
2676
+ color: var(--fc-textDim);
2677
+ text-transform: uppercase;
2678
+ letter-spacing: 0.06em;
2679
+ margin: 32px 0 12px;
2680
+ }
2681
+ .fc-docs-index-grid {
2682
+ display: grid;
2683
+ grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
2684
+ gap: 12px;
2685
+ margin-bottom: 8px;
2686
+ }
2687
+ .fc-docs-index-card {
2688
+ display: block;
2689
+ padding: 16px 20px;
2690
+ background: var(--fc-bgSurface);
2691
+ border: 1px solid var(--fc-border);
2692
+ border-radius: 8px;
2693
+ text-decoration: none;
2694
+ transition:
2695
+ border-color 0.15s,
2696
+ background 0.15s;
2697
+ }
2698
+ .fc-docs-index-card:hover {
2699
+ border-color: var(--fc-accent);
2700
+ background: var(--fc-bgHover);
2701
+ }
2702
+ .fc-docs-index-card-title {
2703
+ font-size: 15px;
2704
+ font-weight: 600;
2705
+ color: var(--fc-text);
2706
+ margin-bottom: 4px;
2707
+ }
2708
+ .fc-docs-index-card-desc {
2709
+ font-size: 13px;
2710
+ color: var(--fc-textMuted);
2711
+ }
2712
+
2713
+ /* --- Doc content (markdown) --- */
2714
+ .fc-docs-content {
2715
+ padding: 40px 48px 80px;
2716
+ max-width: 860px;
2717
+ margin: 0 auto;
2718
+ line-height: 1.7;
2719
+ color: var(--fc-text);
2720
+ font-size: 15px;
2721
+ }
2722
+ .fc-docs-content h1 {
2723
+ font-size: 28px;
2724
+ font-weight: 700;
2725
+ margin: 0 0 16px;
2726
+ padding-bottom: 12px;
2727
+ border-bottom: 1px solid var(--fc-border);
2728
+ color: var(--fc-text);
2729
+ }
2730
+ .fc-docs-content h2 {
2731
+ font-size: 20px;
2732
+ font-weight: 600;
2733
+ margin: 36px 0 12px;
2734
+ padding-bottom: 8px;
2735
+ border-bottom: 1px solid var(--fc-border);
2736
+ color: var(--fc-text);
2737
+ }
2738
+ .fc-docs-content h3 {
2739
+ font-size: 16px;
2740
+ font-weight: 600;
2741
+ margin: 28px 0 8px;
2742
+ color: var(--fc-text);
2743
+ }
2744
+ .fc-docs-content h4 {
2745
+ font-size: 14px;
2746
+ font-weight: 600;
2747
+ margin: 24px 0 6px;
2748
+ padding-top: 16px;
2749
+ border-top: 1px solid color-mix(in srgb, var(--fc-border) 50%, transparent);
2750
+ color: var(--fc-accent);
2751
+ }
2752
+ /* First h4 after a group heading or section start — no top border */
2753
+ .fc-docs-content h3 + h4,
2754
+ .fc-docs-content strong + h4,
2755
+ .fc-docs-content p + h4:first-of-type {
2756
+ border-top: none;
2757
+ padding-top: 0;
2758
+ }
2759
+ .fc-docs-content p {
2760
+ margin: 0 0 12px;
2761
+ color: var(--fc-text);
2762
+ }
2763
+ .fc-docs-content ul,
2764
+ .fc-docs-content ol {
2765
+ padding-left: 24px;
2766
+ margin: 0 0 12px;
2767
+ }
2768
+ .fc-docs-content li {
2769
+ margin-bottom: 4px;
2770
+ }
2771
+ .fc-docs-content li > ul,
2772
+ .fc-docs-content li > ol {
2773
+ margin-top: 4px;
2774
+ margin-bottom: 0;
2775
+ }
2776
+ .fc-docs-content a {
2777
+ color: var(--fc-accent);
2778
+ text-decoration: none;
2779
+ }
2780
+ .fc-docs-content a:hover {
2781
+ text-decoration: underline;
2782
+ }
2783
+ .fc-docs-content strong {
2784
+ font-weight: 600;
2785
+ color: var(--fc-text);
2786
+ }
2787
+ .fc-docs-content hr {
2788
+ border: none;
2789
+ border-top: 1px solid var(--fc-border);
2790
+ margin: 24px 0;
2791
+ }
2792
+ .fc-docs-content img {
2793
+ max-width: 100%;
2794
+ border-radius: 8px;
2795
+ }
2796
+
2797
+ /* Anchor links on headings */
2798
+ .fc-docs-anchor {
2799
+ opacity: 0;
2800
+ margin-left: 8px;
2801
+ color: var(--fc-textMuted);
2802
+ text-decoration: none;
2803
+ font-weight: 400;
2804
+ font-size: 0.8em;
2805
+ transition: opacity 0.15s;
2806
+ }
2807
+ .fc-docs-content h1:hover .fc-docs-anchor,
2808
+ .fc-docs-content h2:hover .fc-docs-anchor,
2809
+ .fc-docs-content h3:hover .fc-docs-anchor,
2810
+ .fc-docs-content h4:hover .fc-docs-anchor {
2811
+ opacity: 1;
2812
+ }
2813
+
2814
+ /* Scroll-to highlight */
2815
+ .fc-docs-highlight {
2816
+ animation: fc-docs-flash 1.5s ease-out;
2817
+ }
2818
+ @keyframes fc-docs-flash {
2819
+ 0% {
2820
+ background: var(--fc-bgActive);
2821
+ }
2822
+ 100% {
2823
+ background: transparent;
2824
+ }
2825
+ }
2826
+
2827
+ /* Code blocks */
2828
+ .fc-docs-code {
2829
+ background: var(--fc-bgPanel);
2830
+ border: 1px solid var(--fc-border);
2831
+ border-radius: 8px;
2832
+ padding: 16px;
2833
+ overflow-x: auto;
2834
+ font-size: 13px;
2835
+ line-height: 1.5;
2836
+ margin: 0 0 16px;
2837
+ font-family: var(--fc-mono, "JetBrains Mono", "Fira Code", "SF Mono", monospace);
2838
+ }
2839
+ .fc-docs-code code {
2840
+ background: none;
2841
+ padding: 0;
2842
+ border: none;
2843
+ font-size: 13px;
2844
+ color: var(--fc-text);
2845
+ }
2846
+
2847
+ /* Inline code — cyan tint for visibility */
2848
+ .fc-docs-inline-code {
2849
+ background: var(--fc-bgSurface);
2850
+ border: 1px solid var(--fc-border);
2851
+ border-radius: 4px;
2852
+ padding: 1px 6px;
2853
+ font-size: 0.9em;
2854
+ font-family: var(--fc-mono, "JetBrains Mono", "Fira Code", "SF Mono", monospace);
2855
+ color: var(--fc-accent);
2856
+ }
2857
+
2858
+ /* Blockquotes */
2859
+ .fc-docs-blockquote {
2860
+ border-left: 3px solid var(--fc-accent);
2861
+ margin: 0 0 12px;
2862
+ padding: 8px 16px;
2863
+ background: var(--fc-bgSurface);
2864
+ border-radius: 0 4px 4px 0;
2865
+ color: var(--fc-textMuted);
2866
+ }
2867
+ .fc-docs-blockquote p {
2868
+ margin: 0;
2869
+ }
2870
+
2871
+ /* Tables */
2872
+ .fc-docs-table {
2873
+ width: 100%;
2874
+ border-collapse: collapse;
2875
+ margin: 0 0 16px;
2876
+ font-size: 13px;
2877
+ }
2878
+ .fc-docs-table th,
2879
+ .fc-docs-table td {
2880
+ padding: 8px 12px;
2881
+ border: 1px solid var(--fc-border);
2882
+ text-align: left;
2883
+ }
2884
+ .fc-docs-table th {
2885
+ background: var(--fc-bgSurface);
2886
+ font-weight: 600;
2887
+ color: var(--fc-text);
2888
+ }
2889
+ .fc-docs-table td {
2890
+ color: var(--fc-textMuted);
2891
+ }
2892
+
2893
+ /* Details/summary (collapsible sections in API docs) */
2894
+ .fc-docs-content details {
2895
+ margin: 0 0 12px;
2896
+ border: 1px solid var(--fc-border);
2897
+ border-radius: 8px;
2898
+ overflow: hidden;
2899
+ }
2900
+ .fc-docs-content details summary {
2901
+ padding: 10px 16px;
2902
+ cursor: pointer;
2903
+ font-weight: 500;
2904
+ color: var(--fc-textMuted);
2905
+ background: var(--fc-bgSurface);
2906
+ transition: color 0.1s;
2907
+ }
2908
+ .fc-docs-content details summary:hover {
2909
+ color: var(--fc-text);
2910
+ }
2911
+ .fc-docs-content details[open] summary {
2912
+ border-bottom: 1px solid var(--fc-border);
2913
+ color: var(--fc-text);
2914
+ }
2915
+ .fc-docs-content details > :not(summary) {
2916
+ padding: 0 16px;
2917
+ }
2918
+ .fc-docs-content details > pre {
2919
+ margin: 12px 0;
2920
+ border: none;
2921
+ border-radius: 0;
2922
+ }
2923
+
2924
+ /* --- Highlight.js token colors (scoped to docs) ---
2925
+ Uses theme-aware CSS variables so tokens adapt to any app theme.
2926
+ Default palette matches Tokyo Night. */
2927
+ .fc-docs-content .hljs-keyword,
2928
+ .fc-docs-content .hljs-tag {
2929
+ color: var(--fc-accent);
2930
+ }
2931
+ .fc-docs-content .hljs-string,
2932
+ .fc-docs-content .hljs-template-variable {
2933
+ color: var(--fc-success, #9ece6a);
2934
+ }
2935
+ .fc-docs-content .hljs-number,
2936
+ .fc-docs-content .hljs-literal {
2937
+ color: var(--fc-warning, #ff9e64);
2938
+ }
2939
+ .fc-docs-content .hljs-type,
2940
+ .fc-docs-content .hljs-title.class_,
2941
+ .fc-docs-content .hljs-built_in {
2942
+ color: var(--fc-warning, #e0af68);
2943
+ }
2944
+ .fc-docs-content .hljs-comment {
2945
+ color: var(--fc-textDim);
2946
+ font-style: italic;
2947
+ }
2948
+ .fc-docs-content .hljs-attr,
2949
+ .fc-docs-content .hljs-attribute {
2950
+ color: var(--fc-accent);
2951
+ }
2952
+ .fc-docs-content .hljs-params {
2953
+ color: var(--fc-text);
2954
+ }
2955
+ .fc-docs-content .hljs-title.function_ {
2956
+ color: var(--fc-accent);
2957
+ }
2958
+ .fc-docs-content .hljs-punctuation {
2959
+ color: var(--fc-textMuted);
2960
+ }
2961
+ .fc-docs-content .hljs-property {
2962
+ color: var(--fc-text);
2963
+ }
2964
+ .fc-docs-content .hljs-variable {
2965
+ color: var(--fc-text);
2966
+ }
2967
+ .fc-docs-content .hljs-regexp {
2968
+ color: var(--fc-error, #f7768e);
2969
+ }
2970
+ .fc-docs-content .hljs-meta {
2971
+ color: var(--fc-textDim);
2972
+ }
2973
+ .fc-docs-content .hljs-selector-class {
2974
+ color: var(--fc-accent);
2975
+ }
2976
+
2977
+ /* --- Search overlay --- */
2978
+ .fc-docs-search-overlay {
2979
+ position: fixed;
2980
+ inset: 0;
2981
+ z-index: 200;
2982
+ background: rgba(0, 0, 0, 0.5);
2983
+ backdrop-filter: blur(4px);
2984
+ display: flex;
2985
+ align-items: flex-start;
2986
+ justify-content: center;
2987
+ padding-top: min(20vh, 160px);
2988
+ }
2989
+ .fc-docs-search-modal {
2990
+ width: 560px;
2991
+ max-width: calc(100vw - 32px);
2992
+ background: var(--fc-bgPanel);
2993
+ border: 1px solid var(--fc-border);
2994
+ border-radius: 12px;
2995
+ box-shadow: 0 24px 48px rgba(0, 0, 0, 0.4);
2996
+ overflow: hidden;
2997
+ }
2998
+ .fc-docs-search-input-wrap {
2999
+ display: flex;
3000
+ align-items: center;
3001
+ gap: 12px;
3002
+ padding: 16px;
3003
+ border-bottom: 1px solid var(--fc-border);
3004
+ }
3005
+ .fc-docs-search-input-wrap input {
3006
+ flex: 1;
3007
+ background: none;
3008
+ border: none;
3009
+ outline: none;
3010
+ font-size: 16px;
3011
+ font-family: inherit;
3012
+ color: var(--fc-text);
3013
+ }
3014
+ .fc-docs-search-input-wrap input::placeholder {
3015
+ color: var(--fc-textDim);
3016
+ }
3017
+ .fc-docs-search-input-wrap kbd {
3018
+ padding: 2px 6px;
3019
+ font-size: 11px;
3020
+ background: var(--fc-bgSurface);
3021
+ border: 1px solid var(--fc-border);
3022
+ border-radius: 4px;
3023
+ color: var(--fc-textDim);
3024
+ font-family: var(--fc-mono, monospace);
3025
+ }
3026
+ .fc-docs-search-results {
3027
+ max-height: 400px;
3028
+ overflow-y: auto;
3029
+ }
3030
+ .fc-docs-search-results::-webkit-scrollbar {
3031
+ width: 4px;
3032
+ }
3033
+ .fc-docs-search-results::-webkit-scrollbar-thumb {
3034
+ background: var(--fc-border);
3035
+ border-radius: 2px;
3036
+ }
3037
+
3038
+ .fc-docs-search-result {
3039
+ padding: 10px 16px;
3040
+ cursor: pointer;
3041
+ border-bottom: 1px solid var(--fc-border);
3042
+ transition: background 0.08s;
3043
+ }
3044
+ .fc-docs-search-result:last-child {
3045
+ border-bottom: none;
3046
+ }
3047
+ .fc-docs-search-result:hover,
3048
+ .fc-docs-search-result.selected {
3049
+ background: var(--fc-bgHover);
3050
+ }
3051
+ .fc-docs-search-result.selected {
3052
+ background: var(--fc-bgActive);
3053
+ }
3054
+ .fc-docs-search-result-title {
3055
+ font-size: 14px;
3056
+ font-weight: 500;
3057
+ color: var(--fc-text);
3058
+ }
3059
+ .fc-docs-search-result-category {
3060
+ font-size: 12px;
3061
+ color: var(--fc-textDim);
3062
+ margin-top: 2px;
3063
+ }
3064
+ .fc-docs-search-result-snippet {
3065
+ font-size: 12px;
3066
+ color: var(--fc-textMuted);
3067
+ margin-top: 4px;
3068
+ overflow: hidden;
3069
+ text-overflow: ellipsis;
3070
+ white-space: nowrap;
3071
+ }
3072
+ .fc-docs-search-empty {
3073
+ padding: 24px 16px;
3074
+ text-align: center;
3075
+ color: var(--fc-textDim);
3076
+ font-size: 14px;
3077
+ }
3078
+ .fc-docs-search-footer {
3079
+ display: flex;
3080
+ gap: 16px;
3081
+ padding: 8px 16px;
3082
+ border-top: 1px solid var(--fc-border);
3083
+ font-size: 12px;
3084
+ color: var(--fc-textDim);
3085
+ }
3086
+ .fc-docs-search-footer kbd {
3087
+ padding: 1px 5px;
3088
+ font-size: 11px;
3089
+ background: var(--fc-bgSurface);
3090
+ border: 1px solid var(--fc-border);
3091
+ border-radius: 3px;
3092
+ font-family: var(--fc-mono, monospace);
3093
+ color: var(--fc-textMuted);
3094
+ }
3095
+
3096
+ /* --- TOC backdrop (mobile only, visible via media query) --- */
3097
+ .fc-docs-toc-backdrop {
3098
+ display: none;
3099
+ }
3100
+ /* --- TOC handle (mobile bottom sheet, hidden on desktop) --- */
3101
+ .fc-docs-toc-handle {
3102
+ display: none;
3103
+ }
3104
+
3105
+ /* --- On-this-page right sidebar --- */
3106
+ .fc-docs-toc {
3107
+ width: 220px;
3108
+ flex-shrink: 0;
3109
+ padding: 20px 12px 20px 0;
3110
+ overflow-y: auto;
3111
+ height: calc(100vh - 56px);
3112
+ position: sticky;
3113
+ top: 56px;
3114
+ border-left: 1px solid var(--fc-border);
3115
+ background: var(--fc-bgPanel);
3116
+ }
3117
+ /* Desktop: hide TOC when not open */
3118
+ .fc-docs-toc:not(.open) {
3119
+ display: none;
3120
+ }
3121
+ .fc-docs-toc::-webkit-scrollbar {
3122
+ width: 4px;
3123
+ }
3124
+ .fc-docs-toc::-webkit-scrollbar-track {
3125
+ background: transparent;
3126
+ }
3127
+ .fc-docs-toc::-webkit-scrollbar-thumb {
3128
+ background: var(--fc-border);
3129
+ border-radius: 2px;
3130
+ }
3131
+ .fc-docs-toc-title {
3132
+ padding: 0 12px 8px;
3133
+ font-size: 11px;
3134
+ font-weight: 600;
3135
+ text-transform: uppercase;
3136
+ letter-spacing: 0.05em;
3137
+ color: var(--fc-textDim);
3138
+ }
3139
+ .fc-docs-toc-link {
3140
+ display: block;
3141
+ padding: 3px 12px;
3142
+ font-size: 12px;
3143
+ line-height: 1.4;
3144
+ color: var(--fc-textMuted);
3145
+ text-decoration: none;
3146
+ border-left: 2px solid transparent;
3147
+ overflow: hidden;
3148
+ text-overflow: ellipsis;
3149
+ white-space: nowrap;
3150
+ }
3151
+ .fc-docs-toc-link.indent {
3152
+ padding-left: 24px;
3153
+ font-size: 11.5px;
3154
+ }
3155
+ .fc-docs-toc-link:hover {
3156
+ color: var(--fc-text);
3157
+ }
3158
+ .fc-docs-toc-link.active {
3159
+ color: var(--fc-accent, #58a6ff);
3160
+ border-left-color: var(--fc-accent, #58a6ff);
3161
+ }
3162
+
3163
+ /* --- Sidebar toggle buttons --- */
3164
+ .fc-docs-nav-left {
3165
+ display: flex;
3166
+ align-items: center;
3167
+ gap: 8px;
3168
+ }
3169
+ .fc-docs-sidebar-toggle {
3170
+ display: flex;
3171
+ align-items: center;
3172
+ justify-content: center;
3173
+ width: 28px;
3174
+ height: 28px;
3175
+ border: 1px solid var(--fc-border);
3176
+ border-radius: 6px;
3177
+ background: transparent;
3178
+ color: var(--fc-textMuted);
3179
+ cursor: pointer;
3180
+ flex-shrink: 0;
3181
+ }
3182
+ .fc-docs-sidebar-toggle:hover {
3183
+ background: var(--fc-bgSurface);
3184
+ color: var(--fc-text);
3185
+ }
3186
+
3187
+ /* --- Project Selector --- */
3188
+ .fc-project-item:hover {
3189
+ --fc-project-item-bg: var(--fc-bgHover, rgba(255, 255, 255, 0.06));
3190
+ }
3191
+
3192
+ :root[data-fc-hud-theme="shield"] .fc-project-item {
3193
+ position: relative;
3194
+ border: 1px solid transparent;
3195
+ color: var(--fc-textMuted);
3196
+ font-family: var(--fc-hud-font);
3197
+ }
3198
+
3199
+ :root[data-fc-hud-theme="shield"] .fc-project-item:hover,
3200
+ :root[data-fc-hud-theme="shield"] .fc-project-item:focus-visible {
3201
+ --fc-project-item-bg: var(--fc-project-item-hover-bg);
3202
+ border-color: rgba(54, 232, 255, 0.18);
3203
+ color: var(--fc-text);
3204
+ outline: none;
3205
+ }
3206
+
3207
+ :root[data-fc-hud-theme="shield"] .fc-project-item.active {
3208
+ border-color: rgba(54, 232, 255, 0.24);
3209
+ color: var(--fc-text);
3210
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.22);
3211
+ }
3212
+
3213
+ :root[data-fc-hud-theme="shield"] .fc-project-item.active::before {
3214
+ position: absolute;
3215
+ top: 6px;
3216
+ bottom: 6px;
3217
+ left: 1px;
3218
+ width: 2px;
3219
+ content: "";
3220
+ background: var(--fc-accent);
3221
+ box-shadow: 0 0 14px rgba(54, 232, 255, 0.72);
3222
+ }
3223
+
3224
+ /* --- Design Trace --- */
3225
+ .fc-design-trace-summary {
3226
+ display: grid;
3227
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3228
+ gap: 6px;
3229
+ margin-bottom: 8px;
3230
+ }
3231
+
3232
+ .fc-design-trace-metric,
3233
+ .fc-design-trace-impact,
3234
+ .fc-design-trace-row,
3235
+ .fc-design-trace-impact-node {
3236
+ border: 1px solid var(--fc-borderLight);
3237
+ border-radius: 6px;
3238
+ background: var(--fc-bgOverlay);
3239
+ }
3240
+
3241
+ .fc-design-trace-metric {
3242
+ min-width: 0;
3243
+ padding: 7px 8px;
3244
+ }
3245
+
3246
+ .fc-design-trace-metric strong {
3247
+ display: block;
3248
+ color: var(--fc-text);
3249
+ font-size: 14px;
3250
+ font-variant-numeric: tabular-nums;
3251
+ line-height: 1.1;
3252
+ }
3253
+
3254
+ .fc-design-trace-metric span {
3255
+ display: block;
3256
+ margin-top: 2px;
3257
+ color: var(--fc-textDim);
3258
+ font-size: 10px;
3259
+ text-transform: uppercase;
3260
+ }
3261
+
3262
+ .fc-design-trace-cache-note,
3263
+ .fc-design-trace-empty,
3264
+ .fc-design-trace-impact-empty,
3265
+ .fc-design-trace-impact-more {
3266
+ color: var(--fc-textDim);
3267
+ font-size: 11px;
3268
+ line-height: 1.4;
3269
+ }
3270
+
3271
+ .fc-design-trace-cache-note {
3272
+ margin-bottom: 8px;
3273
+ }
3274
+
3275
+ .fc-design-trace-search {
3276
+ width: 100%;
3277
+ margin-bottom: 8px;
3278
+ }
3279
+
3280
+ .fc-design-trace-list {
3281
+ display: grid;
3282
+ gap: 5px;
3283
+ }
3284
+
3285
+ .fc-design-trace-row {
3286
+ display: grid;
3287
+ grid-template-columns: minmax(0, 1fr) auto auto;
3288
+ gap: 7px;
3289
+ align-items: center;
3290
+ min-width: 0;
3291
+ padding: 7px 8px;
3292
+ cursor: pointer;
3293
+ }
3294
+
3295
+ .fc-design-trace-row:hover,
3296
+ .fc-design-trace-row:focus-visible,
3297
+ .fc-design-trace-row.active {
3298
+ border-color: var(--fc-accent);
3299
+ outline: none;
3300
+ }
3301
+
3302
+ .fc-design-trace-row.active {
3303
+ background: color-mix(in srgb, var(--fc-accent) 12%, transparent);
3304
+ }
3305
+
3306
+ .fc-design-trace-row-main,
3307
+ .fc-design-trace-impact-node-label,
3308
+ .fc-design-trace-impact-node-meta {
3309
+ min-width: 0;
3310
+ overflow: hidden;
3311
+ text-overflow: ellipsis;
3312
+ white-space: nowrap;
3313
+ }
3314
+
3315
+ .fc-design-trace-row-main {
3316
+ display: grid;
3317
+ gap: 2px;
3318
+ }
3319
+
3320
+ .fc-design-trace-label {
3321
+ min-width: 0;
3322
+ overflow: hidden;
3323
+ color: var(--fc-text);
3324
+ font-size: 12px;
3325
+ font-weight: 600;
3326
+ text-overflow: ellipsis;
3327
+ white-space: nowrap;
3328
+ }
3329
+
3330
+ .fc-design-trace-meta {
3331
+ min-width: 0;
3332
+ overflow: hidden;
3333
+ color: var(--fc-textDim);
3334
+ font-size: 10px;
3335
+ text-overflow: ellipsis;
3336
+ white-space: nowrap;
3337
+ }
3338
+
3339
+ .fc-design-trace-badge,
3340
+ .fc-design-trace-copy {
3341
+ border: 1px solid var(--fc-borderLight);
3342
+ border-radius: 4px;
3343
+ background: var(--fc-bgInput);
3344
+ color: var(--fc-textMuted);
3345
+ font-size: 10px;
3346
+ line-height: 1;
3347
+ }
3348
+
3349
+ .fc-design-trace-badge {
3350
+ padding: 4px 5px;
3351
+ text-transform: uppercase;
3352
+ }
3353
+
3354
+ .fc-design-trace-badge.reusable {
3355
+ border-color: color-mix(in srgb, var(--fc-success) 42%, transparent);
3356
+ color: var(--fc-success);
3357
+ }
3358
+
3359
+ .fc-design-trace-badge.seed {
3360
+ border-color: color-mix(in srgb, var(--fc-warning) 44%, transparent);
3361
+ color: var(--fc-warning);
3362
+ }
3363
+
3364
+ .fc-design-trace-copy {
3365
+ padding: 4px 6px;
3366
+ cursor: pointer;
3367
+ }
3368
+
3369
+ .fc-design-trace-copy:hover {
3370
+ border-color: var(--fc-accent);
3371
+ color: var(--fc-text);
3372
+ }
3373
+
3374
+ .fc-design-trace-impact {
3375
+ display: grid;
3376
+ gap: 8px;
3377
+ margin-bottom: 8px;
3378
+ padding: 8px;
3379
+ }
3380
+
3381
+ .fc-design-trace-impact-header {
3382
+ display: flex;
3383
+ align-items: center;
3384
+ justify-content: space-between;
3385
+ gap: 8px;
3386
+ color: var(--fc-textMuted);
3387
+ font-size: 11px;
3388
+ font-weight: 600;
3389
+ text-transform: uppercase;
3390
+ }
3391
+
3392
+ .fc-design-trace-impact-lane {
3393
+ display: grid;
3394
+ gap: 4px;
3395
+ }
3396
+
3397
+ .fc-design-trace-impact-label {
3398
+ color: var(--fc-textDim);
3399
+ font-size: 10px;
3400
+ text-transform: uppercase;
3401
+ }
3402
+
3403
+ .fc-design-trace-impact-nodes {
3404
+ display: grid;
3405
+ gap: 4px;
3406
+ }
3407
+
3408
+ .fc-design-trace-impact-node {
3409
+ display: grid;
3410
+ gap: 2px;
3411
+ width: 100%;
3412
+ min-width: 0;
3413
+ padding: 6px 7px;
3414
+ color: var(--fc-textMuted);
3415
+ text-align: left;
3416
+ cursor: pointer;
3417
+ }
3418
+
3419
+ .fc-design-trace-impact-node.selected {
3420
+ border-color: var(--fc-accent);
3421
+ background: color-mix(in srgb, var(--fc-accent) 12%, transparent);
3422
+ color: var(--fc-text);
3423
+ }
3424
+
3425
+ .fc-design-trace-impact-node.input {
3426
+ border-color: color-mix(in srgb, var(--fc-warning) 28%, var(--fc-borderLight));
3427
+ }
3428
+
3429
+ .fc-design-trace-impact-node.usedBy {
3430
+ border-color: color-mix(in srgb, var(--fc-success) 28%, var(--fc-borderLight));
3431
+ }
3432
+
3433
+ .fc-design-trace-impact-node-label {
3434
+ color: var(--fc-text);
3435
+ font-size: 11px;
3436
+ font-weight: 600;
3437
+ }
3438
+
3439
+ .fc-design-trace-impact-node-meta {
3440
+ color: var(--fc-textDim);
3441
+ font-size: 10px;
3442
+ }
3443
+
3444
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-summary,
3445
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-list,
3446
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-impact {
3447
+ font-family: var(--fc-hud-font);
3448
+ }
3449
+
3450
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-metric,
3451
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-impact,
3452
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-row,
3453
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-impact-node {
3454
+ border-color: rgba(54, 232, 255, 0.18);
3455
+ background: rgba(1, 12, 17, 0.6);
3456
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.035);
3457
+ }
3458
+
3459
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-metric strong,
3460
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-label,
3461
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-impact-node-label {
3462
+ color: var(--fc-accent);
3463
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.2);
3464
+ }
3465
+
3466
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-row:hover,
3467
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-row:focus-visible,
3468
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-row.active,
3469
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-impact-node:hover,
3470
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-impact-node:focus-visible {
3471
+ border-color: rgba(54, 232, 255, 0.46);
3472
+ background: linear-gradient(90deg, rgba(54, 232, 255, 0.16), rgba(1, 12, 17, 0.72));
3473
+ }
3474
+
3475
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-badge,
3476
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-copy {
3477
+ border-color: rgba(54, 232, 255, 0.18);
3478
+ border-radius: 3px;
3479
+ background: rgba(1, 12, 17, 0.74);
3480
+ font-family: var(--fc-hud-font);
3481
+ }
3482
+
3483
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-badge.reusable {
3484
+ border-color: rgba(119, 255, 192, 0.34);
3485
+ color: var(--fc-success);
3486
+ }
3487
+
3488
+ :root[data-fc-hud-theme="shield"] .fc-design-trace-badge.seed {
3489
+ border-color: rgba(255, 157, 54, 0.36);
3490
+ color: var(--fc-warning);
3491
+ }
3492
+
3493
+ /* --- Responsive ---
3494
+ Desktop (>900px): sidebars in normal flow, toggled via JS.
3495
+ Mobile (<=900px): sidebar = overlay from left, TOC = bottom sheet.
3496
+ */
3497
+ @media (max-width: 900px) {
3498
+ /* --- Prevent horizontal scroll --- */
3499
+ .fc-docs-layout {
3500
+ overflow-x: hidden;
3501
+ }
3502
+
3503
+ /* --- Compact nav --- */
3504
+ .fc-docs-nav {
3505
+ height: 48px;
3506
+ padding: 0 12px;
3507
+ }
3508
+ .fc-docs-nav-left {
3509
+ gap: 6px;
3510
+ min-width: 0;
3511
+ }
3512
+ .fc-docs-nav-links {
3513
+ gap: 8px;
3514
+ min-width: 0;
3515
+ }
3516
+ .fc-docs-nav-logo span:last-child {
3517
+ font-size: 14px;
3518
+ }
3519
+ .fc-docs-body {
3520
+ padding-top: 48px;
3521
+ }
3522
+ .fc-docs-main {
3523
+ height: calc(100vh - 48px);
3524
+ }
3525
+
3526
+ /* Hide text-based nav links — you're already on docs */
3527
+ .fc-docs-nav-active,
3528
+ .fc-docs-nav-link {
3529
+ display: none;
3530
+ }
3531
+
3532
+ /* Search trigger: icon only, hide label and kbd */
3533
+ .fc-docs-search-trigger span,
3534
+ .fc-docs-search-trigger kbd {
3535
+ display: none;
3536
+ }
3537
+ .fc-docs-search-trigger {
3538
+ padding: 5px 8px;
3539
+ min-width: 32px;
3540
+ justify-content: center;
3541
+ }
3542
+
3543
+ /* CTA button: compact */
3544
+ .fc-docs-nav-cta {
3545
+ padding: 5px 10px;
3546
+ font-size: 12px;
3547
+ }
3548
+
3549
+ /* --- Sidebar overlay mode --- */
3550
+ .fc-docs-sidebar-backdrop {
3551
+ display: block;
3552
+ position: fixed;
3553
+ inset: 0;
3554
+ background: rgba(0, 0, 0, 0.5);
3555
+ backdrop-filter: blur(2px);
3556
+ z-index: 150;
3557
+ opacity: 0;
3558
+ pointer-events: none;
3559
+ transition: opacity 0.2s ease;
3560
+ }
3561
+ .fc-docs-sidebar-backdrop.open {
3562
+ opacity: 1;
3563
+ pointer-events: auto;
3564
+ }
3565
+
3566
+ .fc-docs-sidebar,
3567
+ .fc-docs-sidebar:not(.open) {
3568
+ display: block; /* Override desktop display:none — mobile uses transform */
3569
+ position: fixed;
3570
+ top: 0;
3571
+ left: 0;
3572
+ bottom: 0;
3573
+ width: 280px;
3574
+ max-width: 85vw;
3575
+ height: 100vh;
3576
+ z-index: 160;
3577
+ transform: translateX(-100%);
3578
+ transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
3579
+ padding-top: 56px;
3580
+ -webkit-overflow-scrolling: touch;
3581
+ }
3582
+ .fc-docs-sidebar.open {
3583
+ transform: translateX(0);
3584
+ }
3585
+ /* Bigger tap targets on mobile */
3586
+ .fc-docs-sidebar-link {
3587
+ padding: 8px 20px 8px 24px;
3588
+ font-size: 14px;
3589
+ }
3590
+
3591
+ /* --- TOC bottom sheet mode --- */
3592
+ .fc-docs-toc-backdrop {
3593
+ display: block;
3594
+ position: fixed;
3595
+ inset: 0;
3596
+ background: rgba(0, 0, 0, 0.5);
3597
+ backdrop-filter: blur(2px);
3598
+ z-index: 150;
3599
+ opacity: 0;
3600
+ pointer-events: none;
3601
+ transition: opacity 0.2s ease;
3602
+ }
3603
+ .fc-docs-toc-backdrop.open {
3604
+ opacity: 1;
3605
+ pointer-events: auto;
3606
+ }
3607
+
3608
+ .fc-docs-toc,
3609
+ .fc-docs-toc:not(.open) {
3610
+ display: block; /* Override desktop display:none — mobile uses transform */
3611
+ position: fixed;
3612
+ bottom: 0;
3613
+ left: 0;
3614
+ right: 0;
3615
+ top: auto;
3616
+ width: 100%;
3617
+ max-height: 60vh;
3618
+ height: auto;
3619
+ border-left: none;
3620
+ border-top: 1px solid var(--fc-border);
3621
+ border-radius: 16px 16px 0 0;
3622
+ z-index: 160;
3623
+ transform: translateY(100%);
3624
+ transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
3625
+ padding: 12px 0 24px;
3626
+ -webkit-overflow-scrolling: touch;
3627
+ }
3628
+ .fc-docs-toc.open {
3629
+ transform: translateY(0);
3630
+ }
3631
+ .fc-docs-toc-handle {
3632
+ display: block;
3633
+ width: 36px;
3634
+ height: 4px;
3635
+ background: var(--fc-textDim);
3636
+ border-radius: 2px;
3637
+ margin: 0 auto 12px;
3638
+ }
3639
+ .fc-docs-toc-link {
3640
+ padding: 6px 20px;
3641
+ font-size: 14px;
3642
+ }
3643
+ .fc-docs-toc-link.indent {
3644
+ padding-left: 36px;
3645
+ font-size: 13px;
3646
+ }
3647
+
3648
+ /* --- Content adjustments --- */
3649
+ .fc-docs-content {
3650
+ padding: 20px 16px 60px;
3651
+ }
3652
+ .fc-docs-content h1 {
3653
+ font-size: 24px;
3654
+ }
3655
+ .fc-docs-content h2 {
3656
+ font-size: 18px;
3657
+ }
3658
+ /* Tables scroll horizontally instead of the page */
3659
+ .fc-docs-content .fc-docs-table {
3660
+ display: block;
3661
+ overflow-x: auto;
3662
+ -webkit-overflow-scrolling: touch;
3663
+ }
3664
+
3665
+ .fc-docs-index {
3666
+ padding: 20px 16px 60px;
3667
+ }
3668
+ .fc-docs-index-hero {
3669
+ padding: 24px 0 20px;
3670
+ }
3671
+ .fc-docs-index-hero h1 {
3672
+ font-size: 24px;
3673
+ }
3674
+ .fc-docs-index-grid {
3675
+ grid-template-columns: 1fr;
3676
+ }
3677
+ }
3678
+
3679
+ @media (max-width: 1280px) {
3680
+ .fc-toolbar {
3681
+ padding: 0 8px;
3682
+ gap: 6px;
3683
+ }
3684
+
3685
+ .fc-toolbar .fc-separator {
3686
+ margin: 0 2px;
3687
+ }
3688
+
3689
+ .fc-toolbar-file {
3690
+ max-width: 260px;
3691
+ width: min(260px, 100%);
3692
+ padding: 5px 10px;
3693
+ }
3694
+
3695
+ .fc-toolbar-project-chip {
3696
+ max-width: 150px;
3697
+ }
3698
+
3699
+ .fc-toolbar-shortcut {
3700
+ display: none;
3701
+ }
3702
+ }
3703
+
3704
+ @media (max-width: 1120px) {
3705
+ .fc-toolbar-file {
3706
+ max-width: 220px;
3707
+ width: min(220px, 100%);
3708
+ }
3709
+
3710
+ .fc-toolbar-project-chip {
3711
+ max-width: 124px;
3712
+ }
3713
+
3714
+ .fc-toolbar-collapse-label {
3715
+ width: 32px;
3716
+ padding: 0;
3717
+ gap: 0;
3718
+ }
3719
+
3720
+ .fc-toolbar-collapse-label > span:last-child {
3721
+ display: none;
3722
+ }
3723
+ }
3724
+
3725
+ :root[data-fc-theme="shield-light"] * {
3726
+ scrollbar-color: rgba(0, 138, 166, 0.38) rgba(155, 170, 169, 0.7);
3727
+ }
3728
+
3729
+ :root[data-fc-theme="shield-light"] ::-webkit-scrollbar-track {
3730
+ background: rgba(155, 170, 169, 0.7);
3731
+ }
3732
+
3733
+ :root[data-fc-theme="shield-light"] ::-webkit-scrollbar-thumb {
3734
+ border-color: rgba(155, 170, 169, 0.74);
3735
+ background: linear-gradient(180deg, rgba(0, 138, 166, 0.58), rgba(18, 111, 128, 0.76));
3736
+ }
3737
+
3738
+ :root[data-fc-theme="shield-light"] ::-webkit-scrollbar-thumb:hover {
3739
+ background: linear-gradient(180deg, rgba(0, 138, 166, 0.78), rgba(192, 107, 22, 0.5));
3740
+ }
3741
+
3742
+ :root[data-fc-theme="shield-light"] .fc-app-shell {
3743
+ background:
3744
+ linear-gradient(rgba(0, 138, 166, 0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 138, 166, 0.05) 1px, transparent 1px),
3745
+ radial-gradient(circle at 54% 46%, rgba(0, 138, 166, 0.15), transparent 34%), linear-gradient(180deg, var(--fc-bgOverlay), var(--fc-bg));
3746
+ }
3747
+
3748
+ :root[data-fc-theme="shield-light"] .fc-app-shell::before {
3749
+ background: repeating-linear-gradient(180deg, rgba(0, 138, 166, 0.04) 0 1px, transparent 1px 5px);
3750
+ opacity: 0.34;
3751
+ mix-blend-mode: multiply;
3752
+ }
3753
+
3754
+ :root[data-fc-theme="shield-light"] .fc-app-shell::after {
3755
+ background:
3756
+ linear-gradient(90deg, rgba(7, 21, 24, 0.1), transparent 12%, transparent 88%, rgba(7, 21, 24, 0.08)),
3757
+ linear-gradient(180deg, rgba(255, 255, 255, 0.08), transparent 22%, transparent 82%, rgba(7, 21, 24, 0.08));
3758
+ }
3759
+
3760
+ :root[data-fc-theme="shield-light"] .fc-boot-screen {
3761
+ background:
3762
+ radial-gradient(circle at 50% 44%, rgba(0, 138, 166, 0.2), transparent 28%),
3763
+ linear-gradient(rgba(0, 138, 166, 0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 138, 166, 0.05) 1px, transparent 1px),
3764
+ var(--fc-bg);
3765
+ }
3766
+
3767
+ :root[data-fc-theme="shield-light"] .fc-boot-card {
3768
+ background: linear-gradient(180deg, rgba(0, 138, 166, 0.14), rgba(219, 227, 224, 0.78));
3769
+ box-shadow:
3770
+ 0 18px 60px rgba(38, 55, 58, 0.18),
3771
+ 0 0 42px rgba(0, 138, 166, 0.18),
3772
+ inset 0 1px 0 rgba(255, 255, 255, 0.88);
3773
+ }
3774
+
3775
+ :root[data-fc-theme="shield-light"] .fc-boot-progress {
3776
+ --fc-boot-progress-bg: rgba(255, 255, 255, 0.72);
3777
+ }
3778
+
3779
+ :root[data-fc-theme="shield-light"] .fc-viewport-shell {
3780
+ background:
3781
+ radial-gradient(circle at 50% 50%, transparent 0 20%, rgba(0, 138, 166, 0.06) 20.2% 20.6%, transparent 20.8% 33%),
3782
+ radial-gradient(circle at 50% 50%, transparent 0 41%, rgba(192, 107, 22, 0.06) 41.2% 41.6%, transparent 41.8%),
3783
+ linear-gradient(rgba(0, 138, 166, 0.055) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 138, 166, 0.055) 1px, transparent 1px),
3784
+ radial-gradient(circle at 50% 48%, rgba(0, 138, 166, 0.12), transparent 38%), var(--fc-viewportBg);
3785
+ }
3786
+
3787
+ :root[data-fc-theme="shield-light"] .fc-viewport-shell::before {
3788
+ opacity: 0.24;
3789
+ }
3790
+
3791
+ :root[data-fc-theme="shield-light"] .fc-viewport-shell::after {
3792
+ border-color: rgba(0, 138, 166, 0.16);
3793
+ box-shadow:
3794
+ inset 0 0 28px rgba(0, 138, 166, 0.05),
3795
+ inset 0 0 80px rgba(255, 255, 255, 0.2);
3796
+ }
3797
+
3798
+ :root[data-fc-theme="shield-light"] .fc-statusbar-backend {
3799
+ border-color: rgba(0, 138, 166, 0.18);
3800
+ background: rgba(255, 255, 255, 0.46);
3801
+ }
3802
+
3803
+ :root[data-fc-theme="shield-light"] .fc-share-popover .fc-btn-card,
3804
+ :root[data-fc-theme="shield-light"] .fc-ai-dialog section,
3805
+ :root[data-fc-theme="shield-light"] .fc-export-dialog button:not(.fc-btn),
3806
+ :root[data-fc-theme="shield-light"] .fc-publish-change-list,
3807
+ :root[data-fc-theme="shield-light"] .fc-publish-change-section,
3808
+ :root[data-fc-theme="shield-light"] .fc-shortcuts-kbd {
3809
+ border-color: rgba(0, 138, 166, 0.26);
3810
+ background: rgba(255, 255, 255, 0.58);
3811
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
3812
+ }
3813
+
3814
+ :root[data-fc-theme="shield-light"] .fc-trajectory-preset-menu {
3815
+ --fc-trajectory-preset-bg:
3816
+ linear-gradient(135deg, rgba(0, 138, 166, 0.18), rgba(219, 227, 224, 0.95) 42%),
3817
+ linear-gradient(315deg, rgba(192, 107, 22, 0.14), transparent 38%), rgba(219, 227, 224, 0.97);
3818
+ --fc-trajectory-preset-border: rgba(0, 138, 166, 0.52);
3819
+ --fc-trajectory-preset-shadow: 0 22px 58px rgba(38, 55, 58, 0.2), 0 0 0 1px rgba(0, 138, 166, 0.14), 0 0 26px rgba(0, 138, 166, 0.16);
3820
+ --fc-trajectory-preset-item-bg: rgba(255, 255, 255, 0.58);
3821
+ --fc-trajectory-preset-item-border: rgba(0, 138, 166, 0.1);
3822
+ --fc-trajectory-preset-selected-bg: linear-gradient(90deg, rgba(0, 138, 166, 0.24), rgba(192, 107, 22, 0.1));
3823
+ --fc-trajectory-preset-selected-border: rgba(0, 138, 166, 0.5);
3824
+ --fc-trajectory-preset-icon-bg: rgba(255, 255, 255, 0.78);
3825
+ --fc-trajectory-preset-icon-border: rgba(0, 138, 166, 0.22);
3826
+ --fc-trajectory-preset-desc-color: rgba(70, 86, 82, 0.88);
3827
+ }
3828
+
3829
+ :root[data-fc-theme="shield-light"] .fc-object-context-menu,
3830
+ :root[data-fc-theme="shield-light"] .fc-face-info-panel {
3831
+ --fc-floating-panel-bg:
3832
+ linear-gradient(135deg, rgba(0, 138, 166, 0.16), rgba(219, 227, 224, 0.94) 44%),
3833
+ linear-gradient(315deg, rgba(192, 107, 22, 0.12), transparent 36%), rgba(219, 227, 224, 0.97);
3834
+ --fc-floating-panel-border: rgba(0, 138, 166, 0.48);
3835
+ --fc-floating-panel-shadow: 0 20px 54px rgba(38, 55, 58, 0.2), 0 0 0 1px rgba(0, 138, 166, 0.12), 0 0 28px rgba(0, 138, 166, 0.16);
3836
+ }
3837
+
3838
+ :root[data-fc-theme="shield-light"] .fc-object-context-menu {
3839
+ --fc-object-context-menu-item-bg: rgba(255, 255, 255, 0.58);
3840
+ --fc-object-context-menu-item-border: rgba(0, 138, 166, 0.12);
3841
+ }
3842
+
3843
+ :root[data-fc-theme="shield-light"] .fc-file-context-menu {
3844
+ box-shadow:
3845
+ 0 18px 44px rgba(38, 55, 58, 0.18),
3846
+ 0 0 0 1px rgba(0, 138, 166, 0.12),
3847
+ 0 0 24px rgba(0, 138, 166, 0.14);
3848
+ }
3849
+
3850
+ :root[data-fc-theme="shield-light"] .fc-param-control {
3851
+ background: rgba(255, 255, 255, 0.48);
3852
+ }
3853
+
3854
+ :root[data-fc-theme="shield-light"] .fc-param-control.changed {
3855
+ background: linear-gradient(90deg, rgba(192, 107, 22, 0.12), rgba(255, 255, 255, 0.58) 46%);
3856
+ }
3857
+
3858
+ :root[data-fc-theme="shield-light"] input[type="checkbox"],
3859
+ :root[data-fc-theme="shield-light"] input[type="radio"] {
3860
+ background: linear-gradient(180deg, rgba(0, 138, 166, 0.08), rgba(255, 255, 255, 0.72)), rgba(255, 255, 255, 0.9);
3861
+ }
3862
+
3863
+ :root[data-fc-theme="shield-light"] input[type="checkbox"]:checked,
3864
+ :root[data-fc-theme="shield-light"] input[type="radio"]:checked {
3865
+ background: linear-gradient(180deg, rgba(0, 138, 166, 0.24), rgba(255, 255, 255, 0.78)), rgba(255, 255, 255, 0.9);
3866
+ border-color: rgba(0, 138, 166, 0.9);
3867
+ }
3868
+
3869
+ :root[data-fc-theme="shield-light"] .fc-design-trace-metric,
3870
+ :root[data-fc-theme="shield-light"] .fc-design-trace-impact,
3871
+ :root[data-fc-theme="shield-light"] .fc-design-trace-row,
3872
+ :root[data-fc-theme="shield-light"] .fc-design-trace-impact-node {
3873
+ border-color: rgba(0, 138, 166, 0.2);
3874
+ background: rgba(255, 255, 255, 0.6);
3875
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
3876
+ }
3877
+
3878
+ :root[data-fc-theme="shield-light"] .fc-design-trace-row:hover,
3879
+ :root[data-fc-theme="shield-light"] .fc-design-trace-row:focus-visible,
3880
+ :root[data-fc-theme="shield-light"] .fc-design-trace-row.active,
3881
+ :root[data-fc-theme="shield-light"] .fc-design-trace-impact-node:hover,
3882
+ :root[data-fc-theme="shield-light"] .fc-design-trace-impact-node:focus-visible {
3883
+ background: linear-gradient(90deg, rgba(0, 138, 166, 0.18), rgba(255, 255, 255, 0.72));
3884
+ }
3885
+
3886
+ :root[data-fc-theme="shield-light"] .fc-design-trace-badge,
3887
+ :root[data-fc-theme="shield-light"] .fc-design-trace-copy {
3888
+ border-color: rgba(0, 138, 166, 0.22);
3889
+ background: rgba(255, 255, 255, 0.68);
3890
+ }