<workout_file>
  <author>Veloarchitect</author>
  <name>Threshold Over-Unders 3×12</name>
  <description>Lactate-clearance threshold work — 3 blocks of 12 over-unders.</description>
  <sportType>bike</sportType>
  <tags>
    <tag name="threshold"/>
  </tags>
  <workout>
    <Ramp Duration="900" PowerLow="0.5" PowerHigh="0.8" Cadence="85-95rpm">
      <textevent message="Warm-up ramp." timeoffset="0" duration="10"/>
    </Ramp>
    <IntervalsT Reps="12" OnDuration="30" OffDuration="30" OnPower="1.05" OffPower="0.95" Cadence="88-98rpm">
      <textevent message="Over-under set 1 — push the surge, settle the recovery." timeoffset="0" duration="10"/>
    </IntervalsT>
    <SteadyState Duration="240" Power="0.55" Cadence="80-90rpm">
      <textevent message="Block recovery." timeoffset="0" duration="10"/>
    </SteadyState>
    <IntervalsT Reps="12" OnDuration="30" OffDuration="30" OnPower="1.05" OffPower="0.95" Cadence="88-98rpm">
      <textevent message="Over-under set 2." timeoffset="0" duration="10"/>
    </IntervalsT>
    <SteadyState Duration="240" Power="0.55" Cadence="80-90rpm">
      <textevent message="Block recovery." timeoffset="0" duration="10"/>
    </SteadyState>
    <IntervalsT Reps="12" OnDuration="30" OffDuration="30" OnPower="1.05" OffPower="0.95" Cadence="88-98rpm">
      <textevent message="Over-under set 3 — match set 1 and 2 output." timeoffset="0" duration="10"/>
    </IntervalsT>
    <SteadyState Duration="300" Power="0.5" Cadence="80-90rpm">
      <textevent message="Cool-down." timeoffset="0" duration="10"/>
    </SteadyState>
  </workout>
</workout_file>