Files
ash-pages/workout/2026-04-27.html
T

372 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<base href="/ash/">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Workout: Day A — 2026-04-27</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: #0f0f0f;
color: #e0e0e0;
height: 100%;
overflow: hidden;
}
/* Page: horizontal layout. Sidebar is top-level so it goes to top */
.page {
display: flex;
flex-direction: row;
height: 100vh;
max-width: 100%;
overflow: hidden;
}
/* Left side: header + workout */
.left {
flex: 1;
display: flex;
flex-direction: column;
min-width: 0;
overflow: hidden;
}
/* Header */
.header {
padding: 16px 24px 8px;
flex-shrink: 0;
}
.breadcrumb { color: #666; font-size: 0.8rem; margin-bottom: 8px; }
.breadcrumb a { color: #888; text-decoration: none; }
.breadcrumb a:hover { color: #f97316; }
h1 { font-size: 1.6rem; color: #f97316; margin-bottom: 2px; }
.date-header { color: #888; font-size: 0.85rem; margin-bottom: 6px; }
.day-badge { display: inline-block; background: rgba(249, 115, 22, 0.2); color: #f97316; padding: 3px 10px; border-radius: 12px; font-size: 0.8rem; font-weight: 500; }
/* Main content area */
.main {
flex: 1;
overflow-y: auto;
padding: 0 24px 16px;
}
/* Workout column */
.section { margin-bottom: 20px; }
h2 { font-size: 1rem; color: #f97316; margin-bottom: 10px; font-weight: 600; }
.table {
background: rgba(255,255,255,0.04);
border: 1px solid rgba(255,255,255,0.08);
border-radius: 10px;
overflow: hidden;
}
.table table { width: 100%; border-collapse: collapse; }
.table th { background: rgba(255,255,255,0.06); padding: 8px 12px; text-align: left; font-weight: 500; font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.5px; }
.table td { padding: 10px 12px; border-top: 1px solid rgba(255,255,255,0.06); font-size: 0.9rem; color: #e0e0e0; vertical-align: top; }
.exercise-name { font-weight: 500; }
.exercise-name a { color: #e0e0e0; text-decoration: none; }
.exercise-name a:hover { color: #4a9eff; }
.reps { color: #e0e0e0; font-size: 0.85rem; }
.weight { color: #e0e0e0; font-size: 0.85rem; }
.form-note { color: #888; font-size: 0.8rem; font-style: italic; }
.note { background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); border-radius: 10px; padding: 12px; margin-top: 12px; color: #888; font-size: 0.8rem; }
.back-link { display: inline-block; color: #f97316; text-decoration: none; font-size: 0.8rem; margin-top: 16px; margin-bottom: 24px; }
.back-link:hover { color: #ff8c42; }
/* Muscle tags */
.exercise-muscles { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 4px; }
.muscle-tag { font-size: 0.65rem; padding: 2px 8px; border-radius: 10px; font-weight: 500; cursor: pointer; transition: all 0.2s; border: 2px solid transparent; user-select: none; }
.muscle-tag:hover { transform: scale(1.08); filter: brightness(1.2); }
.muscle-tag.active { border-color: currentColor; box-shadow: 0 0 10px currentColor; transform: scale(1.1); }
.muscle-tag.deltoid { background: rgba(100, 181, 246, 0.25); color: #64b5f6; }
.muscle-tag.pectoralis { background: rgba(229, 115, 115, 0.25); color: #e57373; }
.muscle-tag.trapezius { background: rgba(129, 199, 132, 0.25); color: #81c784; }
.muscle-tag.latissimus { background: rgba(129, 199, 132, 0.25); color: #81c784; }
.muscle-tag.triceps { background: rgba(255, 183, 77, 0.25); color: #ffb74d; }
.muscle-tag.biceps { background: rgba(255, 183, 77, 0.25); color: #ffb74d; }
.muscle-tag.rectus-abdominis { background: rgba(161, 136, 127, 0.25); color: #a1887f; }
.muscle-tag.obliques { background: rgba(161, 136, 127, 0.25); color: #a1887f; }
.muscle-tag.quadriceps { background: rgba(144, 164, 174, 0.25); color: #90a4ae; }
.muscle-tag.hamstrings { background: rgba(144, 164, 174, 0.25); color: #90a4ae; }
.muscle-tag.glutes { background: rgba(144, 164, 174, 0.25); color: #90a4ae; }
.muscle-tag.gastrocnemius { background: rgba(144, 164, 174, 0.25); color: #90a4ae; }
.muscle-tag.serratus { background: rgba(229, 115, 115, 0.25); color: #e57373; }
.muscle-tag.rhomboids { background: rgba(129, 199, 132, 0.25); color: #81c784; }
.muscle-tag.erector-spinae { background: rgba(161, 136, 127, 0.25); color: #a1887f; }
.muscle-tag.core { background: rgba(186, 104, 200, 0.25); color: #ba68c8; }
.muscle-tag.shoulders { background: rgba(100, 181, 246, 0.25); color: #64b5f6; }
.muscle-tag.forearms { background: rgba(255, 183, 77, 0.25); color: #ffb74d; }
/* Anatomy sidebar — top-level, goes to top of page */
.anatomy-column {
width: 360px;
flex-shrink: 0;
display: flex;
flex-direction: column;
padding: 16px 24px 16px 0;
overflow-y: auto;
}
.anatomy-section {
background: rgba(255,255,255,0.04);
border: 1px solid rgba(255,255,255,0.08);
border-radius: 10px;
padding: 12px;
}
.anatomy-header { margin-bottom: 10px; }
.anatomy-title { font-size: 0.85rem; color: #f97316; font-weight: 600; }
.anatomy-diagrams {
display: flex;
flex-direction: column;
gap: 10px;
}
.diagram-container {
background: #ffffff;
border-radius: 8px;
padding: 8px;
text-align: center;
border: 2px solid transparent;
transition: all 0.3s ease;
}
.diagram-container h3 { font-size: 0.7rem; color: #888; margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px; }
.diagram-container img {
width: auto;
max-width: 100%;
height: auto;
max-height: 35vh;
object-fit: contain;
display: block;
margin: 0 auto;
}
.diagram-container.highlighted { box-shadow: 0 0 25px rgba(249, 115, 22, 0.6); border-color: rgba(249, 115, 22, 0.8); transform: scale(1.01); }
/* Mobile: hide sidebar, stack normally */
@media (max-width: 1100px) {
html, body { height: auto; overflow: auto; }
.page { flex-direction: column; height: auto; }
.left { height: auto; }
.main { padding: 0 16px 16px; }
.anatomy-column { display: none; }
.header { padding: 16px 16px 8px; }
}
/* TV adjustments */
@media (min-width: 1600px) {
.header { padding: 20px 32px 12px; }
.main { padding: 0 32px 20px; }
h1 { font-size: 2rem; }
.day-badge { font-size: 0.9rem; padding: 4px 12px; }
.table td { padding: 12px 14px; font-size: 1rem; }
.exercise-name { font-size: 1.1rem; }
.reps, .weight { font-size: 0.95rem; }
.muscle-tag { font-size: 0.75rem; padding: 3px 10px; }
.anatomy-column { width: 400px; padding: 20px 32px 20px 0; }
}
@keyframes pulse { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.6; } }
.wake-locked { position: fixed; bottom: 20px; right: 20px; background: rgba(249, 115, 22, 0.9); color: white; padding: 8px 16px; border-radius: 20px; font-size: 0.85rem; animation: pulse 2s infinite; display: none; z-index: 1000; }
</style>
</head>
<body>
<div class="page">
<!-- LEFT SIDE: header + workout -->
<div class="left">
<div class="header">
<p class="breadcrumb"><a href="../">Ash Pages</a> / <a href="index.html">Workouts</a> /</p>
<h1>💪 Workout Day A</h1>
<div class="date-header">Monday, April 27, 2026</div>
<div class="day-badge">Day A — Upper/Lower Focus</div>
</div>
<div class="main">
<div class="workout-column" id="workoutColumn">
<!-- Warmup -->
<div class="section">
<h2>🔥 Warmup</h2>
<div class="note">5 min treadmill walk + arm circles + hip circles</div>
</div>
<!-- Main workout table -->
<div class="section">
<h2>Main Workout</h2>
<div class="table">
<table>
<thead><tr><th>#</th><th>Exercise</th><th>Reps</th><th>Weight</th><th>Muscles</th></tr></thead>
<tbody>
<tr>
<td>1</td>
<td class="exercise-name"><a href="https://www.youtube.com/watch?v=bDCeXbMJVNs" target="_blank">KB Swings (two-arm)</a></td>
<td class="reps">10</td>
<td class="weight">20 lb KB</td>
<td><div class="exercise-muscles"><span class="muscle-tag glutes">Glutes</span><span class="muscle-tag hamstrings">Hamstrings</span><span class="muscle-tag core">Core</span></div></td>
</tr>
<tr>
<td>2</td>
<td class="exercise-name"><a href="https://www.youtube.com/watch?v=FSYrZjBikqs" target="_blank">Bench DB Press</a></td>
<td class="reps">15</td>
<td class="weight">10 lb pair</td>
<td><div class="exercise-muscles"><span class="muscle-tag pectoralis">Pecs</span><span class="muscle-tag deltoid">Delts</span><span class="muscle-tag triceps">Triceps</span></div></td>
</tr>
<tr>
<td>3</td>
<td class="exercise-name"><a href="https://www.youtube.com/watch?v=aNDUbH_Uv4g" target="_blank">Goblet Squats</a></td>
<td class="reps">15</td>
<td class="weight">20 lb KB</td>
<td><div class="exercise-muscles"><span class="muscle-tag quadriceps">Quads</span><span class="muscle-tag glutes">Glutes</span><span class="muscle-tag core">Core</span></div></td>
</tr>
<tr>
<td>4</td>
<td class="exercise-name"><a href="https://www.youtube.com/watch?v=M2rwvNhTOu0" target="_blank">Overhead DB Press</a></td>
<td class="reps">10</td>
<td class="weight">10 lb pair</td>
<td><div class="exercise-muscles"><span class="muscle-tag deltoid">Delts</span><span class="muscle-tag triceps">Triceps</span><span class="muscle-tag trapezius">Traps</span></div></td>
</tr>
<tr>
<td>5</td>
<td class="exercise-name"><a href="https://www.youtube.com/watch?v=KRN38chlkds" target="_blank">One-arm Rows</a></td>
<td class="reps">10/side</td>
<td class="weight">12 lb</td>
<td><div class="exercise-muscles"><span class="muscle-tag latissimus">Lats</span><span class="muscle-tag rhomboids">Rhomboids</span><span class="muscle-tag biceps">Biceps</span></div></td>
</tr>
<tr>
<td>6</td>
<td class="exercise-name">DB Lunges</td>
<td class="reps">6/leg</td>
<td class="weight">10 lb pair</td>
<td><div class="exercise-muscles"><span class="muscle-tag quadriceps">Quads</span><span class="muscle-tag glutes">Glutes</span><span class="muscle-tag hamstrings">Hamstrings</span></div></td>
</tr>
</tbody>
</table>
</div>
<div class="note"><strong>Structure:</strong> 3 rounds, 6090s rest between rounds</div>
</div>
<!-- Core Finisher -->
<div class="section">
<h2>🧱 Core Finisher</h2>
<div class="table">
<table>
<thead><tr><th>#</th><th>Exercise</th><th>Reps/Time</th><th>Weight</th><th>Muscles</th></tr></thead>
<tbody>
<tr>
<td>1</td>
<td class="exercise-name"><a href="https://www.youtube.com/watch?v=g_BYB0R-4Ws" target="_blank">Dead Bugs</a></td>
<td class="reps">10/side</td>
<td class="weight">bodyweight</td>
<td><div class="exercise-muscles"><span class="muscle-tag rectus-abdominis">Abs</span><span class="muscle-tag core">Core</span></div></td>
</tr>
<tr>
<td>2</td>
<td class="exercise-name"><a href="https://www.youtube.com/watch?v=wkD8rjkodUI" target="_blank">Russian Twists</a></td>
<td class="reps">20 total</td>
<td class="weight">8 lb KB or 10 lb DB</td>
<td><div class="exercise-muscles"><span class="muscle-tag obliques">Obliques</span><span class="muscle-tag rectus-abdominis">Abs</span></div></td>
</tr>
<tr>
<td>3</td>
<td class="exercise-name"><a href="https://www.youtube.com/watch?v=ASdvN_XEl_c" target="_blank">Plank Hold</a></td>
<td class="reps">3045s</td>
<td class="weight">bodyweight</td>
<td><div class="exercise-muscles"><span class="muscle-tag rectus-abdominis">Abs</span><span class="muscle-tag core">Core</span></div></td>
</tr>
</tbody>
</table>
</div>
<div class="note"><strong>Structure:</strong> 2 rounds, minimal rest. No rest between exercises — move through them.</div>
</div>
<a href="index.html" class="back-link">← Back to all workouts</a>
</div> <!-- /workout-column -->
</div> <!-- /main -->
</div> <!-- /left -->
<!-- RIGHT SIDE: anatomy sidebar -->
<div class="anatomy-column">
<div class="anatomy-section">
<div class="anatomy-header">
<div class="anatomy-title">📚 Muscle Reference</div>
</div>
<div class="anatomy-diagrams">
<div class="diagram-container" id="diagram-anterior">
<h3>Anterior (Front)</h3>
<img src="workout/muscles-anterior-labeled.png" alt="Anterior muscles">
</div>
<div class="diagram-container" id="diagram-posterior">
<h3>Posterior (Back)</h3>
<img src="workout/muscles-posterior-labeled.png" alt="Posterior muscles">
</div>
</div>
</div>
</div> <!-- /anatomy-column -->
</div> <!-- /page -->
<div class="wake-locked" id="wakeLockStatus">Screen locked for workout</div>
<script>
// Remote control: arrow keys scroll workout
const workoutCol = document.querySelector('.main');
const SCROLL_AMOUNT = 120;
document.addEventListener('keydown', (e) => {
if (e.key === 'ArrowDown' || e.key === 'Down') {
e.preventDefault();
workoutCol.scrollBy({ top: SCROLL_AMOUNT, behavior: 'smooth' });
} else if (e.key === 'ArrowUp' || e.key === 'Up') {
e.preventDefault();
workoutCol.scrollBy({ top: -SCROLL_AMOUNT, behavior: 'smooth' });
}
});
// Wake Lock
let wakeLock = null;
async function requestWakeLock() {
try {
wakeLock = await navigator.wakeLock.request('screen');
const status = document.getElementById('wakeLockStatus');
status.style.display = 'block';
status.textContent = '🔒 Screen locked for workout';
wakeLock.addEventListener('release', () => { status.style.display = 'none'; wakeLock = null; });
} catch (err) {
const status = document.getElementById('wakeLockStatus');
status.style.display = 'block';
status.textContent = '⚠️ Wake lock not available';
status.style.background = 'rgba(100, 100, 100, 0.9)';
}
}
const btn = document.createElement('button');
btn.textContent = '🔒 Lock Screen';
btn.style.cssText = 'position:fixed;bottom:20px;left:20px;background:#f97316;color:white;border:none;padding:10px 20px;border-radius:24px;font-size:1rem;cursor:pointer;z-index:1000;';
btn.addEventListener('click', () => {
if ('wakeLock' in navigator) {
requestWakeLock();
} else {
const status = document.getElementById('wakeLockStatus');
status.style.display = 'block';
status.textContent = '🔒 Screen locked (fullscreen)';
status.style.background = 'rgba(249, 115, 22, 0.9)';
document.documentElement.requestFullscreen?.();
}
});
document.body.appendChild(btn);
document.addEventListener('visibilitychange', async () => {
if (wakeLock !== null && document.visibilityState === 'visible') await requestWakeLock();
});
// Muscle tag click handler
document.querySelectorAll('.muscle-tag').forEach(tag => {
tag.addEventListener('click', function(e) {
e.preventDefault();
document.querySelectorAll('.muscle-tag').forEach(t => t.classList.remove('active'));
this.classList.add('active');
document.querySelectorAll('.diagram-container').forEach(c => c.classList.add('highlighted'));
setTimeout(() => {
document.querySelectorAll('.diagram-container').forEach(c => c.classList.remove('highlighted'));
this.classList.remove('active');
}, 3000);
});
});
</script>
</body>
</html>