Last active
March 16, 2026 14:40
-
-
Save smoidu/ce757d3bc2904817795886e9374dff83 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Exercise Reference</title> | |
| <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=IBM+Plex+Sans:wght@300;400;500&display=swap" rel="stylesheet"> | |
| <style> | |
| :root { | |
| --bg: #0f0f0f; | |
| --surface: #181818; | |
| --border: #2a2a2a; | |
| --accent: #c8f064; | |
| --text: #e8e8e8; | |
| --muted: #6a6a6a; | |
| --lift: #4a9eff; | |
| --stretch: #ff8c5a; | |
| } | |
| - { box-sizing: border-box; margin: 0; padding: 0; } | |
| body { | |
| background: var(–bg); | |
| color: var(–text); | |
| font-family: ‘IBM Plex Sans’, sans-serif; | |
| font-weight: 300; | |
| min-height: 100vh; | |
| padding: 32px 24px 64px; | |
| max-width: 720px; | |
| margin: 0 auto; | |
| } | |
| header { | |
| margin-bottom: 40px; | |
| border-bottom: 1px solid var(–border); | |
| padding-bottom: 24px; | |
| } | |
| header h1 { | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-size: 13px; | |
| font-weight: 600; | |
| color: var(–accent); | |
| letter-spacing: 0.12em; | |
| text-transform: uppercase; | |
| margin-bottom: 8px; | |
| } | |
| header p { | |
| font-size: 12px; | |
| color: var(–muted); | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| letter-spacing: 0.05em; | |
| } | |
| .day-tabs { | |
| display: flex; | |
| gap: 4px; | |
| margin-bottom: 32px; | |
| } | |
| .tab { | |
| flex: 1; | |
| background: var(–surface); | |
| border: 1px solid var(–border); | |
| color: var(–muted); | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-size: 12px; | |
| font-weight: 600; | |
| letter-spacing: 0.1em; | |
| text-transform: uppercase; | |
| padding: 12px 8px; | |
| cursor: pointer; | |
| transition: all 0.15s ease; | |
| text-align: center; | |
| } | |
| .tab:hover { color: var(–text); border-color: #444; } | |
| .tab.active { | |
| background: var(–accent); | |
| color: #0f0f0f; | |
| border-color: var(–accent); | |
| } | |
| .day-panel { display: none; } | |
| .day-panel.active { display: block; } | |
| .day-header { | |
| margin-bottom: 28px; | |
| } | |
| .day-header h2 { | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-size: 20px; | |
| font-weight: 600; | |
| color: var(–text); | |
| margin-bottom: 4px; | |
| } | |
| .day-header .subtitle { | |
| font-size: 12px; | |
| color: var(–muted); | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| letter-spacing: 0.05em; | |
| } | |
| .section-label { | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-size: 10px; | |
| font-weight: 600; | |
| letter-spacing: 0.2em; | |
| text-transform: uppercase; | |
| margin-bottom: 14px; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .section-label.lift { color: var(–lift); } | |
| .section-label.stretch { color: var(–stretch); } | |
| .section-label::after { | |
| content: ‘’; | |
| flex: 1; | |
| height: 1px; | |
| background: var(–border); | |
| } | |
| .section { margin-bottom: 36px; } | |
| .exercise-card { | |
| background: var(–surface); | |
| border: 1px solid var(–border); | |
| margin-bottom: 10px; | |
| overflow: hidden; | |
| transition: border-color 0.15s; | |
| } | |
| .exercise-card:hover { border-color: #3a3a3a; } | |
| .card-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 14px 18px; | |
| cursor: pointer; | |
| user-select: none; | |
| } | |
| .card-header-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 14px; | |
| } | |
| .card-num { | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-size: 10px; | |
| color: var(–muted); | |
| min-width: 16px; | |
| } | |
| .card-name { | |
| font-size: 14px; | |
| font-weight: 500; | |
| color: var(–text); | |
| } | |
| .card-meta { | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-size: 11px; | |
| color: var(–muted); | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| } | |
| .tag { | |
| padding: 2px 8px; | |
| font-size: 10px; | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-weight: 600; | |
| letter-spacing: 0.08em; | |
| border-radius: 2px; | |
| } | |
| .tag-lift { background: rgba(74, 158, 255, 0.12); color: var(–lift); } | |
| .tag-stretch { background: rgba(255, 140, 90, 0.12); color: var(–stretch); } | |
| .chevron { | |
| color: var(–muted); | |
| font-size: 10px; | |
| transition: transform 0.2s; | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| } | |
| .exercise-card.open .chevron { transform: rotate(180deg); } | |
| .card-body { | |
| display: none; | |
| padding: 0 18px 18px 48px; | |
| border-top: 1px solid var(–border); | |
| } | |
| .exercise-card.open .card-body { display: block; } | |
| .prescription { | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-size: 12px; | |
| color: var(–accent); | |
| padding: 12px 0 14px; | |
| letter-spacing: 0.05em; | |
| } | |
| .steps { | |
| list-style: none; | |
| counter-reset: steps; | |
| } | |
| .steps li { | |
| counter-increment: steps; | |
| display: flex; | |
| gap: 12px; | |
| font-size: 13px; | |
| line-height: 1.6; | |
| color: #c0c0c0; | |
| margin-bottom: 8px; | |
| } | |
| .steps li::before { | |
| content: counter(steps); | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-size: 10px; | |
| color: var(–muted); | |
| min-width: 16px; | |
| padding-top: 3px; | |
| } | |
| .note { | |
| margin-top: 14px; | |
| padding: 10px 14px; | |
| border-left: 2px solid var(–border); | |
| font-size: 12px; | |
| color: var(–muted); | |
| line-height: 1.6; | |
| } | |
| .note strong { | |
| color: var(–text); | |
| font-weight: 500; | |
| } | |
| .timing-grid { | |
| display: flex; | |
| gap: 8px; | |
| margin-top: 12px; | |
| } | |
| .timing-pill { | |
| font-family: ‘IBM Plex Mono’, monospace; | |
| font-size: 10px; | |
| padding: 4px 10px; | |
| border: 1px solid var(–border); | |
| color: var(–muted); | |
| border-radius: 2px; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <header> | |
| <h1>Exercise Reference</h1> | |
| <p>Mon / Wed / Thu — 30 min — Post drop-off</p> | |
| </header> | |
| <div class="day-tabs"> | |
| <button class="tab active" onclick="showDay('mon', this)">Monday</button> | |
| <button class="tab" onclick="showDay('wed', this)">Wednesday</button> | |
| <button class="tab" onclick="showDay('thu', this)">Thursday</button> | |
| <button class="tab" onclick="showDay('daily', this)">Daily</button> | |
| </div> | |
| <!-- MONDAY --> | |
| <div class="day-panel active" id="mon"> | |
| <div class="day-header"> | |
| <h2>Upper Body</h2> | |
| <div class="subtitle">Shoulders · Back · Arms + Chest/Shoulder Stretch</div> | |
| </div> | |
| <div class="section"> | |
| <div class="section-label lift">Lifting — ~20 min</div> | |
| <div class="note" style="margin-bottom:16px; border-color: var(--lift)"><strong>Tempo:</strong> Lift in 1–2 sec. Lower in 2–3 sec — resist the weight, don't drop it. 1 sec pause at peak contraction. ~4–5 sec per rep total.</div> | |
| ``` | |
| <!-- Overhead Press --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">01</span> | |
| <span class="card-name">Overhead Press</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">3 × 8</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">3 sets × 8 reps — rest 60–90 sec between sets</div> | |
| <ol class="steps"> | |
| <li>Stand with feet shoulder-width apart. Hold dumbbells or a barbell at shoulder height, palms facing forward.</li> | |
| <li>Brace your core firmly before each rep — imagine someone is about to push you sideways.</li> | |
| <li>Press directly overhead until arms are fully extended. Don't flare your elbows excessively.</li> | |
| <li>Lower back to shoulder height with control. This is where the muscle work happens — don't drop it.</li> | |
| </ol> | |
| <div class="note"><strong>Watch for:</strong> Arching your lower back as you press. If this happens, the weight is too heavy or your core isn't braced. Keep your ribcage down throughout.</div> | |
| </div> | |
| </div> | |
| <!-- Seated Cable Row --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">02</span> | |
| <span class="card-name">Seated Cable Row</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">3 × 10</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">3 sets × 10 reps — rest 60 sec between sets</div> | |
| <ol class="steps"> | |
| <li>Sit at the cable machine with feet flat on the platform, knees slightly bent. Grip the handle with both hands.</li> | |
| <li>Sit tall — neutral spine, not leaning back. This is the starting position every rep returns to.</li> | |
| <li>Pull the handle toward your lower chest/upper stomach, leading with your elbows.</li> | |
| <li>Squeeze your shoulder blades together at the end of the pull — hold 1 second.</li> | |
| <li>Return to start slowly. Don't let your torso rock forward to load the next rep.</li> | |
| </ol> | |
| <div class="note"><strong>Watch for:</strong> Rocking back and forth — this turns it into a back-swinging exercise and removes the benefit. Torso stays close to upright throughout.</div> | |
| </div> | |
| </div> | |
| <!-- Lateral Raises --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">03</span> | |
| <span class="card-name">Lateral Raises <em style="font-size:11px;color:var(--muted);font-style:normal;">superset →</em></span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">2 × 12</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">2 sets × 12 reps — go directly into Tricep Pushdown, then rest 60 sec</div> | |
| <ol class="steps"> | |
| <li>Stand holding light dumbbells at your sides, slight bend in elbows.</li> | |
| <li>Raise arms out to the sides until level with your shoulders — no higher.</li> | |
| <li>Lead with your elbows, not your wrists. Think of tipping a jug of water.</li> | |
| <li>Lower slowly — 2–3 seconds down. The descent is half the work for shoulder development.</li> | |
| </ol> | |
| <div class="note"><strong>Weight guidance:</strong> These should be much lighter than you expect — 4–6kg is typical to start. Using too much weight turns this into a shrugging movement, which works the neck instead.</div> | |
| </div> | |
| </div> | |
| <!-- Tricep Pushdown --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">04</span> | |
| <span class="card-name">Tricep Pushdown <em style="font-size:11px;color:var(--muted);font-style:normal;">↩ superset</em></span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">2 × 10</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">2 sets × 10 reps — done immediately after Lateral Raises</div> | |
| <ol class="steps"> | |
| <li>Stand at the cable machine, grip the bar or rope attachment at chest height.</li> | |
| <li>Pin your elbows to your sides — they should not move during the exercise.</li> | |
| <li>Push the handle straight down until your arms are fully extended.</li> | |
| <li>Return slowly to start — control the weight, don't let it pull your arms back up.</li> | |
| </ol> | |
| <div class="note"><strong>Elbows:</strong> If your elbows flare out or lift as you push, the weight is too heavy. The elbow position is the whole exercise.</div> | |
| </div> | |
| </div> | |
| ``` | |
| </div> | |
| <div class="section"> | |
| <div class="section-label stretch">Stretching — ~10 min</div> | |
| <div class="note" style="margin-bottom:16px; border-color: var(--stretch)"><strong>Protocol:</strong> 60 seconds each hold, 2 rounds per stretch. Brief reset between rounds. Neck stretch is 30 sec only — longer creates tension rather than releasing it.</div> | |
| ``` | |
| <!-- Cross-body shoulder --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S1</span> | |
| <span class="card-name">Cross-Body Shoulder Pull</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2 each side</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Bring one arm straight across your chest at shoulder height.</li> | |
| <li>Use your opposite forearm or hand to press the arm gently closer to your chest.</li> | |
| <li>Keep the arm at shoulder height — don't let it drop. The stretch is in the back of the shoulder.</li> | |
| <li>Hold 60 sec, switch sides, repeat for a second round.</li> | |
| </ol> | |
| </div> | |
| </div> | |
| <!-- Chest opener --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S2</span> | |
| <span class="card-name">Chest Opener — Hands Clasped Behind Back</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Stand tall, clasp your hands behind your lower back.</li> | |
| <li>Squeeze your shoulder blades together and lift your chest upward.</li> | |
| <li>Optional: gently fold forward at the hips while keeping hands clasped — this deepens the stretch across the chest and front of shoulders.</li> | |
| <li>Hold 60 sec. Repeat for a second round.</li> | |
| </ol> | |
| <div class="note">Counteracts the rounded-shoulder position that builds up from sitting. Worth doing on non-gym days if you've been at a desk.</div> | |
| </div> | |
| </div> | |
| <!-- Neck --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S3</span> | |
| <span class="card-name">Ear-to-Shoulder Neck Stretch</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">30s each side</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Sit or stand tall. Let one ear drop slowly toward your shoulder — no forcing it.</li> | |
| <li>For a slightly deeper stretch, place your same-side hand on the side of your head and apply light pressure only — fingertip weight, not a pull.</li> | |
| <li>30 seconds each side. Do not repeat for a second round — neck tissue responds poorly to prolonged static holds.</li> | |
| </ol> | |
| </div> | |
| </div> | |
| <!-- Side lean --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S4</span> | |
| <span class="card-name">Overhead Side Lean</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2 each side</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Stand with feet hip-width apart. Raise both arms overhead and clasp hands or cross wrists.</li> | |
| <li>Lean slowly to one side, keeping your hips square and both feet planted.</li> | |
| <li>You should feel the stretch along the side of your torso and lat (the large back muscle). Hold 60 sec.</li> | |
| <li>Switch sides. Repeat for a second round each side.</li> | |
| </ol> | |
| </div> | |
| </div> | |
| ``` | |
| </div> | |
| </div> | |
| <!-- WEDNESDAY --> | |
| <div class="day-panel" id="wed"> | |
| <div class="day-header"> | |
| <h2>Upper Body B</h2> | |
| <div class="subtitle">Horizontal Push · Biceps · Rear Delt + Chest/Arm Stretch</div> | |
| </div> | |
| <div class="section"> | |
| <div class="section-label lift">Lifting — ~20 min</div> | |
| <div class="note" style="margin-bottom:16px; border-color: var(--lift)"><strong>Tempo:</strong> Lift in 1–2 sec. Lower in 2–3 sec — resist the weight, don't drop it. 1 sec pause at peak contraction. ~4–5 sec per rep total.</div> | |
| ``` | |
| <!-- Dumbbell Bench Press --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">01</span> | |
| <span class="card-name">Dumbbell Bench Press</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">3 × 10</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">3 sets × 10 reps — rest 60–90 sec between sets</div> | |
| <ol class="steps"> | |
| <li>Lie flat on a bench, a dumbbell in each hand resting on your thighs. Use your thighs to help kick the weights up to chest height as you lie back.</li> | |
| <li>Hold the dumbbells at chest level, elbows at roughly 45 degrees from your torso — not flared out wide, not pinned to your sides.</li> | |
| <li>Press both dumbbells upward until your arms are fully extended. They can touch lightly at the top but don't need to.</li> | |
| <li>Lower with control until your elbows are just below the bench level — a full stretch at the bottom is where chest development happens.</li> | |
| </ol> | |
| <div class="note"><strong>Why this complements Monday:</strong> Monday's overhead press is a vertical push. This is a horizontal push — different muscle fiber recruitment across the chest and front shoulder, same pressing muscles trained from a new angle.</div> | |
| </div> | |
| </div> | |
| <!-- Reverse Fly --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">02</span> | |
| <span class="card-name">Reverse Fly <em style="font-size:11px;color:var(--muted);font-style:normal;">superset →</em></span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">3 × 12</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">3 sets × 12 reps — go directly into Dumbbell Curl, then rest 60 sec</div> | |
| <ol class="steps"> | |
| <li>Stand with feet hip-width apart, hinge forward at the hips until your torso is roughly parallel to the floor. Hold light dumbbells hanging below your chest.</li> | |
| <li>With a slight bend in your elbows, raise both arms out to the sides — think of opening a pair of wings — until they reach shoulder height.</li> | |
| <li>Squeeze your shoulder blades together at the top. Hold briefly.</li> | |
| <li>Lower with control. Don't use momentum — the weight should be light enough that you can feel the rear shoulder working throughout.</li> | |
| </ol> | |
| <div class="note"><strong>Why this matters:</strong> Monday's lateral raise hits the side of the shoulder. This hits the rear delt — the back of the shoulder — which is chronically underdeveloped in most people and directly relevant to posture and shoulder health.</div> | |
| </div> | |
| </div> | |
| <!-- Dumbbell Curl --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">03</span> | |
| <span class="card-name">Dumbbell Curl <em style="font-size:11px;color:var(--muted);font-style:normal;">↩ superset</em></span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">3 × 10</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">3 sets × 10 reps — done immediately after Reverse Fly</div> | |
| <ol class="steps"> | |
| <li>Stand upright, a dumbbell in each hand, palms facing forward, arms hanging at your sides.</li> | |
| <li>Curl both dumbbells upward by bending at the elbow — keep your upper arms stationary and pinned to your sides throughout.</li> | |
| <li>Squeeze your bicep at the top of the movement — the dumbbell should be close to your shoulder.</li> | |
| <li>Lower slowly back to full extension. Resist the weight on the way down — don't drop it.</li> | |
| </ol> | |
| <div class="note"><strong>Upper arms stationary</strong> is the key cue. If your elbows swing forward as you curl, you're using momentum rather than the bicep. Reduce weight if this happens.</div> | |
| </div> | |
| </div> | |
| ``` | |
| </div> | |
| <div class="section"> | |
| <div class="section-label stretch">Stretching — ~10 min</div> | |
| <div class="note" style="margin-bottom:16px; border-color: var(--stretch)"><strong>Protocol:</strong> 60 seconds each hold, 2 rounds. Targets chest, biceps, and forearms — what this session loads. Neck stretch 30 sec only.</div> | |
| ``` | |
| <!-- Doorway chest stretch --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S1</span> | |
| <span class="card-name">Doorway Chest Stretch</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2 each side</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Stand in a doorway or at the end of a cable machine. Place one forearm vertically against the frame, elbow at shoulder height.</li> | |
| <li>Step forward with the same-side foot until you feel a stretch across the front of your chest and shoulder.</li> | |
| <li>Keep your torso upright — don't lean forward. The stretch should be across the chest, not the shoulder joint itself.</li> | |
| <li>Hold 60 sec, switch sides. Repeat for a second round.</li> | |
| </ol> | |
| <div class="note">Most effective stretch to do after bench pressing. Also worth doing on non-gym days — any doorframe works.</div> | |
| </div> | |
| </div> | |
| <!-- Overhead tricep stretch --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S2</span> | |
| <span class="card-name">Overhead Tricep Stretch</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2 each side</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Raise one arm straight overhead, then bend the elbow so your hand drops behind your head.</li> | |
| <li>Use your opposite hand to gently press the elbow further back and down — light pressure only.</li> | |
| <li>You should feel the stretch along the back of the upper arm. Keep your head neutral — don't let it push forward.</li> | |
| <li>Hold 60 sec, switch sides. Repeat for a second round.</li> | |
| </ol> | |
| <div class="note">Triceps cross both the elbow and the shoulder joint, so this stretch is longer than it looks. Relevant after Monday's tricep pushdown work carries over to Wednesday.</div> | |
| </div> | |
| </div> | |
| <!-- Bicep and forearm stretch --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S3</span> | |
| <span class="card-name">Standing Bicep + Forearm Stretch</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2 each side</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Extend one arm straight out to the side at shoulder height, palm facing up.</li> | |
| <li>Use your opposite hand to gently press the fingers of the extended hand downward — bending the wrist back. You'll feel this in the bicep and forearm simultaneously.</li> | |
| <li>Keep the arm straight and at shoulder height throughout. Don't let the elbow bend.</li> | |
| <li>Hold 60 sec, switch sides. Repeat for a second round.</li> | |
| </ol> | |
| <div class="note">Targets the bicep and the forearm flexors together — both loaded during curls. Also useful if you spend time typing or on your phone.</div> | |
| </div> | |
| </div> | |
| <!-- Chest opener --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S4</span> | |
| <span class="card-name">Chest Opener — Hands Clasped Behind Back</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Stand tall, clasp your hands behind your lower back.</li> | |
| <li>Squeeze your shoulder blades together and lift your chest upward.</li> | |
| <li>Optional: gently fold forward at the hips while keeping hands clasped — deepens the stretch across the chest and front of shoulders.</li> | |
| <li>Hold 60 sec. Repeat for a second round.</li> | |
| </ol> | |
| <div class="note">Good closing stretch for any upper body session — resets the shoulders into a more open position after pressing work.</div> | |
| </div> | |
| </div> | |
| ``` | |
| </div> | |
| </div> | |
| <!-- THURSDAY --> | |
| <div class="day-panel" id="thu"> | |
| <div class="day-header"> | |
| <h2>Lower Body + Core</h2> | |
| <div class="subtitle">Hip Flexors · Posterior Chain + Hip Flexor Release</div> | |
| </div> | |
| <div class="section"> | |
| <div class="section-label lift">Lifting — ~20 min</div> | |
| <div class="note" style="margin-bottom:16px; border-color: var(--lift)"><strong>Tempo:</strong> Lift in 1–2 sec. Lower in 2–3 sec — resist the weight, don't drop it. 1 sec pause at peak contraction. ~4–5 sec per rep total.</div> | |
| ``` | |
| <!-- RDL --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">01</span> | |
| <span class="card-name">Romanian Deadlift</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">3 × 10</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">3 sets × 10 reps — rest 60–90 sec between sets</div> | |
| <ol class="steps"> | |
| <li>Stand holding dumbbells in front of your thighs, feet hip-width apart, slight bend in knees.</li> | |
| <li>Hinge at the hips — push them back as if closing a car door with your backside. The weights slide down your legs.</li> | |
| <li>Keep the weights close to your legs throughout. Your back stays flat — no rounding.</li> | |
| <li>Lower until you feel a strong stretch in your hamstrings — typically mid-shin level, though this varies by flexibility.</li> | |
| <li>Drive your hips forward to return to standing. Squeeze glutes at the top.</li> | |
| </ol> | |
| <div class="note"><strong>Key distinction from a regular deadlift:</strong> the weight doesn't touch the floor. The movement is entirely controlled by your hamstrings and glutes. If you feel it in your lower back, reduce the range of motion.</div> | |
| </div> | |
| </div> | |
| <!-- Goblet squat Thu --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">02</span> | |
| <span class="card-name">Goblet Squat</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">2 × 8</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">2 sets × 8 reps — rest 60 sec between sets</div> | |
| <ol class="steps"> | |
| <li>Hold a single dumbbell vertically at chest height — both hands cupping the top end.</li> | |
| <li>Feet shoulder-width apart, toes turned slightly out.</li> | |
| <li>Sit back and down, chest up, dumbbell close to your body. Lower to comfortable depth.</li> | |
| <li>Drive through heels to stand. Don't let knees cave inward on the way up.</li> | |
| </ol> | |
| <div class="note">Same exercise as Wednesday. Two sessions per week on this movement will build the quad and glute strength that underpins most other lower body work.</div> | |
| </div> | |
| </div> | |
| <!-- Glute Bridge --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">03</span> | |
| <span class="card-name">Glute Bridge</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-lift">2 × 12</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <div class="prescription">2 sets × 12 reps — rest 45 sec between sets</div> | |
| <ol class="steps"> | |
| <li>Lie on your back, knees bent, feet flat on the floor hip-width apart.</li> | |
| <li>Press through your heels and raise your hips until your body forms a straight line from knees to shoulders.</li> | |
| <li>Squeeze your glutes firmly at the top — hold for 1 second.</li> | |
| <li>Lower with control. Don't let your hips crash to the floor between reps.</li> | |
| </ol> | |
| <div class="note">Directly relevant to hip flexor tightness: strengthening the glutes and posterior chain counters the imbalance caused by prolonged sitting. This is one of the more functional exercises in this program.</div> | |
| </div> | |
| </div> | |
| ``` | |
| </div> | |
| <div class="section"> | |
| <div class="section-label stretch">Stretching — ~10 min</div> | |
| <div class="note" style="margin-bottom:16px; border-color: var(--stretch)"><strong>Protocol:</strong> 60 seconds each hold, 2 rounds. Hip flexors are primary focus — they are likely the main driver of your leg tightness after long days.</div> | |
| ``` | |
| <!-- Kneeling lunge --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S1</span> | |
| <span class="card-name">Kneeling Lunge Hip Flexor Stretch</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2 each side</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Start in a lunge: one knee on the floor (use a folded towel or mat), front foot flat on the floor, front knee at roughly 90 degrees.</li> | |
| <li>Keeping your torso upright, shift your weight forward slowly until you feel a stretch in the front of the back hip.</li> | |
| <li>Don't lean forward — the sensation should be in the hip, not the lower back.</li> | |
| <li>Hold 60 sec, switch sides. Repeat for a second round.</li> | |
| </ol> | |
| <div class="note">This is the highest-priority stretch in this program given your reported tightness. It can also be done at home on any day without equipment — worth adding on non-gym days if tightness is noticeable.</div> | |
| </div> | |
| </div> | |
| <!-- Standing quad --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S2</span> | |
| <span class="card-name">Standing Quad Pull</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2 each side</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Stand on one leg. Bend the other knee and bring the heel toward your glute.</li> | |
| <li>Hold your ankle with your hand — grip the ankle, not the foot.</li> | |
| <li>Keep your knees together and stand tall. Don't lean forward or arch your back.</li> | |
| <li>Hold 60 sec, switch sides. Repeat for a second round. Use a wall for balance if needed.</li> | |
| </ol> | |
| </div> | |
| </div> | |
| <!-- Seated spinal twist --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S3</span> | |
| <span class="card-name">Seated Spinal Twist</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2 each side</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Sit on the floor with both legs extended in front of you.</li> | |
| <li>Bend one knee, cross that foot over the opposite leg, and place it flat on the floor beside the knee.</li> | |
| <li>Place your opposite elbow on the outside of the bent knee.</li> | |
| <li>Sit tall and rotate your torso in that direction, looking over your shoulder. The elbow on the knee acts as a lever — use it gently.</li> | |
| <li>Hold 60 sec, switch sides. Repeat for a second round.</li> | |
| </ol> | |
| <div class="note">Works the thoracic spine and outer hip simultaneously. Particularly useful after deadlifts, which load the lumbar spine under compression.</div> | |
| </div> | |
| </div> | |
| <!-- Knees to chest rock --> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"> | |
| <span class="card-num">S4</span> | |
| <span class="card-name">Lying Knees-to-Chest Rock</span> | |
| </div> | |
| <div class="card-meta"> | |
| <span class="tag tag-stretch">60s × 2</span> | |
| <span class="chevron">▼</span> | |
| </div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Lie flat on your back. Draw both knees toward your chest, holding behind your knees or your shins.</li> | |
| <li>Slowly rock side to side — gentle, rhythmic motion. Let gravity do the work.</li> | |
| <li>This should feel like a release, not a stretch. If anything feels sharp, stop.</li> | |
| <li>60 sec. Repeat for a second round. Good final exercise for the week — passive and low-effort.</li> | |
| </ol> | |
| <div class="note">End-of-week decompression for the lumbar spine. No technique requirements — just relax into it.</div> | |
| </div> | |
| </div> | |
| ``` | |
| </div> | |
| </div> | |
| <!-- DAILY --> | |
| <div class="day-panel" id="daily"> | |
| <div class="day-header"> | |
| <h2>Daily Stretches</h2> | |
| <div class="subtitle">Morning · Evening — ~10 min — targets leg tightness</div> | |
| </div> | |
| <div class="section"> | |
| <div class="section-label stretch">Morning — on waking</div> | |
| <div class="note" style="margin-bottom:16px; border-color: var(--stretch)"><strong>Protocol:</strong> Do these before getting up or immediately after. 60 seconds each, one round. Goal is to mobilize, not fully stretch — the body is cold. Gentle is correct here.</div> | |
| ``` | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"><span class="card-num">M1</span><span class="card-name">Lying Knees-to-Chest Rock</span></div> | |
| <div class="card-meta"><span class="tag tag-stretch">60s</span><span class="chevron">▼</span></div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Still lying in bed or on the floor. Draw both knees toward your chest, holding behind your knees or shins.</li> | |
| <li>Rock gently side to side — slow, rhythmic. Let the lower back release.</li> | |
| <li>This is a mobilization, not a stretch. Don't force anything. Just move.</li> | |
| </ol> | |
| <div class="note">First movement of the day. Decompresses the lumbar spine after a night of stillness — directly relevant to morning leg tightness, which often originates in the lower back and hip flexors rather than the legs themselves.</div> | |
| </div> | |
| </div> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"><span class="card-num">M2</span><span class="card-name">Supine Figure-Four</span></div> | |
| <div class="card-meta"><span class="tag tag-stretch">60s each side</span><span class="chevron">▼</span></div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Lie on your back, knees bent, feet flat.</li> | |
| <li>Cross one ankle over the opposite knee. Let the crossed knee fall open — gravity only, no forcing.</li> | |
| <li>For more depth: draw the uncrossed thigh gently toward your chest. Stop where you feel resistance.</li> | |
| <li>60 sec each side.</li> | |
| </ol> | |
| <div class="note">Hip external rotators and piriformis are commonly tight after sleep. This is the gentlest way to begin releasing them before standing.</div> | |
| </div> | |
| </div> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"><span class="card-num">M3</span><span class="card-name">Standing Doorframe Hip Flexor Stretch</span></div> | |
| <div class="card-meta"><span class="tag tag-stretch">45s each side</span><span class="chevron">▼</span></div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Stand in a doorway or next to a wall. Step one foot forward into a short lunge stance — both feet flat on the floor, no kneeling.</li> | |
| <li>Tuck your pelvis slightly (think: flatten your lower back) and shift weight gently forward until you feel the front of the back hip engage.</li> | |
| <li>Hold the doorframe for balance. Keep torso upright.</li> | |
| <li>45 sec each side — slightly shorter than gym version since the body is still warming up.</li> | |
| </ol> | |
| <div class="note">Standing version of the gym kneeling lunge stretch — no mat or floor required. Fits naturally into a doorway en route to the bathroom or kitchen.</div> | |
| </div> | |
| </div> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"><span class="card-num">M4</span><span class="card-name">Standing Calf + Hamstring Stretch</span></div> | |
| <div class="card-meta"><span class="tag tag-stretch">45s each side</span><span class="chevron">▼</span></div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Stand facing a wall. Place both hands on the wall at chest height.</li> | |
| <li>Step one foot back — heel flat on the floor, leg straight. Lean gently toward the wall until you feel a stretch in the calf of the back leg.</li> | |
| <li>For the hamstring: bend the front knee slightly more and hinge your hips back — the stretch shifts from calf to the back of the thigh.</li> | |
| <li>45 sec each side. Two targets in one position.</li> | |
| </ol> | |
| <div class="note">Calves are commonly overlooked as a source of leg tightness — they connect into the Achilles and plantar fascia and contribute to whole-leg tension. Worth addressing in the morning when tightness is most pronounced.</div> | |
| </div> | |
| </div> | |
| ``` | |
| </div> | |
| <div class="section"> | |
| <div class="section-label stretch">Evening — before bed</div> | |
| <div class="note" style="margin-bottom:16px; border-color: var(--stretch)"><strong>Protocol:</strong> 60–90 seconds each, one round. Body is warmer at end of day — this is when the most tissue change can happen. Move into the stretch slowly and hold.</div> | |
| ``` | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"><span class="card-num">E1</span><span class="card-name">Kneeling Hip Flexor Stretch</span></div> | |
| <div class="card-meta"><span class="tag tag-stretch">90s each side</span><span class="chevron">▼</span></div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>One knee on the floor (use a folded towel), front foot flat, front knee at 90 degrees.</li> | |
| <li>Keeping torso upright, shift weight forward slowly until you feel the stretch in the front of the back hip.</li> | |
| <li>90 seconds each side. Evening is when this stretch is most productive — the hip flexors have been loaded all day and are at peak tightness.</li> | |
| </ol> | |
| <div class="note">The single highest-priority stretch in this program for your reported symptoms. 90 seconds is the target here — research supports longer holds for hip flexor tissue specifically.</div> | |
| </div> | |
| </div> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"><span class="card-num">E2</span><span class="card-name">Seated Toe Touch</span></div> | |
| <div class="card-meta"><span class="tag tag-stretch">90s</span><span class="chevron">▼</span></div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Sit on the floor, both legs extended in front of you.</li> | |
| <li>Hinge forward from the hips and reach toward your feet. Hold wherever the stretch is felt.</li> | |
| <li>At end of day the hamstrings will be tighter than in the morning — don't force the range. Let gravity do the work over the full 90 seconds.</li> | |
| </ol> | |
| <div class="note">Evening version of the gym stretch. The longer hold here is deliberate — this is when tissue is most responsive to lengthening work.</div> | |
| </div> | |
| </div> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"><span class="card-num">E3</span><span class="card-name">Seated Spinal Twist</span></div> | |
| <div class="card-meta"><span class="tag tag-stretch">60s each side</span><span class="chevron">▼</span></div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Sit on the floor, both legs extended. Bend one knee, cross that foot to the outside of the opposite knee, place it flat on the floor.</li> | |
| <li>Place your opposite elbow on the outside of the bent knee and rotate your torso, looking over your shoulder.</li> | |
| <li>Sit tall throughout — don't slump. 60 sec each side.</li> | |
| </ol> | |
| <div class="note">Releases thoracic and lumbar rotation — useful after a day of sitting. Also decompresses the spine before lying down to sleep.</div> | |
| </div> | |
| </div> | |
| <div class="exercise-card" onclick="toggleCard(this)"> | |
| <div class="card-header"> | |
| <div class="card-header-left"><span class="card-num">E4</span><span class="card-name">Lying Knees-to-Chest Rock</span></div> | |
| <div class="card-meta"><span class="tag tag-stretch">90s</span><span class="chevron">▼</span></div> | |
| </div> | |
| <div class="card-body"> | |
| <ol class="steps"> | |
| <li>Lie on your back. Draw both knees toward your chest, holding behind your knees or shins.</li> | |
| <li>Rock gently side to side — slow and rhythmic. Let everything release.</li> | |
| <li>No technique requirements. Just relax into it for the full 90 seconds.</li> | |
| </ol> | |
| <div class="note">Good final movement before sleep. Mirrors the morning opener — bookending the day with lumbar decompression addresses the tightness cycle at both ends.</div> | |
| </div> | |
| </div> | |
| ``` | |
| </div> | |
| </div> | |
| <script> | |
| function showDay(day, el) { | |
| document.querySelectorAll('.day-panel').forEach(p => p.classList.remove('active')); | |
| document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); | |
| document.getElementById(day).classList.add('active'); | |
| el.classList.add('active'); | |
| } | |
| function toggleCard(card) { | |
| card.classList.toggle('open'); | |
| } | |
| </script> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment