Use the same interface and engine as a person

All controls have explicit labels, stable field-* IDs, and data-field attributes. The suggested price is output#suggested-price with a machine-readable numeric data-value for the cent-rounded order total. There are no hidden inputs or agent-only prices.

window.printMargin.getSnapshot() returns an isolated copy of the current job and result. It returns result: null and validation issues while required inputs are invalid. It never returns stale valid figures as current. Import calculateJob from assets/quote.mjs for DOM-free calculations.

Reproducible JSON

The downloadable schemas/quote.schema.json describes version 2 inputs. examples/job.json is a valid illustrative export. POST endpoints, authentication, and remote calculation APIs are not provided.

JSON exports preserve the model version, units, input snapshot, and unrounded numeric result. Restoring an export recomputes the result; an imported result is never trusted. Version 1 jobs migrate to quantity one and zero fees, preserving their original actuals.

Deep-linked calculations

The calculator reads validated query-string overrides on its own field keys, for example /?energy=0.22&watts=210&grams=45&hours=3. Unknown keys and out-of-range or non-numeric values are ignored, and the page always falls back to its example inputs rather than failing.

This is how the electricity-by-state, filament, printer, and part-quote pages link into the live tool with their own numbers prefilled. Field keys and ranges match schemas/quote.schema.json; there is still no server-side calculation endpoint.

Respect user intent

Loading a saved job or preset, restoring JSON, resetting modified inputs, and deleting saved data can require confirmation. Slicer imports always show a values-and-scope preview. Do not bypass confirmations or silently send local job data to external services.

The interface uses normal labels, buttons, details elements, and dialogs. The live-region summary is concise; errors are associated with fields and summarized above the form. The llms.txt file is a navigation aid, not an SEO ranking guarantee.