Club Fitness ART España | Cyberpunk Training & Store /* === ESTILOS GENERALES Y CYBERPUNK === */ :root { –primary: #ffcc00; –cyan-neon: #00f3ff; –bg-dark: #0a0a0c; –bg-card: #141417; –text-light: #e0e6ed; –work-color: #00f3ff; –rest-color: #ff003c; –youtube-color: #ff0000; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: ‘Rajdhani’, sans-serif; scroll-behavior: smooth; } body { background-color: var(–bg-dark); color: var(–text-light); line-height: 1.6; background-image: linear-gradient(rgba(0, 243, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 243, 255, 0.03) 1px, transparent 1px); background-size: 30px 30px; } /* === CABECERA / NAVEGACIÓN === */ header { background-color: rgba(10, 10, 12, 0.95); padding: 1rem 5%; display: flex; justify-content: space-between; align-items: center; position: sticky; top: 0; z-index: 100; border-bottom: 2px solid var(–cyan-neon); box-shadow: 0 0 15px rgba(0, 243, 255, 0.2); } .logo { font-size: 1.8rem; font-weight: 700; color: white; text-decoration: none; letter-spacing: 1px; } .logo span, .marca-art { color: var(–primary); text-shadow: 0 0 8px rgba(255, 204, 0, 0.6); } nav ul { list-style: none; display: flex; gap: 1.5rem; align-items: center; } nav a { color: white; text-decoration: none; font-weight: 600; transition: all 0.3s; font-size: 1.1rem; text-transform: uppercase; letter-spacing: 1px; } nav a:hover { color: var(–cyan-neon); text-shadow: 0 0 8px rgba(0, 243, 255, 0.8); } .btn-yt-nav { background-color: transparent; border: 1px solid var(–youtube-color); color: var(–youtube-color); padding: 5px 12px; transition: all 0.3s; clip-path: polygon(10% 0, 100% 0, 90% 100%, 0% 100%); } .btn-yt-nav:hover { background-color: var(–youtube-color); color: white !important; box-shadow: 0 0 15px rgba(255, 0, 0, 0.5); transform: scale(1.05); } .container { max-width: 1200px; margin: 0 auto; padding: 4rem 20px; } h1, h2 { text-align: center; color: var(–primary); margin-bottom: 2rem; text-transform: uppercase; letter-spacing: 2px; text-shadow: 0 0 10px rgba(255, 204, 0, 0.3); font-size: 2.5rem; } .section-desc { text-align: center; color: #b0b8c1; margin-bottom: 3rem; max-width: 800px; margin-left: auto; margin-right: auto; font-size: 1.1rem; } /* === TIENDA (Corregida con imágenes 100% funcionales) === */ .grid-tienda { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 2rem; } .card-producto { background: var(–bg-card); border: 1px solid #333; position: relative; transition: all 0.3s; display: flex; flex-direction: column; justify-content: space-between; } .card-producto:hover { transform: translateY(-5px); box-shadow: 0 0 20px rgba(255, 204, 0, 0.2); border-color: var(–primary); } .producto-img-container { width: 100%; height: 220px; overflow: hidden; position: relative; border-bottom: 2px solid var(–cyan-neon); background: #ffffff; /* Fondo blanco para estética e-commerce */ display: flex; justify-content: center; align-items: center; } .badge-top { position: absolute; top: 10px; right: -25px; background: var(–rest-color); color: white; padding: 5px 30px; font-weight: bold; font-size: 0.8rem; transform: rotate(45deg); box-shadow: 0 0 10px rgba(255, 0, 60, 0.5); z-index: 2; } .producto-img-container img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s; } .card-producto:hover .producto-img-container img { transform: scale(1.08); } .producto-info { padding: 1.5rem; display: flex; flex-direction: column; flex-grow: 1; } .producto-titulo { font-size: 1.4rem; color: white; margin-bottom: 10px; line-height: 1.2; text-transform: uppercase;} .producto-desc { font-size: 1rem; color: #b0b8c1; margin-bottom: 20px; flex-grow: 1; } .btn-comprar { display: block; text-align: center; background: transparent; border: 1px solid var(–primary); color: var(–primary); text-decoration: none; padding: 10px; font-weight: 700; font-size: 1.1rem; transition: all 0.3s; text-transform: uppercase; letter-spacing: 1px; clip-path: polygon(10px 0, 100% 0, 100% calc(100% – 10px), calc(100% – 10px) 100%, 0 100%, 0 10px); } .btn-comprar:hover { background: var(–primary); color: #000; box-shadow: 0 0 15px rgba(255, 204, 0, 0.5); } /* === SECCIÓN DE EJERCICIOS === */ .grid-ejercicios { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 1.5rem; } .card-musculo { background: var(–bg-card); padding: 1.5rem; border: 1px solid #222; border-top: 3px solid var(–cyan-neon); border-bottom: 3px solid var(–primary); transition: transform 0.3s, box-shadow 0.3s; } .card-musculo:hover { transform: translateY(-5px); box-shadow: 0 5px 20px rgba(0, 243, 255, 0.15); } .card-musculo h3 { font-size: 1.6rem; margin-bottom: 1rem; color: white; border-bottom: 1px dashed #333; padding-bottom: 0.5rem; } .lista-items { margin-bottom: 1rem; color: #b0b8c1; font-size: 1.1rem; } .lista-items ul { list-style-type: square; margin-left: 20px; margin-bottom: 10px; color: var(–cyan-neon);} .lista-items ul li span { color: #b0b8c1; } .subcategoria { color: var(–cyan-neon); font-weight: 700; margin-top: 10px; display: block; text-transform: uppercase; font-size: 0.95rem; } .fundamentales { background: rgba(255, 204, 0, 0.05); padding: 12px; border-left: 4px solid var(–primary); font-size: 1.05rem; margin-top: 15px; color: #fff; } .fundamentales strong { color: var(–primary); } /* === SOFTWARE GENERADOR DE RUTINAS === */ .rutina-container { background: var(–bg-card); padding: 2.5rem; max-width: 800px; margin: 0 auto; border: 1px solid #333; border-top: 4px solid var(–cyan-neon); box-shadow: 0 0 30px rgba(0, 243, 255, 0.1); } .form-rutina { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; } .form-rutina .full-width { grid-column: 1 / -1; } .form-rutina label { color: var(–cyan-neon); font-weight: 700; display: block; margin-bottom: 5px; text-transform: uppercase; font-size: 0.9rem; } .form-rutina select, .form-rutina input { width: 100%; padding: 12px; border: 1px solid #444; background: #0a0a0c; color: white; font-size: 16px; font-weight: 600; } .form-rutina select:focus, .form-rutina input:focus { outline: none; border-color: var(–cyan-neon); box-shadow: 0 0 10px rgba(0, 243, 255, 0.2);} .btn-generar { background: var(–cyan-neon); color: #000; padding: 15px; border: none; font-size: 1.2rem; font-weight: 700; cursor: pointer; margin-top: 15px; transition: all 0.3s; text-transform: uppercase; letter-spacing: 1px; width: 100%; grid-column: 1 / -1;} .btn-generar:hover { box-shadow: 0 0 20px rgba(0, 243, 255, 0.6); background: white;} .resultado-rutina { margin-top: 2rem; padding: 2rem; background: #0a0a0c; display: none; border: 1px solid var(–cyan-neon); animation: fadeIn 0.5s ease-in-out; } .resultado-rutina h3 { color: var(–cyan-neon); font-size: 2rem; margin-bottom: 15px; border-bottom: 1px dashed #333; padding-bottom: 10px;} .dia-rutina { background: #111; padding: 15px; margin-bottom: 15px; border-left: 4px solid var(–primary); } .dia-rutina h4 { color: var(–primary); font-size: 1.3rem; margin-bottom: 10px; text-transform: uppercase; } .dia-rutina ul { list-style: none; color: #e0e6ed; } .dia-rutina ul li { margin-bottom: 8px; font-size: 1.1rem; display: flex; align-items: center; } .dia-rutina ul li::before { content: ‘▸’; color: var(–cyan-neon); margin-right: 10px; font-size: 1.2rem; } .recomendaciones { margin-top: 20px; padding: 15px; background: rgba(255, 0, 60, 0.1); border-left: 4px solid var(–rest-color); color: #fff; margin-bottom: 25px; } /* === TEMPORIZADOR Y CALCULADORA === */ .hiit-container, .calculadora-container { background: var(–bg-card); padding: 2.5rem; text-align: center; max-width: 650px; margin: 0 auto; border: 1px solid #333; border-top: 4px solid var(–primary); box-shadow: 0 0 30px rgba(0, 0, 0, 0.8); } .inputs-hiit { display: flex; justify-content: center; gap: 1.5rem; margin-bottom: 1.5rem; flex-wrap: wrap;} .input-group { display: flex; flex-direction: column; text-align: left; } .input-group label { font-size: 1rem; color: var(–cyan-neon); margin-bottom: 5px; font-weight: 600; text-transform: uppercase;} .input-group input { padding: 10px; border: 1px solid #444; background: #0a0a0c; color: var(–primary); width: 100px; text-align: center; font-size: 16px; font-weight: 700; } .display-timer { font-size: 7rem; font-weight: 700; margin: 1rem 0; font-variant-numeric: tabular-nums; transition: color 0.3s; line-height: 1; text-shadow: 0 0 20px currentColor; } .ronda-display { font-size: 1.5rem; color: #fff; margin-bottom: 1rem; font-weight: 600; letter-spacing: 2px;} .fase-display { font-size: 2rem; font-weight: 700; text-transform: uppercase; margin-bottom: 0.5rem; letter-spacing: 4px; text-shadow: 0 0 10px currentColor;} .progress-bar-bg { width: 100%; height: 6px; background: #222; margin-bottom: 20px; overflow: hidden; } .progress-bar-fill { height: 100%; width: 100%; background: var(–text-light); transition: width 1s linear, background-color 0.3s; } .botones button { padding: 12px 30px; font-size: 1.2rem; font-weight: 700; border: none; cursor: pointer; margin: 5px; transition: all 0.3s; text-transform: uppercase; letter-spacing: 1px; clip-path: polygon(10px 0, 100% 0, 100% calc(100% – 10px), calc(100% – 10px) 100%, 0 100%, 0 10px); } .btn-iniciar { background: var(–primary); color: #000; } .btn-pausar { background: transparent; border: 1px solid var(–cyan-neon); color: var(–cyan-neon); padding: 11px 29px; } .form-calc { display: grid; gap: 1.2rem; } .form-calc select, .form-calc input { width: 100%; padding: 12px; border: 1px solid #444; background: #0a0a0c; color: white; font-size: 16px; font-weight: 600; } .btn-calc { background: var(–cyan-neon); color: #000; padding: 15px; border: none; font-size: 1.2rem; font-weight: 700; cursor: pointer; margin-top: 10px; transition: all 0.3s; text-transform: uppercase; letter-spacing: 1px; } .resultado-calc { margin-top: 1.5rem; padding: 1.5rem; background: #0a0a0c; display: none; text-align: center; border: 1px solid var(–primary); animation: fadeIn 0.5s ease-in-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* === FOOTER === */ footer { background-color: #050506; padding: 4rem 20px; text-align: center; border-top: 2px solid var(–cyan-neon); margin-top: 4rem; } .footer-logo { font-size: 2rem; font-weight: 700; color: white; margin-bottom: 1rem; letter-spacing: 2px;} .footer-yt-btn { display: inline-block; background-color: transparent; border: 2px solid var(–youtube-color); color: var(–youtube-color); text-decoration: none; padding: 12px 30px; font-size: 1.2rem; font-weight: 700; margin-top: 1rem; transition: all 0.3s; text-transform: uppercase; } .footer-yt-btn:hover { background-color: var(–youtube-color); color: white; box-shadow: 0 0 20px rgba(255, 0, 0, 0.6); } .copyright { margin-top: 3rem; color: #555; font-size: 1rem; } @media (max-width: 768px) { header { flex-direction: column; gap: 1.5rem; } nav ul { flex-wrap: wrap; justify-content: center; gap: 1rem; } .form-rutina { grid-template-columns: 1fr; } }

[ GEAR ] Arsenal de Entrenamiento

Equípate con los 8 productos fitness más vendidos y mejor valorados. Hardware esencial para maximizar tu rendimiento físico.

Nº 1
Pulsera de Actividad

Pulsera Smartwatch

Controla tus pulsaciones, calorías y sueño. El gadget número 1 para medir tu progreso en rutinas HIIT.

Ver en Amazon
Creatina Monohidrato

Creatina Monohidrato

El suplemento rey. Aumenta tu fuerza, acelera tu recuperación y potencia el crecimiento muscular con base científica.

Ver en Amazon
Proteína Whey

Proteína Whey (Suero)

Proteína de rápida absorción. Indispensable para reparar fibras musculares tras tu sesión de levantamiento de pesas.

Ver en Amazon
Cinta de Correr

Cinta de Correr Plegable

Mantén tu NEAT alto sin salir de casa. Diseño compacto ideal para caminar o correr sin ocupar espacio.

Ver en Amazon
Bicicleta Spinning

Bicicleta de Spinning

Volante de inercia profesional. Quema calorías al máximo nivel con sesiones intensas sin impacto en articulaciones.

Ver en Amazon
Mancuernas Neopreno

Juego de Mancuernas

El equipo básico offline. Pesos fijos o ajustables para aislar bíceps, tríceps y hombros de forma cómoda y segura.

Ver en Amazon
Bandas de Resistencia

Bandas de Resistencia

Diferentes niveles de tensión. Perfectas para entrenar en casa, hipertrofia o calentar articulaciones.

Ver en Amazon
Esterilla Fitness

Esterilla Antideslizante

Superficie gruesa para aislarte del suelo. Ideal para planchas, yoga, ab wheel o estiramientos post-entreno.

Ver en Amazon

Ejercicios Básicos y Fundamentales

Revisa el catálogo superior. El algoritmo utilizará esta base de datos para crear tu rutina.

1. Espalda

  • Dominadas (Gym/Casa)
  • Jalón al pecho (Gym)
  • Remo con barra (Gym/Casa)
  • Remo con mancuerna (Gym/Casa)
  • Remo en máquina (Gym)
  • Remo invertido (Gym/Casa)
  • Peso muerto (Gym/Casa)
  • Pullover (Gym/Casa)
[CORE] Dominadas, jalón, remo y peso muerto.

2. Pecho

  • Press banca plano (Gym/Casa)
  • Press inclinado (Gym/Casa)
  • Press con mancuernas (Gym/Casa)
  • Fondos en paralelas (Gym/Casa)
  • Flexiones (Gym/Casa)
  • Aperturas con mancuernas (Gym/Casa)
  • Cruce de poleas (Gym)
[CORE] Press banca, inclinado y flexiones.

3. Piernas

Cuádriceps: Sentadilla, prensa, zancadas, búlgara, extensión.Isquiotibiales: Peso muerto rumano, curl femoral, nordic curl.Glúteos: Hip thrust, puente, zancadas.Gemelos: Elevaciones de talones.
[CORE] Sentadilla, PM rumano, búlgara, hip thrust.

4. Hombros

Deltoides anterior: Press militar, press con mancuernas.Deltoides lateral: Elevaciones laterales.Deltoides posterior: Pájaros, face pulls, reverse fly.
[CORE] Press militar, elevaciones laterales y pájaros.

5. Bíceps

  • Curl con barra
  • Curl con mancuernas
  • Curl alterno
  • Curl martillo
  • Curl inclinado
  • Curl predicador
[CORE] Curl con barra, mancuernas y martillo.

6. Tríceps

  • Fondos
  • Press cerrado
  • Extensión de tríceps polea
  • Extensión sobre cabeza
  • Press francés
  • Flexiones cerradas
[CORE] Fondos, press cerrado y extensiones.

7. Antebrazos

  • Curl de muñeca
  • Curl inverso
  • Curl martillo
  • Farmer’s walk (Paseo del granjero)
  • Dead hang (Colgarse)
[CORE] Farmer’s walk, dead hang y curl martillo.

8. Abdomen y Core

Abdomen: Crunch, elevaciones de piernas y rodillas.Core: Plancha, plancha lateral, ab wheel.
[CORE] Plancha, elevaciones de piernas y ab wheel.

[ IA ] Programación de Rutinas

Introduce tu biometría. Nuestro algoritmo cruzará tus datos con nuestra base de datos para generar un protocolo exacto.

GéneroHombreMujer
Edad (Años)
Peso (Kg)
Altura (cm)
Nivel de Actividad / SedentarismoSedentario (Oficina, 0 deporte)Ligero (Entreno 1-2 días)Activo (Entreno 3-4 días)Muy Activo (5-6 días por semana)
Entorno de EntrenamientoGimnasio (Máquinas y Pesas)Casa (Mancuernas y Peso Corporal)
Duración de la Rutina Rutina para 1 Día (Full Body) Rutina Semanal (Microciclo) Rutina Mensual (Mesociclo con Progresión)

Módulo HIIT Avanzado

Trabajo
Descanso
Rondas
SISTEMA LISTO
00:00
RONDA: 0 / 8

Calculadora TDEE

HombreMujer SedentarioLigeroModeradoActivoMuy Activo

Gasto Energético de Mantenimiento:

0 kcal

Corte (Perder Grasa)

0 kcal

Volumen (Ganar Masa)

0 kcal
/* === SISTEMA DE AUDIO Y HIIT === */ let audioCtx; function initAudio() { if (!audioCtx) { audioCtx = new (window.AudioContext || window.webkitAudioContext)(); } if (audioCtx.state === ‘suspended’) audioCtx.resume(); } function playBeep(freq, duration) { initAudio(); const oscillator = audioCtx.createOscillator(); const gainNode = audioCtx.createGain(); oscillator.connect(gainNode); gainNode.connect(audioCtx.destination); oscillator.type = ‘square’; oscillator.frequency.value = freq; gainNode.gain.setValueAtTime(0.05, audioCtx.currentTime); gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + duration); oscillator.start(audioCtx.currentTime); oscillator.stop(audioCtx.currentTime + duration); } function soundStart() { playBeep(880, 0.4); } function soundPause() { playBeep(300, 0.3); } function soundReset() { playBeep(200, 0.5); } function soundRest() { playBeep(440, 0.4); } function soundFinish() { initAudio(); playBeep(880, 0.3); setTimeout(() => playBeep(880, 0.3), 400); setTimeout(() => playBeep(1200, 0.8), 800); } function announceRound(roundNumber) { if (‘speechSynthesis’ in window) { window.speechSynthesis.cancel(); const utterance = new SpeechSynthesisUtterance(`Ronda ${roundNumber}`); utterance.lang = ‘es-ES’; utterance.pitch = 1.3; utterance.rate = 1.0; const voices = window.speechSynthesis.getVoices(); const femaleVoice = voices.find(v => v.lang.startsWith(‘es’) && (v.name.toLowerCase().includes(‘female’) || v.name.toLowerCase().includes(‘mujer’) || v.name.toLowerCase().includes(‘monica’) || v.name.toLowerCase().includes(‘lucia’))); if (femaleVoice) utterance.voice = femaleVoice; window.speechSynthesis.speak(utterance); } } let timerInterval, isRunning = false, isWorkPhase = true, currentRound = 1, timeLeft = 0, totalRounds = 0, currentPhaseTotalTime = 0; const display = document.getElementById(‘timerDisplay’), faseDisplay = document.getElementById(‘faseDisplay’), rondaDisplay = document.getElementById(‘rondaDisplay’), progressBar = document.getElementById(‘progressBar’); function formatTime(seconds) { const m = Math.floor(seconds / 60).toString().padStart(2, ‘0’); const s = (seconds % 60).toString().padStart(2, ‘0’); return `${m}:${s}`; } function updateTimerUI() { display.textContent = formatTime(timeLeft); if(currentPhaseTotalTime > 0) { const percentage = (timeLeft / currentPhaseTotalTime) * 100; progressBar.style.width = `${percentage}%`; } if(isWorkPhase) { display.style.color = ‘var(–work-color)’; faseDisplay.textContent = ‘EJECUTANDO [TRABAJO]’; faseDisplay.style.color = ‘var(–work-color)’; progressBar.style.backgroundColor = ‘var(–work-color)’; display.style.textShadow = ‘0 0 20px rgba(0, 243, 255, 0.6)’; } else { display.style.color = ‘var(–rest-color)’; faseDisplay.textContent = ‘SISTEMA [DESCANSO]’; faseDisplay.style.color = ‘var(–rest-color)’; progressBar.style.backgroundColor = ‘var(–rest-color)’; display.style.textShadow = ‘0 0 20px rgba(255, 0, 60, 0.6)’; } rondaDisplay.textContent = `RONDA: ${currentRound} / ${totalRounds}`; } function startTimer() { if (isRunning) return; initAudio(); const workTime = parseInt(document.getElementById(‘workTime’).value); const restTime = parseInt(document.getElementById(‘restTime’).value); totalRounds = parseInt(document.getElementById(‘rounds’).value); if(timeLeft === 0 && currentRound === 1) { timeLeft = workTime; currentPhaseTotalTime = workTime; isWorkPhase = true; soundStart(); setTimeout(() => announceRound(1), 400); } else { soundStart(); } isRunning = true; document.getElementById(‘btnStart’).textContent = «EN CURSO…»; updateTimerUI(); timerInterval = setInterval(() => { timeLeft–; if (timeLeft totalRounds) { clearInterval(timerInterval); isRunning = false; soundFinish(); display.textContent = «00:00»; faseDisplay.textContent = «SECUENCIA COMPLETADA»; faseDisplay.style.color = «var(–primary)»; display.style.color = «var(–primary)»; display.style.textShadow = «0 0 20px rgba(255, 204, 0, 0.6)»; progressBar.style.width = «100%»; progressBar.style.backgroundColor = «var(–primary)»; document.getElementById(‘btnStart’).textContent = «INICIAR SECUENCIA»; currentRound = 1; return; } isWorkPhase = true; timeLeft = workTime; currentPhaseTotalTime = workTime; soundStart(); setTimeout(() => announceRound(currentRound), 400); } } updateTimerUI(); }, 1000); } function pauseTimer() { if (!isRunning) return; clearInterval(timerInterval); isRunning = false; document.getElementById(‘btnStart’).textContent = «REANUDAR»; soundPause(); if (‘speechSynthesis’ in window) window.speechSynthesis.cancel(); } function resetTimer() { clearInterval(timerInterval); isRunning = false; currentRound = 1; timeLeft = 0; currentPhaseTotalTime = 0; display.textContent = «00:00»; display.style.color = «var(–text-light)»; display.style.textShadow = «none»; faseDisplay.textContent = «SISTEMA LISTO»; faseDisplay.style.color = «#777»; progressBar.style.width = «100%»; progressBar.style.backgroundColor = «var(–text-light)»; document.getElementById(‘btnStart’).textContent = «INICIAR SECUENCIA»; rondaDisplay.textContent = `RONDA: 0 / ${document.getElementById(‘rounds’).value}`; soundReset(); if (‘speechSynthesis’ in window) window.speechSynthesis.cancel(); } /* === LÓGICA DE LA CALCULADORA === */ function calcularCalorias() { const genero = document.getElementById(‘genero’).value; const edad = parseFloat(document.getElementById(‘edad’).value); const peso = parseFloat(document.getElementById(‘peso’).value); const altura = parseFloat(document.getElementById(‘altura’).value); const actividad = parseFloat(document.getElementById(‘actividad’).value); if (!edad || !peso || !altura || edad < 0 || peso < 0 || altura < 0) { alert("ERROR: Por favor ingresa parámetros válidos."); return; } let tmb = (10 * peso) + (6.25 * altura) – (5 * edad); if (genero === 'hombre') tmb += 5; else tmb -= 161; const mantenimiento = Math.round(tmb * actividad); const deficit = mantenimiento – 500; const superavit = mantenimiento + 300; const calsMantEl = document.getElementById('calsMantenimiento'); const resultBox = document.getElementById('resultadoCalc'); resultBox.style.display = 'block'; calsMantEl.textContent = mantenimiento.toLocaleString('es-ES') + " kcal"; document.getElementById('calsDeficit').textContent = deficit.toLocaleString('es-ES') + " kcal"; document.getElementById('calsSuperavit').textContent = superavit.toLocaleString('es-ES') + " kcal"; } /* === LÓGICA DEL GENERADOR DE RUTINAS IA === */ const dbEjercicios = { gym: { pecho: ['Press banca plano', 'Press inclinado', 'Press con mancuernas', 'Cruce de poleas', 'Fondos en paralelas'], espalda: ['Dominadas', 'Jalón al pecho', 'Remo con barra', 'Remo en máquina', 'Peso muerto'], pierna: ['Sentadilla con barra', 'Prensa', 'Peso muerto rumano', 'Sentadilla búlgara', 'Elevaciones de gemelos'], hombro: ['Press militar', 'Elevaciones laterales en polea', 'Face pulls'], biceps: ['Curl con barra', 'Curl alterno', 'Curl predicador'], triceps: ['Press francés', 'Extensión de tríceps en polea', 'Fondos'], core: ['Crunch en polea', 'Elevaciones de piernas colgado', 'Plancha con peso'] }, casa: { pecho: ['Flexiones tradicionales', 'Flexiones declinadas', 'Fondos en silla', 'Aperturas con mancuernas'], espalda: ['Dominadas (si hay barra)', 'Remo invertido bajo mesa', 'Remo con mancuernas', 'Pullover con mancuerna'], pierna: ['Sentadilla al aire', 'Zancadas caminando', 'Sentadilla búlgara con mancuernas', 'Hip thrust en suelo', 'Elevación gemelos a un pie'], hombro: ['Press con mancuernas', 'Elevaciones laterales con mancuernas', 'Pájaros con mancuernas'], biceps: ['Curl con mancuernas', 'Curl martillo', 'Curl concentrado'], triceps: ['Flexiones diamante', 'Fondos en borde de cama', 'Extensión sobre cabeza con mancuerna'], core: ['Plancha isométrica', 'Elevaciones de piernas en suelo', 'Ab wheel (si se dispone) o Crunch'] } }; function getEjercicios(entorno, musculo, cantidad) { let lista = […dbEjercicios[entorno][musculo]]; let seleccionados = []; for(let i=0; i 25) { perfilBiotipo = «Prioridad: Recomposición corporal y quema calórica.»; repeticiones = «3 series x 12-15 repeticiones (Descansos 60s).»; } else if (imc 45 || actividad === ‘sedentario’) { perfilBiotipo += » (Enfoque en técnica y prevención articular debido al perfil).»; repeticiones = «3 series x 12 repeticiones (Movimientos controlados, sin llegar al fallo).»; } let html = `

Protocolo Generado para: ${genero.toUpperCase()} | Edad: ${edad}

`; html += `
Análisis Biométrico (IMC: ${imc.toFixed(1)}): ${perfilBiotipo}
Prescripción Base de Volumen: ${repeticiones}
`; if (duracion === ‘dia’) { html += `

Rutina Full Body (Cuerpo Completo). Ideal para impactar todo el sistema nervioso en un solo día.

`; html += `

Sesión Única (Full Body)

`; if(imc > 25) html += `

+ Requisito: Añadir 15 min en el Cronómetro HIIT al finalizar.

`; } else if (duracion === ‘semana’) { if (actividad === ‘sedentario’ || actividad === ‘ligero’) { html += `

Esquema de 3 días (Lunes, Miércoles, Viernes) para asegurar recuperación en perfiles iniciales.

`; for(let dia=1; dia<=3; dia++) { html += `

Día ${dia} – Full Body Adaptación

`; } } else { html += `

Esquema Push / Pull / Legs (Empuje, Tirón, Pierna) para perfiles activos.

`; html += `

Día 1 – Empuje (Pecho, Hombro, Tríceps)

Día 2 – Tirón (Espalda, Bíceps)

Día 3 – Pierna y Core

`; } } else if (duracion === ‘mes’) { html += `

ESTRUCTURA DEL MESOCICLO (4 SEMANAS)

`; html += `

Semana 1: Adaptación Estructural

Aplica la rutina base con un peso que controles. Deja 3 repeticiones en recámara (RIR 3).

Semana 2: Aumento de Volumen

Mantén el peso, pero añade 1 serie extra a todos los ejercicios principales.

Semana 3: Sobrecarga (Overreach)

Sube el peso en los ejercicios grandes (Sentadilla, Banca, Remos). Máximo esfuerzo (RIR 1).

Semana 4: Descarga Activa

Baja los pesos un 20% y haz la mitad de series. Permite a tu cuerpo reparar el tejido muscular.

`; html += `

▶ TU RUTINA BASE (Aplica la progresión superior a estos ejercicios)

`; if (actividad === ‘sedentario’ || actividad === ‘ligero’) { for(let dia=1; dia<=3; dia++) { html += `

Día ${dia} – Full Body

`; } } else { html += `

Día 1 – Empuje (Pecho, Hombro, Tríceps)

Día 2 – Tirón (Espalda, Bíceps)

Día 3 – Pierna y Core

`; } } const contenedor = document.getElementById(‘resultadoRutina’); contenedor.innerHTML = html; contenedor.style.display = ‘block’; contenedor.scrollIntoView({ behavior: ‘smooth’, block: ‘start’ }); }