{
  "_comment": "Shining LED face mask (BLE). Driven by the FaceController subsystem (face/mask_face.py) which imports the standalone Mask project. Needs an env with bleak + Pillow (g1_env). Free the mask from the phone app before connecting.",
  "mask_dir": "",
  "_mask_dir": "Path to the Mask project (flat shiningmask lib). Empty -> auto: <Project>/Mask. Env override: SANAD_MASK_DIR.",
  "name_prefix": "MASK",
  "_name_prefix": "BLE scan prefix; the mask advertises e.g. 'MASK-02A711'. Env: SANAD_MASK_NAME_PREFIX.",
  "address": "",
  "_address": "Specific BLE MAC to connect to. Empty -> scan by name_prefix. Env: SANAD_MASK_ADDRESS.",
  "adapter": "",
  "_adapter": "BlueZ adapter (e.g. 'hci0'). Empty -> default. Env: SANAD_MASK_ADAPTER.",
  "brightness": 95,
  "_brightness": "0-128. Keep <=100 to avoid LED flicker (battery-limited).",
  "fps": 8.0,
  "_fps": "FaceAnimator (fallback driver) frame rate (PLAY commands/sec).",
  "lifelike": true,
  "_lifelike": "Use the LifelikeFace driver (face/face_motion.py): eye saccades, varied blinks, listening/thinking/speaking states, reactions, smooth lip-sync. false -> basic FaceAnimator.",
  "autostart": true,
  "_autostart": "Auto-connect + Start face on boot (best-effort, background — never blocks startup). After the one-time frame upload, later boots just connect + animate. false -> connect/start manually from the dashboard.",
  "connect_timeout": 15.0,
  "connect_attempts": 5,
  "eye_color": [0, 230, 255],
  "_eye_color": "Face eye/iris RGB (baked into the uploaded frames). Default cyan. Set via the dashboard 'Apply colors' (persisted here).",
  "mouth_color": [255, 50, 50],
  "_mouth_color": "Face mouth RGB. Default red.",
  "sclera_color": [255, 255, 255],
  "_sclera_color": "White-of-the-eye RGB. Default white."
}
