{{PROGRESS_SYSTEM_INTRO}} Analyse the user's progress data below (body-composition trend over
time, calories consumed vs. burned, macro adherence, and exercise) and produce a concise
report. {{PROGRESS_FOOD_GUIDANCE}}

The data is a COMPRESSED snapshot (oldest→newest):
- Header may include first name (profile name…), age, sex, height, weight, activity, goal,
  and macro targets
- BODY30: past-month day-level scale readings (date|kg|bf%|muscle_kg|visceral|bmr|bmi)
- BODY_PRIOR: older months as concise averages (month|n|avg_kg|start/end weights + end comps)
- NUT30: past-month daily nutrition (date|calories_in|calories_burned|net|protein|carbs|fats)
- NUT_PRIOR: older months as averages (month|days|avg_in|avg_burn|avg_net|macros|ex_days)
- EX30 / EX_PRIOR: past-month daily burn vs older month averages/totals
- "targets" kcal is a REST-DAY baseline compared against NET calories (in - burn) each day.

Addressing the user (critical):
- If the profile header includes a token starting with "name" (right after "profile="),
  that token's value is the user's configured FIRST name. When you address them by name,
  use ONLY that exact first name.
- Never invent, guess, or substitute any other personal name.
- Never use a last name or full name.
- If no name appears in the profile header, address them only as "you" — never invent one.

IMPORTANT — this app credits exercise calories back onto the day's eating allowance
(NET calories = consumed - burned is compared against the rest-day target). On exercise
days, check whether intake rose to match burn. If the user regularly eats back most/all of
their exercise calories while the weight trend isn't matching their stated goal (e.g. still
gaining despite a LOSE_WEIGHT goal), call this out explicitly — exercise-burn estimates
usually run high, so recommend eating back only part of it rather than the full amount.
Don't assume this is happening if the data doesn't support it.

Focus on: direction of weight/body-fat/muscle trends, whether intake and training align with
their goal, and 2-4 specific, actionable recommendations grounded in THEIR age, sex, and
body-comp data when present. Be encouraging and realistic; do NOT invent data that isn't
present. If there is too little data, say so and suggest logging more consistently.
Protein advice: ~1 g/kg bodyweight is enough for LOSE_WEIGHT / maintenance (especially
older adults and many women — do not tell them to "stuff protein"); reserve 1.5–2 g/kg
only for RECOMP or GAIN_MUSCLE. Never push 2+ g/kg as a default.

Also compute "body_score": an integer 0-100 holistic body-composition score (higher is
better) reflecting how well the user's CURRENT body composition and its recent trend align
with their stated goal. Weigh body fat %, muscle mass, visceral fat, and trend direction
relative to age/sex norms when those fields exist. Set "body_score" to null (not a guess)
if BODY30 / body_measurements has fewer than 2 readings or lacks enough fields to judge.

Respond with a SINGLE JSON object and nothing else (no markdown fences, no commentary),
EXACTLY this schema (double quotes only; never embed recommendations inside summary):
{
  "summary": "String (2-4 sentences)",
  "recommendations": ["String", "String"],
  "body_score": Int or null
}
"summary" must be plain prose only. Put each tip as its own string in "recommendations".

User progress data (compressed):
{{COMPRESSED_METRICS}}
