DESDE EL PRIMER ARCHIVO HASTA EL RESULTADO
Da estilo a la misma página, paso a paso.
Cada paso acumula lo anterior. Lee la explicación, observa el
resultado y prueba una modificación. El laboratorio adapta los
archivos separados a un marco aislado.
1. Crea y conecta assets/style.css
2. Define una base legible
3. Controla el modelo de caja
4. Construye jerarquía tipográfica
5. Organiza espacio y límites
6. Añade color y estilos de controles
7. Distribuye elementos con Flex y Grid
8. Evita recortes y mejora los datos
9. Añade foco y adaptación móvil
10. Comprueba la cascada con una regla final
Qué añadimos
Dónde va y en qué orden
Qué deberías ver
¿Qué pasa si…?
Quitar la pieza de
este paso Mover la pieza al
comienzo
index.html · documento acumulado assets/style.css · reglas acumuladas
Aplicar mis cambios
Restablecer este paso Ancho de ejemplo
Ajustar al espacio
360 px · móvil
1100 px · escritorio
Consola y comportamiento
Ver código usado en la variante
El navegador normaliza el HTML al analizarlo. La vista previa
incrusta CSS y JavaScript; en tus archivos mantendrás sus
enlaces externos.
HTML
CSS
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
link Conectar CSS
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
font-family line-height
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
* { box-sizing: border-box; }
* { box-sizing: border-box; }
box-sizing
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
* { box-sizing: border-box; }
h1 { font-size: clamp(28px, 5vw, 46px); line-height: 1.15; }
h2 { font-size: 26px; }
h3 { font-size: 20px; }
h1 { font-size: clamp(28px, 5vw, 46px); line-height: 1.15; }
h2 { font-size: 26px; }
h3 { font-size: 20px; }
font-size clamp
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
* { box-sizing: border-box; }
h1 { font-size: clamp(28px, 5vw, 46px); line-height: 1.15; }
h2 { font-size: 26px; }
h3 { font-size: 20px; }
header, nav, main, footer { max-width: 1000px; margin: 0 auto 24px; }
section { margin-bottom: 32px; }
.lesson-card { padding: 24px; margin: 16px 0; border: 1px solid #cfd7e8; border-radius: 16px; background: white; }
header, nav, main, footer { max-width: 1000px; margin: 0 auto 24px; }
section { margin-bottom: 32px; }
.lesson-card { padding: 24px; margin: 16px 0; border: 1px solid #cfd7e8; border-radius: 16px; background: white; }
padding margin
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
* { box-sizing: border-box; }
h1 { font-size: clamp(28px, 5vw, 46px); line-height: 1.15; }
h2 { font-size: 26px; }
h3 { font-size: 20px; }
header, nav, main, footer { max-width: 1000px; margin: 0 auto 24px; }
section { margin-bottom: 32px; }
.lesson-card { padding: 24px; margin: 16px 0; border: 1px solid #cfd7e8; border-radius: 16px; background: white; }
header { background: #eef1ff; padding: 24px; border-radius: 16px; }
a { color: #233de0; }
input, button { font: inherit; padding: 10px; margin: 8px 0; }
button { background: #233de0; color: white; border: 0; border-radius: 8px; }
header { background: #eef1ff; padding: 24px; border-radius: 16px; }
a { color: #233de0; }
input, button { font: inherit; padding: 10px; margin: 8px 0; }
button { background: #233de0; color: white; border: 0; border-radius: 8px; }
color background
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
* { box-sizing: border-box; }
h1 { font-size: clamp(28px, 5vw, 46px); line-height: 1.15; }
h2 { font-size: 26px; }
h3 { font-size: 20px; }
header, nav, main, footer { max-width: 1000px; margin: 0 auto 24px; }
section { margin-bottom: 32px; }
.lesson-card { padding: 24px; margin: 16px 0; border: 1px solid #cfd7e8; border-radius: 16px; background: white; }
header { background: #eef1ff; padding: 24px; border-radius: 16px; }
a { color: #233de0; }
input, button { font: inherit; padding: 10px; margin: 8px 0; }
button { background: #233de0; color: white; border: 0; border-radius: 8px; }
nav { display: flex; flex-wrap: wrap; gap: 16px; }
#temas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
#temas > h2, #temas > p { grid-column: 1 / -1; }
nav { display: flex; flex-wrap: wrap; gap: 16px; }
#temas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
#temas > h2, #temas > p { grid-column: 1 / -1; }
Grid gap display
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
* { box-sizing: border-box; }
h1 { font-size: clamp(28px, 5vw, 46px); line-height: 1.15; }
h2 { font-size: 26px; }
h3 { font-size: 20px; }
header, nav, main, footer { max-width: 1000px; margin: 0 auto 24px; }
section { margin-bottom: 32px; }
.lesson-card { padding: 24px; margin: 16px 0; border: 1px solid #cfd7e8; border-radius: 16px; background: white; }
header { background: #eef1ff; padding: 24px; border-radius: 16px; }
a { color: #233de0; }
input, button { font: inherit; padding: 10px; margin: 8px 0; }
button { background: #233de0; color: white; border: 0; border-radius: 8px; }
nav { display: flex; flex-wrap: wrap; gap: 16px; }
#temas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
#temas > h2, #temas > p { grid-column: 1 / -1; }
img { max-width: 100%; height: auto; }
figure { margin: 16px 0; }
table { width: 100%; border-collapse: collapse; }
th, td { border: 1px solid #cfd7e8; padding: 10px; text-align: left; }
img { max-width: 100%; height: auto; }
figure { margin: 16px 0; }
table { width: 100%; border-collapse: collapse; }
th, td { border: 1px solid #cfd7e8; padding: 10px; text-align: left; }
width object-fit
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
* { box-sizing: border-box; }
h1 { font-size: clamp(28px, 5vw, 46px); line-height: 1.15; }
h2 { font-size: 26px; }
h3 { font-size: 20px; }
header, nav, main, footer { max-width: 1000px; margin: 0 auto 24px; }
section { margin-bottom: 32px; }
.lesson-card { padding: 24px; margin: 16px 0; border: 1px solid #cfd7e8; border-radius: 16px; background: white; }
header { background: #eef1ff; padding: 24px; border-radius: 16px; }
a { color: #233de0; }
input, button { font: inherit; padding: 10px; margin: 8px 0; }
button { background: #233de0; color: white; border: 0; border-radius: 8px; }
nav { display: flex; flex-wrap: wrap; gap: 16px; }
#temas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
#temas > h2, #temas > p { grid-column: 1 / -1; }
img { max-width: 100%; height: auto; }
figure { margin: 16px 0; }
table { width: 100%; border-collapse: collapse; }
th, td { border: 1px solid #cfd7e8; padding: 10px; text-align: left; }
a:focus-visible, button:focus-visible, input:focus-visible { outline: 3px solid #b74619; outline-offset: 3px; }
@media (max-width: 700px) { #temas { grid-template-columns: 1fr; } }
a:focus-visible, button:focus-visible, input:focus-visible { outline: 3px solid #b74619; outline-offset: 3px; }
@media (max-width: 700px) { #temas { grid-template-columns: 1fr; } }
:focus-visible @media
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
body {
margin: 0;
padding: 24px;
font-family: system-ui, sans-serif;
line-height: 1.6;
color: #18213a;
}
* { box-sizing: border-box; }
h1 { font-size: clamp(28px, 5vw, 46px); line-height: 1.15; }
h2 { font-size: 26px; }
h3 { font-size: 20px; }
header, nav, main, footer { max-width: 1000px; margin: 0 auto 24px; }
section { margin-bottom: 32px; }
.lesson-card { padding: 24px; margin: 16px 0; border: 1px solid #cfd7e8; border-radius: 16px; background: white; }
header { background: #eef1ff; padding: 24px; border-radius: 16px; }
a { color: #233de0; }
input, button { font: inherit; padding: 10px; margin: 8px 0; }
button { background: #233de0; color: white; border: 0; border-radius: 8px; }
nav { display: flex; flex-wrap: wrap; gap: 16px; }
#temas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
#temas > h2, #temas > p { grid-column: 1 / -1; }
img { max-width: 100%; height: auto; }
figure { margin: 16px 0; }
table { width: 100%; border-collapse: collapse; }
th, td { border: 1px solid #cfd7e8; padding: 10px; text-align: left; }
a:focus-visible, button:focus-visible, input:focus-visible { outline: 3px solid #b74619; outline-offset: 3px; }
@media (max-width: 700px) { #temas { grid-template-columns: 1fr; } }
.lesson-card { background: #e5edff; }
.lesson-card { background: #e5edff; }
Cascada Especificidad