BECKNERWEB CRYPTOGRAM — LOCAL JSON FORMAT v1 Each export contains ONE player-created puzzle. UTF-8 JSON, less than 20 KB. { "format": "becknerweb-cryptogram", "version": 1, "puzzle": { "title": "A friendly message", "answer": "A SMALL KINDNESS CAN CHANGE A DAY.", "author": "Your name or source (optional)", "category": "Quotations", "difficulty": "Normal", "intro": "An optional clue.", "alphabet": "BCDEFGHIJKLMNOPQRSTUVWXYZA" } } The alphabet lists the ciphertext corresponding to plaintext A through Z. Every A–Z letter must appear exactly once; no letter may remain in its original position. The creator generates this automatically. Imported alphabets are validated rather than silently replaced. Required text fields: title (1–100 characters), answer (at least 12 A–Z letters; maximum 2,000 characters), author (0–200), intro (0–500). Categories: Quotations, Bible, Poetry, Mystery. Difficulty: Easy, Normal, Hard. These supply three, one, or no starting letters. Passages support English A–Z, ASCII digits and punctuation, line breaks, tabs, curly quotes, en/em dashes, and ellipses. Accented and non-Latin letters must be replaced before importing. Plaintext case is kept in the completed passage; solving displays uppercase. Spaces, punctuation, and line breaks are preserved. Import creates a NEW local custom ID. IDs, included-data flags, case unlocking fields, save histories, and foreign object fields in the input are ignored. Text is rendered as text, never executed as HTML. A custom Mystery category puzzle is standalone, and cannot join or overwrite an included mystery case. Edit and delete affect only that custom puzzle and its own solving progress. Deleting requires confirmation. Editing an already-played puzzle asks before resetting its own progress. Export before deleting if you want a backup. Exported files contain the answer. Use for casual sharing, not secure exams. Respect the rights of any author or translation you include in custom content. Included ESV Scripture is copyright Crossway; see esv-notice.txt.