{
  "1": {
    "class_type": "UNETLoader",
    "_comment": "Z-Image Turbo BF16 transformer",
    "inputs": {
      "unet_name": "z_image_turbo_bf16.safetensors",
      "weight_dtype": "default"
    }
  },
  "2": {
    "class_type": "CLIPLoader",
    "_comment": "Qwen3-4B text encoder — type 'lumina2' routes to z_image.te() for QWEN3_4B model",
    "inputs": {
      "clip_name": "qwen_3_4b.safetensors",
      "type": "lumina2",
      "device": "default"
    }
  },
  "3": {
    "class_type": "VAELoader",
    "_comment": "Z-Image VAE",
    "inputs": {
      "vae_name": "ae.safetensors"
    }
  },
  "4": {
    "class_type": "ModelSamplingAuraFlow",
    "_comment": "Apply ZImage flowmatch sigma schedule (shift=3.0 matches ZImage sampling_settings)",
    "inputs": {
      "model": [
        "1",
        0
      ],
      "shift": 3.0
    }
  },
  "5": {
    "class_type": "LoraLoader",
    "_comment": "Chaerin character LoRA (rank-16, trained with Prodigy on ZIB)",
    "inputs": {
      "model": [
        "4",
        0
      ],
      "clip": [
        "2",
        0
      ],
      "lora_name": "whisper_zit_lora_v1.safetensors",
      "strength_model": 1.0,
      "strength_clip": 1.0
    }
  },
  "6": {
    "class_type": "TextEncodeZImageOmni",
    "_comment": "Positive conditioning — full-body. Edit prompt per shot.",
    "inputs": {
      "clip": [
        "5",
        1
      ],
      "prompt": "bust shot, collarbone to top of head, widescreen horizontal, 22 year old Korean girl with soft feminine features, slim elegant frame, sharp jawline soft chin, subtle high cheekbones, slim straight nose bridge, natural MLBB pink lips, almond eyes subtle eye makeup, subtle undereye shadow, baby hairs framing forehead, aegyo sal, long straight jet black hair with wispy bangs, loose-fit grey hoodie, collar askew,, subtle pensive frown looking through window,, music video opening scene for song 'Glass' — subject holding shard of clear glass delicately near face, light refracting through, overhead softbox with gentle rim light, shot on Hasselblad X2D 100c with 90mm, dark charcoal studio with single key light, Kodak Portra 400 filmic grain, Cinematic widescreen 16:9 landscape orientation.",
      "auto_resize_images": true
    }
  },
  "7": {
    "class_type": "TextEncodeZImageOmni",
    "_comment": "Negative conditioning (empty — ZIT is low-CFG distilled)",
    "inputs": {
      "clip": [
        "5",
        1
      ],
      "prompt": "",
      "auto_resize_images": true
    }
  },
  "8": {
    "class_type": "TextEncodeZImageOmni",
    "_comment": "Face-focused positive for FaceDetailer inpaint pass",
    "inputs": {
      "clip": [
        "5",
        1
      ],
      "prompt": "bust shot, collarbone to top of head, widescreen horizontal, 22 year old Korean girl with soft feminine features, slim elegant frame, sharp jawline soft chin, subtle high cheekbones, slim straight nose bridge, natural MLBB pink lips, almond eyes subtle eye makeup, subtle undereye shadow, baby hairs framing forehead, aegyo sal, long straight jet black hair with wispy bangs, loose-fit grey hoodie, collar askew,, subtle pensive frown looking through window,, music video opening scene for song 'Glass' — subject holding shard of clear glass delicately near face, light refracting through, overhead softbox with gentle rim light, shot on Hasselblad X2D 100c with 90mm, dark charcoal studio with single key light, Kodak Portra 400 filmic grain, Cinematic widescreen 16:9 landscape orientation.",
      "auto_resize_images": true
    }
  },
  "9": {
    "class_type": "EmptySD3LatentImage",
    "_comment": "832x1216 portrait — ZIT uses Flux/16ch latent format (Lumina2 base)",
    "inputs": {
      "width": 1408,
      "height": 768,
      "batch_size": 1
    }
  },
  "10": {
    "class_type": "KSampler",
    "_comment": "Full-body generation — ZIT: 20 steps, cfg=4.0, euler/beta",
    "inputs": {
      "model": [
        "5",
        0
      ],
      "positive": [
        "6",
        0
      ],
      "negative": [
        "7",
        0
      ],
      "latent_image": [
        "9",
        0
      ],
      "seed": 2533793758,
      "steps": 8,
      "cfg": 1.0,
      "sampler_name": "euler_ancestral",
      "scheduler": "beta",
      "denoise": 1.0
    }
  },
  "11": {
    "class_type": "VAEDecode",
    "_comment": "Decode full-body latent → image",
    "inputs": {
      "samples": [
        "10",
        0
      ],
      "vae": [
        "3",
        0
      ]
    }
  },
  "12": {
    "class_type": "UltralyticsDetectorProvider",
    "_comment": "YOLOv8m face bbox detector — models/ultralytics/bbox/face_yolov8m.pt",
    "inputs": {
      "model_name": "bbox/face_yolov8m.pt"
    }
  },
  "13": {
    "class_type": "SAMLoader",
    "_comment": "SAM ViT-B for precise face mask segmentation",
    "inputs": {
      "model_name": "sam_vit_b_01ec64.pth",
      "device_mode": "AUTO"
    }
  },
  "14": {
    "class_type": "FaceDetailer",
    "_comment": "Crop face → 512px → inpaint with LoRA (face large = LoRA tokens dominate) → composite back. denoise=0.45 preserves identity, guide_size=512 ensures face tokens dominate transformer.",
    "inputs": {
      "image": [
        "11",
        0
      ],
      "model": [
        "5",
        0
      ],
      "clip": [
        "5",
        1
      ],
      "vae": [
        "3",
        0
      ],
      "guide_size": 512.0,
      "guide_size_for": true,
      "max_size": 1024.0,
      "seed": 42,
      "steps": 8,
      "cfg": 1.0,
      "sampler_name": "euler_ancestral",
      "scheduler": "beta",
      "positive": [
        "8",
        0
      ],
      "negative": [
        "7",
        0
      ],
      "denoise": 0.45,
      "feather": 5,
      "noise_mask": true,
      "force_inpaint": true,
      "bbox_threshold": 0.5,
      "bbox_dilation": 10,
      "bbox_crop_factor": 3.0,
      "sam_detection_hint": "center-1",
      "sam_dilation": 0,
      "sam_threshold": 0.93,
      "sam_bbox_expansion": 0,
      "sam_mask_hint_threshold": 0.7,
      "sam_mask_hint_use_negative": "False",
      "drop_size": 10,
      "bbox_detector": [
        "12",
        0
      ],
      "wildcard": "",
      "cycle": 1,
      "sam_model_opt": [
        "13",
        0
      ]
    }
  },
  "15": {
    "class_type": "SaveImage",
    "_comment": "Save final face-detailed output",
    "inputs": {
      "images": [
        "14",
        0
      ],
      "filename_prefix": "chaerin_fd"
    }
  }
}