TATTOOS - what to do when the owner's new tattoo images arrive
================================================================
Nothing in the code needs to change. Two ways, pick per image:

A) REPLACE a built-in design (keeps its id, name, saved choices of players)
   1. Image -> DDS, BC3/DXT5 (alpha = where the ink is; transparent everywhere else), with mipmaps.
      Sizes (power of two, same as now):
        normal designs (arm/chest/back/hand/leg/face): 512 x 512
        sleeves (tribalSleeve, ...):                   512 x 1024 (portrait, wraps round the arm)
        knuckles (knucklesFarm, ...):                  512 x 128 (4 letters left->right)
        tiny face designs (teardrop..., tiny*):        256 x 256
      Ink: dark colour on transparent, centred, ~8% empty margin (the overlay mesh UVs fill the square).
      Nothing nude/sexual, no brand logos.
   2. Simplest: overwrite textures/tattoos/<id>.dds with the same file name (the i3d banks
      tattoos/*.i3d already point there) AND the picker icon gui/tattooIcons/<id>.dds
      (256 x 256 DXT5, the design on transparent). Ids are in scripts/LSTattoos.lua (DESIGNS,
      SLEEVE_DESIGNS, KNUCKLE_DESIGNS, TINY_DESIGNS).
   or 2b. Without overwriting: put the files in tattoos/pack/ and list them in tattoos/designs.xml:
        <tattooPack>
          <design id="rose" texture="pack/rose.dds" icon="pack/icons/rose.dds" name="Rose"/>
        </tattooPack>
      (same id = replaces the built-in picture; makes the material at run time).

B) ADD new designs (the "plus the rest")
   Put files in tattoos/pack/ and add lines to tattoos/designs.xml:
        <design id="myEagle" list="normal" name="Eagle" texture="pack/myEagle.dds" icon="pack/icons/myEagle.dds"/>
   list = normal (every body spot + face/neck), sleeve, tiny (teardrops/face), knuckles.
   id: letters/digits/underscore, unique. They show in the wardrobe Tattoos grid and the menu at once.
   Players can also drop their own pack in <profile>/modSettings/HS25_Lifestyle_Mod/tattoos/designs.xml.

Removing the "cartoon" ones: replace them via A (same ids) so nobody's saved choice breaks;
or to hide one completely, delete its entry from the list in scripts/LSTattoos.lua (saved choices
of that id fall back to "none").

Check after: log line "[CharacterPresets Tattoos] N design(s) from .../designs.xml"; a missing
texture logs "pack ...: <file> not found". Conversion: texconv -f BC3_UNORM -m 0 file.png
(or GIANTS TextureTool / GIMP DDS export with mipmaps).
No designs.xml shipped now = nothing changes today.

FACE & NECK ON THE BASE GAME CHARACTER (2026-10)
   Every FS25 face is shaped differently (4-10 mm apart), so each face needs its own spot file
   tattoos/face_<face>.i3d, cut from that face's head mesh (tools/make_base_face_spots.py).
   Done: mHead02, npcQG01, npcFisherman (head meshes from the BMP wardrobe add-on's copies).
   Other faces (mHead01, 03-08, every female fHead) keep the Face & neck zone hidden until their head
   is exported from GIANTS Editor (head .i3d + .i3d.shapes), added to HEADS in that tool, and listed
   in CPTattoos.BASE_FACES (scripts/LSTattoos.lua).
