Artwork Ratio Crop & ZIP - Free edition 0.2.2 (single image, offline)
===========================================================================

Offline: open index.html directly (double-click). No install, no internet, no server.
Browser: current desktop Edge or Chrome.

This edition processes ONE image at a time. Batch queue and recipe JSON are not included.

1. Tick the ratios you want (2:3, 3:4, 4:5, 11:14, ISO A 1:√2). Optionally set crop
   orientation, max long edge (256-4096 px) and JPG quality.
2. "Choose image": one JPG or PNG (max 20 MiB, 32 MP). Selecting several files is refused.
3. Each ratio has its own tab, e.g. "2:3 · Landscape 3:2". The tab shows whether the crop is
   Portrait or Landscape and its effective width:height.
4. Drag the crop (or arrow keys, Shift = larger steps, Home = centre), check the preview, then tick
   "I confirm this crop". Repeat on every tab.
5. Above the Export button: "Confirmed N of M crop(s)". If some are unconfirmed you must tick
   "Export only the N confirmed crop(s) and skip ..." before exporting; nothing is skipped silently.
6. "Export JPG ZIP" downloads <name>/<name>_<ratio>_<W>x<H>.jpg plus export-report.txt.

WORK MODES
- "Crop + resize (print ratios)": the steps above.
- "Resize whole image (no crop)": ratios, crop orientation and the crop box are hidden; the preview shows the
  whole image. Type a size into Width (px) or Height (px) (256-4096). The aspect ratio is always locked (there is
  no unlock): the other side is computed from each image's own proportions, rounded to the nearest pixel, and can
  be below 256 px. Width and Height always show the selected image's actual output size; the separate line
  "Shared target: ..." shows the value you typed (last edited side), which applies to every image. A source smaller
  than the target is kept at its native size (no upscaling; both the shared target and the actual size are shown).
  Choose an image first - the two fields are disabled until then.
- Advanced resize (folded): "Long edge target" + "Use long-edge target" button. The value only takes effect when
  you click the button; editing Width or Height afterwards switches back.
- Tick "I confirm this whole-image output" once per image; the ZIP then holds one JPG per image:
  <name>/<name>_resized_<W>x<H>.jpg.
- Output limit: in both modes neither output side may exceed 4096 px. With Width or Height on a very long, thin
  image the other side could exceed that; such an image is refused (not altered) and export is blocked -
  use the Advanced long-edge target for it.
- Changing the work mode clears all confirmations; changing the shared target (Width, Height or an applied long edge) clears resize confirmations.

LANGUAGES AND SUPPORT
- The interface is available in English, 繁體中文, 简体中文, 日本語, Español and Deutsch. It follows the browser
  language on first start; change it with the Language selector at the top. The choice is remembered only if the
  browser allows local storage for this file (not guaranteed for file://).
- Changing the language never changes settings, images, crops, confirmations or the shared target. It is locked
  while an export runs, so one export report is always in one language. File names, ratio ids and recipe JSON keys
  are the same in every language.
- English is the reference. The other five are first-draft translations not yet reviewed by native speakers.
  Browser-provided error details may appear in the browser's own language. See LANGUAGES.txt for a short reference.
- Free edition has no dedicated support channel or guaranteed response. Any assistance is limited to writing;
  native-language support in all six languages is not guaranteed. This guide quotes the English UI labels.
- Sharing: file names and export reports can still contain artwork or personal details (see NOTICE.txt). When asking
  for help, share the error text and image sizes first and mask anything private; never send original images or
  payment details.

Try it with demo/demo-synthetic-landscape.png (synthetic demo image).
See NOTICE.txt for free usage, privacy and limits.
