diff --git a/README.es.md b/README.es.md
index 00f9f69..353c19f 100644
--- a/README.es.md
+++ b/README.es.md
@@ -1,87 +1,228 @@
-# Programación Orientada a Eventos con JavaScript
-
+
-> Por [@alesanchezr](https://twitter.com/alesanchezr) y [otros colaboradores](https://github.com/4GeeksAcademy/javascript-events-tutorial-exercises/graphs/contributors) en [4Geeks Academy](https://4geeksacademy.co/)
+# Eventos de Javascript
-
-[](https://breatheco.de)
-[](https://twitter.com/4geeksacademy)
+[](https://4geeks.com/es/interactive-exercise/javascript-events-exercises-es)
+[](https://github.com/learnpack/learnpack)
+[](https://codespaces.new/?repo=4GeeksAcademy/javascript-events-tutorial-exercises)
-Este tutorial es parte de un grupo de tutoriales sobre desarrollo web, este repositorio se enfoca solo en los Eventos de JavaScript.
+
+
+
+
+*Estas instrucciones [también están disponibles en 🇺🇸 inglés](https://github.com/4GeeksAcademy/javascript-events-tutorial-exercises/blob/HEAD/README.md).*
+Este tutorial interactivo enseña a manejar eventos con JavaScript puro a lo largo de 10 carpetas de ejercicios: una introducción y 9 retos para escribir código. Practicas el atributo `onclick`, `addEventListener`, el evento `load`, `event.target` y cómo cambiar el CSS desde JavaScript. Cada uno de los 9 retos trae su `index.html`, su `index.js`, instrucciones en español e inglés y un fichero con la solución de referencia. Duración estimada: 8 horas. Dificultad: principiante.
+
+
+## 📋 Sobre este tutorial
+
++ **Dificultad:** principiante — es el quinto paso de la ruta de desarrollo web de 4Geeks Academy, justo después de El DOM.
+
++ **Duración estimada:** 8 horas.
+
++ **Ejercicios:** 10 carpetas dentro de `exercises/` — `00-introduction` (solo lectura) y 9 ejercicios en los que escribes código.
+
++ **Tecnologías:** JavaScript puro, HTML y CSS. Sin frameworks, sin proceso de build y sin `npm install` dentro de los ejercicios.
+
++ **Corrección:** desactivada. `learn.json` tiene `"disableGrading": true` y ningún ejercicio incluye fichero de tests, así que nada califica tu respuesta de forma automática.
+
++ **Soluciones:** cada uno de los 9 ejercicios de código trae su solución de referencia: `solution.hide.js` en todos menos en el `01`, y `solution.hide.html` en el `01`, el `02`, el `05` y el `07`, que son los cuatro en los que cambia el HTML.
+
++ **Idiomas:** todos los ejercicios tienen `README.es.md` (español) y `README.md` (inglés).
+
+
+## 🎯 ¿Qué vas a aprender?
+
+Un evento es cualquier cosa que ocurre en la página y a la que tu código puede reaccionar: un clic, una tecla, la ventana que termina de cargar. Manejar eventos es justo lo que convierte un documento estático en una aplicación. Al terminar estos ejercicios vas a saber:
+
++ Asignar una función directamente desde el HTML con el atributo [`onclick`](https://developer.mozilla.org/es/docs/Web/API/Element/click_event), que es como conectan sus botones los ejercicios `01`, `02`, `03`, `04`, `07` y `07.1`.
+
++ Registrar funciones en tiempo de ejecución con [`addEventListener`](https://developer.mozilla.org/es/docs/Web/API/EventTarget/addEventListener), la técnica que se practica en los ejercicios `06` y `08`.
+
++ Esperar al evento [`load`](https://developer.mozilla.org/es/docs/Web/API/Window/load_event) antes de tocar la página, ya sea con `window.onload` o con el atributo `onload` de la etiqueta ``.
+
++ Leer lo que escribió la persona usuaria con `input.value`, convertirlo con `parseInt` y devolver el resultado a otro input.
+
++ Cambiar el CSS desde JavaScript a través del objeto `element.style`, por ejemplo ocultando un `
` con `style.display = "none"`.
+
++ Guardar estado entre clics en una variable global y repintar la pantalla con `innerHTML` después de cada cambio.
+
++ Usar el [objeto del evento](https://developer.mozilla.org/es/docs/Web/API/Event/target) que el navegador le pasa a tu función e identificar con `event.target` el elemento exacto en el que se hizo clic.
+
+## 👀 ¿Qué vas a construir?
+
+`exercises/00-introduction` es una bienvenida corta, sin código. Las otras 9 carpetas son pequeñas webs que tienes que terminar:
+
++ **`01` Alert onclick** — la página tiene dos botones y la función `myClickFunction` ya muestra la alerta "Your first function!". Tú añades esa misma función como listener del `onclick` de `#button2`.
+
++ **`02` onclick Hello World** — aquí no hay nada conectado: declaras la función en `index.js` y la asignas a la propiedad `onclick` del input `#hello` para que al hacer clic aparezca "Hello World".
+
++ **`03` Sum Values** — completas `calculateSumListener` para que la suma de los inputs `#firstNumber` y `#secondNumber` se escriba en el `value` del input `#resultNumber`.
+
++ **`04` Hide onclick** — completas `myEventListener` para que, al pulsar el botón, desaparezca el div verde `#firstDiv` y siga visible el amarillo `#secondDiv`.
+
++ **`05` The load Event** — creas una función llamada `loadListener` que muestre la alerta "Loading finished..." y haces que el `` la ejecute al cargar.
+
++ **`06` Add Listener With JS** — la página ya avisa cuando termina de cargar. Tú usas `addEventListener` sobre el botón `#theGreen` para que al pulsarlo salga la alerta "woohoo!".
+
++ **`07` Count onclick** — el contador solo sube. Añades un botón para restar y una función que baje en uno la variable global `counter` y refresque el titular `#screen`.
+
++ **`07.1` Change Turn on Click** — el turno alterna entre Mario y Juan. Amplías la función `turnChanger` para que entre en la rotación un tercer jugador, Josh.
+
++ **`08` Event Target** — hay un único listener de clic sobre el div `#container`, que contiene un botón, un enlace y una imagen. Tienes que mostrar en una alerta el `id` del elemento que se pulsó de verdad.
+
+Cada ejercicio es una página real que puedes ejecutar y clicar mientras lees las instrucciones al lado:
+
+
+
+## 🎓 ¿Qué necesitas saber antes de empezar?
+
+No hace falta que sepas nada de eventos, pero los ejercicios dan por hecho que te manejas con:
+
++ **HTML básico** — etiquetas como `