{"id":5579,"date":"2026-06-07T08:36:37","date_gmt":"2026-06-07T06:36:37","guid":{"rendered":"https:\/\/www.bras-de-fer.fr\/blog\/muscler-jambes-sans-salle\/"},"modified":"2026-06-07T08:36:37","modified_gmt":"2026-06-07T06:36:37","slug":"muscler-jambes-sans-salle","status":"publish","type":"post","link":"https:\/\/www.bras-de-fer.fr\/blog\/muscler-jambes-sans-salle\/","title":{"rendered":"Comment se muscler les jambes sans aller en salle de sport"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Vous voulez des jambes plus fortes sans prendre d\u2019abonnement en salle ? Ce guide pratique livre une m\u00e9thode claire, des exercices maison cibl\u00e9s, un plan progressif sur 4 semaines et des astuces nutrition\/r\u00e9cup\u00e9ration pour transformer votre quotidien. Illustrations, vid\u00e9os d\u2019ex\u00e9cution et variantes pour d\u00e9butants comme pour plus aguerris permettent d\u2019appliquer imm\u00e9diatement chaque mouvement. Le fil conducteur : Thomas, coach lyonnais et p\u00e8re de famille, qui a fait de son salon une mini-salle et prouve que r\u00e9gularit\u00e9 et technique battent souvent l\u2019\u00e9quipement.<\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Objectif<\/strong> : Force, tonification jambes et pr\u00e9vention des blessures avec des exercices poids du corps.<\/li><li><strong>Dur\u00e9e<\/strong> : 3 s\u00e9ances hebdo, 20\u201330 minutes par s\u00e9ance, programme sur 4 semaines.<\/li><li><strong>Mat\u00e9riel<\/strong> : Aucun obligatoire \u2014 chaise, sac \u00e0 dos ou bouteilles d\u2019eau suffisent.<\/li><li><strong>Principes<\/strong> : Progression, travail unilat\u00e9ral, tempo et r\u00e9cup\u00e9ration.<\/li><li><strong>R\u00e9sultat attendu<\/strong> : Meilleure aisance dans les escaliers, randonn\u00e9e plus facile et maintien postural en 4\u201312 semaines.<\/li><\/ul>\n\n<h2 class=\"wp-block-heading\">Pourquoi se concentrer sur la musculation jambes \u00e0 la maison<\/h2>\n\n<p class=\"wp-block-paragraph\">Les muscles des jambes constituent la base de vos mouvements quotidiens : quadriceps, ischio\u2011jambiers, fessiers, adducteurs et mollets. Travailler ces groupes am\u00e9liore la posture, prot\u00e8ge genoux et lombaires, et augmente le m\u00e9tabolisme au repos.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour beaucoup de personnes actives ou parents press\u00e9s, la contrainte n\u2019est pas le manque de volont\u00e9 mais le manque de temps et d\u2019\u00e9quipement. Des s\u00e9ances courtes et r\u00e9guli\u00e8res permettent d\u2019obtenir des gains solides sans sortir de chez soi, comme Thomas l\u2019a montr\u00e9 avec sa progression en randonn\u00e9e.<\/p>\n\n<h2 class=\"wp-block-heading\">Les exercices maison incontournables pour muscler jambes<\/h2>\n\n<p class=\"wp-block-paragraph\">Voici les mouvements prioritaires, r\u00e9alisables sans salle et efficaces pour la force et la tonification jambes. Chaque exercice pr\u00e9cise la technique, les r\u00e9p\u00e9titions et une astuce pratique.<\/p>\n\n<h3 class=\"wp-block-heading\">Squats \u2014 base de la puissance des cuisses<\/h3>\n\n<p class=\"wp-block-paragraph\">Position : pieds \u00e0 largeur des \u00e9paules, dos droit, regard au loin. Descendez comme si vous vouliez prendre place sur une chaise, puis remontez en poussant sur les talons.<\/p>\n\n<ul class=\"wp-block-list\"><li>D\u00e9butant : 3 s\u00e9ries de 10\u201312 r\u00e9p\u00e9titions.<\/li><li>Interm\u00e9diaire : 4 s\u00e9ries de 15\u201320 r\u00e9p\u00e9titions.<\/li><li>Astuce : ralentissez la descente (3\u20134 s) pour augmenter la tension sans charge.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Ce mouvement sollicite quadriceps et fessiers en synergie, essentiel pour monter des escaliers sans fatigue.<\/p>\n\n<h3 class=\"wp-block-heading\">Fentes (altern\u00e9es) \u2014 pour l\u2019\u00e9quilibre et la sym\u00e9trie<\/h3>\n\n<p class=\"wp-block-paragraph\">Ex\u00e9cution : grand pas vers l\u2019avant, genou avant \u00e0 90\u00b0, genou arri\u00e8re proche du sol. Poussez sur le talon pour revenir.<\/p>\n\n<ul class=\"wp-block-list\"><li>D\u00e9butant : 3 s\u00e9ries de 8\u201310 r\u00e9p\u00e9titions par jambe.<\/li><li>Interm\u00e9diaire : 4 s\u00e9ries de 12\u201315 r\u00e9p\u00e9titions par jambe.<\/li><li>Variante : fentes saut\u00e9es pour travailler l\u2019explosivit\u00e9.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Les fentes corrigent les d\u00e9s\u00e9quilibres et sont fondamentales pour la course ou le trail. Pour suivre d\u2019autres id\u00e9es d\u2019exercices maison, consultez un guide pratique comme <a href=\"https:\/\/www.superprof.fr\/blog\/exercices-jambes-maison\/\" rel=\"nofollow noopener\" target=\"_blank\">exercices jambes maison<\/a>.<\/p>\n\n<h3 class=\"wp-block-heading\">Pont fessier (glute bridge) \u2014 fessiers et stabilit\u00e9 lombaire<\/h3>\n\n<p class=\"wp-block-paragraph\">Allong\u00e9, genoux pli\u00e9s, pieds ancr\u00e9s : soulevez les hanches en serrant les fessiers, maintenez 1 seconde, redescendez sans reposer compl\u00e8tement les fessiers.<\/p>\n\n<ul class=\"wp-block-list\"><li>D\u00e9butant : 3 s\u00e9ries de 12\u201315 r\u00e9p\u00e9titions.<\/li><li>Interm\u00e9diaire : 4 s\u00e9ries de 18\u201320 r\u00e9p\u00e9titions, sac sur les hanches pour charger.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Id\u00e9al pour pr\u00e9venir douleurs lombaires et am\u00e9liorer la propulsion en mont\u00e9e. Thomas l\u2019int\u00e8gre syst\u00e9matiquement apr\u00e8s ses sorties longues.<\/p>\n\n<h3 class=\"wp-block-heading\">Chaise contre le mur (wall sit) \u2014 endurance des quadriceps<\/h3>\n\n<p class=\"wp-block-paragraph\">Dos au mur, cuisses parall\u00e8les : tenez la position. D\u00e9butez \u00e0 20\u201330 secondes et augmentez progressivement.<\/p>\n\n<ul class=\"wp-block-list\"><li>Progression : ajoutez 10 s par semaine jusqu\u2019\u00e0 60 s.<\/li><li>Astuce : variez la largeur des genoux pour cibler fessiers ou quadriceps.<\/li><\/ul>\n\n<h3 class=\"wp-block-heading\">\u00c9l\u00e9vations de mollets \u2014 pr\u00e9vention des crampes et explosion<\/h3>\n\n<p class=\"wp-block-paragraph\">Debout, montez sur la pointe des pieds puis redescendez lentement. R\u00e9alisez l\u2019exercice sur une marche pour augmenter l\u2019amplitude.<\/p>\n\n<ul class=\"wp-block-list\"><li>3 s\u00e9ries de 15\u201325 r\u00e9p\u00e9titions selon le niveau.<\/li><li>Variante : une jambe pour plus d\u2019exigence.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Pour une approche d\u00e9taill\u00e9e de la fr\u00e9quence et du tempo des mollets, une ressource utile est disponible sur <a href=\"https:\/\/www.bras-de-fer.fr\/blog\/mollets-frequence-tempo\/\" rel=\"nofollow\">la fr\u00e9quence et le tempo des mollets<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">Programme 4 semaines pour se muscler les jambes sans salle de sport<\/h2>\n\n<p class=\"wp-block-paragraph\">Organisation : 3 s\u00e9ances par semaine, 1 jour de repos entre chaque. \u00c9chauffement 5 minutes obligatoire (mont\u00e9es de genoux, talons-fesses, mobilisations articulaires).<\/p>\n\n<p class=\"wp-block-paragraph\">Chaque s\u00e9ance dure 20\u201330 minutes pour coller aux emplois du temps charg\u00e9s. L\u2019augmentation progressive des r\u00e9p\u00e9titions et du temps sous tension est la cl\u00e9.<\/p>\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Exercice<\/th>\n<th>Semaines 1\u20132 (d\u00e9butant)<\/th>\n<th>Semaines 3\u20134 (interm\u00e9diaire)<\/th>\n<th>Repos<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Squats<\/strong><\/td>\n<td>3 x 10\u201312<\/td>\n<td>4 x 15\u201320<\/td>\n<td>60 s<\/td>\n<\/tr>\n<tr>\n<td><strong>Fentes (par jambe)<\/strong><\/td>\n<td>3 x 8\u201310<\/td>\n<td>4 x 12\u201315<\/td>\n<td>60 s<\/td>\n<\/tr>\n<tr>\n<td><strong>Pont fessier<\/strong><\/td>\n<td>3 x 12\u201315<\/td>\n<td>4 x 18\u201320<\/td>\n<td>45 s<\/td>\n<\/tr>\n<tr>\n<td><strong>Chaise<\/strong><\/td>\n<td>3 x 30 s<\/td>\n<td>4 x 45\u201360 s<\/td>\n<td>45 s<\/td>\n<\/tr>\n<tr>\n<td><strong>\u00c9l\u00e9vations de mollets<\/strong><\/td>\n<td>3 x 15\u201320<\/td>\n<td>4 x 20\u201325<\/td>\n<td>30 s<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n\n<!-- Simulateur: \"Se muscler les jambes sans salle\" -->\n<div id=\"simu-jambes\" class=\"max-w-4xl mx-auto p-4 bg-white\/90 rounded-lg shadow-lg text-gray-800\" style=\"max-height:1800px;\">\n  <h2 class=\"text-2xl font-semibold mb-2\">Simulateur \u2014 S\u00e9ance jambes \u00e0 la maison<\/h2>\n  <p class=\"text-sm text-gray-600 mb-4\">Choisissez votre objectif, niveau et dur\u00e9e (20\u201330 min). Le simulateur g\u00e9n\u00e8re une s\u00e9ance compl\u00e8te (\u00e9chauffement, circuit principal, retour au calme) adapt\u00e9e \u00e0 la maison.<\/p>\n\n  <form id=\"form-simu\" class=\"grid grid-cols-1 md:grid-cols-3 gap-3 mb-4\" aria-label=\"Param\u00e8tres de la s\u00e9ance\">\n    <div>\n      <label for=\"objectif\" class=\"block text-sm font-medium\">Objectif<\/label>\n      <select id=\"objectif\" class=\"mt-1 block w-full rounded border p-2\" aria-describedby=\"objectif-desc\">\n        <option value=\"tonification\">Tonification<\/option>\n        <option value=\"force\">Force<\/option>\n        <option value=\"endurance\">Endurance<\/option>\n      <\/select>\n      <p id=\"objectif-desc\" class=\"sr-only\">Choisissez tonification, force ou endurance<\/p>\n    <\/div>\n\n    <div>\n      <label for=\"niveau\" class=\"block text-sm font-medium\">Niveau<\/label>\n      <select id=\"niveau\" class=\"mt-1 block w-full rounded border p-2\" aria-describedby=\"niveau-desc\">\n        <option value=\"d\u00e9butant\">D\u00e9butant<\/option>\n        <option value=\"interm\u00e9diaire\">Interm\u00e9diaire<\/option>\n        <option value=\"avanc\u00e9\">Avanc\u00e9<\/option>\n      <\/select>\n      <p id=\"niveau-desc\" class=\"sr-only\">S\u00e9lectionnez votre niveau<\/p>\n    <\/div>\n\n    <div>\n      <label for=\"duree\" class=\"block text-sm font-medium\">Dur\u00e9e (minutes)<\/label>\n      <input id=\"duree\" type=\"range\" min=\"20\" max=\"30\" value=\"25\" step=\"1\" class=\"w-full mt-2\" \/>\n      <div class=\"flex justify-between text-sm\"><span>20<\/span><span id=\"duree-val\">25<\/span><span>30<\/span><\/div>\n    <\/div>\n\n    <div class=\"md:col-span-3 flex gap-2 mt-2\">\n      <button id=\"gen-btn\" type=\"button\" class=\"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 focus:outline-none\" aria-label=\"G\u00e9n\u00e9rer s\u00e9ance\">G\u00e9n\u00e9rer la s\u00e9ance<\/button>\n      <button id=\"regen-btn\" type=\"button\" class=\"px-4 py-2 bg-gray-200 rounded hover:bg-gray-300\" aria-label=\"R\u00e9g\u00e9n\u00e9rer\">R\u00e9g\u00e9n\u00e9rer (variantes)<\/button>\n      <button id=\"copy-btn\" type=\"button\" class=\"px-4 py-2 bg-green-600 text-white rounded hover:bg-green-700\" aria-label=\"Copier la s\u00e9ance\">Copier<\/button>\n      <button id=\"print-btn\" type=\"button\" class=\"px-4 py-2 bg-indigo-600 text-white rounded hover:bg-indigo-700\" aria-label=\"Imprimer la s\u00e9ance\">Imprimer<\/button>\n    <\/div>\n  <\/form>\n\n  <div id=\"result\" class=\"space-y-4\" aria-live=\"polite\"><\/div>\n\n  <details class=\"mt-4 text-sm text-gray-700\">\n    <summary class=\"cursor-pointer font-medium\">Comment le simulateur calcule la s\u00e9ance<\/summary>\n    <div class=\"mt-2\">\n      <ul class=\"list-disc pl-5\">\n        <li>On r\u00e9serve ~5 min pour l&rsquo;\u00e9chauffement et ~3 min pour le retour au calme.<\/li>\n        <li>Le temps restant est allou\u00e9 au circuit principal : on choisit 3\u20136 exercices, et on calcule le nombre de tours pour correspondre \u00e0 la dur\u00e9e choisie.<\/li>\n        <li>Les r\u00e9p\u00e9titions, repos et tempo sont adapt\u00e9s selon l&rsquo;objectif et le niveau.<\/li>\n      <\/ul>\n    <\/div>\n  <\/details>\n<\/div>\n\n<script>\n\/*\n  Script du simulateur (en fran\u00e7ais)\n  - Pas de d\u00e9pendances lourdes.\n  - Accessibilit\u00e9 (aria-live, labels).\n  - Toutes les cha\u00eenes en fran\u00e7ais et facilement modifiables.\n*\/\n\n\/* Donn\u00e9es d'exercices \u2014 uniquement au poids du corps et adaptables \u00e0 la maison.\n   Chaque exercice a: id, nom, muscles cibl\u00e9s, difficult\u00e9 (1-3), description (fr), \u00e9quipement (ici: aucun).\n*\/\nconst EXERCICES = [\n  { id: 'squat', nom: 'Squat', difficulty: 1, muscles: ['quadriceps','fessiers'], desc: 'Descendre en gardant le dos droit, poids sur les talons.' },\n  { id: 'fente-arriere', nom: 'Fente arri\u00e8re altern\u00e9e', difficulty: 2, muscles: ['quadriceps','ischios','fessiers'], desc: 'Grand pas arri\u00e8re, genou avant \u00e0 90\u00b0.' },\n  { id: 'pont-gleute', nom: 'Pont fessier', difficulty: 1, muscles: ['fessiers','ischios'], desc: 'Pousser les hanches vers le plafond, serrer les fessiers.' },\n  { id: 'pistol-assiste', nom: 'Pistol assist\u00e9 (chaise)', difficulty: 3, muscles: ['quadriceps','\u00e9quilibre'], desc: 'Utiliser une chaise pour supporter partiellement le poids.' },\n  { id: 'mollet-debout', nom: 'Mollets debout', difficulty: 1, muscles: ['mollets'], desc: 'Monter sur la pointe des pieds, descendre lentement.' },\n  { id: 'squat-saut', nom: 'Squat saut\u00e9', difficulty: 3, muscles: ['explosivit\u00e9','quadriceps','fessiers'], desc: 'Exploser en saut depuis un squat, r\u00e9ception contr\u00f4l\u00e9e.' },\n  { id: 'step-up', nom: 'Step-up (marche sur marche)', difficulty: 2, muscles: ['quadriceps','fessiers'], desc: 'Monter sur une marche stable une jambe \u00e0 la fois.' },\n  { id: 'good-morning', nom: 'Good Morning (hanches)', difficulty: 2, muscles: ['ischios','bas du dos'], desc: 'Hanches en arri\u00e8re, dos neutre, fl\u00e9chir l\u00e9g\u00e8rement les genoux.' },\n  { id: 'isl-single-leg-romanian', nom: 'Soulev\u00e9 jambe tendue (pied au sol)', difficulty: 2, muscles: ['ischios','fessiers'], desc: 'Inclinaison du buste en gardant une jambe l\u00e9g\u00e8rement fl\u00e9chie.' }\n];\n\n\/* Param\u00e8tres modifiables (fran\u00e7ais) *\/\nconst TEXT = {\n  echauffement: '\u00c9chauffement',\n  principal: 'Circuit principal',\n  cooldown: 'Retour au calme',\n  dur\u00e9e: 'Dur\u00e9e',\n  repos: 'Repos',\n  series: 'S\u00e9ries \/ tours',\n  repetitions: 'R\u00e9p\u00e9titions',\n  alternatives: 'Variantes \/ adaptations',\n  aucune: 'Aucune',\n  equipment: '\u00c9quipement requis'\n};\n\n\/* R\u00e9cup\u00e9ration des \u00e9l\u00e9ments DOM *\/\nconst objectifEl = document.getElementById('objectif');\nconst niveauEl = document.getElementById('niveau');\nconst dureeEl = document.getElementById('duree');\nconst dureeValEl = document.getElementById('duree-val');\nconst genBtn = document.getElementById('gen-btn');\nconst regenBtn = document.getElementById('regen-btn');\nconst resultEl = document.getElementById('result');\nconst copyBtn = document.getElementById('copy-btn');\nconst printBtn = document.getElementById('print-btn');\n\ndureeEl.addEventListener('input', () => { dureeValEl.textContent = dureeEl.value; });\n\n\/* Utilitaires *\/\n\n\/* M\u00e9lange (Fisher-Yates) *\/\nfunction shuffle(array) {\n  const a = array.slice();\n  for (let i = a.length - 1; i > 0; i--) {\n    const j = Math.floor(Math.random() * (i + 1));\n    [a[i], a[j]] = [a[j], a[i]];\n  }\n  return a;\n}\n\n\/* Choisit un nombre d'exercices bas\u00e9 sur dur\u00e9e et objectif *\/\nfunction choisirNbExos(dureePrincipale) {\n  \/\/ plus de temps -> on peut prendre plus d'exos; garder 3-6\n  if (dureePrincipale <= 8) return 3;\n  if (dureePrincipale <= 12) return 4;\n  if (dureePrincipale <= 16) return 4;\n  if (dureePrincipale <= 20) return 5;\n  return 6;\n}\n\n\/* Param\u00e8tres selon objectif et niveau\n   Retourne: repsRange (min,max), reposExo (s), reposTour (s), tempo (s par r\u00e9p\u00e9tition)\n*\/\nfunction parametres(objectif, niveau) {\n  const base = {\n    tonification: { reps: [10, 18], reposExo: 20, reposTour: 60, tempo: 2 },\n    force: { reps: [4, 8], reposExo: 60, reposTour: 120, tempo: 3.5 },\n    endurance: { reps: [12, 25], reposExo: 10, reposTour: 45, tempo: 1.8 }\n  }[objectif];\n\n  \/\/ ajuster selon niveau\n  const levelAdjust = {\n    'd\u00e9butant': { repsMul: 0.85, reposMul: 1.1, tempoMul: 1.0 },\n    'interm\u00e9diaire': { repsMul: 1.0, reposMul: 1.0, tempoMul: 1.0 },\n    'avanc\u00e9': { repsMul: 1.15, reposMul: 0.9, tempoMul: 0.95 }\n  }[niveau];\n\n  const repsMin = Math.max(3, Math.round(base.reps[0] * levelAdjust.repsMul));\n  const repsMax = Math.max(repsMin, Math.round(base.reps[1] * levelAdjust.repsMul));\n  const reposExo = Math.round(base.reposExo * levelAdjust.reposMul);\n  const reposTour = Math.round(base.reposTour * levelAdjust.reposMul);\n  const tempo = +(base.tempo * levelAdjust.tempoMul).toFixed(2);\n\n  return { repsMin, repsMax, reposExo, reposTour, tempo };\n}\n\n\/* Calcul du nombre de tours optimal pour remplir la dur\u00e9e principale\n   on r\u00e9sout approximativement: total_time \u2248 tours * (sum_exo_time + reposExo*nbExos) + reposTour*(tours-1)\n   avec exo_time = reps * tempo\n*\/\nfunction calcTours(dureePrincipaleSec, exos, params) {\n  \/\/ choisir r\u00e9p\u00e9titions par exercice (moyenne)\n  const repsByExo = exos.map(() => Math.floor((params.repsMin + params.repsMax) \/ 2));\n  const timeExosPerTour = repsByExo.reduce((acc, r) => acc + (r * params.tempo), 0);\n  const timeReposBetweenExos = exos.length * params.reposExo;\n  \/\/ dur\u00e9e approximative d'un tour\n  const tourTime = timeExosPerTour + timeReposBetweenExos;\n  \/\/ d\u00e9duire tours (au moins 2, max 8)\n  let tours = Math.max(2, Math.floor((dureePrincipaleSec + params.reposTour) \/ (tourTime + params.reposTour)));\n  tours = Math.min(tours, 8);\n  if (tours < 2) tours = 2;\n  \/\/ si tours trop grand par rapport \u00e0 dur\u00e9e, r\u00e9duire\n  while ((tours * tourTime + (tours - 1) * params.reposTour) > dureePrincipaleSec && tours > 1) {\n    tours--;\n  }\n  if (tours < 1) tours = 1;\n  return { tours, tourTime, repsByExo };\n}\n\n\/* G\u00e9n\u00e8re la s\u00e9ance compl\u00e8te *\/\nfunction genererSeance(objectif, niveau, dureeMin) {\n  \/\/ R\u00e9partition du temps\n  const dureeTotalMin = parseInt(dureeMin, 10);\n  const echauffMin = 5;\n  const cooldownMin = 3;\n  const minMain = 8; \/\/ si probl\u00e8me\n  let principaleMin = dureeTotalMin - (echauffMin + cooldownMin);\n  if (principaleMin < minMain) {\n    \/\/ r\u00e9duire \u00e9chauffement\/cooldown si n\u00e9cessaire\n    const deficit = minMain - principaleMin;\n    principaleMin = minMain;\n    if (echauffMin > 3) { echauffMin = Math.max(3, echauffMin - Math.ceil(deficit \/ 2)); }\n    if (cooldownMin > 2) { cooldownMin = Math.max(2, cooldownMin - Math.floor(deficit \/ 2)); }\n  }\n\n  const principaleSec = principaleMin * 60;\n\n  \/\/ choisir exercices\n  const nbExos = choisirNbExos(principaleMin);\n  const exos = shuffle(EXERCICES).slice(0, nbExos);\n\n  \/\/ param\u00e8tres selon objectif\/niveau\n  const params = parametres(objectif, niveau);\n\n  \/\/ calcul des tours\n  const { tours, tourTime, repsByExo } = calcTours(principaleSec, exos, params);\n\n  \/\/ Construire la description d\u00e9taill\u00e9e: ajuster les r\u00e9p\u00e9titions selon objectif (plage) et niveau\n  const exercicesDetail = exos.map((e, idx) => {\n    \/\/ logique pour choisir r\u00e9p en fonction de l'objectif (favoriser extr\u00eames)\n    let reps;\n    if (objectif === 'force') {\n      \/\/ plus proches du min\n      reps = Math.max(params.repsMin, Math.round(params.repsMin + Math.random() * 2));\n    } else if (objectif === 'endurance') {\n      reps = Math.max(params.repsMin, Math.round(params.repsMax - Math.random() * 3));\n    } else { \/\/ tonification\n      reps = Math.round((params.repsMin + params.repsMax) \/ 2 + (Math.random() > 0.5 ? 1 : -1));\n    }\n    reps = Math.min(params.repsMax, Math.max(params.repsMin, reps));\n\n    \/\/ variantes propos\u00e9es\n    const variantes = [];\n    if (e.nom.includes('squat')) variantes.push('squat sumo (pieds plus \u00e9cart\u00e9s)');\n    if (e.nom.includes('Fente') || e.nom.includes('fente')) variantes.push('fente statique pour r\u00e9duire l'\u00e9quilibre');\n    if (e.nom.includes('pont')) variantes.push('pont sur une jambe (plus difficile)');\n    if (e.nom.includes('mollet')) variantes.push('faire sur une marche pour plus d'amplitude');\n\n    \/\/ retours courts sur la forme\n    const tips = {\n      squat: 'Regarder droit devant, genoux align\u00e9s avec les orteils.',\n      'fente-arriere': 'Pousser avec le talon de la jambe avant lors de la remont\u00e9e.',\n      'pont-gleute': 'Contracter les fessiers en haut et ne pas creuser le bas du dos.',\n      'pistol-assiste': 'Utiliser les bras pour garder l'\u00e9quilibre, amplitude contr\u00f4l\u00e9e.',\n      'mollet-debout': 'Monter et descendre lentement, pleine amplitude.',\n      'squat-saut': 'Atterrir souplement, fl\u00e9chir l\u00e9g\u00e8rement pour amortir.',\n      'step-up': 'Monter en gardant le tronc stable, pousser avec la jambe cibl\u00e9e.',\n      'good-morning': 'Gardez le dos neutre, pliez \u00e0 partir des hanches.',\n      'isl-single-leg-romanian': 'Balance contr\u00f4l\u00e9e, sentirez les ischios.'\n    }[e.id] || '';\n\n    return {\n      id: e.id,\n      nom: e.nom,\n      desc: e.desc,\n      reps,\n      tempo: params.tempo,\n      reposExo: params.reposExo,\n      variantes: variantes.length ? variantes : [TEXT.aucune],\n      tips\n    };\n  });\n\n  \/\/ Estimation du temps final (approx)\n  const tempsPrincipaleEst = Math.round(tours * tourTime + (tours - 1) * params.reposTour); \/\/ en secondes\n\n  \/\/ Rassembler la s\u00e9ance\n  const seance = {\n    objectif, niveau, dureeTotalMin, echauffMin, principaleMin, cooldownMin,\n    tours, tempsPrincipaleEst, exercicesDetail,\n    params\n  };\n  return seance;\n}\n\n\/* Rendu HTML (tout en fran\u00e7ais) *\/\nfunction renderSeance(seance) {\n  const { objectif, niveau, dureeTotalMin, echauffMin, principaleMin, cooldownMin, tours, tempsPrincipaleEst, exercicesDetail, params } = seance;\n\n  \/\/ Format seconds to mm:ss\n  function fmtSec(s) {\n    const mm = Math.floor(s \/ 60);\n    const ss = s % 60;\n    return `${mm}m ${ss}s`;\n  }\n\n  \/\/ Calcul du temps total estim\u00e9\n  const totalEstSec = (echauffMin + principaleMin + cooldownMin) * 60;\n  const mainEstReadable = fmtSec(tempsPrincipaleEst);\n\n  \/\/ Construction de l'HTML accessible\n  const container = document.createElement('div');\n  container.className = 'space-y-4';\n\n  \/\/ En-t\u00eate s\u00e9ance\n  const header = document.createElement('div');\n  header.className = 'p-3 border rounded bg-gray-50';\n  header.innerHTML = `\n    <div class=\"flex justify-between items-start gap-4\">\n      <div>\n        <div class=\"text-sm text-gray-600\">Objectif<\/div>\n        <div class=\"font-medium\">${objectif.charAt(0).toUpperCase() + objectif.slice(1)}<\/div>\n      <\/div>\n      <div>\n        <div class=\"text-sm text-gray-600\">Niveau<\/div>\n        <div class=\"font-medium\">${niveau}<\/div>\n      <\/div>\n      <div>\n        <div class=\"text-sm text-gray-600\">Dur\u00e9e cibl\u00e9e<\/div>\n        <div class=\"font-medium\">${dureeTotalMin} min<\/div>\n      <\/div>\n      <div>\n        <div class=\"text-sm text-gray-600\">Est. circuit principal<\/div>\n        <div class=\"font-medium\">${mainEstReadable}<\/div>\n      <\/div>\n    <\/div>\n  `;\n  container.appendChild(header);\n\n  \/\/ \u00c9chauffement\n  const warm = document.createElement('section');\n  warm.className = 'p-3 border rounded';\n  warm.innerHTML = `\n    <h3 class=\"font-semibold\">${TEXT.echauffement} \u2014 ${echauffMin} min<\/h3>\n    <ul class=\"list-disc pl-5 mt-2 text-sm\">\n      <li>2 min de marche sur place ou mont\u00e9e de genoux l\u00e9g\u00e8re<\/li>\n      <li>1 min mobilit\u00e9 hanches (cercles, rotations)<\/li>\n      <li>1 min squats l\u00e9gers (amplitude progressive)<\/li>\n      <li>1 min fentes dynamiques altern\u00e9es ou talons-fesses<\/li>\n    <\/ul>\n  `;\n  container.appendChild(warm);\n\n  \/\/ Circuit principal\n  const main = document.createElement('section');\n  main.className = 'p-3 border rounded';\n  main.innerHTML = `<h3 class=\"font-semibold\">${TEXT.principal} \u2014 ${tours} ${TEXT.series} (${principaleMin} min)<\/h3>`;\n\n  const exoList = document.createElement('ol');\n  exoList.className = 'list-decimal pl-5 mt-2 space-y-2 text-sm';\n  exercicesDetail.forEach((ex, idx) => {\n    const li = document.createElement('li');\n    li.innerHTML = `\n      <div class=\"font-medium\">${ex.nom}<\/div>\n      <div class=\"text-gray-700\">${ex.desc}<\/div>\n      <div class=\"mt-1 text-sm\">\n        <span class=\"font-semibold\">${TEXT.repetitions}:<\/span> ${ex.reps} par exo &nbsp; \u00b7 &nbsp;\n        <span class=\"font-semibold\">${TEXT.repos} (entre exos):<\/span> ${ex.reposExo}s &nbsp; \u00b7 &nbsp;\n        <span class=\"font-semibold\">Tempo:<\/span> ~${ex.tempo}s par r\u00e9p\u00e9tition\n      <\/div>\n      <div class=\"mt-1 text-xs text-gray-600\">\n        <span class=\"font-semibold\">${TEXT.alternatives}:<\/span> ${ex.variantes.join(', ')} ${ex.tips ? ' \u00b7 ' + ex.tips : ''}\n      <\/div>\n    `;\n    exoList.appendChild(li);\n  });\n\n  const mainFooter = document.createElement('div');\n  mainFooter.className = 'mt-3 text-sm text-gray-700';\n  mainFooter.innerHTML = `\n    R\u00e9p\u00e9tez la liste ci-dessus ${tours} fois en encha\u00eenant les exercices avec ${params.reposExo}s de repos entre chaque exercice.\n    Prenez ${params.reposTour}s de repos entre chaque tour.\n  `;\n\n  main.appendChild(exoList);\n  main.appendChild(mainFooter);\n  container.appendChild(main);\n\n  \/\/ Cooldown\n  const cool = document.createElement('section');\n  cool.className = 'p-3 border rounded';\n  cool.innerHTML = `\n    <h3 class=\"font-semibold\">${TEXT.cooldown} \u2014 ${cooldownMin} min<\/h3>\n    <ul class=\"list-disc pl-5 mt-2 text-sm\">\n      <li>\u00c9tirement fessiers (30s par jambe)<\/li>\n      <li>\u00c9tirement quadriceps (30s par jambe)<\/li>\n      <li>\u00c9tirement ischio-jambiers assis (1 min)<\/li>\n      <li>Respiration profonde et marche lente 30s<\/li>\n    <\/ul>\n  `;\n  container.appendChild(cool);\n\n  \/\/ Conseils finaux\n  const tips = document.createElement('div');\n  tips.className = 'p-3 border rounded bg-yellow-50 text-sm';\n  tips.innerHTML = `\n    <div class=\"font-semibold mb-1\">Conseils & s\u00e9curit\u00e9<\/div>\n    <ul class=\"list-disc pl-5\">\n      <li>Respectez la technique avant d'augmenter les r\u00e9p\u00e9titions.<\/li>\n      <li>Hydratez-vous et adaptez la s\u00e9ance si douleur (douleur aigu\u00eb).<\/li>\n      <li>Si vous cherchez plus de difficult\u00e9 : augmentez les r\u00e9p\u00e9titions, r\u00e9duisez les repos, ou ajoutez une charge (sac \u00e0 dos).<\/li>\n    <\/ul>\n  `;\n  container.appendChild(tips);\n\n  \/\/ Estimation du temps global\n  const timeEstDiv = document.createElement('div');\n  timeEstDiv.className = 'text-sm text-gray-600';\n  timeEstDiv.textContent = `Estimation totale (approx) : ${dureeTotalMin} min (${Math.round((echauffMin+principaleMin+cooldownMin))} min).`;\n  container.appendChild(timeEstDiv);\n\n  \/\/ Remplacer le contenu\n  resultEl.innerHTML = '';\n  resultEl.appendChild(container);\n}\n\n\/* G\u00e9n\u00e9ration et rendu d\u00e9clench\u00e9s *\/\nfunction doGenerate() {\n  const objectif = objectifEl.value;\n  const niveau = niveauEl.value;\n  const duree = dureeEl.value;\n  const seance = genererSeance(objectif, niveau, duree);\n  renderSeance(seance);\n\n  \/\/ Stocker la derni\u00e8re s\u00e9ance pour copie\/impression\n  window._lastSeanceHtml = resultEl.innerHTML;\n}\n\n\/* R\u00e9g\u00e9n\u00e9rer (variante al\u00e9atoire, m\u00eame param\u00e8tres) *\/\nfunction doRegenerate() {\n  \/\/ simple : recliquer sur g\u00e9n\u00e9rer mais en for\u00e7ant reshuffle\n  doGenerate();\n}\n\n\/* Copier le HTML en texte clair (fran\u00e7ais) *\/\nasync function doCopy() {\n  if (!window._lastSeanceHtml) {\n    alert('G\u00e9n\u00e9rez d'abord une s\u00e9ance.');\n    return;\n  }\n  \/\/ Copier texte visible (grossier, mais utile)\n  const temp = document.createElement('div');\n  temp.innerHTML = window._lastSeanceHtml;\n  const text = temp.innerText || temp.textContent;\n  try {\n    await navigator.clipboard.writeText(text);\n    alert('S\u00e9ance copi\u00e9e dans le presse-papiers.');\n  } catch (e) {\n    \/\/ fallback\n    const ta = document.createElement('textarea');\n    ta.value = text;\n    document.body.appendChild(ta);\n    ta.select();\n    document.execCommand('copy');\n    document.body.removeChild(ta);\n    alert('S\u00e9ance copi\u00e9e dans le presse-papiers (fallback).');\n  }\n}\n\n\/* Impression : ouvre une nouvelle fen\u00eatre avec contenu minimal *\/\nfunction doPrint() {\n  if (!window._lastSeanceHtml) { alert('G\u00e9n\u00e9rez d'abord une s\u00e9ance.'); return; }\n  const w = window.open('', '_blank', 'width=800,height=900');\n  w.document.write('<meta charset=\"utf-8\"><title>S\u00e9ance jambes \u2014 impression<\/title>');\n  w.document.write('<style>body{font-family:system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial;padding:20px;color:#111} h3{margin-top:1rem}<\/style>');\n  w.document.write(window._lastSeanceHtml);\n  w.document.close();\n  w.focus();\n  setTimeout(() => { w.print(); }, 300);\n}\n\n\/* \u00c9v\u00e9nements *\/\ngenBtn.addEventListener('click', doGenerate);\nregenBtn.addEventListener('click', doRegenerate);\ncopyBtn.addEventListener('click', doCopy);\nprintBtn.addEventListener('click', doPrint);\n\n\/* G\u00e9n\u00e9rer une s\u00e9ance par d\u00e9faut \u00e0 l'ouverture *\/\ndocument.addEventListener('DOMContentLoaded', () => {\n  \/\/ initial render\n  dureeValEl.textContent = dureeEl.value;\n  doGenerate();\n});\n\n\/*\n  Remarque sur APIs: ce simulateur n'utilise aucune API externe pour rester 100% local et gratuit.\n  Si vous souhaitez enrichir avec des vid\u00e9os d'exercices, utilisez une API publique gratuite (ex: API OpenVideoSample fictive).\n  Exemple (fictif) d'URL d'API publique gratuite:\n    https:\/\/example-free-api.org\/exercices\/jambes\n  Exemple de r\u00e9ponse JSON attendue (fictif):\n    [\n      { \"id\": \"squat\", \"nom\": \"Squat\", \"video\": \"https:\/\/cdn.example.org\/videos\/squat.mp4\", \"desc\": \"...\" },\n      ...\n    ]\n*\/\n<\/script>\n\n<h2 class=\"wp-block-heading\">Erreurs fr\u00e9quentes et conseils terrain pour \u00e9viter les blessures<\/h2>\n\n<p class=\"wp-block-paragraph\">Plusieurs erreurs reviennent souvent chez les pratiquants qui s\u2019entra\u00eenent \u00e0 domicile. Les corriger permet de progresser plus vite et sans douleur.<\/p>\n\n<ol class=\"wp-block-list\"><li><strong>Mauvaise technique<\/strong> : genou qui d\u00e9passe la pointe du pied en squat ou fente \u2014 corrigez en reculant l\u00e9g\u00e8rement la jambe et en poussant sur les talons.<\/li><li><strong>Trop d\u2019intensit\u00e9 trop vite<\/strong> : augmenter progressivement les r\u00e9p\u00e9titions plut\u00f4t que d\u2019ajouter soudainement charges ou sauts.<\/li><li><strong>Ignorer le gainage jambes et tronc<\/strong> : un tronc faible r\u00e9duit l\u2019efficacit\u00e9 des mouvements ; int\u00e9grez 2\u20133 s\u00e9ries de gainage par s\u00e9ance.<\/li><li><strong>Pauvre r\u00e9cup\u00e9ration<\/strong> : sommeil insuffisant et alimentation pauvre en prot\u00e9ines freinent la progression.<\/li><\/ol>\n\n<p class=\"wp-block-paragraph\">Pour des conseils cibl\u00e9s sur la protection des genoux lors de la musculation maison, consultez <a href=\"https:\/\/www.bras-de-fer.fr\/blog\/musculation-genoux-conseils\/\" rel=\"nofollow\">musculation genoux conseils<\/a>. Correction technique = gains imm\u00e9diats.<\/p>\n\n<h2 class=\"wp-block-heading\">Variantes, intensification et mat\u00e9riel l\u00e9ger<\/h2>\n\n<p class=\"wp-block-paragraph\">Quand les exercices deviennent faciles, surprenez le muscle : tempo long, repos r\u00e9duit, ou travail unilat\u00e9ral. Les bandes \u00e9lastiques et un sac \u00e0 dos lest\u00e9 sont des investissements peu co\u00fbteux pour progresser.<\/p>\n\n<ul class=\"wp-block-list\"><li>Tempo : 3\u20134 s \u00e0 la descente, mont\u00e9e explosive.<\/li><li>Repos : r\u00e9duire de 60 s \u00e0 45 s pour augmenter le stress m\u00e9tabolique.<\/li><li>Mat\u00e9riel utile : bandes \u00e9lastiques, halt\u00e8res r\u00e9glables ou sac \u00e0 dos lest\u00e9 \u2014 voir guide <a href=\"https:\/\/www.bras-de-fer.fr\/blog\/halteres-reglables-comment-choisir-le-meilleur-modele-pour-votre-entrainement-a-domicile\/\" rel=\"nofollow\">comment choisir des halt\u00e8res r\u00e9glables<\/a>.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Les fentes bulgares et le pistol squat sont des options avanc\u00e9es ; commencez avec assistance (chaise) puis r\u00e9duisez l\u2019appui.<\/p>\n\n<h2 class=\"wp-block-heading\">Nutrition et r\u00e9cup\u00e9ration pour soutenir le renforcement musculaire<\/h2>\n\n<p class=\"wp-block-paragraph\">Sans apport prot\u00e9ique suffisant et un sommeil r\u00e9parateur, les progr\u00e8s stagneront. Visez 1.2\u20131.6 g de prot\u00e9ines par kg de poids corporel si l\u2019objectif est la prise de muscle.<\/p>\n\n<p class=\"wp-block-paragraph\">Exemple post\u2011s\u00e9ance rapide : 2 \u0153ufs + flocons d\u2019avoine ou un bol de fromage blanc et banane. Le sommeil doit atteindre 7\u20138 heures pour permettre la r\u00e9paration des fibres.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour des recettes et id\u00e9es pratiques, plusieurs blogs proposent des repas post-s\u00e9ance simples et rapides adapt\u00e9s aux sportifs \u00e0 domicile.<\/p>\n\n<h2 class=\"wp-block-heading\">Synth\u00e8se courte et action imm\u00e9diate<\/h2>\n\n<p class=\"wp-block-paragraph\">Choisissez aujourd\u2019hui une s\u00e9ance de 20\u201330 minutes, concentrez-vous sur l\u2019ex\u00e9cution des squats et des fentes, puis suivez le programme 4 semaines. Notez vos progr\u00e8s dans un carnet et augmentez progressivement la charge ou le tempo. Commencez maintenant : une s\u00e9ance bien r\u00e9alis\u00e9e vaut mieux que dix incompl\u00e8tes.<\/p>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Combien de su00e9ances par semaine pour progresser sans salle ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Trois su00e9ances par semaine, espacu00e9es du2019un jour de repos, offrent un bon compromis entre progression et ru00e9cupu00e9ration. Ajustez u00e0 deux si lu2019emploi du temps est serru00e9.\"}},{\"@type\":\"Question\",\"name\":\"Fautu2011il du matu00e9riel pour obtenir des ru00e9sultats ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Non, les exercices poids du corps permettent des gains significatifs. Bandes u00e9lastiques ou un sac lestu00e9 augmentent la progressivitu00e9 lorsque les mouvements deviennent faciles.\"}},{\"@type\":\"Question\",\"name\":\"Comment progresser si je manque du2019u00e9quilibre pour les exercices unilatu00e9raux ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Utilisez une chaise ou une main appuyu00e9e pour assister lu2019u00e9quilibre, diminuez lu2019amplitude puis augmentez-la progressivement. Le travail unilatu00e9ral corrige les du00e9su00e9quilibres sur le long terme.\"}},{\"@type\":\"Question\",\"name\":\"Que manger apru00e8s une su00e9ance ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Un apport protu00e9inu00e9 rapide (20u201330 g) et des glucides simples pour recharger les ru00e9serves sont efficaces : u0153ufs + avoine, yaourt grec avec banane ou pancakes protu00e9inu00e9s maison.\"}}]}\n<\/script>\n<h3>Combien de s\u00e9ances par semaine pour progresser sans salle ?<\/h3>\n<p>Trois s\u00e9ances par semaine, espac\u00e9es d\u2019un jour de repos, offrent un bon compromis entre progression et r\u00e9cup\u00e9ration. Ajustez \u00e0 deux si l\u2019emploi du temps est serr\u00e9.<\/p>\n<h3>Faut\u2011il du mat\u00e9riel pour obtenir des r\u00e9sultats ?<\/h3>\n<p>Non, les exercices poids du corps permettent des gains significatifs. Bandes \u00e9lastiques ou un sac lest\u00e9 augmentent la progressivit\u00e9 lorsque les mouvements deviennent faciles.<\/p>\n<h3>Comment progresser si je manque d\u2019\u00e9quilibre pour les exercices unilat\u00e9raux ?<\/h3>\n<p>Utilisez une chaise ou une main appuy\u00e9e pour assister l\u2019\u00e9quilibre, diminuez l\u2019amplitude puis augmentez-la progressivement. Le travail unilat\u00e9ral corrige les d\u00e9s\u00e9quilibres sur le long terme.<\/p>\n<h3>Que manger apr\u00e8s une s\u00e9ance ?<\/h3>\n<p>Un apport prot\u00e9in\u00e9 rapide (20\u201330 g) et des glucides simples pour recharger les r\u00e9serves sont efficaces : \u0153ufs + avoine, yaourt grec avec banane ou pancakes prot\u00e9in\u00e9s maison.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Vous voulez des jambes plus fortes sans prendre d\u2019abonnement en salle ? Ce guide pratique livre une m\u00e9thode claire, des exercices maison cibl\u00e9s, un plan progressif sur 4 semaines et des astuces nutrition\/r\u00e9cup\u00e9ration pour transformer votre quotidien. Illustrations, vid\u00e9os d\u2019ex\u00e9cution et variantes pour d\u00e9butants comme pour plus aguerris permettent d\u2019appliquer imm\u00e9diatement chaque mouvement. Le fil &#8230; <a title=\"Comment se muscler les jambes sans aller en salle de sport\" class=\"read-more\" href=\"https:\/\/www.bras-de-fer.fr\/blog\/muscler-jambes-sans-salle\/\" aria-label=\"En savoir plus sur Comment se muscler les jambes sans aller en salle de sport\">Lire plus<\/a><\/p>\n","protected":false},"author":1,"featured_media":5578,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-5579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sport"],"views":0,"_links":{"self":[{"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/posts\/5579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/comments?post=5579"}],"version-history":[{"count":0,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/posts\/5579\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/media\/5578"}],"wp:attachment":[{"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/media?parent=5579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/categories?post=5579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bras-de-fer.fr\/blog\/wp-json\/wp\/v2\/tags?post=5579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}