{
  "routine": {
    "title": "Min-Max 4x D2 — Upper (W5b)",
    "notes": "W5 D2 Upper — W5a (2-Jun) base: Lat Pulldown 55×8@8.5/55×10@10, Seated Row 55×10@9.5 (×2), Shrug 20×10@8.5, Chest Press 40×8@9.5/40×8@10(falla), Lateral Raise 5kg a falla, Face Pull 12.5×10/15×10. W5b progresa conservador: S1 +2.5kg, S2 sostengo, lateral REGRESIÓN 2.5kg strict.",
    "exercises": [
      {
        "exercise_template_id": "3303376C",
        "notes": "Calentamiento elíptica 10-12min, RPE 5-6. Sudar suave.",
        "rest_seconds": 0,
        "sets": [
          { "type": "normal", "weight_kg": null, "reps": null }
        ]
      },
      {
        "exercise_template_id": "4E5257DE",
        "notes": "Lat Pulldown Close — W5a: 55×8@8.5 / 55×10@10(falla). W5b: S1 +2.5 → 57.5×8 (target RIR 1.5), S2 sostengo 55×10 (no fallar, RIR 0-0.5). Codos pegados, sin impulso.",
        "rest_seconds": 180,
        "sets": [
          { "type": "warmup", "weight_kg": 25, "reps": 8 },
          { "type": "warmup", "weight_kg": 42, "reps": 6 },
          { "type": "normal", "weight_kg": 57.5, "reps": 8 },
          { "type": "normal", "weight_kg": 55, "reps": 10 }
        ]
      },
      {
        "exercise_template_id": "1DF4A847",
        "notes": "Seated Row — W5a: 55×10@9.5 / 55×10@9.5 (top). W5b: S1 +2.5 → 57.5×8 (target 8-9), S2 sostengo 55×10. Tirón al ombligo, pecho abierto.",
        "rest_seconds": 180,
        "sets": [
          { "type": "warmup", "weight_kg": 35, "reps": 8 },
          { "type": "warmup", "weight_kg": 42, "reps": 8 },
          { "type": "normal", "weight_kg": 57.5, "reps": 8 },
          { "type": "normal", "weight_kg": 55, "reps": 10 }
        ]
      },
      {
        "exercise_template_id": "ABEC557F",
        "notes": "Shrug — W5a: 20×10@8.5. W5b: +2.5 → 22.5×8-10 estricto, sin rebote, pausa 1s arriba.",
        "rest_seconds": 90,
        "sets": [
          { "type": "warmup", "weight_kg": 14, "reps": 12 },
          { "type": "normal", "weight_kg": 22.5, "reps": 8 }
        ]
      },
      {
        "exercise_template_id": "7EB3F7C3",
        "notes": "Chest Press — W5a: 40×8@9.5 / 40×8@10(falla). W5b: sostengo 40/40, objetivo 8-10 cada set, RIR ≥0.5. Si sale 10 limpio, S2 = 42.5 W6.",
        "rest_seconds": 180,
        "sets": [
          { "type": "warmup", "weight_kg": 25, "reps": 10 },
          { "type": "warmup", "weight_kg": 32, "reps": 10 },
          { "type": "normal", "weight_kg": 40, "reps": 8 },
          { "type": "normal", "weight_kg": 40, "reps": 8 }
        ]
      },
      {
        "exercise_template_id": "DE68C825",
        "notes": "Lateral Raise — W5a: 5×8@10 / 5×6@10 (ambas a falla). W5b: REGRESIÓN a 2.5kg, 2 sets de 10-12 estrictos, sin impulso. Re-subir a 5kg en W6.",
        "rest_seconds": 90,
        "sets": [
          { "type": "warmup", "weight_kg": 2, "reps": 12 },
          { "type": "normal", "weight_kg": 2.5, "reps": 10 },
          { "type": "normal", "weight_kg": 2.5, "reps": 10 }
        ]
      },
      {
        "exercise_template_id": "BC10A922",
        "notes": "Decline Crunch — W5a: 10@9 / 7@10 (S2 cayó). W5b: sostengo 10-12 cada set, control ROM completo, sin tirones de cuello.",
        "rest_seconds": 90,
        "sets": [
          { "type": "warmup", "weight_kg": null, "reps": 10 },
          { "type": "normal", "weight_kg": null, "reps": 12 },
          { "type": "normal", "weight_kg": null, "reps": 10 }
        ]
      },
      {
        "exercise_template_id": "BE640BA0",
        "notes": "Face Pull — W5a: 12.5×10@7 / 15×10@7.5 (RPE bajo, queda margen). W5b: S1 sube a 15, S2 sube a 17.5. Target 8-10, codos altos.",
        "rest_seconds": 90,
        "sets": [
          { "type": "warmup", "weight_kg": 10, "reps": 10 },
          { "type": "normal", "weight_kg": 15, "reps": 8 },
          { "type": "normal", "weight_kg": 17.5, "reps": 8 }
        ]
      },
      {
        "exercise_template_id": "98237BA2",
        "notes": "Knee Raise — W5a: 10/10@10 (falla). W5b: sostengo 10-12 por set, control ROM completo, sin balanceo. Push 12.",
        "rest_seconds": 90,
        "sets": [
          { "type": "warmup", "weight_kg": null, "reps": 12 },
          { "type": "normal", "weight_kg": null, "reps": 12 },
          { "type": "normal", "weight_kg": null, "reps": 12 }
        ]
      }
    ]
  }
}
