<turbo-stream action="update" target="modal-container"><template><dialog class="modal-dialog modal-xl" data-controller="modal" data-action="click->modal#onClick close->modal#onClose cancel->modal#onCancel" data-modal-target="dialog" aria-labelledby="modal-title-105120"><div class="modal-header"><h3 id="modal-title-105120">Workout Description Reference</h3><button type="button" class="modal-close-btn" aria-label="Close modal" data-action="click->modal#close" data-modal-target="closeButton">×</button></div><div class="modal-body"><div class="grammar-reference" style="max-height: 70vh; overflow-y: auto; padding-right: 0.5rem;"><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Format Headers</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Start your workout with one of these:</p><table class="text-sm" style="width: 100%; border-collapse: collapse;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">AMRAP 20</td><td class="text-gray-600" style="padding: 0.3rem 0;">As many rounds as possible in 20 min</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">EMOM 10</td><td class="text-gray-600" style="padding: 0.3rem 0;">Every minute on the minute for 10 min</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">E2MOM 16</td><td class="text-gray-600" style="padding: 0.3rem 0;">Every 2 minutes for 16 min</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">E90 x5</td><td class="text-gray-600" style="padding: 0.3rem 0;">Every 90 seconds, 5 rounds</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">For Time</td><td class="text-gray-600" style="padding: 0.3rem 0;">Complete as fast as possible</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">3 Rounds For Time</td><td class="text-gray-600" style="padding: 0.3rem 0;">3 rounds, timed</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">For Load</td><td class="text-gray-600" style="padding: 0.3rem 0;">Find heaviest load</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">For Max Reps</td><td class="text-gray-600" style="padding: 0.3rem 0;">Maximum repetitions</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">For Max Distance</td><td class="text-gray-600" style="padding: 0.3rem 0;">Maximum distance</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">For Completion</td><td class="text-gray-600" style="padding: 0.3rem 0;">Complete the work (untimed)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">Not For Time</td><td class="text-gray-600" style="padding: 0.3rem 0;">Same as For Completion</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">Tabata</td><td class="text-gray-600" style="padding: 0.3rem 0;">8 rounds of :20 work / :10 rest</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.3rem 0.75rem 0.3rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">Death By</td><td class="text-gray-600" style="padding: 0.3rem 0;">EMOM adding 1 rep each minute until failure</td></tr></tbody></table><p class="text-xs text-gray-500" style="margin-top: 0.5rem;">Use <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">For Time (Time Cap: 15)</code> or <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">AMRAP 20 (4:00 on / 2:00 off)</code> for intervals.</p></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Writing Elements</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Each element goes on its own line:</p><pre style="background: var(--surface-secondary, #f3f4f6); border-radius: 0.375rem;
                    padding: 0.75rem; font-size: 0.8rem; line-height: 1.5;
                    overflow-x: auto; margin: 0.5rem 0;"><code>21 Thruster (95/65 lb)
400m Run
0:30 Handstand Hold
10/7 Ring Muscle Up
Deadlift (225/155 lb)
15-12-9-6-3 Pull Up
1000-800-600m Row</code></pre><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Quantity + Name</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">21 Thruster</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Distance + Name</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">400m Run, 1 mi Run</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Duration + Name</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">0:30 Dead Hang, 45s Plank</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Gendered reps</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">10/7 Ring Dip (the larger value is men&#39;s, whichever side it is written on)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Name only</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Deadlift (for load workouts)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Inline ladder</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">15-12-9-6-3 HSPU</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Fixed (ladder constant)</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">+ 5 Burpee</td></tr></tbody></table></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Conditions</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Add details in parentheses after an element:</p><pre style="background: var(--surface-secondary, #f3f4f6); border-radius: 0.375rem;
                    padding: 0.75rem; font-size: 0.8rem; line-height: 1.5;
                    overflow-x: auto; margin: 0.5rem 0;"><code>5 Back Squat (80%)
Deadlift (Tempo: 3:1:X:1)
Row (Max Cal)
Ring Dip (Strict)</code></pre><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Weight</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">135/95 lb, 53/35 kg, 2 pd, 95 (bare number is pounds)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Percentage</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">85%, 65% 1RM Back Squat</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Duration</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">0:30, 45s, 2 minutes</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Tempo</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Tempo: 3:1:X:1 (ecc:bot:con:top)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Strict</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Strict</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Max effort</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Max Reps, Max Cal, Max Distance, Max Load, Max Duration</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Bodyweight</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Bodyweight, 3/4 Bodyweight, 1.5x Bodyweight</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Range</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">65-70%, 8-10 reps, 1-2 min</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Execution</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">unbroken</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Team share</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">together (never divided), split (always divided)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Total</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Total: 10000 lb (cumulative volume target)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Switch at a time</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">95 lb after 5:00</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Increment</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">+1 (for Death By)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Accumulating</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Accumulating (on For Time header)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Time Cap</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Time Cap: 15 (on header)</td></tr></tbody></table><p class="text-xs text-gray-500">Percentages and tempos are recorded and printed back, but they do not move the estimate: a percentage has no athlete max to resolve against, and tempo is not yet priced.</p><p class="text-xs text-gray-500"><code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Strict</code> does move it: strict reps are slower and carry more stress per rep.</p></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Per-Round Increments</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Scale element values each round of an AMRAP or EMOM:</p><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><thead><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><th style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 600; font-size: 0.8rem; text-align: left;">Form</th><th style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 600; font-size: 0.8rem; text-align: left;">Target</th><th style="padding: 0.25rem 0; font-weight: 600; font-size: 0.8rem; text-align: left;">Example</th></tr></thead><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">+N / -N</td><td class="text-gray-600" style="padding: 0.25rem 0.75rem 0.25rem 0;">quantity (reps)</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">5 Pull Up (+5)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">+Ncal / -Ncal</td><td class="text-gray-600" style="padding: 0.25rem 0.75rem 0.25rem 0;">calories</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">5cal Row (+5cal)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">+Nlb / +Nkg</td><td class="text-gray-600" style="padding: 0.25rem 0.75rem 0.25rem 0;">weight</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">5 Back Squat (95, +5lb)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">+Nm / +Nmi / +Nkm / +Nft</td><td class="text-gray-600" style="padding: 0.25rem 0.75rem 0.25rem 0;">distance</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">200m Run (+100m)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-family: monospace; font-size: 0.8rem; white-space: nowrap;">+M:SS</td><td class="text-gray-600" style="padding: 0.25rem 0.75rem 0.25rem 0;">duration</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">0:30 Plank (+0:10)</td></tr></tbody></table><p class="text-xs text-gray-500">Multiple increments per element are allowed: <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">5 Back Squat (95, +1, +5lb)</code>.</p><p class="text-xs text-gray-500">Bare integer always targets quantity. Other forms require a unit; duration uses the <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">M:SS</code> colon form.</p><p class="text-xs text-gray-500">Cross-family unit mismatches emit a parser warning but still record the increment.</p><p class="text-xs text-gray-500">For a progression that is not a fixed step, list the loads in the Equipment block: <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Barbell: 135/85, 155/105, 185/125, 205/145</code>.</p></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Equipment</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Declare a load once for every movement that uses the equipment:</p><pre style="background: var(--surface-secondary, #f3f4f6); border-radius: 0.375rem;
                    padding: 0.75rem; font-size: 0.8rem; line-height: 1.5;
                    overflow-x: auto; margin: 0.5rem 0;"><code>Equipment:
Barbell: 95/65
Kettlebell: 53/35

AMRAP 12
5 Power Clean
10 Kettlebell Swing</code></pre><pre style="background: var(--surface-secondary, #f3f4f6); border-radius: 0.375rem;
                    padding: 0.75rem; font-size: 0.8rem; line-height: 1.5;
                    overflow-x: auto; margin: 0.5rem 0;"><code>Equipment:
Barbell: 135/85, 155/105, 185/125, 205/145

AMRAP 17
10-8-6-4-2
Hang Power Clean
Burpee
Toes to Bar</code></pre><p class="text-xs text-gray-500">An entry applies to every movement that uses that equipment and carries no weight of its own.</p><p class="text-xs text-gray-500">A comma-separated list is one load per round: entry N is round N, and the last entry holds for the rest of the workout. One unit serves the whole list; bare numbers are pounds.</p><p class="text-xs text-gray-500">Rounds are AMRAP passes, <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Rounds:</code> rounds, and EMOM intervals. A one-pass For Time ladder uses the first entry on every rung.</p><p class="text-xs text-gray-500"><code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Vest:</code> inside the block is worn for the whole workout, like the <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Vest:</code> line, and takes one weight.</p></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Workout Structure</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Organize multi-part workouts:</p><pre style="background: var(--surface-secondary, #f3f4f6); border-radius: 0.375rem;
                    padding: 0.75rem; font-size: 0.8rem; line-height: 1.5;
                    overflow-x: auto; margin: 0.5rem 0;"><code>3 Rounds:
10 Push Up
15 Air Squat
200m Run

Buy-in:
50 Cal Row

Then:
AMRAP 10
5 Pull Up
10 Push Up

Cash-out:
50 Cal Row</code></pre><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Rounds</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">3 Rounds:, 5 Rounds For Time</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Segments</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Blank line or Then: separates segments</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Buy-in / Cash-out</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Work before/after the main set</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Penalty</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Penalty: 20 Burpee (indented under a movement, paid on every break); Penalty (start at 0:00): also paid at that clock time</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Multi-part</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Part A - AMRAP 5, Part B - For Load</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Scaling</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Scaling: (followed by scaling options)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Sequencing</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Work: any order, Work: athlete&#39;s choice</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Rotation</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Swap: when complete, Station 4 (swap)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Wearables</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Vest: 20/14 lb (worn for the whole workout)</td></tr></tbody></table><p class="text-xs text-gray-500">&quot;Sets&quot; is accepted as an alias for &quot;Rounds&quot; when parsing (e.g. <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">2 Sets:</code>), but generated output always writes &quot;Rounds&quot;.</p></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">EMOM / Interval Syntax</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Structure intervals with minute or station headers:</p><pre style="background: var(--surface-secondary, #f3f4f6); border-radius: 0.375rem;
                    padding: 0.75rem; font-size: 0.8rem; line-height: 1.5;
                    overflow-x: auto; margin: 0.5rem 0;"><code>EMOM 12
Odd: 5 Power Clean (135/95 lb)
Even: 12 Pull Up

EMOM 20
Minute 1: 15 Cal Row
Minute 2: 12 Dumbbell Snatch (50/35 lb)
Minute 3: 9 Bar Muscle Up
Minute 4: Rest</code></pre><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Odd/Even</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Odd:, Even: (alternating minutes)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Minute headers</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Minute 1:, Min 1-3:, Minute 2 &amp; 3:, Minute 10+:</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Stations</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Station 1:, Station A:, Station 1 (Score):, Station 2 (swap):</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Intervals</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Interval 1:, Interval 2:, Interval 1-3:</td></tr></tbody></table><p class="text-xs text-gray-500" style="margin-top: 0.5rem;"><code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">(Score)</code> marks the station whose completed rounds are the workout&#39;s score; <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">(swap)</code> marks the pacer station whose completion triggers the team to rotate. See &quot;Station Pacing&quot; for details.</p><p class="text-xs text-gray-500"><code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Minute</code>, <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Min</code>, and <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Interval</code> are the same header. Ranges (<code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">1-3</code>), lists (<code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">2 &amp; 3</code>), and open ends (<code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">10+</code>) work with any of them.</p></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Team Workouts</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Specify partner or team formats:</p><pre style="background: var(--surface-secondary, #f3f4f6); border-radius: 0.375rem;
                    padding: 0.75rem; font-size: 0.8rem; line-height: 1.5;
                    overflow-x: auto; margin: 0.5rem 0;"><code>Partners: alternating
For Time
100 Cal Row
80 Wall Ball (20/14 lb)
60 Burpee

Team (3): divide the work
For Time
150 Wall Ball (20/14 lb)</code></pre><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Partners</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Partners: alternating (a team of two)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Team</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Team (3): divide the work (a team of N)</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">alternating</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">One athlete works at a time, swapping every rep. Reps are split across the team.</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">I go, you go</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Same as alternating.</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">alternating rounds</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">One athlete completes a whole round, then the next takes a round. Nothing is split inside a round.</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">divide the work</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Split the total reps across the team however you like, one athlete working at a time.</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">divide the work evenly</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">The same split, held to equal shares.</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">synchronized</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Everyone performs every rep at the same time. Nothing is split.</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">follow the leader</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Everyone does the full work, but an athlete starts a movement only once the athlete ahead of them has finished it.</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">parallel</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Everyone works at the same time on their own station. Reps are split across the team.</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">relay</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">One athlete at a time completes the full quantity, then the next goes.</td></tr></tbody></table><p class="text-xs text-gray-500"><code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">parallel</code> expects <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Station 1:</code> / <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">Station 2:</code> headers so each athlete has their own work. Without stations the description saves with a warning.</p><p class="text-xs text-gray-500">Splitting distributions divide reps, calories, and meters by team size. Movements that cannot be split (runs, shared carries, sled work) keep their full quantity.</p><p class="text-xs text-gray-500">Override one line with <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">(split)</code> or <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">(together)</code>, e.g. <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">400m Run (split)</code>.</p></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Ladders</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Descending, ascending, or custom rep schemes:</p><pre style="background: var(--surface-secondary, #f3f4f6); border-radius: 0.375rem;
                    padding: 0.75rem; font-size: 0.8rem; line-height: 1.5;
                    overflow-x: auto; margin: 0.5rem 0;"><code>21-15-9
Thruster (95/65 lb)
Pull Up

For Time
15-12-9-6-3 HSPU
+ 200m Run

E5MOM 20: 12-9-6
Thruster (75/55 lb)
Chest to Bar Pull Up

AMRAP 17
10-8-6-4-2
Hang Power Clean
Toes to Bar</code></pre><p class="text-xs text-gray-500" style="margin-top: 0.5rem;"><code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">+</code> prefix for fixed elements that repeat unchanged each round. An <code style="background: var(--surface-secondary, #f3f4f6); padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-size: 0.8rem;">AMRAP</code> header before a rep scheme repeats the ladder until the clock runs out; each pass is one round.</p></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Notes &amp; Rules</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Add context with symbols or instruction blocks:</p><pre style="background: var(--surface-secondary, #f3f4f6); border-radius: 0.375rem;
                    padding: 0.75rem; font-size: 0.8rem; line-height: 1.5;
                    overflow-x: auto; margin: 0.5rem 0;"><code>* No rest between movements
** Scale to ring rows if needed

Notes:
This is a classic CrossFit benchmark.
Focus on unbroken sets.</code></pre><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Rule symbols</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">*, **, ***, †, ‡, §</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">Instruction blocks</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">Notes:, Instructions:, Scaling:, Warmup:, Progression:</td></tr></tbody></table></div><div style="margin-bottom: 1.5rem;"><h4 style="font-weight: 600; font-size: 0.95rem; margin-bottom: 0.25rem;">Unit Aliases</h4><p class="text-sm text-gray-500" style="margin-bottom: 0.5rem;">Recognized units by category (sourced from units.yml):</p><h5 style="font-weight: 500; font-size: 0.875rem; margin-top: 0.75rem; margin-bottom: 0.25rem;">Distance</h5><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">meters</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">m — meters, meter</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">kilometers</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">km — kilometers, kilometer, k, K</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">miles</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">mi — miles, mile</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">yards</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">yd — yards, yard, yds</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">feet</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">ft — feet, foot, &#39;</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">inches</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">in — inches, inch, &quot;, &#39;&#39;</td></tr></tbody></table><h5 style="font-weight: 500; font-size: 0.875rem; margin-top: 0.75rem; margin-bottom: 0.25rem;">Weight</h5><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">pounds</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">lb — pounds, pound, lbs, #</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">kilograms</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">kg — kilograms, kilogram, kgs</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">pood</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">pd — pood, poods</td></tr></tbody></table><h5 style="font-weight: 500; font-size: 0.875rem; margin-top: 0.75rem; margin-bottom: 0.25rem;">Time</h5><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">seconds</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">s — seconds, second, secs, sec</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">minutes</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">min — minutes, minute, mins</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">hours</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">hr — hours, hour, hrs, h</td></tr></tbody></table><h5 style="font-weight: 500; font-size: 0.875rem; margin-top: 0.75rem; margin-bottom: 0.25rem;">Measurement</h5><table class="text-sm" style="width: 100%; border-collapse: collapse; margin-top: 0.5rem;"><tbody><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">calories</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">cal — calories, calorie, cals</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">reps</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">reps — rep, repetitions, repetition, count</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">rounds</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">rounds — round</td></tr><tr style="border-bottom: 1px solid var(--border-color, #e5e7eb);"><td style="padding: 0.25rem 0.75rem 0.25rem 0; font-weight: 500; white-space: nowrap; vertical-align: top;">percent</td><td class="text-gray-600" style="padding: 0.25rem 0; font-family: monospace; font-size: 0.8rem;">% — percent</td></tr></tbody></table></div></div></div></dialog></template></turbo-stream>