Add running cheatsheet covering training from 5K to marathon

C Claude ยท 1 month ago 8a724618c2c811eb461872dd74a7c8f2cb7f3cea
Parent: 51f992ebd
Broad interactive reference with 13 sections: core principles, getting started, intensity zones, workout types, race distances, a focused 10K section, pacing strategy, form, gear, fueling, injury prevention, strength/recovery, and the mental game. https://claude.ai/code/session_015oNagAuokHxCesyLi5JCe4

1 file changed +1573 โˆ’0

Diff

diff --git a/running-cheatsheet.html b/running-cheatsheet.html
new file mode 100644
index 0000000..aa248a8
--- /dev/null
+++ b/running-cheatsheet.html
@@ -0,0 +1,1573 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+  <meta charset="utf-8"/>
+  <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
+  <title>
+   Running Cheatsheet - Train Smarter from 5K to Marathon
+  </title>
+  <link href="data:image/svg+xml,&lt;svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22&gt;&lt;text y=%22.9em%22 font-size=%2290%22&gt;๐Ÿƒ&lt;/text&gt;&lt;/svg&gt;" rel="icon"/>
+  <!-- SEO Meta Description -->
+  <meta content="Interactive running cheatsheet covering training principles, intensity zones, workout types, pacing, form, gear, fueling, injury prevention, and a focused 10K race plan." name="description"/>
+  <meta content="running, 10K training, race training, running workouts, running form, marathon training, half marathon, running injuries, pacing, running gear, fueling, heart rate zones" name="keywords"/>
+  <!-- Canonical URL -->
+  <link href="https://cheatsheets.davidveksler.com/running-cheatsheet.html" rel="canonical"/>
+  <!-- Social Media Metadata -->
+  <meta content="Running Cheatsheet - Train Smarter from 5K to Marathon" property="og:title"/>
+  <meta content="A broad visual guide to running: training principles, intensity zones, workouts, race distances, pacing, form, gear, fueling, injury prevention, recovery, and a 10K focus." property="og:description"/>
+  <meta content="website" property="og:type"/>
+  <meta content="https://cheatsheets.davidveksler.com/running-cheatsheet.html" property="og:url"/>
+  <meta content="Diagram of core running concepts including training zones, workouts, pacing, form, gear, and injury prevention." property="og:image:alt"/>
+  <meta content="David Veksler Cheatsheets" property="og:site_name"/>
+  <meta content="summary_large_image" name="twitter:card"/>
+  <meta content="Running Cheatsheet - Train Smarter from 5K to Marathon" name="twitter:title"/>
+  <meta content="Broad visual guide to running: training zones, workouts, pacing, form, gear, fueling, injury prevention, recovery, and a 10K race plan." name="twitter:description"/>
+  <meta content="Key pillars of effective running training." name="twitter:image:alt"/>
+  <meta content="@heroiclife" name="twitter:creator"/>
+  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"/>
+  <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css" rel="stylesheet"/>
+  <script src="https://cdn.jsdelivr.net/npm/[email protected]/leader-line.min.js">
+  </script>
+  <style>
+   :root {
+            --bs-body-bg: #f5f7fa;
+            --bs-primary: #fb8c00;
+            --bs-primary-dark: #e65100;
+            --bs-primary-light: #ffe0b2;
+            --card-border-color: #adb5bd;
+            --card-shadow-color: rgba(40, 30, 0, .1);
+            --text-color-main: #212529;
+            --text-color-secondary: #495057;
+            --text-color-highlight: var(--bs-primary-dark);
+            --blueprint-grid-color: rgba(108, 117, 125, 0.08);
+            --schema-bg-color: rgba(255, 255, 255, 0.78);
+            --schema-border-color: #ffcc80;
+
+            /* --- Running Category Colors --- */
+            --run-color-philosophy: #37474F;   /* Dark Slate - Core Principles */
+            --run-color-foundation: #1E88E5;   /* Blue - Getting Started */
+            --run-color-zones: #8E24AA;        /* Purple - Intensity & Zones */
+            --run-color-workouts: #E53935;     /* Red - Key Workout Types */
+            --run-color-distances: #00897B;    /* Teal - Race Distances */
+            --run-color-race: #FB8C00;         /* Orange - 10K Focus */
+            --run-color-strategy: #3949AB;     /* Indigo - Pacing & Strategy */
+            --run-color-form: #43A047;         /* Green - Form & Technique */
+            --run-color-gear: #6D4C41;         /* Brown - Gear & Shoes */
+            --run-color-nutrition: #AFB42B;    /* Lime - Fueling & Hydration */
+            --run-color-injury: #D81B60;       /* Crimson - Injury Prevention */
+            --run-color-recovery: #00ACC1;     /* Cyan - Strength & Recovery */
+            --run-color-mindset: #5E35B1;      /* Deep Purple - Mental Game & Safety */
+
+            --db-category-color: var(--run-color-foundation);
+        }
+
+        @keyframes blueprintGridAnimation {
+            0% { background-position: 0 0, 0 0; }
+            100% { background-position: 60px 60px, -60px -60px; }
+        }
+
+        body {
+            background-color: var(--bs-body-bg);
+            background-image:
+                linear-gradient(to right, var(--blueprint-grid-color) 1px, transparent 1px),
+                linear-gradient(to bottom, var(--blueprint-grid-color) 1px, transparent 1px);
+            background-size: 60px 60px;
+            animation: blueprintGridAnimation 120s linear infinite;
+            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+            padding-bottom: 3rem;
+            font-size: 16px;
+            color: var(--text-color-main);
+            box-sizing: border-box;
+        }
+        *, *::before, *::after { box-sizing: inherit; }
+
+        .page-header {
+            background: linear-gradient(135deg, #fff3e0, var(--bs-primary-light));
+            padding: 2.5rem 1.5rem;
+            text-align: center;
+            border-bottom: 2px solid var(--schema-border-color);
+            margin-bottom: 3rem;
+            position: relative;
+            z-index: 10;
+            box-shadow: 0 4px 15px rgba(251, 140, 0, 0.12);
+        }
+        .page-header h1 {
+            color: var(--bs-primary-dark);
+            font-weight: 300;
+            letter-spacing: 0.5px;
+            margin-bottom: 0.5rem;
+            font-size: 2.8rem;
+        }
+        .page-header h1 .bi { font-size: 0.9em; vertical-align: -0.05em; margin-right: 0.3em;}
+        .page-header .lead { color: #343a40; font-size: 1.15rem; max-width: 820px; margin: auto; }
+        .header-meta { margin-top: 1rem; font-size: 0.9rem; color: var(--bs-primary-dark); }
+        .header-meta .badge { background-color: var(--bs-primary); font-weight: 600; }
+
+        .schema-container {
+            background-color: var(--schema-bg-color);
+            border: 2px solid var(--schema-border-color);
+            border-radius: 8px;
+            padding: 1.5rem 1.5rem 0.5rem 1.5rem;
+            margin-bottom: 2.5rem;
+            box-shadow: 0 5px 15px rgba(251, 140, 0, 0.07);
+            backdrop-filter: blur(4px);
+            position: relative;
+            transition: opacity 0.3s ease-in-out;
+        }
+        .schema-container.featured-section {
+            border-color: var(--run-color-race);
+            box-shadow: 0 5px 20px rgba(251, 140, 0, 0.25);
+        }
+
+        .section-title {
+            color: var(--db-category-color);
+            margin: -2.8rem 0 1.5rem 0;
+            font-weight: 600;
+            text-transform: uppercase;
+            letter-spacing: .08em;
+            font-size: 1.1rem;
+            border-bottom: none;
+            padding: 0.4rem 1rem;
+            background-color: var(--bs-body-bg);
+            display: inline-block;
+            position: relative;
+            left: 1rem;
+            z-index: 15;
+            border: 2px solid var(--schema-border-color);
+            border-bottom: none;
+            border-radius: 6px 6px 0 0;
+            transition: opacity 0.3s ease-in-out;
+        }
+        .section-title .featured-badge {
+            font-size: 0.7rem;
+            background: var(--run-color-race);
+            color: #fff;
+            padding: 0.1em 0.5em;
+            border-radius: 3px;
+            margin-left: 0.5em;
+            vertical-align: middle;
+            letter-spacing: 0.04em;
+        }
+
+        .info-card {
+            background: #fff;
+            border: 1px solid var(--card-border-color);
+            border-radius: 4px;
+            box-shadow: 0 3px 8px var(--card-shadow-color);
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+            transition: box-shadow 0.3s ease, opacity 0.3s ease, transform 0.2s ease;
+            position: relative;
+            z-index: 5;
+            opacity: 1;
+        }
+
+        #main-container.is-dimmed .schema-container:not(.is-highlighted-section) .info-card {
+             opacity: 0.35; transform: scale(0.98);
+        }
+         #main-container.is-dimmed .schema-container:not(.is-highlighted-section) > .section-title {
+             opacity: 0.4;
+         }
+
+         .info-card.is-highlighted {
+            opacity: 1 !important;
+            transform: scale(1.02) !important;
+            box-shadow: 0 0 0 3px var(--db-category-color), 0 8px 16px rgba(80, 50, 0, .2) !important;
+            z-index: 25 !important;
+         }
+         .info-card:not(.is-highlighted):hover {
+             box-shadow: 0 5px 12px rgba(120, 70, 0, .18);
+             transform: translateY(-2px);
+             z-index: 20;
+         }
+
+        .info-card .card-body { padding: 0; flex-grow: 1; display: flex; flex-direction: column; }
+        .info-card h5 {
+            color: #fff; background-color: var(--db-category-color);
+            font-size: 1rem; text-align: center; margin: 0; padding: 0.7rem 0.5rem;
+            font-weight: 600; display: flex; justify-content: center; align-items: center;
+            gap: .5rem; font-family: 'Segoe UI Semibold', Consolas, Menlo, Monaco, 'Courier New', monospace;
+            border-bottom: 1px solid var(--card-border-color);
+            border-radius: 3px 3px 0 0;
+        }
+         .info-card h5 .bi { font-size: 1.2em; color: #fff; opacity: 0.85; }
+         .card-content-wrapper { padding: 1rem; flex-grow: 1; display: flex; flex-direction: column; }
+        .info-card p.summary { font-size: .9rem; color: var(--text-color-secondary); margin-bottom: .8rem; flex-grow: 1; line-height: 1.6; }
+
+        .collapse-content { font-size: 0.9rem; border-top: 1px solid #e9ecef; padding-top: 1rem; margin-top: 1rem; color: var(--text-color-main); }
+        .collapse-content h6 { font-weight: 700; color: var(--text-color-highlight); margin-top: 0.8rem; margin-bottom: 0.3rem; font-size: 0.95rem; }
+        .collapse-content ul { padding-left: 0.5rem; margin-bottom: 0.8rem; list-style: none; }
+        .collapse-content li { margin-bottom: 0.6rem; padding-bottom: 0.6rem; font-size: 0.88rem; line-height: 1.5; border-bottom: 1px dotted #ced4da; position: relative; padding-left: 1.6rem; }
+        .collapse-content li:last-child { border-bottom: none; margin-bottom: 0; }
+         .collapse-content li::before {
+            content: "\F561";
+            font-family: "bootstrap-icons"; position: absolute; left: 0; top: 2px;
+            color: var(--db-category-color); opacity: 0.75; font-size: 1em;
+         }
+         .collapse-content li strong { color: var(--text-color-highlight); display: block; margin-bottom: 0.2rem; font-weight: 600; }
+         .collapse-content p { font-size: 0.9rem; margin-bottom: 0.6rem; line-height: 1.55; }
+         .collapse-content code { font-size: 0.85rem; color: var(--bs-primary-dark); background-color: #f8f9fa; padding: 0.1em 0.4em; border-radius: 3px; }
+         .collapse-content .action-guide-title {font-weight: bold; color: var(--bs-primary-dark); margin-top: 1rem; margin-bottom: 0.5rem; display: block;}
+         .collapse-content .important-note {font-weight: bold; color: var(--run-color-injury); margin-top:1rem; display:block;}
+
+        .row > * { margin-bottom: 2rem; }
+        footer { padding-top: 3rem; font-size: .85em; color: #6c757d; position: relative; z-index: 10; text-align: center; }
+
+        .details-toggle {
+            font-size: 0.8rem; margin-top: auto; align-self: flex-start;
+            padding: 0.3rem 0.6rem; color: var(--db-category-color);
+            border: 1px solid var(--db-category-color); background-color: transparent;
+            transition: background-color 0.2s ease, color 0.2s ease;
+            display: inline-flex; align-items: center; gap: 0.3em;
+            border-radius: 3px;
+        }
+         .details-toggle:hover { background-color: var(--db-category-color); color: white; }
+         .details-toggle .bi { transition: transform 0.2s ease-in-out; }
+         .details-toggle[aria-expanded="true"] .bi { transform: rotate(180deg); }
+
+        .term { font-weight: 600; color: var(--bs-primary-dark); background-color: var(--bs-primary-light); padding: 0.1em 0.35em; border-radius: 3px;}
+        a { color: var(--bs-primary); text-decoration: none; }
+        a:hover { color: var(--bs-primary-dark); text-decoration: underline; }
+        .collapse-content a { color: #b35900; }
+         .collapse-content a:hover { color: #804000; }
+
+        .leader-line { pointer-events: none; z-index: 20; transition: opacity 0.3s ease-in-out; }
+
+        /* --- Running Category Color Styling --- */
+        .section-philosophy, .card-philosophy { --db-category-color: var(--run-color-philosophy); }
+        .section-foundation, .card-foundation { --db-category-color: var(--run-color-foundation); }
+        .section-zones, .card-zones { --db-category-color: var(--run-color-zones); }
+        .section-workouts, .card-workouts { --db-category-color: var(--run-color-workouts); }
+        .section-distances, .card-distances { --db-category-color: var(--run-color-distances); }
+        .section-race, .card-race { --db-category-color: var(--run-color-race); }
+        .section-strategy, .card-strategy { --db-category-color: var(--run-color-strategy); }
+        .section-form, .card-form { --db-category-color: var(--run-color-form); }
+        .section-gear, .card-gear { --db-category-color: var(--run-color-gear); }
+        .section-nutrition, .card-nutrition { --db-category-color: var(--run-color-nutrition); }
+        .section-injury, .card-injury { --db-category-color: var(--run-color-injury); }
+        .section-recovery, .card-recovery { --db-category-color: var(--run-color-recovery); }
+        .section-mindset, .card-mindset { --db-category-color: var(--run-color-mindset); }
+
+        @media print {
+            body { animation: none; background-image: none; }
+            .details-toggle { display: none; }
+            .collapse-content { display: block !important; }
+            .info-card { box-shadow: none; break-inside: avoid; }
+            .schema-container { box-shadow: none; backdrop-filter: none; }
+        }
+  </style>
+  <meta content="images/running-cheatsheet.png" property="og:image"/>
+  <meta content="images/running-cheatsheet.png" name="twitter:image"/>
+  <script type="application/ld+json">
+  {
+    "@context": "https://schema.org",
+    "@type": "TechArticle",
+    "headline": "Running Cheatsheet - Train Smarter from 5K to Marathon",
+    "description": "A broad interactive running reference covering training principles, intensity zones, workout types, race distances, a focused 10K race plan, pacing, form, gear, fueling, injury prevention, recovery, and the mental game.",
+    "author": {"@type": "Person", "name": "David Veksler (AI Generated)"},
+    "publisher": {"@type": "Organization", "name": "David Veksler Cheatsheets"},
+    "datePublished": "2026-05-14",
+    "dateModified": "2026-05-14",
+    "keywords": "running, 10K training, running workouts, running form, marathon training, half marathon, running injuries, pacing, heart rate zones, running gear, fueling, recovery"
+  }
+  </script>
+ </head>
+ <body>
+  <header class="page-header">
+   <h1>
+    <i class="bi bi-stopwatch"></i>
+    Running Cheatsheet
+   </h1>
+   <p class="lead">
+    A broad, interactive reference for runners โ€” from first steps to race day. Covers training principles, intensity, workouts, pacing, form, gear, fueling, injury prevention, recovery, and the mental game, with a focused section on the <strong>10K</strong>.
+   </p>
+   <p class="header-meta">
+    <span class="badge">10K Focus</span> &nbsp;Principles scale to every distance: 5K, half marathon, marathon, and beyond.
+   </p>
+  </header>
+  <div class="container" id="main-container">
+
+   <!-- 0. CORE PRINCIPLES -->
+   <div class="schema-container section-philosophy" data-section-id="section-principles">
+    <h2 class="section-title" id="section-principles-title">Core Principles</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-philosophy" id="card-consistency">
+       <div class="card-body">
+        <h5><i class="bi bi-calendar-check"></i> Consistency Beats Intensity</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          The runner who shows up <span class="term">most days</span> for years beats the one who trains hard for six weeks and burns out. Fitness is built by accumulation.
+         </p>
+         <button aria-controls="collapseConsistency" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseConsistency" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseConsistency">
+        <h6>Why It Works</h6>
+        <p>Aerobic adaptations โ€” capillaries, mitochondria, heart stroke volume โ€” develop slowly and reward sustained, repeated stimulus. Sporadic hard efforts mostly produce soreness and injury.</p>
+        <ul>
+         <li><strong>Frequency first:</strong> 3โ€“5 runs/week, even short ones, beats one long heroic effort.</li>
+         <li><strong>Protect the streak:</strong> a 20-minute easy jog on a tired day keeps the habit alive.</li>
+         <li><strong>Think in months:</strong> meaningful gains show over 8โ€“16 week blocks, not single weeks.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-philosophy" id="card-progressive-overload">
+       <div class="card-body">
+        <h5><i class="bi bi-graph-up-arrow"></i> Progressive Overload</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          The body adapts to <span class="term">stress plus recovery</span>. Increase volume and intensity gradually so adaptation outpaces breakdown.
+         </p>
+         <button aria-controls="collapseOverload" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseOverload" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseOverload">
+        <h6>How to Apply It</h6>
+        <ul>
+         <li><strong>The ~10% guideline:</strong> raise weekly mileage by roughly 10% or less, then hold.</li>
+         <li><strong>One variable at a time:</strong> add distance <em>or</em> intensity in a given block, not both.</li>
+         <li><strong>Cutback weeks:</strong> every 3โ€“4 weeks, drop volume 20โ€“30% to absorb the work.</li>
+         <li><strong>Stress is cumulative:</strong> sleep, life stress, and heat all count against your recovery budget.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-philosophy" id="card-recovery-is-training">
+       <div class="card-body">
+        <h5><i class="bi bi-moon-stars"></i> Recovery Is Training</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          You don't get fitter <em>during</em> the run โ€” you get fitter while <span class="term">recovering</span> from it. Rest is not the absence of training; it's where adaptation happens.
+         </p>
+         <button aria-controls="collapseRecoveryPrinciple" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseRecoveryPrinciple" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseRecoveryPrinciple">
+        <h6>The Mindset Shift</h6>
+        <p>Skipping rest to "do more" usually does less โ€” it just defers the cost as fatigue or injury. Plan easy days and rest days as deliberately as hard days.</p>
+        <ul>
+         <li><strong>Hard/easy rhythm:</strong> never stack two hard days back-to-back.</li>
+         <li><strong>Sleep is the multiplier:</strong> most repair and hormonal adaptation happens overnight.</li>
+         <li><strong>Earned, not optional:</strong> a rest day after a hard week is part of the plan working.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 1. GETTING STARTED -->
+   <div class="schema-container section-foundation" data-section-id="section-getting-started">
+    <h2 class="section-title" id="section-getting-started-title">Getting Started</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-foundation" id="card-run-walk">
+       <div class="card-body">
+        <h5><i class="bi bi-person-walking"></i> Run-Walk Method</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Alternating <span class="term">run and walk intervals</span> lets beginners (and many veterans) build fitness while keeping impact and fatigue manageable.
+         </p>
+         <button aria-controls="collapseRunWalk" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseRunWalk" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseRunWalk">
+        <h6>How to Use It</h6>
+        <ul>
+         <li><strong>Start simple:</strong> e.g. run 1 min / walk 1โ€“2 min, repeated for 20โ€“30 min.</li>
+         <li><strong>Progress the ratio:</strong> gradually lengthen run segments as they feel easy.</li>
+         <li><strong>Not just for beginners:</strong> planned walk breaks can keep long-run pace and form fresher.</li>
+        </ul>
+        <p>"Couch to 5K" style programs are structured run-walk progressions over ~8โ€“10 weeks.</p>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-foundation" id="card-aerobic-base">
+       <div class="card-body">
+        <h5><i class="bi bi-bricks"></i> Build an Aerobic Base</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Before chasing speed, spend weeks accumulating <span class="term">easy aerobic miles</span>. The base is the engine every faster workout draws on.
+         </p>
+         <button aria-controls="collapseBase" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseBase" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseBase">
+        <h6>What the Base Builds</h6>
+        <ul>
+         <li><strong>Structural durability:</strong> tendons, ligaments, and bones adapt slower than the heart and lungs.</li>
+         <li><strong>Fat metabolism:</strong> easy volume trains the body to spare glycogen.</li>
+         <li><strong>Workout capacity:</strong> a bigger base lets you absorb more speedwork without breaking down.</li>
+        </ul>
+        <p>A typical base phase is 4โ€“8 weeks of mostly easy running before adding structured intensity.</p>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-foundation" id="card-frequency-rule">
+       <div class="card-body">
+        <h5><i class="bi bi-calendar3"></i> Frequency &amp; Ramp Rate</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Start with <span class="term">3โ€“4 runs per week</span> and grow volume slowly. How <em>often</em> you run matters more early on than how far.
+         </p>
+         <button aria-controls="collapseFrequency" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseFrequency" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseFrequency">
+        <h6>Sensible Progression</h6>
+        <ul>
+         <li><strong>3โ€“4 days to start:</strong> with rest or cross-train days between.</li>
+         <li><strong>Add a day before adding length:</strong> more frequent short runs beat fewer long ones early.</li>
+         <li><strong>~10% weekly cap:</strong> a loose ceiling, not a target โ€” repeat weeks freely.</li>
+         <li><strong>Cutback every 3โ€“4 weeks:</strong> let adaptation catch up to the load.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 2. INTENSITY & ZONES -->
+   <div class="schema-container section-zones" data-section-id="section-zones">
+    <h2 class="section-title" id="section-zones-title">Training Intensity &amp; Zones</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-zones" id="card-polarized">
+       <div class="card-body">
+        <h5><i class="bi bi-pie-chart"></i> Easy/Hard Polarization</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Run roughly <span class="term">80% easy, 20% hard</span>. The most common amateur mistake is making easy runs too fast and hard runs not hard enough.
+         </p>
+         <button aria-controls="collapsePolarized" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapsePolarized" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapsePolarized">
+        <h6>Why Polarize</h6>
+        <p>Easy running builds aerobic volume cheaply; hard running supplies a sharp stimulus. The "moderate" middle accumulates fatigue without either benefit โ€” the so-called gray zone.</p>
+        <ul>
+         <li><strong>Easy means easy:</strong> if in doubt, slow down โ€” ego is the enemy of recovery pace.</li>
+         <li><strong>Hard means hard:</strong> commit fully on the ~20% so the stimulus is real.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-zones" id="card-hr-zones">
+       <div class="card-body">
+        <h5><i class="bi bi-heart-pulse"></i> Heart Rate Zones</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          A common 5-zone model maps effort to <span class="term">% of max heart rate</span>, from recovery (Z1) to maximal (Z5). Useful for keeping easy days honest.
+         </p>
+         <button aria-controls="collapseHRZones" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseHRZones" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseHRZones">
+        <h6>Rough 5-Zone Guide (% max HR)</h6>
+        <ul>
+         <li><strong>Z1 ~50โ€“60%:</strong> recovery, very easy.</li>
+         <li><strong>Z2 ~60โ€“70%:</strong> easy aerobic โ€” most of your running.</li>
+         <li><strong>Z3 ~70โ€“80%:</strong> steady / "moderate" โ€” use sparingly.</li>
+         <li><strong>Z4 ~80โ€“90%:</strong> threshold / tempo.</li>
+         <li><strong>Z5 ~90โ€“100%:</strong> VO2max / interval effort.</li>
+        </ul>
+        <p>Estimate max HR with a field test rather than the rough <code>220 โˆ’ age</code> formula, which is often off by 10+ bpm.</p>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-zones" id="card-rpe-talk">
+       <div class="card-body">
+        <h5><i class="bi bi-chat-dots"></i> RPE &amp; Talk Test</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          No watch needed: <span class="term">perceived effort</span> and whether you can hold a conversation are reliable, free intensity gauges.
+         </p>
+         <button aria-controls="collapseRPE" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseRPE" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseRPE">
+        <h6>Quick Gauges</h6>
+        <ul>
+         <li><strong>RPE 1โ€“10 scale:</strong> easy runs ~3โ€“4, tempo ~6โ€“7, intervals ~8โ€“9.</li>
+         <li><strong>Talk test โ€” easy:</strong> full sentences comfortably.</li>
+         <li><strong>Talk test โ€” tempo:</strong> short phrases only.</li>
+         <li><strong>Talk test โ€” hard:</strong> a word or two at most.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 3. KEY WORKOUT TYPES -->
+   <div class="schema-container section-workouts" data-section-id="section-workouts">
+    <h2 class="section-title" id="section-workouts-title">Key Workout Types</h2>
+    <div class="row">
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-workouts" id="card-easy-runs">
+       <div class="card-body">
+        <h5><i class="bi bi-emoji-smile"></i> Easy &amp; Recovery Runs</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          The <span class="term">bulk of weekly volume</span>. Conversational pace that builds aerobic fitness while leaving you fresh.
+         </p>
+         <button aria-controls="collapseEasyRuns" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseEasyRuns" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseEasyRuns">
+        <h6>Purpose</h6>
+        <ul>
+         <li><strong>Aerobic development:</strong> the cheapest fitness you can buy.</li>
+         <li><strong>Recovery runs:</strong> even slower, short โ€” promote blood flow between hard days.</li>
+         <li><strong>Discipline:</strong> resist racing your easy runs.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-workouts" id="card-long-run">
+       <div class="card-body">
+        <h5><i class="bi bi-signpost-2"></i> Long Run</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          One longer effort weekly โ€” typically <span class="term">20โ€“30% of weekly volume</span> โ€” builds endurance and time on feet.
+         </p>
+         <button aria-controls="collapseLongRun" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseLongRun" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseLongRun">
+        <h6>Why It Matters</h6>
+        <ul>
+         <li><strong>Endurance &amp; fatigue resistance:</strong> teaches the body and mind to keep going.</li>
+         <li><strong>Mostly easy:</strong> some plans add late-run pace segments for race specificity.</li>
+         <li><strong>Cap the jump:</strong> extend gradually; the long run isn't a weekly race.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-workouts" id="card-tempo">
+       <div class="card-body">
+        <h5><i class="bi bi-speedometer"></i> Tempo / Threshold</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          <span class="term">Comfortably hard</span> running at or near lactate threshold โ€” roughly the pace you could hold for an hour.
+         </p>
+         <button aria-controls="collapseTempo" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseTempo" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseTempo">
+        <h6>The Threshold Stimulus</h6>
+        <ul>
+         <li><strong>Raises your sustainable pace:</strong> pushes back the point where lactate accumulates.</li>
+         <li><strong>Formats:</strong> a continuous 20โ€“40 min tempo, or "cruise intervals" (e.g. 3ร—10 min).</li>
+         <li><strong>Effort check:</strong> hard but controlled โ€” you should finish thinking you could do a bit more.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-workouts" id="card-intervals">
+       <div class="card-body">
+        <h5><i class="bi bi-lightning-charge"></i> Intervals &amp; Speed</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Short, fast repeats with recovery โ€” <span class="term">VO2max work</span>, plus strides, hills, and fartlek for power and economy.
+         </p>
+         <button aria-controls="collapseIntervals" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseIntervals" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseIntervals">
+        <h6>The Speed Toolbox</h6>
+        <ul>
+         <li><strong>VO2max intervals:</strong> e.g. 5โ€“6 ร— 3 min hard with equal jog recovery.</li>
+         <li><strong>Strides:</strong> 6โ€“8 ร— 15โ€“20 s relaxed acceleration โ€” cheap economy work.</li>
+         <li><strong>Hill repeats:</strong> strength + power with lower impact than flat sprints.</li>
+         <li><strong>Fartlek:</strong> unstructured "speed play" โ€” surge by feel between landmarks.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 4. RACE DISTANCES -->
+   <div class="schema-container section-distances" data-section-id="section-distances">
+    <h2 class="section-title" id="section-distances-title">Race Distances Overview</h2>
+    <div class="row">
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-distances" id="card-5k">
+       <div class="card-body">
+        <h5><i class="bi bi-1-circle"></i> 5K</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          <span class="term">3.1 mi / 5 km</span>. Fast, accessible, and forgiving on volume โ€” the classic entry race.
+         </p>
+         <button aria-controls="collapse5K" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapse5K" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapse5K">
+        <h6>Profile</h6>
+        <ul>
+         <li><strong>Demands:</strong> high-end aerobic power with a real speed component.</li>
+         <li><strong>Typical volume:</strong> ~15โ€“25 mi/week for recreational racers.</li>
+         <li><strong>Key work:</strong> VO2max intervals and short tempos.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-distances" id="card-10k-overview">
+       <div class="card-body">
+        <h5><i class="bi bi-2-circle"></i> 10K <span class="badge bg-warning text-dark">Your Race</span></h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          <span class="term">6.2 mi / 10 km</span>. The balance point of speed and endurance โ€” see the dedicated 10K section below.
+         </p>
+         <button aria-controls="collapse10KOverview" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapse10KOverview" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapse10KOverview">
+        <h6>Profile</h6>
+        <ul>
+         <li><strong>Demands:</strong> sustained near-threshold effort โ€” no hiding from either pace or distance.</li>
+         <li><strong>Typical volume:</strong> ~20โ€“35 mi/week recreationally.</li>
+         <li><strong>Key work:</strong> threshold tempos plus 10K/5K-pace intervals.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-distances" id="card-half">
+       <div class="card-body">
+        <h5><i class="bi bi-3-circle"></i> Half Marathon</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          <span class="term">13.1 mi / 21.1 km</span>. Hugely popular โ€” endurance-dominant but still brisk.
+         </p>
+         <button aria-controls="collapseHalf" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseHalf" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseHalf">
+        <h6>Profile</h6>
+        <ul>
+         <li><strong>Demands:</strong> a high aerobic ceiling and the durability for 90+ minutes.</li>
+         <li><strong>Typical volume:</strong> ~25โ€“45 mi/week recreationally.</li>
+         <li><strong>Key work:</strong> longer tempos, progression long runs, some practice fueling.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-distances" id="card-marathon-plus">
+       <div class="card-body">
+        <h5><i class="bi bi-infinity"></i> Marathon &amp; Beyond</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          <span class="term">26.2 mi</span> and ultramarathons. Volume, fueling, and pacing discipline dominate.
+         </p>
+         <button aria-controls="collapseMarathonPlus" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseMarathonPlus" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseMarathonPlus">
+        <h6>Profile</h6>
+        <ul>
+         <li><strong>Demands:</strong> deep endurance, glycogen management, and patience.</li>
+         <li><strong>Typical volume:</strong> ~35โ€“55+ mi/week recreationally; much more for competitive runners.</li>
+         <li><strong>Key work:</strong> long runs, marathon-pace segments, and rehearsed race-day fueling.</li>
+         <li><strong>Ultras:</strong> add terrain, hiking, time-on-feet, and aid-station strategy.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 5. 10K FOCUS (FEATURED) -->
+   <div class="schema-container section-race featured-section" data-section-id="section-10k-focus">
+    <h2 class="section-title" id="section-10k-focus-title">10K Focus <span class="featured-badge">Your Distance</span></h2>
+    <div class="row">
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-race" id="card-10k-demands">
+       <div class="card-body">
+        <h5><i class="bi bi-bullseye"></i> What the 10K Demands</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          A sustained effort around <span class="term">85โ€“90% intensity</span> for roughly 40โ€“60 minutes โ€” aerobic-dominant with a strong threshold edge.
+         </p>
+         <button aria-controls="collapse10KDemands" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapse10KDemands" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapse10KDemands">
+        <h6>The Physiology</h6>
+        <ul>
+         <li><strong>Sits near threshold:</strong> race pace hovers just above your lactate threshold โ€” manageable but unforgiving.</li>
+         <li><strong>Needs both ends:</strong> aerobic endurance to last, plus enough speed that race pace feels controlled.</li>
+         <li><strong>Mental profile:</strong> long enough to hurt, short enough that there's no time to recover from a mistake.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-race" id="card-10k-block">
+       <div class="card-body">
+        <h5><i class="bi bi-calendar-range"></i> 10K Training Block</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          A typical block is <span class="term">8โ€“12 weeks</span>: aerobic base, then threshold and pace work, then a short taper.
+         </p>
+         <button aria-controls="collapse10KBlock" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapse10KBlock" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapse10KBlock">
+        <h6>Sample Week Shape</h6>
+        <ul>
+         <li><strong>3โ€“5 easy runs:</strong> the aerobic backbone โ€” keep them genuinely easy.</li>
+         <li><strong>1 threshold session:</strong> tempo or cruise intervals.</li>
+         <li><strong>1 faster session:</strong> 10K- or 5K-pace intervals.</li>
+         <li><strong>1 long run:</strong> building toward ~8โ€“10 mi.</li>
+        </ul>
+        <p>Apply progressive overload across the block, with a cutback week every 3โ€“4 weeks.</p>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-race" id="card-10k-workouts">
+       <div class="card-body">
+        <h5><i class="bi bi-stopwatch-fill"></i> 10K Pace &amp; Key Workouts</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Set goal pace from a <span class="term">recent race or time trial</span>, then rehearse it in workouts so it feels familiar.
+         </p>
+         <button aria-controls="collapse10KWorkouts" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapse10KWorkouts" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapse10KWorkouts">
+        <h6>Workout Examples</h6>
+        <ul>
+         <li><strong>Mile repeats:</strong> 4โ€“5 ร— 1 mi at ~10K pace, short jog recovery.</li>
+         <li><strong>Long tempo:</strong> 2 ร— 2 mi at threshold with a few minutes easy between.</li>
+         <li><strong>Pace blend:</strong> 6 ร— 800 m alternating 5K and 10K effort.</li>
+         <li><strong>Goal-pace finish:</strong> last 2โ€“3 mi of a long run at 10K effort.</li>
+        </ul>
+        <p>Use a recent result to set realistic goal pace โ€” don't pick a number you wish were true.</p>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-3 col-md-6">
+      <div class="info-card card-race" id="card-10k-taper">
+       <div class="card-body">
+        <h5><i class="bi bi-flag"></i> Taper &amp; Race Day</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Cut volume <span class="term">~30โ€“50%</span> over the final 1โ€“2 weeks while keeping a little intensity to stay sharp.
+         </p>
+         <button aria-controls="collapse10KTaper" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapse10KTaper" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapse10KTaper">
+        <h6>Race-Day Execution</h6>
+        <ul>
+         <li><strong>Warm up properly:</strong> 10โ€“15 min easy plus a few strides โ€” the 10K starts fast.</li>
+         <li><strong>Control the first mile:</strong> the most common 10K error is an over-fast opening km.</li>
+         <li><strong>Even or negative split:</strong> aim to run the second half as fast or faster.</li>
+         <li><strong>Last 2 km:</strong> this is where the race is won โ€” spend what's left.</li>
+        </ul>
+        <p>For a 10K, fueling mid-race is rarely needed; arrive hydrated and lightly fueled.</p>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 6. PACING & STRATEGY -->
+   <div class="schema-container section-strategy" data-section-id="section-strategy">
+    <h2 class="section-title" id="section-strategy-title">Pacing &amp; Race Strategy</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-strategy" id="card-splits">
+       <div class="card-body">
+        <h5><i class="bi bi-bar-chart-steps"></i> Even &amp; Negative Splits</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          The most efficient way to race is <span class="term">even effort</span> โ€” ideally a second half as fast or faster than the first.
+         </p>
+         <button aria-controls="collapseSplits" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseSplits" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseSplits">
+        <h6>Why Even Effort Wins</h6>
+        <ul>
+         <li><strong>Physiological efficiency:</strong> steady pace minimizes wasteful lactate spikes.</li>
+         <li><strong>Negative split:</strong> banking energy early lets you finish strong instead of surviving.</li>
+         <li><strong>Adjust for terrain:</strong> even <em>effort</em> on hills, not even pace.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-strategy" id="card-fast-start">
+       <div class="card-body">
+        <h5><i class="bi bi-exclamation-triangle"></i> The Cost of Going Out Fast</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          A too-fast start feels free but isn't โ€” it spends glycogen early and triggers the dreaded <span class="term">blow-up</span>.
+         </p>
+         <button aria-controls="collapseFastStart" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseFastStart" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseFastStart">
+        <h6>What Goes Wrong</h6>
+        <ul>
+         <li><strong>Early lactate debt:</strong> running above threshold too soon is borrowed time you repay with interest.</li>
+         <li><strong>Disproportionate slowdown:</strong> seconds gained early often cost minutes late.</li>
+         <li><strong>Adrenaline lies:</strong> the start always feels easy โ€” trust your plan, not the feeling.</li>
+        </ul>
+        <span class="important-note">Discipline in the first 10โ€“20% of a race is the highest-leverage pacing decision you make.</span>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-strategy" id="card-race-execution">
+       <div class="card-body">
+        <h5><i class="bi bi-list-check"></i> Race-Day Execution</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          A good race is mostly <span class="term">logistics and a plan</span> executed calmly: warm-up, start position, fueling, and a finishing kick.
+         </p>
+         <button aria-controls="collapseExecution" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseExecution" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseExecution">
+        <h6>Checklist</h6>
+        <ul>
+         <li><strong>Warm-up scaled to distance:</strong> longer for short races, minimal for the marathon.</li>
+         <li><strong>Start placement:</strong> line up by realistic pace to avoid weaving or being boxed in.</li>
+         <li><strong>Fuel/hydration plan:</strong> decided in advance and practiced in training.</li>
+         <li><strong>Nothing new on race day:</strong> shoes, food, and kit should all be tested.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 7. FORM & TECHNIQUE -->
+   <div class="schema-container section-form" data-section-id="section-form">
+    <h2 class="section-title" id="section-form-title">Running Form &amp; Technique</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-form" id="card-cadence">
+       <div class="card-body">
+        <h5><i class="bi bi-arrow-repeat"></i> Cadence &amp; Stride</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          A quicker, lighter <span class="term">cadence</span> (often ~170โ€“180 steps/min) helps avoid overstriding and reduces braking forces.
+         </p>
+         <button aria-controls="collapseCadence" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseCadence" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseCadence">
+        <h6>Practical Notes</h6>
+        <ul>
+         <li><strong>Cadence is individual:</strong> 170โ€“180 is a guideline, not a law โ€” height and speed shift it.</li>
+         <li><strong>Avoid overstriding:</strong> land with the foot closer to under your hips, not way out front.</li>
+         <li><strong>Nudge, don't overhaul:</strong> raise cadence ~5% at a time if you tend to overstride.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-form" id="card-posture-arms">
+       <div class="card-body">
+        <h5><i class="bi bi-person-arms-up"></i> Posture &amp; Arms</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Run <span class="term">tall and relaxed</span> with a slight lean from the ankles. Arms drive rhythm โ€” keep them loose and roughly 90ยฐ.
+         </p>
+         <button aria-controls="collapsePosture" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapsePosture" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapsePosture">
+        <h6>Form Cues</h6>
+        <ul>
+         <li><strong>Lean from the ankles:</strong> a whole-body forward lean, not a bend at the waist.</li>
+         <li><strong>Relaxed shoulders &amp; hands:</strong> tension wastes energy โ€” imagine holding a chip you won't crush.</li>
+         <li><strong>Arms swing front-to-back:</strong> minimal cross-body motion.</li>
+         <li><strong>Eyes up:</strong> look ~10โ€“20 m ahead, not at your feet.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-form" id="card-breathing-footstrike">
+       <div class="card-body">
+        <h5><i class="bi bi-wind"></i> Breathing &amp; Footstrike</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Breathe <span class="term">rhythmically and deeply</span>. Don't obsess over footstrike โ€” cadence and posture matter far more.
+         </p>
+         <button aria-controls="collapseBreathing" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseBreathing" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseBreathing">
+        <h6>What to Know</h6>
+        <ul>
+         <li><strong>Belly breathing:</strong> deep diaphragmatic breaths beat shallow chest breathing.</li>
+         <li><strong>Rhythmic patterns:</strong> some runners sync breath to steps (e.g. 3:2) โ€” useful if it helps focus.</li>
+         <li><strong>Footstrike is a result:</strong> heel vs midfoot matters less than landing under your body, not ahead of it.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 8. GEAR & SHOES -->
+   <div class="schema-container section-gear" data-section-id="section-gear">
+    <h2 class="section-title" id="section-gear-title">Gear &amp; Shoes</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-gear" id="card-choosing-shoes">
+       <div class="card-body">
+        <h5><i class="bi bi-bag-heart"></i> Choosing Running Shoes</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          The single most important purchase. Prioritize <span class="term">comfort and fit</span> over hype, and replace shoes roughly every 300โ€“500 miles.
+         </p>
+         <button aria-controls="collapseChoosingShoes" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseChoosingShoes" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseChoosingShoes">
+        <h6>How to Choose</h6>
+        <ul>
+         <li><strong>Comfort is king:</strong> research consistently points to perceived comfort over rigid "pronation" categories.</li>
+         <li><strong>Try before buying:</strong> a specialty store can watch your gait and fit thumb-width toe room.</li>
+         <li><strong>Track mileage:</strong> cushioning fades; replace around 300โ€“500 mi or when aches creep in.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-gear" id="card-shoe-rotation">
+       <div class="card-body">
+        <h5><i class="bi bi-collection"></i> Shoe Rotation &amp; Types</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Many runners rotate <span class="term">2โ€“3 pairs</span>: a durable daily trainer, a lighter workout/race shoe, and sometimes a trail or carbon-plated option.
+         </p>
+         <button aria-controls="collapseRotation" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseRotation" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseRotation">
+        <h6>Common Categories</h6>
+        <ul>
+         <li><strong>Daily trainer:</strong> cushioned, durable โ€” the everyday workhorse.</li>
+         <li><strong>Tempo/race shoe:</strong> lighter and snappier for fast days.</li>
+         <li><strong>Carbon "super shoe":</strong> plated racers for goal races; firm and pricey.</li>
+         <li><strong>Trail shoe:</strong> grippy outsole and protection for off-road.</li>
+        </ul>
+        <p>Rotating varies the load slightly and lets foam decompress between runs.</p>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-gear" id="card-apparel-tech">
+       <div class="card-body">
+        <h5><i class="bi bi-smartwatch"></i> Apparel &amp; Tech</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          <span class="term">Moisture-wicking</span> fabrics, anti-chafe basics, weather-appropriate layers, and an optional GPS watch for pacing and data.
+         </p>
+         <button aria-controls="collapseApparel" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseApparel" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseApparel">
+        <h6>The Essentials</h6>
+        <ul>
+         <li><strong>No cotton:</strong> technical fabrics wick sweat and reduce chafing.</li>
+         <li><strong>Anti-chafe:</strong> balm or tape on hot spots; quality socks prevent blisters.</li>
+         <li><strong>Layer for weather:</strong> dress as if it's ~10ยฐC / 15โ€“20ยฐF warmer than it is.</li>
+         <li><strong>GPS watch (optional):</strong> useful for pacing, HR, and training load โ€” not required to improve.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 9. FUELING & HYDRATION -->
+   <div class="schema-container section-nutrition" data-section-id="section-nutrition">
+    <h2 class="section-title" id="section-nutrition-title">Fueling &amp; Hydration</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-nutrition" id="card-everyday-fuel">
+       <div class="card-body">
+        <h5><i class="bi bi-egg-fried"></i> Everyday Nutrition</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Carbohydrates are the runner's primary fuel; protein drives repair. The most common error is <span class="term">under-fueling</span> overall.
+         </p>
+         <button aria-controls="collapseEverydayFuel" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseEverydayFuel" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseEverydayFuel">
+        <h6>Daily Basics</h6>
+        <ul>
+         <li><strong>Carbs fuel hard work:</strong> don't fear them โ€” they're what powers quality sessions.</li>
+         <li><strong>Protein for repair:</strong> spread intake across the day to support recovery.</li>
+         <li><strong>Eat enough:</strong> chronic under-eating (RED-S) wrecks performance, hormones, and bone health.</li>
+         <li><strong>Mostly whole foods:</strong> with room for practical convenience around workouts.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-nutrition" id="card-run-fueling">
+       <div class="card-body">
+        <h5><i class="bi bi-lightning"></i> Before, During &amp; After</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Fuel <span class="term">around</span> runs: a light carb snack before, carbs during long efforts, and protein + carbs to recover.
+         </p>
+         <button aria-controls="collapseRunFueling" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseRunFueling" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseRunFueling">
+        <h6>Timing Guide</h6>
+        <ul>
+         <li><strong>Before:</strong> easy-to-digest carbs ~1โ€“3 hr out; short easy runs may need nothing.</li>
+         <li><strong>During:</strong> for efforts beyond ~75โ€“90 min, aim for ~30โ€“60 g carbs/hr (gels, chews, sports drink).</li>
+         <li><strong>After:</strong> carbs + protein within a couple of hours supports glycogen and repair.</li>
+         <li><strong>Practice it:</strong> rehearse race fueling in training โ€” guts need training too.</li>
+        </ul>
+        <p>A 10K rarely needs mid-race fuel; this matters most for the half, marathon, and ultras.</p>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-nutrition" id="card-hydration">
+       <div class="card-body">
+        <h5><i class="bi bi-droplet-half"></i> Hydration &amp; Electrolytes</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Generally <span class="term">drink to thirst</span>. Add sodium and electrolytes for long, hot, or sweaty efforts โ€” avoid both dehydration and overdrinking.
+         </p>
+         <button aria-controls="collapseHydration" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseHydration" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseHydration">
+        <h6>Sensible Hydration</h6>
+        <ul>
+         <li><strong>Thirst is a good guide:</strong> for most runs, drinking to thirst is sufficient.</li>
+         <li><strong>Replace salt when it counts:</strong> long/hot efforts and heavy sweaters need electrolytes, not just water.</li>
+         <li><strong>Don't overdrink:</strong> excessive plain water can cause dangerous hyponatremia.</li>
+         <li><strong>Start runs hydrated:</strong> check that urine is pale, not for forcing fluids mid-run.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 10. INJURY PREVENTION -->
+   <div class="schema-container section-injury" data-section-id="section-injury">
+    <h2 class="section-title" id="section-injury-title">Injury Prevention</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-injury" id="card-common-injuries">
+       <div class="card-body">
+        <h5><i class="bi bi-bandaid"></i> Common Running Injuries</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Most running injuries are <span class="term">overuse</span>, not accidents โ€” a handful of patterns account for the majority.
+         </p>
+         <button aria-controls="collapseCommonInjuries" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseCommonInjuries" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseCommonInjuries">
+        <h6>The Usual Suspects</h6>
+        <ul>
+         <li><strong>Runner's knee (PFPS):</strong> pain around the kneecap, often hip/quad related.</li>
+         <li><strong>Shin splints:</strong> medial shin pain, frequently from a fast mileage ramp.</li>
+         <li><strong>IT band syndrome:</strong> lateral knee pain, linked to hip strength and load spikes.</li>
+         <li><strong>Plantar fasciitis &amp; Achilles tendinopathy:</strong> heel/arch and lower-calf pain.</li>
+         <li><strong>Stress fractures:</strong> localized bone pain โ€” serious; needs medical evaluation and rest.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-injury" id="card-load-management">
+       <div class="card-body">
+        <h5><i class="bi bi-sliders"></i> Load Management</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          <span class="term">Too much, too soon</span> is the number-one cause of running injury. Most prevention is just sane progression.
+         </p>
+         <button aria-controls="collapseLoadManagement" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseLoadManagement" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseLoadManagement">
+        <h6>Stay Ahead of It</h6>
+        <ul>
+         <li><strong>Gradual ramps:</strong> the ~10% guideline and cutback weeks exist for this reason.</li>
+         <li><strong>Change one thing at a time:</strong> new volume, new surface, new shoes โ€” not all at once.</li>
+         <li><strong>Sleep and life stress count:</strong> recovery capacity isn't only about running.</li>
+         <li><strong>Catch it early:</strong> a few easy days now beats weeks off later.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-injury" id="card-prehab">
+       <div class="card-body">
+        <h5><i class="bi bi-shield-plus"></i> Prehab &amp; Warning Signs</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Warm up, build strength and mobility, and <span class="term">respect pain that worsens</span> or changes how you run.
+         </p>
+         <button aria-controls="collapsePrehab" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapsePrehab" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapsePrehab">
+        <h6>Prevention Habits</h6>
+        <ul>
+         <li><strong>Ease into hard runs:</strong> a few minutes of easy jogging and drills before fast work.</li>
+         <li><strong>Strength &amp; mobility:</strong> hips, glutes, calves, and core support every stride.</li>
+        </ul>
+        <span class="important-note">Stop and reassess if pain sharpens, worsens during a run, or alters your gait. Sharp, localized, or bone pain warrants a professional opinion.</span>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 11. STRENGTH & RECOVERY -->
+   <div class="schema-container section-recovery" data-section-id="section-recovery">
+    <h2 class="section-title" id="section-recovery-title">Strength &amp; Recovery</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-recovery" id="card-strength">
+       <div class="card-body">
+        <h5><i class="bi bi-trophy"></i> Strength Training for Runners</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          <span class="term">1โ€“2 sessions/week</span> of strength work improves economy, durability, and resilience to injury.
+         </p>
+         <button aria-controls="collapseStrength" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseStrength" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseStrength">
+        <h6>What to Prioritize</h6>
+        <ul>
+         <li><strong>Hips, glutes &amp; core:</strong> the stabilizers that keep form intact when tired.</li>
+         <li><strong>Single-leg work:</strong> running is a series of one-legged hops โ€” train it that way.</li>
+         <li><strong>Some heavy &amp; some explosive:</strong> heavier lifts and light plyometrics both build economy.</li>
+         <li><strong>Keep it separate from key runs:</strong> ideally not right before a hard session.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-recovery" id="card-cross-training">
+       <div class="card-body">
+        <h5><i class="bi bi-bicycle"></i> Cross-Training</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Low-impact aerobic work โ€” <span class="term">cycling, swimming, elliptical</span> โ€” maintains fitness while sparing the legs from pounding.
+         </p>
+         <button aria-controls="collapseCrossTraining" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseCrossTraining" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseCrossTraining">
+        <h6>When It Helps</h6>
+        <ul>
+         <li><strong>Extra aerobic volume:</strong> add stimulus without extra impact load.</li>
+         <li><strong>Injury maintenance:</strong> keeps fitness when you can't run; pool running mimics the motion closely.</li>
+         <li><strong>Active recovery:</strong> easy spinning on a rest day promotes blood flow.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-recovery" id="card-sleep-recovery">
+       <div class="card-body">
+        <h5><i class="bi bi-moon"></i> Sleep &amp; Recovery Tools</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          <span class="term">Sleep is the foundation</span>. Rest days, easy days, and a deload week absorb training; gadgets are minor extras.
+         </p>
+         <button aria-controls="collapseSleepRecovery" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseSleepRecovery" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseSleepRecovery">
+        <h6>Recovery Hierarchy</h6>
+        <ul>
+         <li><strong>Sleep (7โ€“9 hr):</strong> by far the highest-impact recovery tool.</li>
+         <li><strong>Nutrition &amp; hydration:</strong> the raw material for repair.</li>
+         <li><strong>Rest &amp; easy days:</strong> structural recovery built into the plan.</li>
+         <li><strong>Deload weeks:</strong> periodic lighter weeks let adaptation surface.</li>
+         <li><strong>Foam rolling, massage, etc.:</strong> may help comfort; treat as the cherry, not the cake.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+   <!-- 12. MENTAL GAME & SAFETY -->
+   <div class="schema-container section-mindset" data-section-id="section-mindset">
+    <h2 class="section-title" id="section-mindset-title">Mental Game &amp; Safety</h2>
+    <div class="row">
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-mindset" id="card-mental-strategies">
+       <div class="card-body">
+        <h5><i class="bi bi-lightbulb"></i> Mental Strategies</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Hard efforts are partly a <span class="term">mental skill</span>: goal-setting, mantras, segmenting the distance, and accepting discomfort.
+         </p>
+         <button aria-controls="collapseMentalStrategies" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseMentalStrategies" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseMentalStrategies">
+        <h6>Tools That Work</h6>
+        <ul>
+         <li><strong>Chunk the distance:</strong> race the next mile or the next landmark, not the whole thing.</li>
+         <li><strong>Mantras:</strong> a short, repeatable phrase to anchor focus when it gets hard.</li>
+         <li><strong>Reframe discomfort:</strong> expect it, name it, and separate "hard" from "harmful."</li>
+         <li><strong>Process over outcome:</strong> control effort, form, and pacing โ€” not the clock.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-mindset" id="card-motivation">
+       <div class="card-body">
+        <h5><i class="bi bi-fire"></i> Motivation &amp; Habit</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Motivation fluctuates; <span class="term">habit and structure</span> carry you through. Make running the default, not a daily decision.
+         </p>
+         <button aria-controls="collapseMotivation" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseMotivation" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseMotivation">
+        <h6>Staying Consistent</h6>
+        <ul>
+         <li><strong>Schedule it:</strong> a fixed time and route removes daily friction.</li>
+         <li><strong>Accountability:</strong> a running partner, club, or group makes skipping costly.</li>
+         <li><strong>Variety:</strong> rotate routes and workout types to keep it fresh.</li>
+         <li><strong>Track progress:</strong> a simple log shows the compounding you can't feel day to day.</li>
+         <li><strong>Sign up for a race:</strong> a date on the calendar focuses training.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+     <div class="col-lg-4 col-md-6">
+      <div class="info-card card-mindset" id="card-environment-safety">
+       <div class="card-body">
+        <h5><i class="bi bi-shield-check"></i> Environment &amp; Safety</h5>
+        <div class="card-content-wrapper">
+         <p class="summary">
+          Adjust for <span class="term">heat, cold, and darkness</span>, stay visible, and run aware of traffic and surroundings.
+         </p>
+         <button aria-controls="collapseEnvironmentSafety" aria-expanded="false" class="btn btn-sm details-toggle" data-bs-target="#collapseEnvironmentSafety" data-bs-toggle="collapse" type="button">
+          Details <i class="bi bi-chevron-down"></i>
+         </button>
+        </div>
+       </div>
+       <div class="collapse collapse-content" id="collapseEnvironmentSafety">
+        <h6>Run Smart</h6>
+        <ul>
+         <li><strong>Heat:</strong> slow down, hydrate, seek shade, and let the body acclimatize over ~1โ€“2 weeks.</li>
+         <li><strong>Cold:</strong> layer, protect extremities, and watch for ice underfoot.</li>
+         <li><strong>Visibility:</strong> reflective gear and lights in low light; assume drivers don't see you.</li>
+         <li><strong>Awareness:</strong> keep volume low or one ear open; share your route or carry ID/phone.</li>
+        </ul>
+       </div>
+      </div>
+     </div>
+    </div>
+   </div>
+
+  </div>
+  <!-- /#main-container -->
+
+  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
+  <script>
+   document.addEventListener('DOMContentLoaded', () => {
+    const mainContainer = document.getElementById('main-container');
+    let currentHoverState = { card: null, line: null };
+
+    function debounce(func, wait) {
+        let timeout;
+        return function executedFunction(...args) {
+            const later = () => {
+                clearTimeout(timeout);
+                func(...args);
+            };
+            clearTimeout(timeout);
+            timeout = setTimeout(later, wait);
+        };
+    }
+
+    function getElementColor(element) {
+        if (!element) return '#6b7280';
+        const card = element.closest('.info-card') || element;
+        const section = element.closest('.schema-container');
+        let color = window.getComputedStyle(card).getPropertyValue('--db-category-color').trim();
+        if (!color || color === 'initial' || color === 'inherit') {
+            color = section ? window.getComputedStyle(section).getPropertyValue('--db-category-color').trim() : '#6b7280';
+        }
+        return color || '#6b7280';
+    }
+
+    function clearHoverState(forceClear = false) {
+        const isMouseStillOverCard = currentHoverState.card && currentHoverState.card.matches(':hover');
+        if (forceClear || !isMouseStillOverCard) {
+            if (currentHoverState.line) {
+                try { currentHoverState.line.remove(); } catch (e) { /* noop */ }
+                currentHoverState.line = null;
+            }
+            mainContainer.classList.remove('is-dimmed');
+            if (currentHoverState.card) {
+                 currentHoverState.card.classList.remove('is-highlighted');
+                 const oldSchemaContainer = currentHoverState.card.closest('.schema-container');
+                 if (oldSchemaContainer) {
+                     oldSchemaContainer.classList.remove('is-highlighted-section');
+                 }
+                 currentHoverState.card = null;
+            }
+        }
+    }
+
+    function applyHoverState(card) {
+        if (!card || card === currentHoverState.card) return;
+
+        clearHoverState(true);
+
+        const schemaContainer = card.closest('.schema-container');
+        const sectionHeader = schemaContainer ? schemaContainer.querySelector('.section-title') : null;
+
+        currentHoverState.card = card;
+        mainContainer.classList.add('is-dimmed');
+        card.classList.add('is-highlighted');
+        if (schemaContainer) schemaContainer.classList.add('is-highlighted-section');
+
+        if (!sectionHeader || !card.id || !sectionHeader.id) {
+             return;
+        }
+
+        try {
+            const startElement = document.getElementById(sectionHeader.id);
+            const endElement = document.getElementById(card.id);
+
+            if (!startElement || !endElement) {
+                 throw new Error(`LeaderLine: Could not find elements ${sectionHeader.id} or ${card.id}`);
+            }
+            if (typeof LeaderLine === 'undefined') {
+                 return;
+            }
+            const cardColor = getElementColor(card);
+            const line = new LeaderLine(
+                startElement, endElement,
+                {
+                    color: cardColor, size: 2.5, path: 'fluid',
+                    startSocket: 'bottom', endSocket: 'top',
+                    startSocketGravity: [0, -25], endSocketGravity: [0, 25],
+                    dash: { animation: true, len: 7, gap: 3 },
+                }
+            );
+            currentHoverState.line = line;
+        } catch (e) {
+            /* noop */
+        }
+    }
+
+    mainContainer.addEventListener('mouseover', (event) => {
+        const targetCard = event.target.closest('.info-card');
+        if (targetCard && targetCard !== currentHoverState.card) {
+             applyHoverState(targetCard);
+        }
+    });
+
+    mainContainer.addEventListener('mouseout', (event) => {
+        const relatedTarget = event.relatedTarget;
+        const currentCard = currentHoverState.card;
+        if (currentCard && (event.target === currentCard || currentCard.contains(event.target)) && !currentCard.contains(relatedTarget) && (!relatedTarget?.closest('.info-card') || !mainContainer.contains(relatedTarget))) {
+             setTimeout(() => {
+                if (!mainContainer.querySelector('.info-card:hover')) {
+                     clearHoverState(false);
+                 }
+             }, 60);
+         }
+    });
+
+    const positionLines = debounce(() => {
+         if (currentHoverState.line) {
+             try {
+                 if (currentHoverState.line && typeof currentHoverState.line.position === 'function') {
+                     currentHoverState.line.position();
+                 } else if (currentHoverState.line) {
+                     clearHoverState(true);
+                 }
+             } catch (e) {
+                 clearHoverState(true);
+             }
+         }
+     }, 100);
+
+    window.addEventListener('resize', positionLines);
+    window.addEventListener('scroll', positionLines, { passive: true });
+
+    const collapseElements = document.querySelectorAll('.collapse');
+    collapseElements.forEach(collapseEl => {
+        const button = document.querySelector(`.details-toggle[data-bs-target="#${collapseEl.id}"]`);
+        const icon = button ? button.querySelector('.bi') : null;
+        if (button && icon) {
+            const updateIconAndPosition = () => {
+                if (collapseEl.classList.contains('show')) {
+                    icon.classList.remove('bi-chevron-down'); icon.classList.add('bi-chevron-up');
+                    button.setAttribute('aria-expanded', 'true');
+                } else {
+                    icon.classList.remove('bi-chevron-up'); icon.classList.add('bi-chevron-down');
+                    button.setAttribute('aria-expanded', 'false');
+                }
+                if (currentHoverState.line) {
+                    positionLines();
+                }
+            };
+
+            updateIconAndPosition();
+
+            collapseEl.addEventListener('show.bs.collapse', () => { updateIconAndPosition(); setTimeout(positionLines, 50); });
+            collapseEl.addEventListener('shown.bs.collapse', positionLines);
+            collapseEl.addEventListener('hide.bs.collapse', () => { updateIconAndPosition(); setTimeout(positionLines, 50); });
+            collapseEl.addEventListener('hidden.bs.collapse', positionLines);
+        }
+    });
+
+    const yearEl = document.getElementById('currentYear');
+    if (yearEl) yearEl.textContent = new Date().getFullYear();
+   });
+  </script>
+  <footer class="container text-center pb-3">
+  <div class="mb-3">
+    <a class="mx-2" href="weightloss-cheatsheet.html" rel="noopener noreferrer" target="_blank" title="Weight Loss &amp; Metabolic Health Cheatsheet">
+      <i class="bi bi-clipboard2-pulse"></i>
+      Weight Loss &amp; Metabolic Health
+    </a>
+    <a class="mx-2" href="martial-arts-cheatsheet.html" rel="noopener noreferrer" target="_blank" title="Martial Arts Cheatsheet">
+      <i class="bi bi-trophy"></i>
+      Martial Arts Cheatsheet
+    </a>
+  </div>
+  <p class="mb-2">
+    ยฉ <span id="currentYear">2026</span> David Veksler ยท An evidence-informed overview of running training. General educational reference โ€” not medical advice; consult a professional for injuries or health concerns.
+  </p>
+  <div>
+    <a class="mx-2 link-secondary" href="https://www.linkedin.com/in/davidveksler/" target="_blank" title="David Veksler on LinkedIn">
+      <i class="bi bi-linkedin"></i>
+      LinkedIn
+    </a>
+    <a class="mx-2 link-secondary" href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets">
+      <i class="bi bi-collection"></i>
+      All Cheatsheets
+    </a>
+  </div>
+  </footer>
+ </body>
+</html>