forgecad 0.9.14 → 0.9.16

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 (239) hide show
  1. package/LICENSE +6 -4
  2. package/README.md +8 -4
  3. package/dist/assets/{AdminPage-eWGs2K6H.js → AdminPage-CXvls4-J.js} +2 -2
  4. package/dist/assets/{BenchmarkPage-CTrLKfpo.js → BenchmarkPage-B27zk8xL.js} +4 -15
  5. package/dist/assets/{BlogPage-5nPesyds.js → BlogPage-CMAVvgQL.js} +2 -2
  6. package/dist/assets/{DocsPage-C4Y3nbYc.js → DocsPage-knf4I4h7.js} +9 -3
  7. package/dist/assets/EditorApp-BHMQlJ-D.js +14686 -0
  8. package/dist/assets/{EditorApp-BAnckbsk.css → EditorApp-BpjZgzk0.css} +846 -0
  9. package/dist/assets/{EmbedViewer-C8fB4n5U.js → EmbedViewer-D7ZGlFjx.js} +3 -3
  10. package/dist/assets/{LandingPageProofDriven-jSz0LaMM.js → LandingPageProofDriven-CnevhTE8.js} +36 -38
  11. package/dist/assets/LegalPage-BPTUmqeg.js +39 -0
  12. package/dist/assets/LegalPage-BRlScr9A.css +91 -0
  13. package/dist/assets/{PricingPage-B83B90zh.js → PricingPage-B0D4goG_.js} +19 -19
  14. package/dist/assets/{PricingPage-BMedqFef.css → PricingPage-BPF6HKyO.css} +25 -0
  15. package/dist/assets/{SettingsPage-DY889pcu.js → SettingsPage-CFF-UgjI.js} +2 -2
  16. package/dist/assets/app-CE3sYcV7.css +3890 -0
  17. package/dist/assets/{app-bEww1ic4.js → app-T0pDcSX4.js} +3382 -1069
  18. package/dist/assets/cli/{render-Cho2uKG_.js → render-C5pcIISc.js} +477 -29
  19. package/dist/assets/{constructionHistoryWorker-HYwzJY4m.js → constructionHistoryWorker-Ba2Hm58b.js} +928 -243
  20. package/dist/assets/{evalWorker-CjQwJSE-.js → evalWorker-vkx310U2.js} +8883 -6040
  21. package/dist/assets/{forgecad_geometry-CH2nvuLA.js → forgecad_geometry-Dgceylq9.js} +43 -1
  22. package/dist/assets/forgecad_geometry_bg-dD4RNQF1.wasm +0 -0
  23. package/dist/assets/{inspectWorker-DeRnMVv1.js → inspectWorker-BuTJDVX6.js} +1179 -273
  24. package/dist/assets/{javascript-70-4uGcz.js → javascript-1kQXfVaz.js} +1 -1
  25. package/dist/assets/{targets-D6PWsv6X.js → jointPose-B_Cgedn9.js} +71 -3
  26. package/dist/assets/landing-proof-driven-DiGqdtWa.js +18 -0
  27. package/dist/assets/{landing-proof-driven-oFYW6mjz.css → landing-proof-driven-ORyigZ6p.css} +13 -7
  28. package/dist/assets/legalContent-ZfFGMmi4.js +251 -0
  29. package/dist/assets/{manifold-rmfAcdwF.js → manifold-BWgsjmAM.js} +1 -1
  30. package/dist/assets/{manifold-uRzgk5O8.js → manifold-D6IFSkhH.js} +2 -2
  31. package/dist/assets/{manifold-CG9Fokx-.js → manifold-rZexZI0G.js} +1 -1
  32. package/dist/assets/{reportWorker-4cW_ZpoS.js → reportWorker-0AGij1Ru.js} +8659 -12771
  33. package/dist/assets/{scalar-sampling-budget-CfDiFvh7.js → scalar-sampling-budget-J5cuzxT1.js} +8050 -6203
  34. package/dist/assets/{scanProxyWorker-Bs2TDgLw.js → scanProxyWorker-Vl4Wxa1y.js} +50 -6
  35. package/dist/assets/{solver-DuJAO8S6.js → solver-BZ9LPTHs.js} +1 -1
  36. package/dist/assets/solver_bg-DAHZJ_rw.wasm +0 -0
  37. package/dist/assets/{vendor-react-Da3A2QmU.js → vendor-react-6j1Kke-Y.js} +6 -5
  38. package/dist/cli/render.html +1 -1
  39. package/dist/docs/index.html +2 -2
  40. package/dist/docs-raw/AI/ai-native-cad.md +50 -0
  41. package/dist/docs-raw/AI/usage.md +5 -12
  42. package/dist/docs-raw/CLI.md +34 -10
  43. package/dist/docs-raw/component-model.md +27 -11
  44. package/dist/docs-raw/generated/assembly.md +374 -187
  45. package/dist/docs-raw/generated/concepts.md +245 -237
  46. package/dist/docs-raw/generated/core.md +283 -6
  47. package/dist/docs-raw/generated/curves.md +274 -361
  48. package/dist/docs-raw/generated/lib.md +9 -19
  49. package/dist/docs-raw/generated/output.md +29 -4
  50. package/dist/docs-raw/generated/runtime-names.md +49 -0
  51. package/dist/docs-raw/generated/sdf.md +31 -0
  52. package/dist/docs-raw/generated/sheet-metal.md +9 -0
  53. package/dist/docs-raw/generated/sketch.md +44 -1
  54. package/dist/docs-raw/generated/viewport.md +11 -3
  55. package/dist/docs-raw/guides/coordinate-system.md +20 -16
  56. package/dist/docs-raw/guides/geometry-conventions.md +2 -2
  57. package/dist/docs-raw/guides/inspection-bundles.md +2 -1
  58. package/dist/docs-raw/guides/joint-design.md +24 -0
  59. package/dist/docs-raw/guides/positioning.md +13 -3
  60. package/dist/docs-raw/legal/privacy.md +63 -0
  61. package/dist/docs-raw/legal/software-license.md +55 -0
  62. package/dist/docs-raw/legal/terms.md +87 -0
  63. package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +1 -1
  64. package/dist/docs-raw/skills/forgecad-blockout-model.md +1 -1
  65. package/dist/docs-raw/skills/forgecad-component-model.md +11 -2
  66. package/dist/docs-raw/skills/forgecad-high-level-spec.md +1 -1
  67. package/dist/docs-raw/skills/forgecad-image-replicator.md +8 -8
  68. package/dist/docs-raw/skills/forgecad-lld.md +1 -1
  69. package/dist/docs-raw/skills/forgecad-make-a-model.md +40 -39
  70. package/dist/docs-raw/skills/forgecad-model-grader.md +2 -2
  71. package/dist/docs-raw/skills/forgecad-prepare-prompt.md +2 -2
  72. package/dist/docs-raw/skills/forgecad-project.md +3 -1
  73. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +1 -1
  74. package/dist/docs-raw/skills/forgecad-render-inspect.md +4 -2
  75. package/dist/docs-raw/skills/forgecad-visual-spec.md +1 -1
  76. package/dist/docs-raw/skills/forgecad.md +4 -3
  77. package/dist/docs-raw/welcome.md +2 -0
  78. package/dist/index.html +40 -12
  79. package/dist/llms.txt +8 -0
  80. package/dist/site.webmanifest +1 -1
  81. package/dist/sitemap.xml +49 -13
  82. package/dist-cli/{check-compiler-U5SOPN7X.js → check-compiler-SYQ2PWOB.js} +1 -2
  83. package/dist-cli/{check-query-propagation-XOKNSSYU.js → check-query-propagation-HIAGV62W.js} +1 -2
  84. package/dist-cli/{chunk-EXWGNL6K.js → chunk-SPZE3DUY.js} +20659 -17930
  85. package/dist-cli/forgecad.js +3568 -1250
  86. package/dist-cli/{forgecad_geometry-GYVNKPIE.js → forgecad_geometry-QOQIIP53.js} +42 -1
  87. package/dist-cli/forgecad_geometry_bg.wasm +0 -0
  88. package/dist-cli/{solver-46FFSK2U.js → solver-OK4HECRH.js} +0 -1
  89. package/dist-cli/solver_bg.wasm +0 -0
  90. package/dist-skill/CONTEXT.md +1192 -725
  91. package/dist-skill/SKILL.md +3 -2
  92. package/dist-skill/docs/API/core/concepts.md +64 -1
  93. package/dist-skill/docs/CLI.md +34 -10
  94. package/dist-skill/docs/generated/assembly.md +339 -213
  95. package/dist-skill/docs/generated/core.md +283 -6
  96. package/dist-skill/docs/generated/curves.md +272 -362
  97. package/dist-skill/docs/generated/lib.md +9 -19
  98. package/dist-skill/docs/generated/output.md +29 -4
  99. package/dist-skill/docs/generated/runtime-names.md +40 -0
  100. package/dist-skill/docs/generated/sdf.md +31 -0
  101. package/dist-skill/docs/generated/sheet-metal.md +9 -0
  102. package/dist-skill/docs/generated/sketch.md +44 -2
  103. package/dist-skill/docs/generated/viewport.md +2 -87
  104. package/dist-skill/docs/guides/coordinate-system.md +20 -16
  105. package/dist-skill/docs/guides/geometry-conventions.md +2 -2
  106. package/dist-skill/docs/guides/inspection-bundles.md +2 -1
  107. package/dist-skill/docs/guides/joint-design.md +24 -0
  108. package/dist-skill/docs/guides/positioning.md +13 -3
  109. package/dist-skill/library/forgecad-component-model/SKILL.md +10 -1
  110. package/dist-skill/library/forgecad-image-replicator/SKILL.md +6 -6
  111. package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.py +166 -0
  112. package/dist-skill/library/forgecad-make-a-model/SKILL.md +39 -38
  113. package/dist-skill/library/forgecad-model-grader/SKILL.md +1 -1
  114. package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +1 -1
  115. package/dist-skill/library/forgecad-project/SKILL.md +2 -0
  116. package/dist-skill/library/forgecad-render-inspect/SKILL.md +3 -1
  117. package/examples/api/assembly-kinematics-foundation.forge.js +65 -0
  118. package/examples/api/assembly-kinematics-four-bar.forge.js +115 -0
  119. package/examples/api/assembly-kinematics-limb.forge.js +116 -0
  120. package/examples/api/connector-frame-rig-chain.forge.js +102 -0
  121. package/examples/api/exact-sheet-shell-assembly.forge.js +0 -2
  122. package/examples/api/exact-surface-studio.forge.js +6 -8
  123. package/examples/api/helix-basics.forge.js +8 -8
  124. package/examples/api/lean-foundations/README.md +12 -0
  125. package/examples/api/lean-foundations/curve-blend-exact.forge.js +22 -0
  126. package/examples/api/lean-foundations/curve-fit-interpolation.forge.js +18 -0
  127. package/examples/api/lean-foundations/curve-helix-canonicalization.forge.js +27 -0
  128. package/examples/api/lean-foundations/curve-route-canonicalization.forge.js +16 -0
  129. package/examples/api/lean-foundations/curve-trim-reverse.forge.js +24 -0
  130. package/examples/api/lean-foundations/exact-curve-arc.forge.js +36 -0
  131. package/examples/api/mixed-edge-finishes-proof.forge.js +8 -11
  132. package/examples/api/route3d-elbow.forge.js +71 -0
  133. package/examples/api/transition-curves.forge.js +44 -15
  134. package/examples/api/variable-sweep-test.forge.js +3 -1
  135. package/examples/api/y-blend-corner-showcase.forge.js +0 -2
  136. package/examples/generative/coral-vase.forge.js +1 -1
  137. package/examples/nurbs-tube.forge.js +1 -1
  138. package/package.json +17 -13
  139. package/dist/assets/EditorApp-lXv53A1m.js +0 -13610
  140. package/dist/assets/app-CsHnaBWt.css +0 -1789
  141. package/dist/assets/forgecad_geometry_bg-C5_E9Oa9.wasm +0 -0
  142. package/dist/assets/solver_bg-CWvv4lnN.wasm +0 -0
  143. package/dist/docs-raw/API/README.md +0 -16
  144. package/dist/docs-raw/API/core/concepts.md +0 -118
  145. package/dist/docs-raw/INDEX.md +0 -138
  146. package/dist/docs-raw/RELEASING.md +0 -87
  147. package/dist/docs-raw/agent-native-api.md +0 -27
  148. package/dist/docs-raw/beta-deployment.md +0 -304
  149. package/dist/docs-raw/beta-operations.md +0 -325
  150. package/dist/docs-raw/blueprint-first.md +0 -145
  151. package/dist/docs-raw/cli-monetization.md +0 -112
  152. package/dist/docs-raw/coding-best-practices.md +0 -120
  153. package/dist/docs-raw/coding.md +0 -340
  154. package/dist/docs-raw/deployment.md +0 -374
  155. package/dist/docs-raw/guides/skill-maintenance.md +0 -161
  156. package/dist/docs-raw/guides/surface-members.md +0 -82
  157. package/dist/docs-raw/harbor-cli.md +0 -854
  158. package/dist/docs-raw/internals/backend-vocabulary.md +0 -35
  159. package/dist/docs-raw/internals/compiler.md +0 -307
  160. package/dist/docs-raw/internals/constraint-solver-quality.md +0 -161
  161. package/dist/docs-raw/internals/constraint-solver.md +0 -176
  162. package/dist/docs-raw/internals/shape-from-slices.md +0 -152
  163. package/dist/docs-raw/internals/sketch-2d-pipeline.md +0 -108
  164. package/dist/docs-raw/platform/admin.md +0 -45
  165. package/dist/docs-raw/platform/architecture.md +0 -82
  166. package/dist/docs-raw/platform/auth.md +0 -139
  167. package/dist/docs-raw/platform/email.md +0 -67
  168. package/dist/docs-raw/platform/google-oauth-setup.md +0 -88
  169. package/dist/docs-raw/platform/observability.md +0 -197
  170. package/dist/docs-raw/platform/projects.md +0 -111
  171. package/dist/docs-raw/platform/sharing.md +0 -90
  172. package/dist/docs-raw/product/README.md +0 -39
  173. package/dist/docs-raw/product/api-as-product-language.md +0 -13
  174. package/dist/docs-raw/product/business-model.md +0 -15
  175. package/dist/docs-raw/product/competitive-positioning.md +0 -17
  176. package/dist/docs-raw/product/creative-manufacturing.md +0 -15
  177. package/dist/docs-raw/product/founder-story.md +0 -11
  178. package/dist/docs-raw/product/manufacturing-workflows.md +0 -15
  179. package/dist/docs-raw/product/onboarding-first-experience.md +0 -256
  180. package/dist/docs-raw/product/product-loop.md +0 -17
  181. package/dist/docs-raw/product/strategic-decisions.md +0 -22
  182. package/dist/docs-raw/product/user-outreach-email-templates.md +0 -161
  183. package/dist/docs-raw/product/user-segments.md +0 -15
  184. package/dist/docs-raw/product/vision.md +0 -26
  185. package/dist/docs-raw/rl-environments.md +0 -350
  186. package/dist/docs-raw/runbook.md +0 -611
  187. package/dist-cli/check-compiler-U5SOPN7X.js.map +0 -1
  188. package/dist-cli/check-query-propagation-XOKNSSYU.js.map +0 -1
  189. package/dist-cli/chunk-EXWGNL6K.js.map +0 -1
  190. package/dist-cli/forgecad.js.map +0 -1
  191. package/dist-cli/forgecad_geometry-GYVNKPIE.js.map +0 -1
  192. package/dist-cli/solver-46FFSK2U.js.map +0 -1
  193. package/dist-skill/SKILL-dev.md +0 -145
  194. package/dist-skill/docs-dev/API/core/concepts.md +0 -118
  195. package/dist-skill/docs-dev/CLI.md +0 -677
  196. package/dist-skill/docs-dev/agent-native-api.md +0 -27
  197. package/dist-skill/docs-dev/blueprint-first.md +0 -145
  198. package/dist-skill/docs-dev/coding-best-practices.md +0 -120
  199. package/dist-skill/docs-dev/coding.md +0 -340
  200. package/dist-skill/docs-dev/component-model.md +0 -164
  201. package/dist-skill/docs-dev/generated/assembly.md +0 -794
  202. package/dist-skill/docs-dev/generated/core.md +0 -2117
  203. package/dist-skill/docs-dev/generated/curves.md +0 -2583
  204. package/dist-skill/docs-dev/generated/lib.md +0 -169
  205. package/dist-skill/docs-dev/generated/output.md +0 -247
  206. package/dist-skill/docs-dev/generated/sdf.md +0 -446
  207. package/dist-skill/docs-dev/generated/sheet-metal.md +0 -504
  208. package/dist-skill/docs-dev/generated/sketch.md +0 -1811
  209. package/dist-skill/docs-dev/generated/viewport.md +0 -585
  210. package/dist-skill/docs-dev/generated/wood.md +0 -108
  211. package/dist-skill/docs-dev/guides/coordinate-system.md +0 -46
  212. package/dist-skill/docs-dev/guides/geometry-conventions.md +0 -52
  213. package/dist-skill/docs-dev/guides/inspection-bundles.md +0 -485
  214. package/dist-skill/docs-dev/guides/joint-design.md +0 -78
  215. package/dist-skill/docs-dev/guides/modeling-recipes.md +0 -78
  216. package/dist-skill/docs-dev/guides/positioning.md +0 -161
  217. package/dist-skill/docs-dev/guides/skill-maintenance.md +0 -161
  218. package/dist-skill/docs-dev/internals/backend-vocabulary.md +0 -35
  219. package/dist-skill/docs-dev/internals/compiler.md +0 -307
  220. package/dist-skill/docs-dev/internals/constraint-solver-quality.md +0 -161
  221. package/dist-skill/docs-dev/internals/constraint-solver.md +0 -176
  222. package/dist-skill/docs-dev/internals/sketch-2d-pipeline.md +0 -108
  223. package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.mjs +0 -289
  224. package/examples/api/bolted-service-cover.forge.js +0 -17
  225. package/examples/api/cable-gland-anchor.forge.js +0 -14
  226. package/examples/api/captured-cartridge-guide.forge.js +0 -14
  227. package/examples/api/captured-linear-slide.forge.js +0 -13
  228. package/examples/api/clevis-pin-joint.forge.js +0 -13
  229. package/examples/api/datum-enclosure.forge.js +0 -16
  230. package/examples/api/hose-barb-port.forge.js +0 -14
  231. package/examples/api/knuckled-hinge-assembly.forge.js +0 -15
  232. package/examples/api/living-hinge-cover.forge.js +0 -14
  233. package/examples/api/pcb-terminal-block.forge.js +0 -22
  234. package/examples/api/pinned-lever-pivot-stack.forge.js +0 -14
  235. package/examples/api/retained-shaft-knob-stack.forge.js +0 -15
  236. package/examples/api/routed-tube-clip.forge.js +0 -15
  237. package/examples/api/seated-bearing-stack.forge.js +0 -30
  238. package/examples/api/snap-latch-cover.forge.js +0 -14
  239. package/examples/api/thumb-screw-clamp.forge.js +0 -15
@@ -182,6 +182,44 @@
182
182
  text-overflow: ellipsis;
183
183
  }
184
184
 
185
+ .fc-view-panel-button-tooltip-target {
186
+ position: relative;
187
+ display: block;
188
+ min-width: 0;
189
+ cursor: not-allowed;
190
+ }
191
+
192
+ .fc-view-panel-button-tooltip-target > .fc-view-panel-btn {
193
+ width: 100%;
194
+ }
195
+
196
+ .fc-view-panel-button-tooltip-target > .fc-view-panel-btn:disabled {
197
+ pointer-events: none;
198
+ }
199
+
200
+ .fc-view-panel-button-tooltip-target:focus-visible {
201
+ border-radius: 4px;
202
+ outline: 2px solid var(--fc-accent);
203
+ outline-offset: 1px;
204
+ }
205
+
206
+ .fc-view-panel-submit-btn.attention {
207
+ border-color: color-mix(in srgb, var(--fc-accent) 72%, #ffffff);
208
+ background: color-mix(in srgb, var(--fc-accent) 72%, #ffffff 12%);
209
+ color: #ffffff;
210
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--fc-accent) 45%, transparent);
211
+ }
212
+
213
+ .fc-view-panel-icon-btn {
214
+ flex: 0 0 24px;
215
+ width: 24px;
216
+ min-width: 24px;
217
+ height: 24px;
218
+ padding: 0;
219
+ font-size: 12px;
220
+ line-height: 1;
221
+ }
222
+
185
223
  .fc-view-panel-field-label {
186
224
  flex: 0 0 auto;
187
225
  color: var(--fc-textDim);
@@ -189,6 +227,47 @@
189
227
  line-height: 1.3;
190
228
  }
191
229
 
230
+ .fc-view-panel-floating-tooltip {
231
+ position: fixed;
232
+ box-sizing: border-box;
233
+ z-index: 2147482000;
234
+ max-width: calc(100vw - 24px);
235
+ padding: 8px 10px;
236
+ border: 1px solid var(--fc-border);
237
+ border-radius: 4px;
238
+ background: var(--fc-bgOverlay);
239
+ box-shadow: 0 12px 28px rgba(0, 0, 0, 0.3);
240
+ color: var(--fc-text);
241
+ font-size: 11px;
242
+ font-weight: 500;
243
+ line-height: 1.35;
244
+ overflow-wrap: break-word;
245
+ pointer-events: none;
246
+ white-space: normal;
247
+ }
248
+
249
+ .fc-view-panel-floating-tooltip::after {
250
+ position: absolute;
251
+ top: 12px;
252
+ width: 8px;
253
+ height: 8px;
254
+ background: var(--fc-bgOverlay);
255
+ content: "";
256
+ transform: rotate(45deg);
257
+ }
258
+
259
+ .fc-view-panel-floating-tooltip--left::after {
260
+ right: -5px;
261
+ border-top: 1px solid var(--fc-border);
262
+ border-right: 1px solid var(--fc-border);
263
+ }
264
+
265
+ .fc-view-panel-floating-tooltip--right::after {
266
+ left: -5px;
267
+ border-bottom: 1px solid var(--fc-border);
268
+ border-left: 1px solid var(--fc-border);
269
+ }
270
+
192
271
  .fc-view-panel-row {
193
272
  display: flex;
194
273
  align-items: center;
@@ -291,6 +370,46 @@
291
370
  min-width: 0;
292
371
  }
293
372
 
373
+ .fc-marker-cell-size-row {
374
+ margin-top: 6px;
375
+ }
376
+
377
+ .fc-marker-note-stack {
378
+ display: flex;
379
+ flex-direction: column;
380
+ gap: 6px;
381
+ margin-top: 6px;
382
+ min-width: 0;
383
+ }
384
+
385
+ .fc-marker-note-row {
386
+ display: grid;
387
+ grid-template-columns: 18px minmax(42px, auto) minmax(0, 1fr) 24px;
388
+ gap: 6px;
389
+ align-items: center;
390
+ min-width: 0;
391
+ }
392
+
393
+ .fc-marker-note-swatch {
394
+ width: 18px;
395
+ height: 18px;
396
+ min-width: 18px;
397
+ padding: 0;
398
+ border: 1px solid rgba(255, 255, 255, 0.32);
399
+ border-radius: 4px;
400
+ cursor: pointer;
401
+ }
402
+
403
+ .fc-marker-note-color {
404
+ min-width: 0;
405
+ color: var(--fc-textDim);
406
+ font-size: 11px;
407
+ line-height: 1.2;
408
+ overflow: hidden;
409
+ text-overflow: ellipsis;
410
+ white-space: nowrap;
411
+ }
412
+
294
413
  .fc-view-panel-color-grid {
295
414
  display: grid;
296
415
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -832,6 +951,26 @@
832
951
  border-color: var(--fc-border);
833
952
  }
834
953
 
954
+ :root[data-fc-hud-theme="shield"] .fc-mobile {
955
+ background:
956
+ linear-gradient(rgba(54, 232, 255, 0.028) 1px, transparent 1px), linear-gradient(90deg, rgba(54, 232, 255, 0.028) 1px, transparent 1px),
957
+ radial-gradient(circle at 50% 32%, rgba(54, 232, 255, 0.09), transparent 40%), var(--fc-viewportBg, var(--fc-bg));
958
+ background-size:
959
+ 30px 30px,
960
+ 30px 30px,
961
+ cover,
962
+ cover;
963
+ }
964
+
965
+ :root[data-fc-hud-theme="shield"] .fc-mobile-fab,
966
+ :root[data-fc-hud-theme="shield"] .fc-mobile-objinfo-sheet {
967
+ border-color: rgba(54, 232, 255, 0.26);
968
+ background: color-mix(in srgb, var(--fc-bgPanel) 82%, transparent);
969
+ box-shadow:
970
+ 0 0 22px rgba(54, 232, 255, 0.12),
971
+ inset 0 1px 0 rgba(217, 251, 255, 0.05);
972
+ }
973
+
835
974
  /* ════════════════════════════════════
836
975
  STATUS PILL — floating top-center
837
976
  ════════════════════════════════════ */
@@ -1300,6 +1439,15 @@
1300
1439
  outline: none;
1301
1440
  }
1302
1441
 
1442
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor,
1443
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor:focus {
1444
+ background: transparent;
1445
+ border: none;
1446
+ color: transparent;
1447
+ box-shadow: none;
1448
+ caret-color: var(--fc-text);
1449
+ }
1450
+
1303
1451
  /* ── highlight.js token colours — dark themes (default) ── */
1304
1452
  .fc-mobile-editor-highlight .hljs-keyword {
1305
1453
  color: #c586c0;
@@ -1348,6 +1496,39 @@
1348
1496
  color: #d4d4d4;
1349
1497
  }
1350
1498
 
1499
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-keyword {
1500
+ color: #36e8ff;
1501
+ }
1502
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-string {
1503
+ color: #77ffc0;
1504
+ }
1505
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-number {
1506
+ color: #ff9d36;
1507
+ }
1508
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-comment {
1509
+ color: #4e7078;
1510
+ font-style: italic;
1511
+ }
1512
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-function,
1513
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-title {
1514
+ color: #ffe293;
1515
+ }
1516
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-params,
1517
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-built_in,
1518
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-literal,
1519
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-attr,
1520
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-property,
1521
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-variable {
1522
+ color: #8eefff;
1523
+ }
1524
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-regexp {
1525
+ color: #ff5568;
1526
+ }
1527
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-operator,
1528
+ :root[data-fc-hud-theme="shield"] .fc-mobile-editor-highlight .hljs-punctuation {
1529
+ color: #d9fbff;
1530
+ }
1531
+
1351
1532
  /* ── highlight.js token colours — light themes ── */
1352
1533
  :root[data-fc-theme="light"] .fc-mobile-editor-highlight .hljs-keyword {
1353
1534
  color: #af00db;
@@ -2382,6 +2563,35 @@
2382
2563
  margin-bottom: 8px;
2383
2564
  }
2384
2565
 
2566
+ .fc-mobile-joints-section-header {
2567
+ display: flex;
2568
+ align-items: center;
2569
+ justify-content: space-between;
2570
+ gap: 8px;
2571
+ margin-bottom: 8px;
2572
+ }
2573
+
2574
+ .fc-mobile-joints-section-header .fc-mobile-joints-label {
2575
+ margin-bottom: 0;
2576
+ }
2577
+
2578
+ .fc-mobile-joints-reset {
2579
+ height: 30px;
2580
+ padding: 0 10px;
2581
+ background: var(--fc-bgCard, var(--fc-bgInput, var(--fc-bg)));
2582
+ border: 1px solid var(--fc-border);
2583
+ border-radius: 8px;
2584
+ color: var(--fc-text);
2585
+ font-size: 12px;
2586
+ font-family: inherit;
2587
+ cursor: pointer;
2588
+ }
2589
+
2590
+ .fc-mobile-joints-reset:disabled {
2591
+ opacity: 0.4;
2592
+ cursor: default;
2593
+ }
2594
+
2385
2595
  .fc-mobile-joints-row {
2386
2596
  display: flex;
2387
2597
  align-items: center;
@@ -3533,3 +3743,639 @@
3533
3743
  font-family: "SF Mono", "Menlo", monospace;
3534
3744
  color: var(--fc-accent);
3535
3745
  }
3746
+
3747
+ /* ════════════════════════════════════
3748
+ SHIELD mobile mode — tactical glass without layout changes
3749
+ ════════════════════════════════════ */
3750
+
3751
+ :root[data-fc-hud-theme="shield"] .fc-mobile {
3752
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
3753
+ }
3754
+
3755
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar,
3756
+ :root[data-fc-hud-theme="shield"] .fc-m-param-chip,
3757
+ :root[data-fc-hud-theme="shield"] .fc-m-params-pill,
3758
+ :root[data-fc-hud-theme="shield"] .fc-m-status-pill,
3759
+ :root[data-fc-hud-theme="shield"] .fc-m-code-drawer,
3760
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-drawer,
3761
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet,
3762
+ :root[data-fc-hud-theme="shield"] .fc-m-choice-sheet,
3763
+ :root[data-fc-hud-theme="shield"] .fc-m-action-sheet,
3764
+ :root[data-fc-hud-theme="shield"] .fc-m-error-sheet,
3765
+ :root[data-fc-hud-theme="shield"] .fc-m-type-card,
3766
+ :root[data-fc-hud-theme="shield"] .fc-m-scrub-zone,
3767
+ :root[data-fc-hud-theme="shield"] .fc-mobile-objinfo-sheet,
3768
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-sheet,
3769
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-sheet,
3770
+ :root[data-fc-hud-theme="shield"] .fc-mobile-export-sheet {
3771
+ border-color: rgba(54, 232, 255, 0.3);
3772
+ background:
3773
+ linear-gradient(180deg, rgba(54, 232, 255, 0.075), rgba(1, 8, 12, 0.68)), color-mix(in srgb, var(--fc-bgPanel) 88%, transparent);
3774
+ box-shadow:
3775
+ 0 0 30px rgba(54, 232, 255, 0.12),
3776
+ inset 0 1px 0 rgba(217, 251, 255, 0.055);
3777
+ }
3778
+
3779
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar {
3780
+ border-radius: 8px;
3781
+ }
3782
+
3783
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar-search-btn,
3784
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar-code-btn,
3785
+ :root[data-fc-hud-theme="shield"] .fc-m-code-drawer-btn,
3786
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-btn,
3787
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-btn,
3788
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-choice-btn,
3789
+ :root[data-fc-hud-theme="shield"] .fc-m-choice-done,
3790
+ :root[data-fc-hud-theme="shield"] .fc-m-action-sheet-btn,
3791
+ :root[data-fc-hud-theme="shield"] .fc-m-error-goto-btn,
3792
+ :root[data-fc-hud-theme="shield"] .fc-m-scrub-step-btn,
3793
+ :root[data-fc-hud-theme="shield"] .fc-m-scrub-type-btn,
3794
+ :root[data-fc-hud-theme="shield"] .fc-m-scrub-done-btn,
3795
+ :root[data-fc-hud-theme="shield"] .fc-m-type-cancel,
3796
+ :root[data-fc-hud-theme="shield"] .fc-m-type-set,
3797
+ :root[data-fc-hud-theme="shield"] .fc-m-share-card,
3798
+ :root[data-fc-hud-theme="shield"] .fc-m-share-btn,
3799
+ :root[data-fc-hud-theme="shield"] .fc-m-filepicker-new-btn,
3800
+ :root[data-fc-hud-theme="shield"] .fc-m-filepicker-new-confirm,
3801
+ :root[data-fc-hud-theme="shield"] .fc-m-filepicker-cancel-btn,
3802
+ :root[data-fc-hud-theme="shield"] .fc-mobile-objinfo-btn,
3803
+ :root[data-fc-hud-theme="shield"] .fc-mobile-export-item {
3804
+ border-color: rgba(54, 232, 255, 0.24);
3805
+ background: rgba(1, 8, 12, 0.72);
3806
+ color: var(--fc-textMuted);
3807
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.04);
3808
+ }
3809
+
3810
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar-code-btn--active,
3811
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-btn--primary,
3812
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-btn--add,
3813
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-btn--done,
3814
+ :root[data-fc-hud-theme="shield"] .fc-m-share-btn--primary,
3815
+ :root[data-fc-hud-theme="shield"] .fc-m-type-set,
3816
+ :root[data-fc-hud-theme="shield"] .fc-m-scrub-done-btn,
3817
+ :root[data-fc-hud-theme="shield"] .fc-m-param-chip--active {
3818
+ border-color: rgba(54, 232, 255, 0.62);
3819
+ background: linear-gradient(180deg, rgba(54, 232, 255, 0.22), rgba(54, 232, 255, 0.09));
3820
+ color: var(--fc-text);
3821
+ box-shadow:
3822
+ inset 0 -2px 0 var(--fc-accent),
3823
+ 0 0 20px rgba(54, 232, 255, 0.18);
3824
+ }
3825
+
3826
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar-run-btn {
3827
+ background: linear-gradient(180deg, var(--fc-accent), #138ca4);
3828
+ border: 1px solid rgba(217, 251, 255, 0.3);
3829
+ box-shadow:
3830
+ 0 0 28px rgba(54, 232, 255, 0.35),
3831
+ inset 0 1px 0 rgba(255, 255, 255, 0.24);
3832
+ }
3833
+
3834
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar-run-btn svg {
3835
+ fill: var(--fc-accentText);
3836
+ }
3837
+
3838
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar-search-icon,
3839
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar-code-btn svg,
3840
+ :root[data-fc-hud-theme="shield"] .fc-m-params-pill-icon {
3841
+ stroke: var(--fc-accent);
3842
+ filter: drop-shadow(0 0 6px rgba(54, 232, 255, 0.35));
3843
+ }
3844
+
3845
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar-project,
3846
+ :root[data-fc-hud-theme="shield"] .fc-m-param-chip-name,
3847
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-row-range,
3848
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-number-unit,
3849
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-scrub-name {
3850
+ color: var(--fc-textDim);
3851
+ }
3852
+
3853
+ :root[data-fc-hud-theme="shield"] .fc-m-cmdbar-filename,
3854
+ :root[data-fc-hud-theme="shield"] .fc-m-param-chip-val,
3855
+ :root[data-fc-hud-theme="shield"] .fc-m-params-pill,
3856
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-row-value,
3857
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-scrub-value {
3858
+ color: var(--fc-text);
3859
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.16);
3860
+ }
3861
+
3862
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon,
3863
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-icon,
3864
+ :root[data-fc-hud-theme="shield"] .fc-mobile-export-icon {
3865
+ position: relative;
3866
+ display: inline-grid;
3867
+ flex: 0 0 28px;
3868
+ width: 28px;
3869
+ height: 28px;
3870
+ place-items: center;
3871
+ color: transparent;
3872
+ font-size: 0;
3873
+ line-height: 1;
3874
+ }
3875
+
3876
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon::before,
3877
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon::after,
3878
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-icon::before,
3879
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-icon::after,
3880
+ :root[data-fc-hud-theme="shield"] .fc-mobile-export-icon::before,
3881
+ :root[data-fc-hud-theme="shield"] .fc-mobile-export-icon::after {
3882
+ position: absolute;
3883
+ pointer-events: none;
3884
+ content: "";
3885
+ }
3886
+
3887
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-icon--folder::before,
3888
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="open-files"]::before {
3889
+ bottom: 7px;
3890
+ left: 4px;
3891
+ width: 20px;
3892
+ height: 13px;
3893
+ border: 1px solid rgba(255, 157, 54, 0.78);
3894
+ background: linear-gradient(180deg, rgba(255, 157, 54, 0.24), rgba(54, 232, 255, 0.06));
3895
+ box-shadow: 0 0 14px rgba(255, 157, 54, 0.2);
3896
+ clip-path: polygon(0 4px, 34% 4px, 44% 0, 100% 0, 100% 100%, 0 100%);
3897
+ }
3898
+
3899
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-icon--file::before {
3900
+ top: 5px;
3901
+ left: 7px;
3902
+ width: 14px;
3903
+ height: 18px;
3904
+ border: 1px solid rgba(54, 232, 255, 0.72);
3905
+ background: linear-gradient(180deg, rgba(54, 232, 255, 0.12), rgba(1, 8, 12, 0.18));
3906
+ clip-path: polygon(0 0, 68% 0, 100% 26%, 100% 100%, 0 100%);
3907
+ }
3908
+
3909
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-icon--file::after {
3910
+ top: 5px;
3911
+ right: 7px;
3912
+ width: 5px;
3913
+ height: 5px;
3914
+ border-bottom: 1px solid rgba(54, 232, 255, 0.52);
3915
+ border-left: 1px solid rgba(54, 232, 255, 0.52);
3916
+ }
3917
+
3918
+ :root[data-fc-hud-theme="shield"] .fc-mobile-export-icon::before,
3919
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="export"]::before,
3920
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon^="export-"]::before {
3921
+ inset: 6px;
3922
+ border: 1px solid rgba(255, 157, 54, 0.82);
3923
+ background: linear-gradient(135deg, transparent 48%, rgba(255, 157, 54, 0.42) 49% 56%, transparent 57%), rgba(255, 157, 54, 0.12);
3924
+ box-shadow: 0 0 14px rgba(255, 157, 54, 0.24);
3925
+ transform: rotate(45deg) skew(-8deg, -8deg);
3926
+ }
3927
+
3928
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="ai-skill"]::before,
3929
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="ai-usage-guide"]::before {
3930
+ inset: 7px;
3931
+ border: 1px solid rgba(54, 232, 255, 0.78);
3932
+ border-radius: 50%;
3933
+ background:
3934
+ linear-gradient(90deg, transparent 45%, var(--fc-accent) 46% 54%, transparent 55%),
3935
+ linear-gradient(180deg, transparent 45%, var(--fc-accent) 46% 54%, transparent 55%);
3936
+ box-shadow:
3937
+ 0 0 14px rgba(54, 232, 255, 0.32),
3938
+ inset 0 0 10px rgba(54, 232, 255, 0.12);
3939
+ }
3940
+
3941
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="ai-skill"]::after,
3942
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="ai-usage-guide"]::after {
3943
+ top: 2px;
3944
+ left: 50%;
3945
+ width: 6px;
3946
+ height: 6px;
3947
+ border-top: 1px solid var(--fc-warning);
3948
+ border-right: 1px solid var(--fc-warning);
3949
+ transform: translateX(-50%) rotate(-45deg);
3950
+ }
3951
+
3952
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="skill-download"]::before {
3953
+ top: 4px;
3954
+ left: 12px;
3955
+ width: 4px;
3956
+ height: 16px;
3957
+ background: linear-gradient(180deg, var(--fc-accent), var(--fc-warning));
3958
+ box-shadow: 0 0 12px rgba(54, 232, 255, 0.3);
3959
+ }
3960
+
3961
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="skill-download"]::after {
3962
+ right: 7px;
3963
+ bottom: 4px;
3964
+ left: 7px;
3965
+ height: 9px;
3966
+ border-right: 1px solid var(--fc-warning);
3967
+ border-bottom: 1px solid var(--fc-warning);
3968
+ border-left: 1px solid var(--fc-warning);
3969
+ clip-path: polygon(0 0, 50% 100%, 100% 0, 100% 100%, 0 100%);
3970
+ }
3971
+
3972
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="share"]::before,
3973
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="open-gist"]::before,
3974
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="open-url"]::before {
3975
+ top: 7px;
3976
+ left: 4px;
3977
+ width: 12px;
3978
+ height: 8px;
3979
+ border: 1px solid var(--fc-accent);
3980
+ border-radius: 8px;
3981
+ box-shadow: 0 0 10px rgba(54, 232, 255, 0.28);
3982
+ transform: rotate(-35deg);
3983
+ }
3984
+
3985
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="share"]::after,
3986
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="open-gist"]::after,
3987
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="open-url"]::after {
3988
+ right: 4px;
3989
+ bottom: 7px;
3990
+ width: 12px;
3991
+ height: 8px;
3992
+ border: 1px solid var(--fc-accent);
3993
+ border-radius: 8px;
3994
+ box-shadow: 0 0 10px rgba(54, 232, 255, 0.28);
3995
+ transform: rotate(-35deg);
3996
+ }
3997
+
3998
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="fit-viewport"]::before {
3999
+ inset: 5px;
4000
+ border: 1px solid var(--fc-accent);
4001
+ clip-path: polygon(
4002
+ 0 0,
4003
+ 38% 0,
4004
+ 38% 2px,
4005
+ 2px 2px,
4006
+ 2px 38%,
4007
+ 0 38%,
4008
+ 0 0,
4009
+ 100% 0,
4010
+ 100% 38%,
4011
+ calc(100% - 2px) 38%,
4012
+ calc(100% - 2px) 2px,
4013
+ 62% 2px,
4014
+ 62% 0,
4015
+ 100% 0,
4016
+ 100% 100%,
4017
+ 62% 100%,
4018
+ 62% calc(100% - 2px),
4019
+ calc(100% - 2px) calc(100% - 2px),
4020
+ calc(100% - 2px) 62%,
4021
+ 100% 62%,
4022
+ 100% 100%,
4023
+ 0 100%,
4024
+ 0 62%,
4025
+ 2px 62%,
4026
+ 2px calc(100% - 2px),
4027
+ 38% calc(100% - 2px),
4028
+ 38% 100%,
4029
+ 0 100%
4030
+ );
4031
+ box-shadow: 0 0 12px rgba(54, 232, 255, 0.26);
4032
+ }
4033
+
4034
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="iso-view"]::before,
4035
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="theme"]::before {
4036
+ inset: 6px;
4037
+ border: 1px solid rgba(255, 157, 54, 0.82);
4038
+ background: linear-gradient(135deg, rgba(54, 232, 255, 0.18), rgba(255, 157, 54, 0.26));
4039
+ box-shadow: 0 0 14px rgba(255, 157, 54, 0.22);
4040
+ transform: rotate(45deg);
4041
+ }
4042
+
4043
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon^="theme-"]::before {
4044
+ inset: 6px;
4045
+ border: 1px solid var(--fc-accent);
4046
+ border-radius: 50%;
4047
+ background: conic-gradient(from 90deg, var(--fc-accent), var(--fc-warning), rgba(217, 251, 255, 0.9), var(--fc-accent));
4048
+ box-shadow: 0 0 12px rgba(54, 232, 255, 0.24);
4049
+ }
4050
+
4051
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="copy-file-path"]::before {
4052
+ inset: 6px 8px;
4053
+ border: 1px solid var(--fc-accent);
4054
+ border-radius: 3px;
4055
+ box-shadow: 0 0 10px rgba(54, 232, 255, 0.24);
4056
+ }
4057
+
4058
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="toggle-xyz-axes"]::before {
4059
+ color: var(--fc-accent);
4060
+ font-size: 11px;
4061
+ font-weight: 800;
4062
+ content: "XYZ";
4063
+ text-shadow: 0 0 10px rgba(54, 232, 255, 0.34);
4064
+ }
4065
+
4066
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="toggle-performance-info"]::before {
4067
+ inset: 6px;
4068
+ border: 2px dotted var(--fc-accent);
4069
+ border-radius: 50%;
4070
+ box-shadow: 0 0 12px rgba(54, 232, 255, 0.22);
4071
+ }
4072
+
4073
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="open-joints"]::before {
4074
+ top: 5px;
4075
+ left: 5px;
4076
+ width: 8px;
4077
+ height: 8px;
4078
+ border: 1px solid var(--fc-accent);
4079
+ border-radius: 50%;
4080
+ box-shadow:
4081
+ 12px 12px 0 -1px rgba(1, 8, 12, 0.92),
4082
+ 12px 12px 0 0 var(--fc-accent),
4083
+ 0 0 12px rgba(54, 232, 255, 0.24);
4084
+ }
4085
+
4086
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="open-joints"]::after {
4087
+ top: 13px;
4088
+ left: 12px;
4089
+ width: 14px;
4090
+ height: 1px;
4091
+ background: var(--fc-accent);
4092
+ transform: rotate(45deg);
4093
+ }
4094
+
4095
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="show-all-objects"]::before {
4096
+ top: 8px;
4097
+ left: 4px;
4098
+ width: 20px;
4099
+ height: 12px;
4100
+ border: 1px solid var(--fc-accent);
4101
+ border-radius: 50%;
4102
+ box-shadow: 0 0 12px rgba(54, 232, 255, 0.22);
4103
+ }
4104
+
4105
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="show-all-objects"]::after {
4106
+ inset: 11px;
4107
+ border-radius: 50%;
4108
+ background: var(--fc-accent);
4109
+ box-shadow: 0 0 8px rgba(54, 232, 255, 0.48);
4110
+ }
4111
+
4112
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="logout"]::before {
4113
+ inset: 5px 8px;
4114
+ border: 1px solid var(--fc-warning);
4115
+ background: rgba(255, 157, 54, 0.1);
4116
+ }
4117
+
4118
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon="logout"]::after {
4119
+ top: 13px;
4120
+ right: 3px;
4121
+ width: 12px;
4122
+ height: 1px;
4123
+ background: var(--fc-warning);
4124
+ box-shadow: 0 0 10px rgba(255, 157, 54, 0.32);
4125
+ }
4126
+
4127
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon^="hide-tag"]::before,
4128
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon^="show-only-tag"]::before,
4129
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon^="focus-tag"]::before,
4130
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon[data-command-icon$="-objects-by-tag"]::before {
4131
+ color: var(--fc-warning);
4132
+ font-size: 16px;
4133
+ font-weight: 800;
4134
+ content: "#";
4135
+ text-shadow: 0 0 10px rgba(255, 157, 54, 0.3);
4136
+ }
4137
+
4138
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item-icon::before {
4139
+ inset: 8px;
4140
+ border: 1px solid rgba(54, 232, 255, 0.66);
4141
+ background: rgba(54, 232, 255, 0.08);
4142
+ box-shadow: 0 0 10px rgba(54, 232, 255, 0.18);
4143
+ }
4144
+
4145
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-overlay,
4146
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-overlay,
4147
+ :root[data-fc-hud-theme="shield"] .fc-m-code-drawer-backdrop,
4148
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-backdrop,
4149
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-backdrop,
4150
+ :root[data-fc-hud-theme="shield"] .fc-m-choice-overlay,
4151
+ :root[data-fc-hud-theme="shield"] .fc-m-action-sheet-overlay,
4152
+ :root[data-fc-hud-theme="shield"] .fc-m-error-overlay,
4153
+ :root[data-fc-hud-theme="shield"] .fc-m-type-overlay,
4154
+ :root[data-fc-hud-theme="shield"] .fc-mobile-objinfo-overlay,
4155
+ :root[data-fc-hud-theme="shield"] .fc-m-scrub-backdrop {
4156
+ background: repeating-linear-gradient(180deg, rgba(217, 251, 255, 0.025) 0 1px, transparent 1px 5px), rgba(0, 9, 13, 0.7);
4157
+ }
4158
+
4159
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-header,
4160
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-header,
4161
+ :root[data-fc-hud-theme="shield"] .fc-m-code-drawer-titlebar,
4162
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-titlebar,
4163
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-header,
4164
+ :root[data-fc-hud-theme="shield"] .fc-m-choice-header,
4165
+ :root[data-fc-hud-theme="shield"] .fc-m-action-sheet-title,
4166
+ :root[data-fc-hud-theme="shield"] .fc-m-error-titlebar {
4167
+ border-color: rgba(54, 232, 255, 0.2);
4168
+ background: linear-gradient(90deg, rgba(54, 232, 255, 0.08), transparent);
4169
+ }
4170
+
4171
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-search,
4172
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-search,
4173
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-number-input,
4174
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-select,
4175
+ :root[data-fc-hud-theme="shield"] .fc-m-share-url,
4176
+ :root[data-fc-hud-theme="shield"] .fc-m-filepicker-new-input,
4177
+ :root[data-fc-hud-theme="shield"] .fc-m-type-input {
4178
+ border-color: rgba(54, 232, 255, 0.28);
4179
+ background: rgba(1, 8, 12, 0.74);
4180
+ color: var(--fc-text);
4181
+ box-shadow: inset 0 1px 0 rgba(217, 251, 255, 0.035);
4182
+ }
4183
+
4184
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item,
4185
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-item,
4186
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-row,
4187
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-row,
4188
+ :root[data-fc-hud-theme="shield"] .fc-m-action-sheet-btn {
4189
+ border-bottom-color: rgba(54, 232, 255, 0.06);
4190
+ }
4191
+
4192
+ :root[data-fc-hud-theme="shield"] .fc-mobile-cmdpal-item:active,
4193
+ :root[data-fc-hud-theme="shield"] .fc-mobile-filepicker-item:active,
4194
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-row:active,
4195
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-row--selected,
4196
+ :root[data-fc-hud-theme="shield"] .fc-m-action-sheet-btn:active,
4197
+ :root[data-fc-hud-theme="shield"] .fc-m-share-card:active {
4198
+ background: linear-gradient(90deg, rgba(54, 232, 255, 0.18), rgba(54, 232, 255, 0.06));
4199
+ }
4200
+
4201
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-group-header {
4202
+ letter-spacing: 0;
4203
+ }
4204
+
4205
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-states,
4206
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-slider-wrap,
4207
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-scrub,
4208
+ :root[data-fc-hud-theme="shield"] .fc-m-error-ctx,
4209
+ :root[data-fc-hud-theme="shield"] .fc-mobile-joints-section {
4210
+ border-color: rgba(54, 232, 255, 0.22);
4211
+ background: linear-gradient(135deg, rgba(54, 232, 255, 0.07), rgba(1, 8, 12, 0.68));
4212
+ }
4213
+
4214
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-slider,
4215
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-scrub-slider {
4216
+ background: linear-gradient(90deg, var(--fc-accent), rgba(255, 157, 54, 0.75));
4217
+ }
4218
+
4219
+ :root[data-fc-hud-theme="shield"] .fc-m-explorer-slider::-webkit-slider-thumb,
4220
+ :root[data-fc-hud-theme="shield"] .fc-m-listsheet-scrub-slider::-webkit-slider-thumb {
4221
+ border-color: rgba(1, 8, 12, 0.92);
4222
+ background: var(--fc-warning);
4223
+ box-shadow:
4224
+ 0 0 16px rgba(255, 157, 54, 0.45),
4225
+ 0 0 28px rgba(54, 232, 255, 0.18);
4226
+ }
4227
+
4228
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-keyword {
4229
+ color: #008aa6;
4230
+ }
4231
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-string {
4232
+ color: #1f7a5e;
4233
+ }
4234
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-number {
4235
+ color: #c06b16;
4236
+ }
4237
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-comment {
4238
+ color: #687a80;
4239
+ font-style: italic;
4240
+ }
4241
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-function,
4242
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-title {
4243
+ color: #c06b16;
4244
+ }
4245
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-params,
4246
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-built_in,
4247
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-literal,
4248
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-attr,
4249
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-property,
4250
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-variable {
4251
+ color: #126f80;
4252
+ }
4253
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-regexp {
4254
+ color: #d9384f;
4255
+ }
4256
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-operator,
4257
+ :root[data-fc-theme="shield-light"] .fc-mobile-editor-highlight .hljs-punctuation {
4258
+ color: #071518;
4259
+ }
4260
+
4261
+ :root[data-fc-theme="shield-light"] .fc-m-cmdbar,
4262
+ :root[data-fc-theme="shield-light"] .fc-m-param-chip,
4263
+ :root[data-fc-theme="shield-light"] .fc-m-params-pill,
4264
+ :root[data-fc-theme="shield-light"] .fc-m-status-pill,
4265
+ :root[data-fc-theme="shield-light"] .fc-m-code-drawer,
4266
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-drawer,
4267
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet,
4268
+ :root[data-fc-theme="shield-light"] .fc-m-choice-sheet,
4269
+ :root[data-fc-theme="shield-light"] .fc-m-action-sheet,
4270
+ :root[data-fc-theme="shield-light"] .fc-m-error-sheet,
4271
+ :root[data-fc-theme="shield-light"] .fc-m-type-card,
4272
+ :root[data-fc-theme="shield-light"] .fc-m-scrub-zone,
4273
+ :root[data-fc-theme="shield-light"] .fc-mobile-objinfo-sheet,
4274
+ :root[data-fc-theme="shield-light"] .fc-mobile-cmdpal-sheet,
4275
+ :root[data-fc-theme="shield-light"] .fc-mobile-filepicker-sheet,
4276
+ :root[data-fc-theme="shield-light"] .fc-mobile-export-sheet {
4277
+ border-color: rgba(0, 138, 166, 0.34);
4278
+ background:
4279
+ linear-gradient(180deg, rgba(0, 138, 166, 0.12), rgba(219, 227, 224, 0.72)), color-mix(in srgb, var(--fc-bgPanel) 88%, transparent);
4280
+ box-shadow:
4281
+ 0 0 30px rgba(0, 138, 166, 0.12),
4282
+ inset 0 1px 0 rgba(255, 255, 255, 0.72);
4283
+ }
4284
+
4285
+ :root[data-fc-theme="shield-light"] .fc-m-cmdbar-search-btn,
4286
+ :root[data-fc-theme="shield-light"] .fc-m-cmdbar-code-btn,
4287
+ :root[data-fc-theme="shield-light"] .fc-m-code-drawer-btn,
4288
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-btn,
4289
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet-btn,
4290
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet-choice-btn,
4291
+ :root[data-fc-theme="shield-light"] .fc-m-choice-done,
4292
+ :root[data-fc-theme="shield-light"] .fc-m-action-sheet-btn,
4293
+ :root[data-fc-theme="shield-light"] .fc-m-error-goto-btn,
4294
+ :root[data-fc-theme="shield-light"] .fc-m-scrub-step-btn,
4295
+ :root[data-fc-theme="shield-light"] .fc-m-scrub-type-btn,
4296
+ :root[data-fc-theme="shield-light"] .fc-m-scrub-done-btn,
4297
+ :root[data-fc-theme="shield-light"] .fc-m-type-cancel,
4298
+ :root[data-fc-theme="shield-light"] .fc-m-type-set,
4299
+ :root[data-fc-theme="shield-light"] .fc-m-share-card,
4300
+ :root[data-fc-theme="shield-light"] .fc-m-share-btn,
4301
+ :root[data-fc-theme="shield-light"] .fc-m-filepicker-new-btn,
4302
+ :root[data-fc-theme="shield-light"] .fc-m-filepicker-new-confirm,
4303
+ :root[data-fc-theme="shield-light"] .fc-m-filepicker-cancel-btn,
4304
+ :root[data-fc-theme="shield-light"] .fc-mobile-objinfo-btn,
4305
+ :root[data-fc-theme="shield-light"] .fc-mobile-export-item {
4306
+ border-color: rgba(0, 138, 166, 0.26);
4307
+ background: rgba(255, 255, 255, 0.64);
4308
+ color: var(--fc-textMuted);
4309
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.66);
4310
+ }
4311
+
4312
+ :root[data-fc-theme="shield-light"] .fc-m-cmdbar-code-btn--active,
4313
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-btn--primary,
4314
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet-btn--add,
4315
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet-btn--done,
4316
+ :root[data-fc-theme="shield-light"] .fc-m-share-btn--primary,
4317
+ :root[data-fc-theme="shield-light"] .fc-m-type-set,
4318
+ :root[data-fc-theme="shield-light"] .fc-m-scrub-done-btn,
4319
+ :root[data-fc-theme="shield-light"] .fc-m-param-chip--active {
4320
+ border-color: rgba(0, 138, 166, 0.62);
4321
+ background: linear-gradient(180deg, rgba(0, 138, 166, 0.22), rgba(0, 138, 166, 0.09));
4322
+ color: var(--fc-text);
4323
+ box-shadow:
4324
+ inset 0 -2px 0 var(--fc-accent),
4325
+ 0 0 20px rgba(0, 138, 166, 0.18);
4326
+ }
4327
+
4328
+ :root[data-fc-theme="shield-light"] .fc-mobile-cmdpal-overlay,
4329
+ :root[data-fc-theme="shield-light"] .fc-mobile-filepicker-overlay,
4330
+ :root[data-fc-theme="shield-light"] .fc-m-code-drawer-backdrop,
4331
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-backdrop,
4332
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet-backdrop,
4333
+ :root[data-fc-theme="shield-light"] .fc-m-choice-overlay,
4334
+ :root[data-fc-theme="shield-light"] .fc-m-action-sheet-overlay,
4335
+ :root[data-fc-theme="shield-light"] .fc-m-error-overlay,
4336
+ :root[data-fc-theme="shield-light"] .fc-m-type-overlay,
4337
+ :root[data-fc-theme="shield-light"] .fc-mobile-objinfo-overlay,
4338
+ :root[data-fc-theme="shield-light"] .fc-m-scrub-backdrop {
4339
+ background: repeating-linear-gradient(180deg, rgba(0, 138, 166, 0.035) 0 1px, transparent 1px 5px), rgba(178, 190, 188, 0.72);
4340
+ }
4341
+
4342
+ :root[data-fc-theme="shield-light"] .fc-mobile-cmdpal-search,
4343
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-search,
4344
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-number-input,
4345
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-select,
4346
+ :root[data-fc-theme="shield-light"] .fc-m-share-url,
4347
+ :root[data-fc-theme="shield-light"] .fc-m-filepicker-new-input,
4348
+ :root[data-fc-theme="shield-light"] .fc-m-type-input {
4349
+ border-color: rgba(0, 138, 166, 0.32);
4350
+ background: rgba(255, 255, 255, 0.72);
4351
+ color: var(--fc-text);
4352
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.68);
4353
+ }
4354
+
4355
+ :root[data-fc-theme="shield-light"] .fc-mobile-cmdpal-item:active,
4356
+ :root[data-fc-theme="shield-light"] .fc-mobile-filepicker-item:active,
4357
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-row:active,
4358
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet-row--selected,
4359
+ :root[data-fc-theme="shield-light"] .fc-m-action-sheet-btn:active,
4360
+ :root[data-fc-theme="shield-light"] .fc-m-share-card:active {
4361
+ background: linear-gradient(90deg, rgba(0, 138, 166, 0.18), rgba(0, 138, 166, 0.06));
4362
+ }
4363
+
4364
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-states,
4365
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-slider-wrap,
4366
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet-scrub,
4367
+ :root[data-fc-theme="shield-light"] .fc-m-error-ctx,
4368
+ :root[data-fc-theme="shield-light"] .fc-mobile-joints-section {
4369
+ border-color: rgba(0, 138, 166, 0.24);
4370
+ background: linear-gradient(135deg, rgba(0, 138, 166, 0.1), rgba(255, 255, 255, 0.7));
4371
+ }
4372
+
4373
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-slider,
4374
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet-scrub-slider {
4375
+ background: linear-gradient(90deg, var(--fc-accent), rgba(192, 107, 22, 0.75));
4376
+ }
4377
+
4378
+ :root[data-fc-theme="shield-light"] .fc-m-explorer-slider::-webkit-slider-thumb,
4379
+ :root[data-fc-theme="shield-light"] .fc-m-listsheet-scrub-slider::-webkit-slider-thumb {
4380
+ border-color: rgba(255, 255, 255, 0.92);
4381
+ }