From 890576928da51630f9fcd58c2a046b211c6ef98c Mon Sep 17 00:00:00 2001
From: Denis Monnerat <monnerat@u-pec.fr>
Date: Tue, 3 Dec 2024 09:45:10 +0100
Subject: [PATCH] tp3

---
 R1.02/tp/tp2/correction/exercice1.html |  26 +++++
 R1.02/tp/tp2/correction/exercice2.html |  83 ++++++++++++++++
 R1.02/tp/tp2/correction/exercice3.html |  85 ++++++++++++++++
 R1.02/tp/tp2/correction/exercice4.html |  53 ++++++++++
 R1.02/tp/tp2/correction/exercice5.html |  85 ++++++++++++++++
 R1.02/tp/tp2/correction/exercice6.html |  20 ++++
 R1.02/tp/tp2/correction/style4.css     |  21 ++++
 R1.02/tp/tp2/correction/style5.css     |  26 +++++
 R1.02/tp/tp2/correction/style6.css     |   9 ++
 R1.02/tp/tp3/README.md                 | 129 +++++++++++++++++++++++++
 R1.02/tp/tp3/img/eastwood.png          | Bin 0 -> 21374 bytes
 R1.02/tp/tp3/img/smiley.png            | Bin 0 -> 2210 bytes
 R1.02/tp/tp3/img/web_stack.png         | Bin 0 -> 3474 bytes
 R1.02/tp/tp3/src/exercice1.html        |  23 +++++
 R1.02/tp/tp3/src/exercice2.html        |  15 +++
 R1.02/tp/tp3/src/exercice3.html        |  14 +++
 R1.02/tp/tp3/src/exercice4.html        |  60 ++++++++++++
 R1.02/tp/tp3/src/style4.css            |  21 ++++
 18 files changed, 670 insertions(+)
 create mode 100644 R1.02/tp/tp2/correction/exercice1.html
 create mode 100644 R1.02/tp/tp2/correction/exercice2.html
 create mode 100644 R1.02/tp/tp2/correction/exercice3.html
 create mode 100644 R1.02/tp/tp2/correction/exercice4.html
 create mode 100644 R1.02/tp/tp2/correction/exercice5.html
 create mode 100644 R1.02/tp/tp2/correction/exercice6.html
 create mode 100644 R1.02/tp/tp2/correction/style4.css
 create mode 100644 R1.02/tp/tp2/correction/style5.css
 create mode 100644 R1.02/tp/tp2/correction/style6.css
 create mode 100644 R1.02/tp/tp3/README.md
 create mode 100644 R1.02/tp/tp3/img/eastwood.png
 create mode 100644 R1.02/tp/tp3/img/smiley.png
 create mode 100644 R1.02/tp/tp3/img/web_stack.png
 create mode 100644 R1.02/tp/tp3/src/exercice1.html
 create mode 100644 R1.02/tp/tp3/src/exercice2.html
 create mode 100644 R1.02/tp/tp3/src/exercice3.html
 create mode 100644 R1.02/tp/tp3/src/exercice4.html
 create mode 100644 R1.02/tp/tp3/src/style4.css

diff --git a/R1.02/tp/tp2/correction/exercice1.html b/R1.02/tp/tp2/correction/exercice1.html
new file mode 100644
index 0000000..b0af8a1
--- /dev/null
+++ b/R1.02/tp/tp2/correction/exercice1.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html lang="zxx">
+	<head>
+		<meta charset="utf-8">
+		<meta name="viewport" content="initial-scale=1,witdh=device-width">
+
+		<title>Exercice 1</title>
+	</head>
+	<body>
+		<ul>
+			<li><a href="#partie_1">Partie 1</a></li>
+			<li><a href="#partie_2">Partie 2</a></li>
+			<li><a href="exercice1_copie.html#partie_2">Partie 2</a></li>
+		</ul>
+		<h1 id="partie_1">Première partie</h1>
+		<p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime  sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt  quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis  qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p>
+		<p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime  sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt  quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis  qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p>
+		<p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime  sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt  quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis  qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p>
+
+		<h1 id="partie_2">Deuxième partie</h1>
+
+		<p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime  sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt  quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis  qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p>
+		<p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime  sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt  quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis  qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p>
+		<p>Lorem ipsum dolor sit amet. Fugiat beatae aut fugiat dolores qui consequuntur perferendis et dolores repudiandae. Et ullam maxime  sapiente veritatis quo consequatur ducimus. Cum dolor blanditiis <strong>Ut ullam</strong> ut voluptas neque ea fugiat amet! Et asperiores quam <a href="https://www.loremipzum.com" target="_blank">Qui dolor id illum ullam</a>. Qui dolorem autem et soluta nostrum 33 galisum nostrum est exercitationem enim! Et harum animi non obcaecati fuga ut repellendus quas ea perspiciatis ducimus. Aut doloremque animi <em>Et quia et saepe quaerat aut velit incidunt et perferendis voluptatem</em> ex quia voluptas ea accusamus nostrum. Qui commodi laboriosam ad dicta galisum ut tempora unde et dolorem suscipit. Ut illum illum id dolor tempore ut quos voluptatem aut internos molestias quo adipisci ipsum. 33 expedita molestias aut iusto nihil aut nemo optio et cupiditate velit. Et cupiditate omnis ex explicabo fugit in voluptas ducimus et eaque quae et dolor odio aut consectetur rerum nam consequuntur quisquam. </p><blockquote cite="https://www.loremipzum.com">Sed eaque quas sed vitae quae et dolor ratione sed rerum saepe rem sunt rerum. </blockquote><p>Rem alias blanditiis <em>Aut delectus quo modi velit a similique assumenda</em>. At nobis natus et natus tenetur est quaerat dolor aut sequi harum sed dignissimos nihil. Ut iure unde et voluptatem enim cum consequatur totam rem veniam maxime ab exercitationem modi ut cumque magni! Eum illo aliquam et vitae earum eos sint mollitia. Non dolor natus est aperiam laudantium aut reiciendis incidunt  quia fugit ad earum vero aut quasi rerum et corrupti quibusdam? Et molestiae itaque id voluptatem maxime qui velit fuga eum eius dolorum sit saepe iste id similique consectetur. Et consequatur autem et doloribus nemo quo minima consequatur qui repellendus voluptatum? Aut facilis quaerat ut omnis aperiam <a href="https://www.loremipzum.com" target="_blank">Ut eveniet sed neque maxime</a> At voluptas molestiae a sapiente voluptas ex nulla amet. Eos sint ducimus est odit rerum vel dolorem itaque est suscipit architecto non veritatis sequi et voluptatum exercitationem. Vel esse nulla et exercitationem laudantium non assumenda nesciunt? Qui dicta quia vel magni pariatur sit ratione atque qui quia fugiat est eligendi quidem. </p><ul><li>Eum neque molestias est commodi quia sed voluptatem quia. </li><li>Non omnis ratione qui voluptas fuga in optio rerum? </li></ul><p>Quo repudiandae rerum ea doloribus nihil eos temporibus beatae ab libero nobis aut ullam voluptatem eos totam fuga sit velit sequi. Id consequatur nobis a quae possimus aut nesciunt temporibus! Et iure quod <strong>Qui eius</strong> sed quas molestias vel quod voluptas! Sit molestiae ipsam <em>In expedita et voluptas sequi</em>! Eos ducimus laudantium et quia reiciendis aut numquam quos sed necessitatibus omnis et exercitationem repudiandae? Ab totam odit aut expedita omnis sit praesentium aliquam est accusantium fugiat qui omnis  qui illo dolorem. Sed expedita galisum ut officia reprehenderitet accusamus ad nemo placeat. Ut fugiat totam a facere quaerat et esse corrupti sed dolor pariatur in mollitia necessitatibus. </p>
+	</body>
+</html>
diff --git a/R1.02/tp/tp2/correction/exercice2.html b/R1.02/tp/tp2/correction/exercice2.html
new file mode 100644
index 0000000..8d775ce
--- /dev/null
+++ b/R1.02/tp/tp2/correction/exercice2.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html lang="fr">
+
+	<head>
+		<title>Exercice 2</title>
+		<meta charset="utf-8">
+		<meta name="viewport" content="initial-scale=1,witdh=device-width">
+	</head>
+
+	<body>
+		<form method="POST" action="https://dwarves.iut-fbleau.fr/requete.php">
+
+			<div>
+				<label for="lastname">Nom : </label>
+				<input type="text" name="lastname" id="lastname" placeholder="ex: Dupont" required>
+			</div>
+
+			<div>
+				<label for="firstname">Prénom : </label>
+				<input type="text" name="firstname" id="firstname" placeholder="ex: Jean-Paul" required>
+			</div>
+
+			<div>
+				<label for="birthdate">Date de naissance : </label>
+				<input type="date" name="birthdate" id="birthdate">
+			</div>
+
+			<div>
+				<label for="email">Adresse email : </label>
+				<input type="email" name="email" id="email" placeholder="ex: jean-paul.dupont@gmail.com" required>
+			</div>
+
+			<div>
+				<label for="postcode">Code postal : </label>
+				<input type="number" name="postcode" id="postcode" placeholder="ex: 75000" min="5" max="99999" required>
+				<!-- 
+		Validation d'un code postal avec une expression régulière
+		<input type="text" name="postcode" id="postcode" placeholder="ex: 75000" pattern="(?:[0-8]\d|9[0-8])\d{3}">
+				-->
+			</div>
+
+			<div>
+				<label for="phonenumber">N° Télephone portable : </label>
+				<input type="text" name="phonenumber" id="phonenumber" placeholder="ex: 0655664488" pattern="^(\+33|0)[6-7](\d\d){4}$" required>
+				<!-- Il n'y a pas d'attribut pour afficher un message d'erreur personnalisé, c'est pour cela qu'il y a JavaScript -->
+			</div>
+
+			<div>
+				<input type="radio" name="gender" id="femme" value="Madame" required>
+				<label for="femme">Femme </label>
+				<input type="radio" name="gender" id="homme" value="Monsieur" required>
+				<label for="homme">Homme </label>
+				<input type="radio" name="gender" id="autre" value="Autre" required>
+				<label for="autre">Autre </label>
+			</div>
+
+			<div>
+				<label for="semester">Semestre : </label>
+				<select name="semester" id="semester" size="4" required>
+					<option value="Semestre 1">Semestre 1</option>
+					<option value="Semestre 2" selected>Semestre 2</option>
+					<option value="Semestre 3">Semestre 3</option>
+					<option value="Semestre 4">Semestre 4</option>
+				</select>
+			</div>
+
+			<div>
+				<label for="niveau">Niveau en HTML (entre 0 et 10) : </label>
+				<input type="range" name="niveau" id="niveau" min="0" max="10" value="5">
+			</div>
+
+			<div>
+				<label for="message">Message : </label>
+				<textarea name="message" id="message" required></textarea>
+			</div>
+
+			<div>
+				<input type="submit" value="Envoyer">
+				<input type="reset" value="Remettre à zéro">
+			</div>
+		</form>
+	</body>
+</html>
diff --git a/R1.02/tp/tp2/correction/exercice3.html b/R1.02/tp/tp2/correction/exercice3.html
new file mode 100644
index 0000000..e20fbf4
--- /dev/null
+++ b/R1.02/tp/tp2/correction/exercice3.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html lang="fr">
+
+	<head>
+		<title>Exercice 3</title>
+
+		<meta name="viewport" content="initial-scale=1,witdh=device-width">
+		<meta charset="utf-8">
+	</head>
+
+	<body>
+		<form method="POST" action="https://dwarves.iut-fbleau.fr/requete.php">
+
+			<div>
+				<label for="lastname">Nom : </label>
+				<input type="text" name="lastname" id="lastname" placeholder="ex: Dupont" required>
+			</div>
+
+			<div>
+				<label for="firstname">Prénom : </label>
+				<input type="text" name="firstname" id="firstname" placeholder="ex: Jean-Paul" required>
+			</div>
+
+			<div>
+				<label for="birthdate">Date de naissance : </label>
+				<input type="date" name="birthdate" id="birthdate">
+			</div>
+
+			<div>
+				<label for="email">Adresse email : </label>
+				<input type="email" name="email" id="email" placeholder="ex: jean-paul.dupont@gmail.com" required>
+			</div>
+
+			<div>
+				<label for="postcode">Code postal : </label>
+				<input type="number" name="postcode" id="postcode" placeholder="ex: 75000" min="5" max="99999" required>
+				<!-- 
+		Validation d'un code postal avec une expression régulière
+		<input type="text" name="postcode" id="postcode" placeholder="ex: 75000" pattern="(?:[0-8]\d|9[0-8])\d{3}">
+				-->
+			</div>
+
+			<div>
+				<label for="phonenumber">N° Télephone portable : </label>
+				<input type="text" name="phonenumber" id="phonenumber" placeholder="ex: 0655664488" pattern="^(\+33|0)[6-7](\d\d){4}$" required>
+				<!-- Il n'y a pas d'attribut pour afficher un message d'erreur personnalisé, c'est pour cela qu'il y a JavaScript -->
+			</div>
+
+			<div>
+				<input type="radio" name="gender" id="femme" value="Madame" required>
+				<label for="femme">Femme </label>
+				<input type="radio" name="gender" id="homme" value="Monsieur" required>
+				<label for="homme">Homme </label>
+				<input type="radio" name="gender" id="autre" value="Autre" required>
+				<label for="autre">Autre </label>
+			</div>
+
+			<div>
+				<label for="semester">Semestre : </label>
+				<select name="semester" id="semester" size="4" required>
+					<option value="Semestre 1">Semestre 1</option>
+					<option value="Semestre 2" selected>Semestre 2</option>
+					<option value="Semestre 3">Semestre 3</option>
+					<option value="Semestre 4">Semestre 4</option>
+				</select>
+			</div>
+
+			<div>
+				<label for="niveau">Niveau en HTML (entre 0 et 10) : </label>
+				<input type="range" name="niveau" id="niveau" min="0" max="10" value="5">
+			</div>
+
+			<div>
+				<label for="message">Message : </label>
+				<textarea name="message" id="message" required></textarea>
+			</div>
+
+			<div>
+				<input type="submit" value="Envoyer">
+				<input type="reset" value="Remettre à zéro">
+			</div>
+		</form>
+	</body>
+
+</html>
diff --git a/R1.02/tp/tp2/correction/exercice4.html b/R1.02/tp/tp2/correction/exercice4.html
new file mode 100644
index 0000000..7a6851d
--- /dev/null
+++ b/R1.02/tp/tp2/correction/exercice4.html
@@ -0,0 +1,53 @@
+<!doctype html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8">
+		<meta name="viewport" content="initial-scale=1,witdh=device-width">
+		<title>Exercice 4</title>
+		<link rel="stylesheet" href="./style4.css">
+	</head>
+	<body>
+		<h1>Emoticons</h1>
+
+		<p>
+			Emoticons are textual portrayals of a writer's moods or facial
+			expressions in the form of icons. Originally, these icons
+			consisted of ASCII art.
+		</p>
+
+		<p>
+			Emoticons can generally be divided into two groups: Western (mainly
+			from America and Europe) or horizontal; Eastern or vertical (mainly
+			from east Asia).
+		</p>
+
+		<h2>Western</h2>
+
+		<p>
+			Western style emoticons are mostly written from left to right as
+			though the head is rotated counter-clockwise 90 degrees. 
+		</p>
+
+		<ul>
+			<li>Smiley: <span>:‑) :-&gt;</span></li>
+			<li>Tongue-tied: <span>:‑&</span></li>
+			<li>Broken heart: <span>&lt;\3</span></li>
+			<li>Rose: <span>@}-&gt;--</span></li>
+			<li>Fish: <span>&gt;&lt;(((*&gt;</span></li>
+		</ul>
+
+		<h2>Eastern</h2>
+
+		<p>
+			Eastern emoticons generally are not rotated sideways. They first
+			arose in Japan, where they are referred to as kaomoji. 
+		</p>
+
+		<ul>
+			<li>Troubled: <span>(&gt;_&lt;)</span></li>
+			<li>Sad: <span>("_")</span></li>
+			<li>Cat: <span>(=^·^=)</span></li>
+			<li>Headphones: <span>((d[-_-]b))</span></li>
+		</ul>
+	</body>
+</html>
diff --git a/R1.02/tp/tp2/correction/exercice5.html b/R1.02/tp/tp2/correction/exercice5.html
new file mode 100644
index 0000000..4b7e8a2
--- /dev/null
+++ b/R1.02/tp/tp2/correction/exercice5.html
@@ -0,0 +1,85 @@
+<!doctype html>
+<html lang="fr">
+	<head>
+		<meta charset="utf-8">
+		<title>Exercice 5</title>
+		<meta name="viewport" content="initial-scale=1,witdh=device-width">
+		<link rel="stylesheet" href="./style5.css">
+	</head>
+	<body>
+		<table>
+			<caption>Orbites des planètes du Système solaire</caption>
+			<thead>
+				<tr>
+					<th>Planète</th>
+					<th>Distance moyenne (UA)</th>
+					<th>Exentricité </th><th>Inclinaison  (°)</th>
+					<th>Période de révolution (an)</th>
+				</tr>
+			</thead>
+			<tbody>
+				<tr>
+					<td>Mercure</td>
+					<td>0,38709893</td>
+					<td>0,205</td>
+					<td>7</td>
+					<td>0,241</td>
+				</tr>
+
+				<tr>
+					<td>Venus</td>
+					<td>0,72333199</td>
+					<td>0,007</td>
+					<td>3,4</td>
+					<td>0,615</td>
+				</tr>
+				<tr>
+					<td>Terre</td>
+					<td>1</td>
+					<td>0,017</td>
+					<td>0</td>
+					<td>1</td>
+				</tr>
+				<tr>
+					<td>Mars</td>
+					<td>1,52366231</td>
+					<td>0,094</td>
+					<td>1,9</td>
+					<td>1,881</td>
+				</tr>
+
+
+				<tr>
+					<td>Jupiter</td>
+					<td>5,20336301</td>
+					<td>0,049</td>
+					<td>1,3</td>
+					<td>11,862</td>
+				</tr>
+				<tr>
+					<td>Saturne</td>
+					<td>9,6</td>
+					<td>0,057</td>
+					<td>2,5</td>
+					<td>29,452</td>
+				</tr>
+				<tr>
+					<td>Uranus</td>
+					<td>2872,5</td>
+					<td>0,8</td>
+					<td>97,8</td>
+					<td>30,589</td>
+				</tr>
+
+				<tr>
+					<td>Neptune</td>
+					<td>4495,1</td>
+					<td>1,8</td>
+					<td>28,3</td>
+					<td>59,8</td>
+				</tr>
+			</tbody>
+
+		</table>
+	</body>
+</html>
diff --git a/R1.02/tp/tp2/correction/exercice6.html b/R1.02/tp/tp2/correction/exercice6.html
new file mode 100644
index 0000000..4ac5224
--- /dev/null
+++ b/R1.02/tp/tp2/correction/exercice6.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="fr">
+	<head>
+		<meta charset="utf-8">
+		<meta name="viewport" content="initial-scale=1,witdh=device-width">
+		<title>Exercice 6</title>
+		<link rel="stylesheet" href="./style6.css">
+	</head>
+	<body>
+		<table>
+			<tbody>
+				<tr><td rowspan="5"></td><td colspan="3"></td><td rowspan="4"></td></tr>
+				<tr><td rowspan="3"></td><td></td><td rowspan="2"></td></tr>
+				<tr><td></td></tr>
+				<tr><td colspan="2"></td></tr>
+				<tr><td colspan="4"></td></tr>
+			</tbody>
+		</table>
+	</body>
+</html>
diff --git a/R1.02/tp/tp2/correction/style4.css b/R1.02/tp/tp2/correction/style4.css
new file mode 100644
index 0000000..ae629ba
--- /dev/null
+++ b/R1.02/tp/tp2/correction/style4.css
@@ -0,0 +1,21 @@
+body {
+	font-family:sans-serif;
+}
+
+h1 {
+	font-variant:small-caps;
+	text-decoration : underline;
+}
+
+h2 {
+	background-color:#aaaaaa;
+	padding : 10px;
+	font-style:italic;
+}
+
+span {
+	font-family: monospace;
+	font-weight:bold;
+	color : #aa4512;
+}
+
diff --git a/R1.02/tp/tp2/correction/style5.css b/R1.02/tp/tp2/correction/style5.css
new file mode 100644
index 0000000..34c07f5
--- /dev/null
+++ b/R1.02/tp/tp2/correction/style5.css
@@ -0,0 +1,26 @@
+table {
+	font-family: sans-serif;
+	border-collapse: collapse;
+	margin : auto;
+	width:700px;
+}
+table caption {
+
+	font-weight: bold;
+	font-variant: small-caps;
+
+}
+
+th {
+	border-bottom: 3px solid black;
+	border-top: 3px solid black;
+	text-align: left;
+	font-weight: bold;
+	font-variant: small-caps;
+}
+
+td {
+	border-bottom: 1px solid lightgray;
+	text-align: left;
+}
+
diff --git a/R1.02/tp/tp2/correction/style6.css b/R1.02/tp/tp2/correction/style6.css
new file mode 100644
index 0000000..a54f611
--- /dev/null
+++ b/R1.02/tp/tp2/correction/style6.css
@@ -0,0 +1,9 @@
+table {
+	border-collapse: collapse;
+}
+td {
+	border:1px solid black;
+	width:50px;
+	height:50px;
+}
+
diff --git a/R1.02/tp/tp3/README.md b/R1.02/tp/tp3/README.md
new file mode 100644
index 0000000..96debd8
--- /dev/null
+++ b/R1.02/tp/tp3/README.md
@@ -0,0 +1,129 @@
+# TP CSS 
+> Vous trouverez une correction du tp1 [ici](../tp1/correction).
+> Vous trouverez une correction du tp2 [ici](../tp2/correction).
+> Vous trouverez une correction du tp3 [ici](../tp3/correction).
+
+
+
+## Exercice 1 : stylisation d'une liste
+
+Soit le code [html](src/exercice1.html) suivant 
+
+```html
+<h1>Mes films préférés de Clint Eastwood</h1>
+<ul>
+	<li>Gran Torino (2008)</li>
+	<li>Impitoyable (1992)</li>
+	<li>Mystic River (2003)</li>
+	<li>Sur la route de Madison (1995)</li>
+	<li>Lettres d'Iwo Jima (2006)</li>
+	<li>L'Échange (2008)</li>
+	<li>Josey Wales hors-la-loi (1976)</li>
+	<li>Breezy (1973)</li>
+</ul>
+```
+
+Donnez une feuille de style pour obtenir la mise en page suivante ;
+
+![eastwood](./img/eastwood.png)
+
+> Propriétés css utiles :
+> - `list-style-type` : contrôle l'apparence de la puce d'un élément de liste.
+> - `padding`, `margin` : espace intérieur et extérieur
+> - `background-color` : couleur de fond
+> - `font-style` : italique, oblique ou normal
+> 
+> Pseudo-classes utiles :
+> - `nth-child` : nth-child(an+b) permet de selctionner les éléments en fonction de leur position.  
+
+## Exercice 2 : positionnement des boîtes avec la propriété `position`.
+
+Soit le code [html](./src/exercice2.html) suivant :
+
+```html
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="UTF-8">
+		<title>Exercice 2</title>
+	</head>
+	<body>
+		<main>
+			<header></header>
+			<section></section>
+			<aside></aside>
+			<footer></footer>
+		</main>
+	</body>
+</html>
+```
+Donnez une feuille de style pour obtenir la mise en page suivante :  
+![eastwood](./img/smiley.png)
+
+> Propriétés utiles
+> - `position` : static, relative, absolute, fixed, sticky
+> - `top`, `bottom`, `right`, `left` : coordonnées de l'élément.  Attention, pour le
+>    positionnement absolu, les **coordonnées s'entendent par rapport au premier ascendant en position relative,
+>	le body s'il n'y en a pas**.
+> - `ẁidth` et `height` : largeur et hauteur.
+> - `border-radius`  et `border` : arrondi des coins, et bordure.
+
+## Exercice 3 : selection à l'aide d'attributs.
+Soit le code [html](src/exercice3.html) suivant 
+```html
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="UTF-8">
+		<title>Exercice 3</title>
+	</head>
+	<body>
+		<ul>
+			<li><a href="https://developer.mozilla.org/docs/Web/HTML">HTML</a></li>
+			<li><a href="https://developer.mozilla.org/docs/Web/CSS">CSS</a></li>
+			<li><a href="https://developer.mozilla.org/docs/Web/Javascript">JS</a></li>
+		</ul>
+	</body>
+</html>
+```
+Donnez une feuille de style pour obtenir la mise en page suivante :  
+![stack](./img/web_stack.png)
+
+Vous pouvez utiliser les images suivantes :  
+- [html](https://raw.githubusercontent.com/devicons/devicon/master/icons/html5/html5-plain.svg)
+- [css](https://raw.githubusercontent.com/devicons/devicon/master/icons/css3/css3-plain.svg)
+- [javascript](https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-plain.svg)
+
+> On peut selectionner un élément en utilisant la valeur d'un attribut. Par exemple :
+> ```css
+> a[href*="toto"]
+> ```
+> selectionne les liens dont l'url cible contient "toto".  
+> Propriétés utiles :   
+> - `background-image` : permet de définir une image comme arrière plan.
+> - `display` : permet de définir le rendu d'un élément (bloc ou en ligne)
+> - `font-size` : contrôle la taille de la fonte.
+> - `text-align`, `vertical-align` : contrôle l'alignement horizontal et vertical des éléments inline.
+
+## Exercice 4 : media queries
+Soit le code [html](src/exercice4.html) et sa feuille de [style](src/style4.css).
+
+Lorsque la largeur de l'écran est inférieur à `640px`, le menu n'est plus affiché.
+
+> Utilisez une requête media `@media`.
+
+## Exercice 5 : mise en page avec la propriété `float`
+On reprend le source précédent.  
+
+À l'aide de la propriété `float`,  affichez les articles sur 2 colonnes avec une bordure de 1px grise et 
+une marge entre les articles de 40px.
+
+> Vous aurez besoin d'utiliser la propriété `width` que vous pouvez utiliser avec la fonction CSS `calc()` pour le calcul, 
+> exemple: 
+> ```css
+> width: calc(100px + 2*20px)
+> ```
+> Penser quand vous cherchez la bonne largeur (+/- 50%), qu'il faut prendre en compte la taille de marge et des bordures. Vous pouvez utiliser
+> la propriété `box-sizing`.
+
+Ajoutez une requête media pour que les articles s'affichent à nouveau verticalement lorsque la taille de l'écran est en dessous de 720px.
diff --git a/R1.02/tp/tp3/img/eastwood.png b/R1.02/tp/tp3/img/eastwood.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a1ff45ea6dadbcf6a2ae467253b51d15dad92f0
GIT binary patch
literal 21374
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

literal 0
HcmV?d00001

diff --git a/R1.02/tp/tp3/img/smiley.png b/R1.02/tp/tp3/img/smiley.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e561846721aace7d5f7721ecbacd99f541201e9
GIT binary patch
literal 2210
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

literal 0
HcmV?d00001

diff --git a/R1.02/tp/tp3/img/web_stack.png b/R1.02/tp/tp3/img/web_stack.png
new file mode 100644
index 0000000000000000000000000000000000000000..58436d13f4dcf647e4877d133813107932bc5590
GIT binary patch
literal 3474
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

literal 0
HcmV?d00001

diff --git a/R1.02/tp/tp3/src/exercice1.html b/R1.02/tp/tp3/src/exercice1.html
new file mode 100644
index 0000000..5be8589
--- /dev/null
+++ b/R1.02/tp/tp3/src/exercice1.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html lang="fr">
+	<head>
+		<meta charset="UTF-8">
+		<meta name="viewport" content="initial-scale=1,witdh=device-width">
+		<title>CEastwood</title>
+	</head>
+
+	<body>
+		<h1>Mes films préférés de Clint Eastwood</h1>
+		<ul>
+			<li>Gran Torino (2008)</li>
+			<li>Impitoyable (1992)</li>
+			<li>Mystic River (2003)</li>
+			<li>Sur la route de Madison (1995)</li>
+			<li>Lettres d'Iwo Jima (2006)</li>
+			<li>L'Échange (2008)</li>
+			<li>Josey Wales hors-la-loi (1976)</li>
+			<li>Breezy (1973)</li>
+		</ul>
+	</body>
+</html>
+
diff --git a/R1.02/tp/tp3/src/exercice2.html b/R1.02/tp/tp3/src/exercice2.html
new file mode 100644
index 0000000..dc7e3af
--- /dev/null
+++ b/R1.02/tp/tp3/src/exercice2.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="UTF-8">
+		<title>Exercice 2</title>
+	</head>
+	<body>
+		<main>
+			<header></header>
+			<section></section>
+			<!--aside></aside-->
+			<footer></footer>
+		</main>
+	</body>
+</html>
diff --git a/R1.02/tp/tp3/src/exercice3.html b/R1.02/tp/tp3/src/exercice3.html
new file mode 100644
index 0000000..15feafa
--- /dev/null
+++ b/R1.02/tp/tp3/src/exercice3.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="UTF-8">
+		<title>Exercice 3</title>
+	</head>
+	<body>
+		<ul>
+			<li><a href="https://developer.mozilla.org/docs/Web/HTML">HTML</a></li>
+			<li><a href="https://developer.mozilla.org/docs/Web/CSS">CSS</a></li>
+			<li><a href="https://developer.mozilla.org/docs/Web/Javascript">JS</a></li>
+		</ul>
+	</body>
+</html>
diff --git a/R1.02/tp/tp3/src/exercice4.html b/R1.02/tp/tp3/src/exercice4.html
new file mode 100644
index 0000000..21a28e6
--- /dev/null
+++ b/R1.02/tp/tp3/src/exercice4.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="en">
+
+	<head>
+		<meta charset="UTF-8">
+		<meta name="viewport" content="initial-scale=1,witdh=device-width">
+		<link rel="stylesheet" href="style4.css">
+		<title>Document</title>
+	</head>
+
+	<body>
+		<header>
+			<nav>
+			<ul>
+				<li><a href="/">Home</a></li>
+				<li><a href="/">About</a></li>
+				<li><a href="/">Contact</a></li>
+			</ul>
+			</nav>
+		</header>
+		<main>
+			<article>
+				<header>
+					<h1>Article title 1</h1>
+				</header>
+				<section>
+					<img src="https://picsum.photos/300/200" alt="">
+					<p>lorem ipsum</p>
+				</section>
+			</article>
+			<article>
+				<header>
+					<h1>Article title 2</h1>
+				</header>
+				<section>
+					<img src="https://picsum.photos/300/200" alt="">
+					<p>lorem ipsum</p>
+				</section>
+			</article>
+			<article>
+				<header>
+					<h1>Article title 3</h1>
+				</header>
+				<section>
+					<img src="https://picsum.photos/300/200" alt="">
+					<p>lorem ipsum</p>
+				</section>
+			</article>
+			<article>
+				<header>
+					<h1>Article title 3</h1>
+				</header>
+				<section>
+					<img src="https://picsum.photos/300/200" alt="">
+					<p>lorem ipsum</p>
+				</section>
+			</article>
+		</main>
+	</body>
+</html>
diff --git a/R1.02/tp/tp3/src/style4.css b/R1.02/tp/tp3/src/style4.css
new file mode 100644
index 0000000..b97f333
--- /dev/null
+++ b/R1.02/tp/tp3/src/style4.css
@@ -0,0 +1,21 @@
+ul {
+
+	text-align: center;
+	padding:0;
+}
+li {
+	list-style-type: none;
+	list-style-position: inside;
+	display: inline-block;
+	margin-right: 2em;
+	font-size : 2em;
+}
+li:last-child{
+	margin-right:0;
+
+}
+article {
+	text-align: justify;
+	border : 1px solid grey;
+	padding : 1em;
+}