diff --git a/assets/images/popularization_banner.png b/assets/images/popularization_banner.png
index fcf5d7f57af41938d961100803ccb42b913a090d..5210d5a77acbcdbd31fbe11065baa56bcd0c3d11 100644
Binary files a/assets/images/popularization_banner.png and b/assets/images/popularization_banner.png differ
diff --git a/build.js b/build.js
index 2b14e728da6877b6de1ea5ddb5c2a34fd4445a42..b7e022b8891cba5147eb286dc622d1fe90f554d1 100644
--- a/build.js
+++ b/build.js
@@ -19,6 +19,7 @@ function getPageHtml(pagename) {
 <html>
     <head>
         <meta charset="utf-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
         <title>Kuadrado Software - ${pagename}</title>
         <link href="../../style/style.css" rel="stylesheet" />
     </head>
diff --git a/public/education/education.js b/public/education/education.js
index 16c0cc640e6de4e7a5fbf5d07795a01eda4c9a08..83ed969e27441e29ee8f2a686a8c587e4bdd9f44 100644
--- a/public/education/education.js
+++ b/public/education/education.js
@@ -109,10 +109,12 @@ module.exports = {
 },{}],4:[function(require,module,exports){
 "use strict";
 
+const { images_url } = require("../../../../constants");
+
 const GAMEDEV_THEMES = [
     {
         title: "Dessin et création 2D",
-        class: "crea2d",
+        image: "learning_theme_2d.png",
         details: [
             "Création de décors et de personnages",
             "Dessin sur ordinateur, pixel art, vectoriel",
@@ -121,12 +123,12 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Musique et sons",
-        class: "sound",
+        image: "learning_theme_sound.png",
         details: ["Logiciels de son et synthétiseurs", "Composition", "Prise de son", "Mixage"],
     },
     {
         title: "Écriture",
-        class: "write",
+        image: "learning_theme_write.png",
         details: [
             "Écrire une histoire, construire une narration",
             "Imaginer des mondes et des personnages",
@@ -134,8 +136,7 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Conception",
-        class: "conception",
-        comment: "",
+        image: "learning_theme_conception.png",
         details: [
             "Concevoir les différents éléments qui composent le jeu",
             "Développer les mécanismes de gameplay",
@@ -143,8 +144,7 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Programmation",
-        class: "coding",
-        comment: "",
+        image: "learning_theme_coding.png",
         details: [
             "Apprendre pas à pas à coder avec différents langages de programmation",
             "Découvrir les bases du web en créant des mini-jeux en lignes",
@@ -152,7 +152,7 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Mathématiques",
-        class: "math",
+        image: "learning_theme_math.png",
         comment:
             "<em>Créer un jeu vidéo c'est l'occasion de découvrir plein de sujets en maths et en physique tout en s'amusant !</em>",
         details: [
@@ -169,20 +169,20 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Travail d'équipe",
-        class: "team",
+        image: "learning_theme_team.png",
         comment: `
             <em>
                 Faire son jeu tout seul c'est bien mais ça peut être long !
-                <br>Créer des jeux c'est aussi l'occasion de se mettre à plusieurs pour tirer le meilleur parti des différents talents de chacun.
+                <br />Créer des jeux c'est aussi l'occasion de se mettre à plusieurs pour tirer le meilleur parti des différents talents de chacun.
             </em>`,
-        details: [],
+        details: ["Gestion de projet", "Méthodes agiles", "Communication"],
     },
     {
         title: "Logiciels libres, GNU/Linux",
-        class: "linux",
+        image: "learning_theme_linux.png",
         comment:
-            "<em>Nous utilisons essentiellement des logiciels libres sur Linux.<br>C'est donc une bonne occasion de découvrir et démystifier tout ça en douceur !</em>",
-        details: [],
+            "<em>Nous utilisons essentiellement des logiciels libres sur Linux.<br />C'est donc une bonne occasion de découvrir et démystifier tout ça en douceur !</em>",
+        details: ["Ubuntu / Debian", "GIMP", "LMMS", "Audacity", "Pencil2d", "..."],
     },
 ];
 
@@ -205,7 +205,12 @@ class GameStudioClub {
                             tag: "div",
                             class: "full-row",
                             contents: [
-                                { tag: "h3", contents: "Apprendre à créer un jeu vidéo de A à Z" },
+                                {
+                                    tag: "h3",
+                                    class: "big",
+                                    contents:
+                                        "Apprendre à créer un <blue>jeu vidéo</blue> de A à Z",
+                                },
                                 {
                                     tag: "strong",
                                     contents:
@@ -214,7 +219,7 @@ class GameStudioClub {
                                 {
                                     tag: "p",
                                     contents:
-                                        "<em>Aucun prérequis nécessaire. Pas besoin d'être fort en maths ou en informatique, le but est d'apprendre et se détendre !</em>",
+                                        "<em><b><blue>Aucun prérequis nécessaire</blue></b>. Pas besoin d'être fort en maths ou en informatique, le but est d'apprendre et se détendre !</em>",
                                 },
                             ],
                         },
@@ -241,7 +246,8 @@ class GameStudioClub {
                                         { tag: "strong", contents: "Pour qui ?" },
                                         {
                                             tag: "span",
-                                            contents: "Tout le monde à partir de 12 ans.",
+                                            contents:
+                                                "Tout le monde à partir de <b><blue>12 ans</blue></b>.",
                                         },
                                     ],
                                 },
@@ -272,9 +278,10 @@ class GameStudioClub {
                             contents: GAMEDEV_THEMES.map(li => {
                                 return {
                                     tag: "li",
-                                    class: "learning-theme " + li.class,
+                                    class: "learning-theme",
                                     contents: [
                                         { tag: "strong", class: "title", contents: li.title },
+                                        { tag: "img", src: `${images_url}/${li.image}` },
                                         {
                                             tag: "div",
                                             class: "details",
@@ -313,7 +320,8 @@ class GameStudioClub {
                                         },
                                         {
                                             tag: "p",
-                                            contents: "Les groupes sont de 5 personnes maximum.",
+                                            contents:
+                                                "Les groupes sont de <b><blue>5 personnes</blue></b> maximum.",
                                         },
                                         {
                                             tag: "div",
@@ -369,7 +377,7 @@ class GameStudioClub {
                                         {
                                             tag: "p",
                                             contents: `Vous pouvez vous inscrire dans un des groupes pour un mois ou un trimestre.
-                                        <br>Le matériel informatique est fourni sur place, mais vous pouvez amener votre propre ordinateur portable si vous le souhaitez.
+                                        <br /><br />Le matériel informatique est fourni sur place, mais vous pouvez amener votre propre ordinateur portable si vous le souhaitez.
                                         `,
                                         },
                                         {
@@ -390,7 +398,7 @@ class GameStudioClub {
                                                                     tag: "td",
                                                                     contents: "(4 séances)",
                                                                 },
-                                                                { tag: "td", contents: "70€" },
+                                                                { tag: "td", contents: "60€" },
                                                             ],
                                                         },
                                                         {
@@ -405,7 +413,7 @@ class GameStudioClub {
                                                                     tag: "td",
                                                                     contents: "(12 séances)",
                                                                 },
-                                                                { tag: "td", contents: "190€" },
+                                                                { tag: "td", contents: "160€" },
                                                             ],
                                                         },
                                                     ],
@@ -425,24 +433,25 @@ class GameStudioClub {
 
 module.exports = GameStudioClub;
 
-},{}],5:[function(require,module,exports){
+},{"../../../../constants":2}],5:[function(require,module,exports){
 "use strict";
 
+const { images_url } = require("../../../../constants");
+
 const VULGARISATION_THEMES = [
     {
         title: "Qu'est-ce qui se passe dans mon ordinateur ?",
-        class:"pc",
-        comment: "",
+        image: "learning_theme_pc.png",
         details: [
             "Répondre aux questions sur l'informatique de tous les jours",
             "L'organisation des fichiers",
             "Le navigateur web et les logiciels usuels",
+            "Le système d'exploitation",
         ],
     },
     {
         title: "GNU/Linux, le monde du libre",
-        class:"linux",
-        comment: "",
+        image: "learning_theme_linux.png",
         details: [
             "Installer Linux, démystifier et faire tomber les barrières.",
             "Qu'est-ce qu'un logiciel libre ? Quels sont les enjeux ?",
@@ -450,8 +459,7 @@ const VULGARISATION_THEMES = [
     },
     {
         title: "Comment fonctionne le web ?",
-        class:"web",
-        comment: "",
+        image: "learning_theme_web.png",
         details: [
             "De quoi est fait le réseau internet ?",
             "Comment fonctionnent les différents services que nous utilisons ?",
@@ -460,8 +468,7 @@ const VULGARISATION_THEMES = [
     },
     {
         title: "Le langages des machines",
-        class:"coding",
-        comment: "",
+        image: "learning_theme_coding.png",
         details: [
             "Démystifier la programmation informatique",
             "Qu'est-ce qu'un langage de programmation",
@@ -480,7 +487,7 @@ class Popularization {
                     tag: "div",
                     class: "title-banner popu-banner",
                     id: "popularization", // anchor id
-                    contents: [{ tag: "h2", contents: "Ateliers de vulgarisation" }],
+                    contents: [{ tag: "h2", contents: "Vulgarisation numérique" }],
                 },
                 {
                     tag: "div",
@@ -503,7 +510,7 @@ class Popularization {
                                         {
                                             tag: "span",
                                             contents:
-                                                "Si vous êtes intéressé pour proposer une de ces animations dans votre structure, contactez-nous pour un devis gratuit.",
+                                                "Si vous êtes intéressé pour proposer une de ces animations dans votre structure, contactez-nous pour un <b><blue>devis gratuit</blue></b>.",
                                         },
                                     ],
                                 },
@@ -537,15 +544,11 @@ class Popularization {
                                     class: "learning-theme " + li.class,
                                     contents: [
                                         { tag: "strong", class: "title", contents: li.title },
+                                        { tag: "img", src: `${images_url}/${li.image}` },
                                         {
                                             tag: "div",
                                             class: "details",
                                             contents: [
-                                                {
-                                                    tag: "strong",
-                                                    class: "title",
-                                                    contents: li.title,
-                                                },
                                                 {
                                                     tag: "div",
                                                     class: "comment",
@@ -575,7 +578,7 @@ class Popularization {
 
 module.exports = Popularization;
 
-},{}],6:[function(require,module,exports){
+},{"../../../../constants":2}],6:[function(require,module,exports){
 "use strict";
 
 const GameStudioClub = require("./components/game-studio-club");
@@ -591,7 +594,7 @@ class EducationPage {
             tag: "div",
             id: "education-page",
             contents: [
-                { tag: "h1", contents: "Pédagogie" },
+                { tag: "h1", contents: "<blue>Pédagogie</blue>" },
                 {
                     tag: "p",
                     class: "edu-philo",
@@ -627,13 +630,13 @@ module.exports = function runPage(PageComponent) {
     objectHtmlRenderer.renderCycle();
 };
 
-},{"./lib/object-html-renderer":3,"./template/template":9}],9:[function(require,module,exports){
+},{"./lib/object-html-renderer":3,"./template/template":10}],9:[function(require,module,exports){
 "use strict";
 
-const { images_url } = require("../../constants");
+const { images_url } = require("../../../constants");
 
+const HOME_LOGO = "logo_kuadrado_s32.png";
 const NAV_MENU_ITEMS = [
-    ["/public/", "logo_kuadrado_s32.png; "],
     ["/public/games/", "Jeux"],
     ["/public/software-development/", "Software"],
     [
@@ -647,20 +650,53 @@ const NAV_MENU_ITEMS = [
     ],
 ];
 
-class Template {
-    constructor(props) {
-        this.props = props;
+class NavBar {
+    constructor() {
+        this.initEventHandlers();
+    }
+
+    handleBurgerClick() {
+        document.getElementById("nav-menu-list").classList.toggle("responsive-show");
+    }
+
+    initEventHandlers() {
+        window.addEventListener("click", event => {
+            if (
+                event.target.id !== "nav-menu-list" &&
+                !event.target.classList.contains("burger") &&
+                !event.target.parentNode.classList.contains("burger")
+            ) {
+                document.getElementById("nav-menu-list").classList.remove("responsive-show");
+            }
+        });
+    }
+
+    renderHome() {
+        return {
+            tag: "div",
+            class: "home",
+            contents: [
+                {
+                    tag: "a",
+                    href: "/public/",
+                    contents: [
+                        {
+                            tag: "img",
+                            src: `${images_url}/${HOME_LOGO}`,
+                        },
+                    ],
+                },
+            ],
+        };
     }
 
     renderMenu(menuItemsArray, isSubmenu = false) {
-        const r = {
+        return {
             tag: "ul",
+            id: "nav-menu-list",
             class: isSubmenu ? "submenu" : "",
             contents: menuItemsArray.map(link => {
-                let [href, text, submenu] = link;
-                const spltTxt = text.split(";");
-                text = spltTxt.length > 1 ? spltTxt[1] : text;
-                const img = spltTxt.length > 1 ? spltTxt[0] : undefined;
+                const [href, text, submenu] = link;
                 return {
                     tag: "li",
                     class: !isSubmenu && window.location.pathname === href ? "active" : "",
@@ -668,32 +704,53 @@ class Template {
                         {
                             tag: "a",
                             href,
-                            contents: img
-                                ? [
-                                      { tag: "img", src: `${images_url}/${img}` },
-                                      { tag: "span", contents: text },
-                                  ]
-                                : text,
+                            contents: text,
                         },
                     ].concat(submenu ? [this.renderMenu(submenu, true)] : []),
                 };
             }),
         };
-        return r;
     }
 
+    renderResponsiveBurger() {
+        return {
+            tag: "div",
+            class: "burger",
+            onclick: this.handleBurgerClick.bind(this),
+            contents: [{ tag: "span", contents: "···" }],
+        };
+    }
+
+    render() {
+        return {
+            tag: "nav",
+            contents: [
+                this.renderHome(),
+                this.renderResponsiveBurger(),
+                this.renderMenu(NAV_MENU_ITEMS),
+            ],
+        };
+    }
+}
+
+module.exports = NavBar;
+
+},{"../../../constants":2}],10:[function(require,module,exports){
+"use strict";
+
+const NavBar = require("./components/navbar");
+
+class Template {
+    constructor(props) {
+        this.props = props;
+    }
     render() {
         return {
             tag: "main",
             contents: [
                 {
                     tag: "header",
-                    contents: [
-                        {
-                            tag: "nav",
-                            contents: [this.renderMenu(NAV_MENU_ITEMS)],
-                        },
-                    ],
+                    contents: [new NavBar().render()],
                 },
                 {
                     tag: "div",
@@ -717,4 +774,4 @@ class Template {
 
 module.exports = Template;
 
-},{"../../constants":2}]},{},[7]);
+},{"./components/navbar":9}]},{},[7]);
diff --git a/public/education/index.html b/public/education/index.html
index 4ce83d17341eafaf08a4dbef2ee28004c169bd60..4d42538363095847bdd1795ea8374a74a40db822 100644
--- a/public/education/index.html
+++ b/public/education/index.html
@@ -3,6 +3,7 @@
 <html>
     <head>
         <meta charset="utf-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
         <title>Kuadrado Software - education</title>
         <link href="../../style/style.css" rel="stylesheet" />
     </head>
diff --git a/public/games/games.js b/public/games/games.js
index 3641539c87259fc25e4c2bcf830de9ef9024f04c..fbed8b6fbc8d9665e04bb48924e188c5180d23b6 100644
--- a/public/games/games.js
+++ b/public/games/games.js
@@ -149,13 +149,13 @@ module.exports = function runPage(PageComponent) {
     objectHtmlRenderer.renderCycle();
 };
 
-},{"./lib/object-html-renderer":3,"./template/template":7}],7:[function(require,module,exports){
+},{"./lib/object-html-renderer":3,"./template/template":8}],7:[function(require,module,exports){
 "use strict";
 
-const { images_url } = require("../../constants");
+const { images_url } = require("../../../constants");
 
+const HOME_LOGO = "logo_kuadrado_s32.png";
 const NAV_MENU_ITEMS = [
-    ["/public/", "logo_kuadrado_s32.png; "],
     ["/public/games/", "Jeux"],
     ["/public/software-development/", "Software"],
     [
@@ -169,20 +169,53 @@ const NAV_MENU_ITEMS = [
     ],
 ];
 
-class Template {
-    constructor(props) {
-        this.props = props;
+class NavBar {
+    constructor() {
+        this.initEventHandlers();
+    }
+
+    handleBurgerClick() {
+        document.getElementById("nav-menu-list").classList.toggle("responsive-show");
+    }
+
+    initEventHandlers() {
+        window.addEventListener("click", event => {
+            if (
+                event.target.id !== "nav-menu-list" &&
+                !event.target.classList.contains("burger") &&
+                !event.target.parentNode.classList.contains("burger")
+            ) {
+                document.getElementById("nav-menu-list").classList.remove("responsive-show");
+            }
+        });
+    }
+
+    renderHome() {
+        return {
+            tag: "div",
+            class: "home",
+            contents: [
+                {
+                    tag: "a",
+                    href: "/public/",
+                    contents: [
+                        {
+                            tag: "img",
+                            src: `${images_url}/${HOME_LOGO}`,
+                        },
+                    ],
+                },
+            ],
+        };
     }
 
     renderMenu(menuItemsArray, isSubmenu = false) {
-        const r = {
+        return {
             tag: "ul",
+            id: "nav-menu-list",
             class: isSubmenu ? "submenu" : "",
             contents: menuItemsArray.map(link => {
-                let [href, text, submenu] = link;
-                const spltTxt = text.split(";");
-                text = spltTxt.length > 1 ? spltTxt[1] : text;
-                const img = spltTxt.length > 1 ? spltTxt[0] : undefined;
+                const [href, text, submenu] = link;
                 return {
                     tag: "li",
                     class: !isSubmenu && window.location.pathname === href ? "active" : "",
@@ -190,32 +223,53 @@ class Template {
                         {
                             tag: "a",
                             href,
-                            contents: img
-                                ? [
-                                      { tag: "img", src: `${images_url}/${img}` },
-                                      { tag: "span", contents: text },
-                                  ]
-                                : text,
+                            contents: text,
                         },
                     ].concat(submenu ? [this.renderMenu(submenu, true)] : []),
                 };
             }),
         };
-        return r;
+    }
+
+    renderResponsiveBurger() {
+        return {
+            tag: "div",
+            class: "burger",
+            onclick: this.handleBurgerClick.bind(this),
+            contents: [{ tag: "span", contents: "···" }],
+        };
     }
 
+    render() {
+        return {
+            tag: "nav",
+            contents: [
+                this.renderHome(),
+                this.renderResponsiveBurger(),
+                this.renderMenu(NAV_MENU_ITEMS),
+            ],
+        };
+    }
+}
+
+module.exports = NavBar;
+
+},{"../../../constants":2}],8:[function(require,module,exports){
+"use strict";
+
+const NavBar = require("./components/navbar");
+
+class Template {
+    constructor(props) {
+        this.props = props;
+    }
     render() {
         return {
             tag: "main",
             contents: [
                 {
                     tag: "header",
-                    contents: [
-                        {
-                            tag: "nav",
-                            contents: [this.renderMenu(NAV_MENU_ITEMS)],
-                        },
-                    ],
+                    contents: [new NavBar().render()],
                 },
                 {
                     tag: "div",
@@ -239,4 +293,4 @@ class Template {
 
 module.exports = Template;
 
-},{"../../constants":2}]},{},[5]);
+},{"./components/navbar":7}]},{},[5]);
diff --git a/public/games/index.html b/public/games/index.html
index 21b93ee2aab48731d30e97ff5db137ec19e9ba13..addc0c40022720980966f6810faadf8fecb95f3b 100644
--- a/public/games/index.html
+++ b/public/games/index.html
@@ -3,6 +3,7 @@
 <html>
     <head>
         <meta charset="utf-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
         <title>Kuadrado Software - games</title>
         <link href="../../style/style.css" rel="stylesheet" />
     </head>
diff --git a/public/main.js b/public/main.js
index b01a7088c52388d31163822017d8b78dd18766fe..ffe81b5dc125a1b3b270586129cda198dcc6cb6d 100644
--- a/public/main.js
+++ b/public/main.js
@@ -149,13 +149,13 @@ module.exports = function runPage(PageComponent) {
     objectHtmlRenderer.renderCycle();
 };
 
-},{"./lib/object-html-renderer":4,"./template/template":7}],7:[function(require,module,exports){
+},{"./lib/object-html-renderer":4,"./template/template":8}],7:[function(require,module,exports){
 "use strict";
 
-const { images_url } = require("../../constants");
+const { images_url } = require("../../../constants");
 
+const HOME_LOGO = "logo_kuadrado_s32.png";
 const NAV_MENU_ITEMS = [
-    ["/public/", "logo_kuadrado_s32.png; "],
     ["/public/games/", "Jeux"],
     ["/public/software-development/", "Software"],
     [
@@ -169,20 +169,53 @@ const NAV_MENU_ITEMS = [
     ],
 ];
 
-class Template {
-    constructor(props) {
-        this.props = props;
+class NavBar {
+    constructor() {
+        this.initEventHandlers();
+    }
+
+    handleBurgerClick() {
+        document.getElementById("nav-menu-list").classList.toggle("responsive-show");
+    }
+
+    initEventHandlers() {
+        window.addEventListener("click", event => {
+            if (
+                event.target.id !== "nav-menu-list" &&
+                !event.target.classList.contains("burger") &&
+                !event.target.parentNode.classList.contains("burger")
+            ) {
+                document.getElementById("nav-menu-list").classList.remove("responsive-show");
+            }
+        });
+    }
+
+    renderHome() {
+        return {
+            tag: "div",
+            class: "home",
+            contents: [
+                {
+                    tag: "a",
+                    href: "/public/",
+                    contents: [
+                        {
+                            tag: "img",
+                            src: `${images_url}/${HOME_LOGO}`,
+                        },
+                    ],
+                },
+            ],
+        };
     }
 
     renderMenu(menuItemsArray, isSubmenu = false) {
-        const r = {
+        return {
             tag: "ul",
+            id: "nav-menu-list",
             class: isSubmenu ? "submenu" : "",
             contents: menuItemsArray.map(link => {
-                let [href, text, submenu] = link;
-                const spltTxt = text.split(";");
-                text = spltTxt.length > 1 ? spltTxt[1] : text;
-                const img = spltTxt.length > 1 ? spltTxt[0] : undefined;
+                const [href, text, submenu] = link;
                 return {
                     tag: "li",
                     class: !isSubmenu && window.location.pathname === href ? "active" : "",
@@ -190,32 +223,53 @@ class Template {
                         {
                             tag: "a",
                             href,
-                            contents: img
-                                ? [
-                                      { tag: "img", src: `${images_url}/${img}` },
-                                      { tag: "span", contents: text },
-                                  ]
-                                : text,
+                            contents: text,
                         },
                     ].concat(submenu ? [this.renderMenu(submenu, true)] : []),
                 };
             }),
         };
-        return r;
+    }
+
+    renderResponsiveBurger() {
+        return {
+            tag: "div",
+            class: "burger",
+            onclick: this.handleBurgerClick.bind(this),
+            contents: [{ tag: "span", contents: "···" }],
+        };
     }
 
+    render() {
+        return {
+            tag: "nav",
+            contents: [
+                this.renderHome(),
+                this.renderResponsiveBurger(),
+                this.renderMenu(NAV_MENU_ITEMS),
+            ],
+        };
+    }
+}
+
+module.exports = NavBar;
+
+},{"../../../constants":2}],8:[function(require,module,exports){
+"use strict";
+
+const NavBar = require("./components/navbar");
+
+class Template {
+    constructor(props) {
+        this.props = props;
+    }
     render() {
         return {
             tag: "main",
             contents: [
                 {
                     tag: "header",
-                    contents: [
-                        {
-                            tag: "nav",
-                            contents: [this.renderMenu(NAV_MENU_ITEMS)],
-                        },
-                    ],
+                    contents: [new NavBar().render()],
                 },
                 {
                     tag: "div",
@@ -239,4 +293,4 @@ class Template {
 
 module.exports = Template;
 
-},{"../../constants":2}]},{},[5]);
+},{"./components/navbar":7}]},{},[5]);
diff --git a/public/software-development/index.html b/public/software-development/index.html
index 22249bb1c025bf5ee3c830a964a569f41e53716c..bf1742163121a976571397ef21a0d723cb8dd421 100644
--- a/public/software-development/index.html
+++ b/public/software-development/index.html
@@ -3,6 +3,7 @@
 <html>
     <head>
         <meta charset="utf-8" />
+        <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
         <title>Kuadrado Software - software-development</title>
         <link href="../../style/style.css" rel="stylesheet" />
     </head>
diff --git a/public/software-development/software-development.js b/public/software-development/software-development.js
index 3a91476ec3446dcc0a052aa153478f962aeba97a..2144b979da1c7705479f9bbf3d5249ff1e184a22 100644
--- a/public/software-development/software-development.js
+++ b/public/software-development/software-development.js
@@ -149,13 +149,13 @@ module.exports = function runPage(PageComponent) {
     objectHtmlRenderer.renderCycle();
 };
 
-},{"./lib/object-html-renderer":3,"./template/template":7}],7:[function(require,module,exports){
+},{"./lib/object-html-renderer":3,"./template/template":8}],7:[function(require,module,exports){
 "use strict";
 
-const { images_url } = require("../../constants");
+const { images_url } = require("../../../constants");
 
+const HOME_LOGO = "logo_kuadrado_s32.png";
 const NAV_MENU_ITEMS = [
-    ["/public/", "logo_kuadrado_s32.png; "],
     ["/public/games/", "Jeux"],
     ["/public/software-development/", "Software"],
     [
@@ -169,20 +169,53 @@ const NAV_MENU_ITEMS = [
     ],
 ];
 
-class Template {
-    constructor(props) {
-        this.props = props;
+class NavBar {
+    constructor() {
+        this.initEventHandlers();
+    }
+
+    handleBurgerClick() {
+        document.getElementById("nav-menu-list").classList.toggle("responsive-show");
+    }
+
+    initEventHandlers() {
+        window.addEventListener("click", event => {
+            if (
+                event.target.id !== "nav-menu-list" &&
+                !event.target.classList.contains("burger") &&
+                !event.target.parentNode.classList.contains("burger")
+            ) {
+                document.getElementById("nav-menu-list").classList.remove("responsive-show");
+            }
+        });
+    }
+
+    renderHome() {
+        return {
+            tag: "div",
+            class: "home",
+            contents: [
+                {
+                    tag: "a",
+                    href: "/public/",
+                    contents: [
+                        {
+                            tag: "img",
+                            src: `${images_url}/${HOME_LOGO}`,
+                        },
+                    ],
+                },
+            ],
+        };
     }
 
     renderMenu(menuItemsArray, isSubmenu = false) {
-        const r = {
+        return {
             tag: "ul",
+            id: "nav-menu-list",
             class: isSubmenu ? "submenu" : "",
             contents: menuItemsArray.map(link => {
-                let [href, text, submenu] = link;
-                const spltTxt = text.split(";");
-                text = spltTxt.length > 1 ? spltTxt[1] : text;
-                const img = spltTxt.length > 1 ? spltTxt[0] : undefined;
+                const [href, text, submenu] = link;
                 return {
                     tag: "li",
                     class: !isSubmenu && window.location.pathname === href ? "active" : "",
@@ -190,32 +223,53 @@ class Template {
                         {
                             tag: "a",
                             href,
-                            contents: img
-                                ? [
-                                      { tag: "img", src: `${images_url}/${img}` },
-                                      { tag: "span", contents: text },
-                                  ]
-                                : text,
+                            contents: text,
                         },
                     ].concat(submenu ? [this.renderMenu(submenu, true)] : []),
                 };
             }),
         };
-        return r;
+    }
+
+    renderResponsiveBurger() {
+        return {
+            tag: "div",
+            class: "burger",
+            onclick: this.handleBurgerClick.bind(this),
+            contents: [{ tag: "span", contents: "···" }],
+        };
     }
 
+    render() {
+        return {
+            tag: "nav",
+            contents: [
+                this.renderHome(),
+                this.renderResponsiveBurger(),
+                this.renderMenu(NAV_MENU_ITEMS),
+            ],
+        };
+    }
+}
+
+module.exports = NavBar;
+
+},{"../../../constants":2}],8:[function(require,module,exports){
+"use strict";
+
+const NavBar = require("./components/navbar");
+
+class Template {
+    constructor(props) {
+        this.props = props;
+    }
     render() {
         return {
             tag: "main",
             contents: [
                 {
                     tag: "header",
-                    contents: [
-                        {
-                            tag: "nav",
-                            contents: [this.renderMenu(NAV_MENU_ITEMS)],
-                        },
-                    ],
+                    contents: [new NavBar().render()],
                 },
                 {
                     tag: "div",
@@ -239,4 +293,4 @@ class Template {
 
 module.exports = Template;
 
-},{"../../constants":2}]},{},[5]);
+},{"./components/navbar":7}]},{},[5]);
diff --git a/src/pages/education/components/game-studio-club.js b/src/pages/education/components/game-studio-club.js
index 6ea91cb97a2211343111eccdd48ee3425c7eaed0..e0de3ec7b5ee2a0b8baf7dc13c201675942e3b9f 100644
--- a/src/pages/education/components/game-studio-club.js
+++ b/src/pages/education/components/game-studio-club.js
@@ -1,9 +1,11 @@
 "use strict";
 
+const { images_url } = require("../../../../constants");
+
 const GAMEDEV_THEMES = [
     {
         title: "Dessin et création 2D",
-        class: "crea2d",
+        image: "learning_theme_2d.png",
         details: [
             "Création de décors et de personnages",
             "Dessin sur ordinateur, pixel art, vectoriel",
@@ -12,12 +14,12 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Musique et sons",
-        class: "sound",
+        image: "learning_theme_sound.png",
         details: ["Logiciels de son et synthétiseurs", "Composition", "Prise de son", "Mixage"],
     },
     {
         title: "Écriture",
-        class: "write",
+        image: "learning_theme_write.png",
         details: [
             "Écrire une histoire, construire une narration",
             "Imaginer des mondes et des personnages",
@@ -25,8 +27,7 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Conception",
-        class: "conception",
-        comment: "",
+        image: "learning_theme_conception.png",
         details: [
             "Concevoir les différents éléments qui composent le jeu",
             "Développer les mécanismes de gameplay",
@@ -34,8 +35,7 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Programmation",
-        class: "coding",
-        comment: "",
+        image: "learning_theme_coding.png",
         details: [
             "Apprendre pas à pas à coder avec différents langages de programmation",
             "Découvrir les bases du web en créant des mini-jeux en lignes",
@@ -43,7 +43,7 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Mathématiques",
-        class: "math",
+        image: "learning_theme_math.png",
         comment:
             "<em>Créer un jeu vidéo c'est l'occasion de découvrir plein de sujets en maths et en physique tout en s'amusant !</em>",
         details: [
@@ -60,20 +60,20 @@ const GAMEDEV_THEMES = [
     },
     {
         title: "Travail d'équipe",
-        class: "team",
+        image: "learning_theme_team.png",
         comment: `
             <em>
                 Faire son jeu tout seul c'est bien mais ça peut être long !
-                <br>Créer des jeux c'est aussi l'occasion de se mettre à plusieurs pour tirer le meilleur parti des différents talents de chacun.
+                <br />Créer des jeux c'est aussi l'occasion de se mettre à plusieurs pour tirer le meilleur parti des différents talents de chacun.
             </em>`,
-        details: [],
+        details: ["Gestion de projet", "Méthodes agiles", "Communication"],
     },
     {
         title: "Logiciels libres, GNU/Linux",
-        class: "linux",
+        image: "learning_theme_linux.png",
         comment:
-            "<em>Nous utilisons essentiellement des logiciels libres sur Linux.<br>C'est donc une bonne occasion de découvrir et démystifier tout ça en douceur !</em>",
-        details: [],
+            "<em>Nous utilisons essentiellement des logiciels libres sur Linux.<br />C'est donc une bonne occasion de découvrir et démystifier tout ça en douceur !</em>",
+        details: ["Ubuntu / Debian", "GIMP", "LMMS", "Audacity", "Pencil2d", "..."],
     },
 ];
 
@@ -96,7 +96,12 @@ class GameStudioClub {
                             tag: "div",
                             class: "full-row",
                             contents: [
-                                { tag: "h3", contents: "Apprendre à créer un jeu vidéo de A à Z" },
+                                {
+                                    tag: "h3",
+                                    class: "big",
+                                    contents:
+                                        "Apprendre à créer un <blue>jeu vidéo</blue> de A à Z",
+                                },
                                 {
                                     tag: "strong",
                                     contents:
@@ -105,7 +110,7 @@ class GameStudioClub {
                                 {
                                     tag: "p",
                                     contents:
-                                        "<em>Aucun prérequis nécessaire. Pas besoin d'être fort en maths ou en informatique, le but est d'apprendre et se détendre !</em>",
+                                        "<em><b><blue>Aucun prérequis nécessaire</blue></b>. Pas besoin d'être fort en maths ou en informatique, le but est d'apprendre et se détendre !</em>",
                                 },
                             ],
                         },
@@ -132,7 +137,8 @@ class GameStudioClub {
                                         { tag: "strong", contents: "Pour qui ?" },
                                         {
                                             tag: "span",
-                                            contents: "Tout le monde à partir de 12 ans.",
+                                            contents:
+                                                "Tout le monde à partir de <b><blue>12 ans</blue></b>.",
                                         },
                                     ],
                                 },
@@ -163,9 +169,10 @@ class GameStudioClub {
                             contents: GAMEDEV_THEMES.map(li => {
                                 return {
                                     tag: "li",
-                                    class: "learning-theme " + li.class,
+                                    class: "learning-theme",
                                     contents: [
                                         { tag: "strong", class: "title", contents: li.title },
+                                        { tag: "img", src: `${images_url}/${li.image}` },
                                         {
                                             tag: "div",
                                             class: "details",
@@ -204,7 +211,8 @@ class GameStudioClub {
                                         },
                                         {
                                             tag: "p",
-                                            contents: "Les groupes sont de 5 personnes maximum.",
+                                            contents:
+                                                "Les groupes sont de <b><blue>5 personnes</blue></b> maximum.",
                                         },
                                         {
                                             tag: "div",
@@ -260,7 +268,7 @@ class GameStudioClub {
                                         {
                                             tag: "p",
                                             contents: `Vous pouvez vous inscrire dans un des groupes pour un mois ou un trimestre.
-                                        <br>Le matériel informatique est fourni sur place, mais vous pouvez amener votre propre ordinateur portable si vous le souhaitez.
+                                        <br /><br />Le matériel informatique est fourni sur place, mais vous pouvez amener votre propre ordinateur portable si vous le souhaitez.
                                         `,
                                         },
                                         {
@@ -281,7 +289,7 @@ class GameStudioClub {
                                                                     tag: "td",
                                                                     contents: "(4 séances)",
                                                                 },
-                                                                { tag: "td", contents: "70€" },
+                                                                { tag: "td", contents: "60€" },
                                                             ],
                                                         },
                                                         {
@@ -296,7 +304,7 @@ class GameStudioClub {
                                                                     tag: "td",
                                                                     contents: "(12 séances)",
                                                                 },
-                                                                { tag: "td", contents: "190€" },
+                                                                { tag: "td", contents: "160€" },
                                                             ],
                                                         },
                                                     ],
diff --git a/src/pages/education/components/popularization.js b/src/pages/education/components/popularization.js
index 9b4236924fd036f09306c4b2905a4ddad1ea1581..2ab8b4eb899b29b0f7386dc1e975427b633c40ee 100644
--- a/src/pages/education/components/popularization.js
+++ b/src/pages/education/components/popularization.js
@@ -1,20 +1,21 @@
 "use strict";
 
+const { images_url } = require("../../../../constants");
+
 const VULGARISATION_THEMES = [
     {
         title: "Qu'est-ce qui se passe dans mon ordinateur ?",
-        class:"pc",
-        comment: "",
+        image: "learning_theme_pc.png",
         details: [
             "Répondre aux questions sur l'informatique de tous les jours",
             "L'organisation des fichiers",
             "Le navigateur web et les logiciels usuels",
+            "Le système d'exploitation",
         ],
     },
     {
         title: "GNU/Linux, le monde du libre",
-        class:"linux",
-        comment: "",
+        image: "learning_theme_linux.png",
         details: [
             "Installer Linux, démystifier et faire tomber les barrières.",
             "Qu'est-ce qu'un logiciel libre ? Quels sont les enjeux ?",
@@ -22,8 +23,7 @@ const VULGARISATION_THEMES = [
     },
     {
         title: "Comment fonctionne le web ?",
-        class:"web",
-        comment: "",
+        image: "learning_theme_web.png",
         details: [
             "De quoi est fait le réseau internet ?",
             "Comment fonctionnent les différents services que nous utilisons ?",
@@ -32,8 +32,7 @@ const VULGARISATION_THEMES = [
     },
     {
         title: "Le langages des machines",
-        class:"coding",
-        comment: "",
+        image: "learning_theme_coding.png",
         details: [
             "Démystifier la programmation informatique",
             "Qu'est-ce qu'un langage de programmation",
@@ -52,7 +51,7 @@ class Popularization {
                     tag: "div",
                     class: "title-banner popu-banner",
                     id: "popularization", // anchor id
-                    contents: [{ tag: "h2", contents: "Ateliers de vulgarisation" }],
+                    contents: [{ tag: "h2", contents: "Vulgarisation numérique" }],
                 },
                 {
                     tag: "div",
@@ -75,7 +74,7 @@ class Popularization {
                                         {
                                             tag: "span",
                                             contents:
-                                                "Si vous êtes intéressé pour proposer une de ces animations dans votre structure, contactez-nous pour un devis gratuit.",
+                                                "Si vous êtes intéressé pour proposer une de ces animations dans votre structure, contactez-nous pour un <b><blue>devis gratuit</blue></b>.",
                                         },
                                     ],
                                 },
@@ -109,15 +108,11 @@ class Popularization {
                                     class: "learning-theme " + li.class,
                                     contents: [
                                         { tag: "strong", class: "title", contents: li.title },
+                                        { tag: "img", src: `${images_url}/${li.image}` },
                                         {
                                             tag: "div",
                                             class: "details",
                                             contents: [
-                                                {
-                                                    tag: "strong",
-                                                    class: "title",
-                                                    contents: li.title,
-                                                },
                                                 {
                                                     tag: "div",
                                                     class: "comment",
diff --git a/src/pages/education/education.js b/src/pages/education/education.js
index 9c180d152be9e6f0b4961b0b709267054804bc9b..c241aed50e121b75ea2c6c6debe7927b5c67eabd 100644
--- a/src/pages/education/education.js
+++ b/src/pages/education/education.js
@@ -13,7 +13,7 @@ class EducationPage {
             tag: "div",
             id: "education-page",
             contents: [
-                { tag: "h1", contents: "Pédagogie" },
+                { tag: "h1", contents: "<blue>Pédagogie</blue>" },
                 {
                     tag: "p",
                     class: "edu-philo",
diff --git a/src/pages/education/education.scss b/src/pages/education/education.scss
index 70439e396125cec71de4f2ff6e1a6de6282e5818..cf3c92f81f13dacb395c1ca6a663555090ad63b6 100644
--- a/src/pages/education/education.scss
+++ b/src/pages/education/education.scss
@@ -3,6 +3,11 @@
         margin: 15px 40px 0;
         font-size: 25px;
     }
+    h3 {
+        &.big {
+            font-size: 30px;
+        }
+    }
     .edu-philo {
         margin: 15px 40px 15px 100px;
         max-width: 800px;
@@ -12,7 +17,8 @@
         display: flex;
         justify-content: flex-end;
         flex-direction: column;
-        height: 300px;
+        height: 15vw;
+        min-height: 250px;
         &.game-banner {
             background-image: url("../../../assets/images/game_studio_banner.png");
         }
@@ -21,7 +27,7 @@
         }
         background-size: cover;
         background-repeat: no-repeat;
-        background-position: 0% 90%;
+        background-position: center;
         h2 {
             color: white;
             font-size: 2.5em;
@@ -57,7 +63,6 @@
                 span,
                 a {
                     font-size: 14px;
-                    text-decoration: none;
                 }
             }
         }
@@ -68,55 +73,20 @@
             gap: 20px 30px;
             flex-wrap: wrap;
             li.learning-theme {
-                &.crea2d {
-                    background: url("../../../assets/images/learning_theme_2d.png") no-repeat ;
-                    background-size: cover;
-                }
-                &.sound {
-                    background: url("../../../assets/images/learning_theme_sound.png") no-repeat;
-                    background-size: cover;
-                }
-                &.coding {
-                    background: url("../../../assets/images/learning_theme_coding.png") no-repeat;
-                    background-size: cover;
-                }
-                &.math {
-                    background: url("../../../assets/images/learning_theme_math.png") no-repeat;
-                    background-size: cover;
-                }
-                &.linux {
-                    background: url("../../../assets/images/learning_theme_linux.png") no-repeat;
-                    background-size: cover;
-                }
-                &.team {
-                    background: url("../../../assets/images/learning_theme_team.png") no-repeat;
-                    background-size: cover;
-                }
-                &.conception {
-                    background: url("../../../assets/images/learning_theme_conception.png") no-repeat;
-                    background-size: cover;
-                }
-                &.write {
-                    background: url("../../../assets/images/learning_theme_write.png") no-repeat;
-                    background-size: cover;
-                }
-                &.web {
-                    background: url("../../../assets/images/learning_theme_web.png") no-repeat;
-                    background-size: cover;
-                }
-                &.pc {
-                    background: url("../../../assets/images/learning_theme_pc.png") no-repeat;
-                    background-size: cover;
-                }
-                width: 250px;
-                height: 140px;
                 position: relative;
                 box-shadow: 3px 3px 5px 1px #0001;
-                padding: 10px;
+                display: flex;
+                flex-direction: column;
                 .title {
                     color: $dark_2;
-                    font-size: 1.1em;
                     display: block;
+                    position: absolute;
+                    background-color: white;
+                    padding: 5px 25px;
+                }
+                img {
+                    width: 100%;
+                    height: auto;
                 }
                 .details {
                     background-color: #fffd;
@@ -164,7 +134,6 @@
                 padding: 20px;
                 display: flex;
                 flex-direction: column;
-                // box-shadow: 3px 3px 5px 1px #0001;
                 h3 {
                     margin: 0;
                 }
@@ -181,4 +150,121 @@
             }
         }
     }
+    @media screen and (max-width: $screen_l) {
+        .section-contents {
+            ul.learning-themes {
+                display: block;
+                li.learning-theme {
+                    margin-bottom: 20px;
+                    .details {
+                        background-color: #fff9;
+                        position: relative;
+                        top: unset;
+                        width: 100%;
+                        left: unset;
+                        max-height: unset;
+                        visibility: visible;
+                        padding: 10px;
+                        box-shadow: none;
+                        .comment {
+                            font-style: italic;
+                        }
+                        ul {
+                            list-style-type: disc;
+                            font-size: 14px;
+                            margin-left: 10px;
+                            li {
+                                color: $dark_3;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    @media screen and (max-width: $screen_s) {
+        h1 {
+            margin: 15px 20px 0;
+            font-size: 25px;
+        }
+        h3 {
+            &.big {
+                font-size: 22px;
+            }
+        }
+        .edu-philo {
+            margin: 15px;
+            max-width: unset;
+        }
+        .title-banner {
+            height: 170px;
+            min-height: unset;
+            h2 {
+                font-size: 2em;
+                margin: 20px;
+                text-shadow: 0 0 4px #000b;
+            }
+        }
+        .section-contents {
+            margin: 20px 10px 40px;
+            grid-template-columns: 1fr;
+            .full-row {
+                grid-column: 1;
+            }
+            .practical-infos {
+                grid-column: 1;
+                grid-row: 3;
+                gap: 10px;
+                padding: 10px;
+            }
+            ul.learning-themes {
+                grid-column: 1;
+                grid-row: 2;
+                display: block;
+                li.learning-theme {
+                    margin-bottom: 20px;
+                    .details {
+                        background-color: #fff9;
+                        position: relative;
+                        top: unset;
+                        width: 100%;
+                        left: unset;
+                        max-height: unset;
+                        visibility: visible;
+                        padding: 10px;
+                        box-shadow: none;
+                        ul {
+                            li {
+                                color: $dark_3;
+                            }
+                        }
+                    }
+                }
+            }
+
+            .infos-inscriptions {
+                display: flex;
+                gap: 10px;
+                padding: 10px;
+                flex-direction: column;
+                .groups,
+                .pricing {
+                    background-color: white;
+                    padding: 20px;
+                    display: flex;
+                    flex-direction: column;
+                    .table-wrapper {
+                        table {
+                            width: 100%;
+                            td {
+                                border: 1px solid #dde;
+                                padding: 10px;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 }
diff --git a/src/style.scss b/src/style.scss
index f7a03549ef06e123ec3aaf763c5dd58c76515ebe..276db2b785fb0da98f1462a31d9a89b22c2d8067 100644
--- a/src/style.scss
+++ b/src/style.scss
@@ -15,6 +15,17 @@ body {
         padding: 0;
         list-style-type: none;
     }
+    a {
+        color: $blue_2;
+        text-decoration: none;
+        &:hover {
+            color: $blue_3;
+        }
+    }
+
+    blue {
+        color: $blue_2;
+    }
 }
 
 main {
@@ -27,6 +38,15 @@ main {
     header {
         width: 100%;
         nav {
+            display: flex;
+            align-items: center;
+            height: $navbar_height;
+            .home {
+                margin: 0 10px;
+                img {
+                    width: 40px;
+                }
+            }
             ul {
                 display: flex;
                 padding: 0;
@@ -42,9 +62,6 @@ main {
                         color: $light_1;
                         font-weight: 800;
                         text-decoration: none;
-                        img {
-                            width: 40px;
-                        }
                     }
 
                     .submenu {
@@ -89,6 +106,66 @@ main {
                     }
                 }
             }
+            .burger {
+                display: none;
+            }
+            @media screen and (max-width: $screen_s) {
+                justify-content: space-between;
+                .burger {
+                    display: flex;
+                    font-weight: bold;
+                    border: 1px solid;
+                    margin: 0 20px;
+                    cursor: pointer;
+                    flex-direction: column;
+                    align-items: center;
+                    justify-content: center;
+                    border-radius: 100%;
+                    width: 25px;
+                    height: 25px;
+                    color: $dark_3;
+                    font-size: 20px;
+                }
+                ul {
+                    display: none;
+                    &.responsive-show {
+                        display: flex;
+                        position: absolute;
+                        right: 0;
+                        max-width: 100vw;
+                        min-width: 50vw;
+                        top: $navbar_height;
+                        flex-direction: column;
+                        background-color: white;
+                        box-shadow: 0 4px 6px 2px #0000000a;
+                        li {
+                            &.active {
+                                a {
+                                    border: none;
+                                }
+                            }
+                            .submenu {
+                                display: flex;
+                                visibility: visible;
+                                position: relative;
+                                height: unset;
+                                max-height: unset;
+                                transition: max-height 0.6s;
+                                top: unset;
+                                left: unset;
+                                li {
+                                    a {
+                                        font-weight: 400;
+                                        font-size: 12px;
+                                        color: $light_1;
+                                    }
+                                }
+                                margin-left: 20px;
+                            }
+                        }
+                    }
+                }
+            }
         }
     }
     #page-container {
diff --git a/src/template/components/navbar.js b/src/template/components/navbar.js
new file mode 100644
index 0000000000000000000000000000000000000000..a9159218936c5624e9a6976e7daa37884c71589a
--- /dev/null
+++ b/src/template/components/navbar.js
@@ -0,0 +1,103 @@
+"use strict";
+
+const { images_url } = require("../../../constants");
+
+const HOME_LOGO = "logo_kuadrado_s32.png";
+const NAV_MENU_ITEMS = [
+    ["/public/games/", "Jeux"],
+    ["/public/software-development/", "Software"],
+    [
+        "/public/education/",
+        "Pédagogie",
+        [
+            // submenu
+            ["/public/education/#game-studio-club", "Game Studio Club"],
+            ["/public/education/#popularization", "Animations vulgarisation"],
+        ],
+    ],
+];
+
+class NavBar {
+    constructor() {
+        this.initEventHandlers();
+    }
+
+    handleBurgerClick() {
+        document.getElementById("nav-menu-list").classList.toggle("responsive-show");
+    }
+
+    initEventHandlers() {
+        window.addEventListener("click", event => {
+            if (
+                event.target.id !== "nav-menu-list" &&
+                !event.target.classList.contains("burger") &&
+                !event.target.parentNode.classList.contains("burger")
+            ) {
+                document.getElementById("nav-menu-list").classList.remove("responsive-show");
+            }
+        });
+    }
+
+    renderHome() {
+        return {
+            tag: "div",
+            class: "home",
+            contents: [
+                {
+                    tag: "a",
+                    href: "/public/",
+                    contents: [
+                        {
+                            tag: "img",
+                            src: `${images_url}/${HOME_LOGO}`,
+                        },
+                    ],
+                },
+            ],
+        };
+    }
+
+    renderMenu(menuItemsArray, isSubmenu = false) {
+        return {
+            tag: "ul",
+            id: "nav-menu-list",
+            class: isSubmenu ? "submenu" : "",
+            contents: menuItemsArray.map(link => {
+                const [href, text, submenu] = link;
+                return {
+                    tag: "li",
+                    class: !isSubmenu && window.location.pathname === href ? "active" : "",
+                    contents: [
+                        {
+                            tag: "a",
+                            href,
+                            contents: text,
+                        },
+                    ].concat(submenu ? [this.renderMenu(submenu, true)] : []),
+                };
+            }),
+        };
+    }
+
+    renderResponsiveBurger() {
+        return {
+            tag: "div",
+            class: "burger",
+            onclick: this.handleBurgerClick.bind(this),
+            contents: [{ tag: "span", contents: "···" }],
+        };
+    }
+
+    render() {
+        return {
+            tag: "nav",
+            contents: [
+                this.renderHome(),
+                this.renderResponsiveBurger(),
+                this.renderMenu(NAV_MENU_ITEMS),
+            ],
+        };
+    }
+}
+
+module.exports = NavBar;
diff --git a/src/template/template.js b/src/template/template.js
index f945e3ac38efa8d643f6327ca6cedb5586947ae5..3c13131925bb20812a07600e12ffeed2ebafa004 100644
--- a/src/template/template.js
+++ b/src/template/template.js
@@ -1,69 +1,18 @@
 "use strict";
 
-const { images_url } = require("../../constants");
-
-const NAV_MENU_ITEMS = [
-    ["/public/", "logo_kuadrado_s32.png; "],
-    ["/public/games/", "Jeux"],
-    ["/public/software-development/", "Software"],
-    [
-        "/public/education/",
-        "Pédagogie",
-        [
-            // submenu
-            ["/public/education/#game-studio-club", "Game Studio Club"],
-            ["/public/education/#popularization", "Animations vulgarisation"],
-        ],
-    ],
-];
+const NavBar = require("./components/navbar");
 
 class Template {
     constructor(props) {
         this.props = props;
     }
-
-    renderMenu(menuItemsArray, isSubmenu = false) {
-        const r = {
-            tag: "ul",
-            class: isSubmenu ? "submenu" : "",
-            contents: menuItemsArray.map(link => {
-                let [href, text, submenu] = link;
-                const spltTxt = text.split(";");
-                text = spltTxt.length > 1 ? spltTxt[1] : text;
-                const img = spltTxt.length > 1 ? spltTxt[0] : undefined;
-                return {
-                    tag: "li",
-                    class: !isSubmenu && window.location.pathname === href ? "active" : "",
-                    contents: [
-                        {
-                            tag: "a",
-                            href,
-                            contents: img
-                                ? [
-                                      { tag: "img", src: `${images_url}/${img}` },
-                                      { tag: "span", contents: text },
-                                  ]
-                                : text,
-                        },
-                    ].concat(submenu ? [this.renderMenu(submenu, true)] : []),
-                };
-            }),
-        };
-        return r;
-    }
-
     render() {
         return {
             tag: "main",
             contents: [
                 {
                     tag: "header",
-                    contents: [
-                        {
-                            tag: "nav",
-                            contents: [this.renderMenu(NAV_MENU_ITEMS)],
-                        },
-                    ],
+                    contents: [new NavBar().render()],
                 },
                 {
                     tag: "div",
diff --git a/src/theme.scss b/src/theme.scss
index 114bfdd08f9a2594ed890b748cb10ed16ee49c0d..4551e25ad69d1d6d7adb4ffe20a0373c598a0d55 100644
--- a/src/theme.scss
+++ b/src/theme.scss
@@ -15,3 +15,14 @@ $red_1: #9c3030;
 $red_2: #e74949;
 $yellow_1: #e5a002;
 $yellow_2: #ffe600;
+
+// screen thresholds
+$screen_l: 900px;
+$screen_m: 780px;
+$screen_s: 560px;
+$screen_xs: 480px;
+
+
+// useful constants
+
+$navbar_height: 40px;
diff --git a/style/pages/education/education.css b/style/pages/education/education.css
index bd021868ddc935fda9d3f2adf28d334ca3867c5b..f4a31b939cf68793d093d3d3b2725b9911b55fea 100644
--- a/style/pages/education/education.css
+++ b/style/pages/education/education.css
@@ -1,9 +1,9 @@
 /* Error: Undefined variable.
  *    ,
- * 47 |             background-color: $light_0;
+ * 53 |             background-color: $light_0;
  *    |                               ^^^^^^^^
  *    '
- *   src/pages/education/education.scss 47:31  root stylesheet */
+ *   src/pages/education/education.scss 53:31  root stylesheet */
 
 body::before {
   font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",
@@ -13,5 +13,5 @@ body::before {
   padding: 1em;
   margin-bottom: 1em;
   border-bottom: 2px solid black;
-  content: "Error: Undefined variable.\a    \2577 \a 47 \2502              background-color: $light_0;\a    \2502                                ^^^^^^^^\a    \2575 \a   src/pages/education/education.scss 47:31  root stylesheet";
+  content: "Error: Undefined variable.\a    \2577 \a 53 \2502              background-color: $light_0;\a    \2502                                ^^^^^^^^\a    \2575 \a   src/pages/education/education.scss 53:31  root stylesheet";
 }
diff --git a/style/style.css b/style/style.css
index 13f29f2ca3cd4fa54c5b4356b947d107da4dfdab..5511c249e96a75bafbe5090f7f5d99f888f1c40e 100644
--- a/style/style.css
+++ b/style/style.css
@@ -14,6 +14,16 @@ body ul {
   padding: 0;
   list-style-type: none;
 }
+body a {
+  color: #34a0b3;
+  text-decoration: none;
+}
+body a:hover {
+  color: #17cff0;
+}
+body blue {
+  color: #34a0b3;
+}
 
 main {
   background: url("../assets/images/wallpaper_binary_white.png");
@@ -26,6 +36,17 @@ main {
 main header {
   width: 100%;
 }
+main header nav {
+  display: flex;
+  align-items: center;
+  height: 40px;
+}
+main header nav .home {
+  margin: 0 10px;
+}
+main header nav .home img {
+  width: 40px;
+}
 main header nav ul {
   display: flex;
   padding: 0;
@@ -44,9 +65,6 @@ main header nav ul li a {
   font-weight: 800;
   text-decoration: none;
 }
-main header nav ul li a img {
-  width: 40px;
-}
 main header nav ul li .submenu {
   visibility: hidden;
   overflow: hidden;
@@ -78,6 +96,62 @@ main header nav ul li:hover .submenu a {
 main header nav ul li:hover .submenu li:hover a {
   color: #3c4144;
 }
+main header nav .burger {
+  display: none;
+}
+@media screen and (max-width: 560px) {
+  main header nav {
+    justify-content: space-between;
+  }
+  main header nav .burger {
+    display: flex;
+    font-weight: bold;
+    border: 1px solid;
+    margin: 0 20px;
+    cursor: pointer;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    border-radius: 100%;
+    width: 25px;
+    height: 25px;
+    color: #555d61;
+    font-size: 20px;
+  }
+  main header nav ul {
+    display: none;
+  }
+  main header nav ul.responsive-show {
+    display: flex;
+    position: absolute;
+    right: 0;
+    max-width: 100vw;
+    min-width: 50vw;
+    top: 40px;
+    flex-direction: column;
+    background-color: white;
+    box-shadow: 0 4px 6px 2px #0000000a;
+  }
+  main header nav ul.responsive-show li.active a {
+    border: none;
+  }
+  main header nav ul.responsive-show li .submenu {
+    display: flex;
+    visibility: visible;
+    position: relative;
+    height: unset;
+    max-height: unset;
+    transition: max-height 0.6s;
+    top: unset;
+    left: unset;
+    margin-left: 20px;
+  }
+  main header nav ul.responsive-show li .submenu li a {
+    font-weight: 400;
+    font-size: 12px;
+    color: #96a5ae;
+  }
+}
 main #page-container {
   background-color: white;
   width: 1200px;
@@ -88,6 +162,9 @@ main #page-container #education-page h1 {
   margin: 15px 40px 0;
   font-size: 25px;
 }
+main #page-container #education-page h3.big {
+  font-size: 30px;
+}
 main #page-container #education-page .edu-philo {
   margin: 15px 40px 15px 100px;
   max-width: 800px;
@@ -97,10 +174,11 @@ main #page-container #education-page .title-banner {
   display: flex;
   justify-content: flex-end;
   flex-direction: column;
-  height: 300px;
+  height: 15vw;
+  min-height: 250px;
   background-size: cover;
   background-repeat: no-repeat;
-  background-position: 0% 90%;
+  background-position: center;
 }
 main #page-container #education-page .title-banner.game-banner {
   background-image: url("../../../assets/images/game_studio_banner.png");
@@ -145,7 +223,6 @@ main #page-container #education-page .section-contents .practical-infos .info-it
 main #page-container #education-page .section-contents .practical-infos .info-item span,
 main #page-container #education-page .section-contents .practical-infos .info-item a {
   font-size: 14px;
-  text-decoration: none;
 }
 main #page-container #education-page .section-contents ul.learning-themes {
   grid-column: 1;
@@ -155,56 +232,21 @@ main #page-container #education-page .section-contents ul.learning-themes {
   flex-wrap: wrap;
 }
 main #page-container #education-page .section-contents ul.learning-themes li.learning-theme {
-  width: 250px;
-  height: 140px;
   position: relative;
   box-shadow: 3px 3px 5px 1px #0001;
-  padding: 10px;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.crea2d {
-  background: url("../../../assets/images/learning_theme_2d.png") no-repeat;
-  background-size: cover;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.sound {
-  background: url("../../../assets/images/learning_theme_sound.png") no-repeat;
-  background-size: cover;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.coding {
-  background: url("../../../assets/images/learning_theme_coding.png") no-repeat;
-  background-size: cover;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.math {
-  background: url("../../../assets/images/learning_theme_math.png") no-repeat;
-  background-size: cover;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.linux {
-  background: url("../../../assets/images/learning_theme_linux.png") no-repeat;
-  background-size: cover;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.team {
-  background: url("../../../assets/images/learning_theme_team.png") no-repeat;
-  background-size: cover;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.conception {
-  background: url("../../../assets/images/learning_theme_conception.png") no-repeat;
-  background-size: cover;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.write {
-  background: url("../../../assets/images/learning_theme_write.png") no-repeat;
-  background-size: cover;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.web {
-  background: url("../../../assets/images/learning_theme_web.png") no-repeat;
-  background-size: cover;
-}
-main #page-container #education-page .section-contents ul.learning-themes li.learning-theme.pc {
-  background: url("../../../assets/images/learning_theme_pc.png") no-repeat;
-  background-size: cover;
+  display: flex;
+  flex-direction: column;
 }
 main #page-container #education-page .section-contents ul.learning-themes li.learning-theme .title {
   color: #3c4144;
-  font-size: 1.1em;
   display: block;
+  position: absolute;
+  background-color: white;
+  padding: 5px 25px;
+}
+main #page-container #education-page .section-contents ul.learning-themes li.learning-theme img {
+  width: 100%;
+  height: auto;
 }
 main #page-container #education-page .section-contents ul.learning-themes li.learning-theme .details {
   background-color: #fffd;
@@ -263,6 +305,115 @@ main #page-container #education-page .section-contents .infos-inscriptions .pric
   border: 1px solid #dde;
   padding: 10px 20px;
 }
+@media screen and (max-width: 900px) {
+  main #page-container #education-page .section-contents ul.learning-themes {
+    display: block;
+  }
+  main #page-container #education-page .section-contents ul.learning-themes li.learning-theme {
+    margin-bottom: 20px;
+  }
+  main #page-container #education-page .section-contents ul.learning-themes li.learning-theme .details {
+    background-color: #fff9;
+    position: relative;
+    top: unset;
+    width: 100%;
+    left: unset;
+    max-height: unset;
+    visibility: visible;
+    padding: 10px;
+    box-shadow: none;
+  }
+  main #page-container #education-page .section-contents ul.learning-themes li.learning-theme .details .comment {
+    font-style: italic;
+  }
+  main #page-container #education-page .section-contents ul.learning-themes li.learning-theme .details ul {
+    list-style-type: disc;
+    font-size: 14px;
+    margin-left: 10px;
+  }
+  main #page-container #education-page .section-contents ul.learning-themes li.learning-theme .details ul li {
+    color: #555d61;
+  }
+}
+@media screen and (max-width: 560px) {
+  main #page-container #education-page h1 {
+    margin: 15px 20px 0;
+    font-size: 25px;
+  }
+  main #page-container #education-page h3.big {
+    font-size: 22px;
+  }
+  main #page-container #education-page .edu-philo {
+    margin: 15px;
+    max-width: unset;
+  }
+  main #page-container #education-page .title-banner {
+    height: 170px;
+    min-height: unset;
+  }
+  main #page-container #education-page .title-banner h2 {
+    font-size: 2em;
+    margin: 20px;
+    text-shadow: 0 0 4px #000b;
+  }
+  main #page-container #education-page .section-contents {
+    margin: 20px 10px 40px;
+    grid-template-columns: 1fr;
+  }
+  main #page-container #education-page .section-contents .full-row {
+    grid-column: 1;
+  }
+  main #page-container #education-page .section-contents .practical-infos {
+    grid-column: 1;
+    grid-row: 3;
+    gap: 10px;
+    padding: 10px;
+  }
+  main #page-container #education-page .section-contents ul.learning-themes {
+    grid-column: 1;
+    grid-row: 2;
+    display: block;
+  }
+  main #page-container #education-page .section-contents ul.learning-themes li.learning-theme {
+    margin-bottom: 20px;
+  }
+  main #page-container #education-page .section-contents ul.learning-themes li.learning-theme .details {
+    background-color: #fff9;
+    position: relative;
+    top: unset;
+    width: 100%;
+    left: unset;
+    max-height: unset;
+    visibility: visible;
+    padding: 10px;
+    box-shadow: none;
+  }
+  main #page-container #education-page .section-contents ul.learning-themes li.learning-theme .details ul li {
+    color: #555d61;
+  }
+  main #page-container #education-page .section-contents .infos-inscriptions {
+    display: flex;
+    gap: 10px;
+    padding: 10px;
+    flex-direction: column;
+  }
+  main #page-container #education-page .section-contents .infos-inscriptions .groups,
+main #page-container #education-page .section-contents .infos-inscriptions .pricing {
+    background-color: white;
+    padding: 20px;
+    display: flex;
+    flex-direction: column;
+  }
+  main #page-container #education-page .section-contents .infos-inscriptions .groups .table-wrapper table,
+main #page-container #education-page .section-contents .infos-inscriptions .pricing .table-wrapper table {
+    width: 100%;
+  }
+  main #page-container #education-page .section-contents .infos-inscriptions .groups .table-wrapper table td,
+main #page-container #education-page .section-contents .infos-inscriptions .pricing .table-wrapper table td {
+    border: 1px solid #dde;
+    padding: 10px;
+  }
+}
 main footer {
   width: 100%;
   background-color: #fff1;
diff --git a/style/style.css.map b/style/style.css.map
index 2d8e97b39ae24851224055c546923d4c418c1a5c..4a3170688265f7b218e5750c717ea84b78507a34 100644
--- a/style/style.css.map
+++ b/style/style.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../src/style.scss","../src/theme.scss","../src/pages/education/education.scss"],"names":[],"mappings":"AAEA;EAQI;EACA;;AARA;EACI;EACA,OCLC;EDMD;EACA;EACA;;AAIJ;EACI;EACA;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;AACA;EACI;;AAEI;EACI;EACA;EACA;EACA;;AACA;EACI;;AACA;EACI;EACA;EACA;EACA;EACA,OCrCd;EDsCc;EACA;;AACA;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACI,OC/DnB;EDgEmB;;AAIJ;EACI,OCrEnB;;ADwEe;EACI;EACA;;AACA;EACI,OCzEtB;ED0EsB;;AAII;EACI,OClF/B;;AD4FL;EACI;EACA;EACA;EACA;;AEhGJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EAOA;EACA;EACA;;AARA;EACI;;AAEJ;EACI;;AAKJ;EACI;EACA;EACA;EACA;;AAGR;EACI;EACA;EACA;EACA;EACA;;AACA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA,kBD3CF;EC4CE;;AACA;EACI;EACA;EACA;EACA;;AACA;EACI;;AAEJ;AAAA;EAEI;EACA;;AAIZ;EACI;EACA;EACA;EACA;EACA;;AACA;EAyCI;EACA;EACA;EACA;EACA;;AA5CA;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAOJ;EACI,ODnHX;ECoHW;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACI;;AAEJ;EACI;EACA;EACA;;AAIJ;EACI;EACA;;AAMhB;EACI;EACA;EACA,kBD3JF;EC4JE;;AACA;AAAA;EAEI;EACA;EACA;EACA;;AAEA;AAAA;EACI;;AAGA;AAAA;EACI;EACA;;AACA;AAAA;EACI;EACA;;AF5ExB;EACI;EACA;EACA","file":"style.css"}
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../src/style.scss","../src/theme.scss","../src/pages/education/education.scss"],"names":[],"mappings":"AAEA;EAQI;EACA;;AARA;EACI;EACA,OCLC;EDMD;EACA;EACA;;AAIJ;EACI;EACA;EACA;;AAEJ;EACI,OCPC;EDQD;;AACA;EACI,OCTH;;ADaL;EACI,OCfC;;;ADmBT;EACI;EACA;EACA;EACA;EACA;EACA;;AACA;EACI;;AACA;EACI;EACA;EACA,QCfI;;ADgBJ;EACI;;AACA;EACI;;AAGR;EACI;EACA;EACA;EACA;;AACA;EACI;;AACA;EACI;EACA;EACA;EACA;EACA,OCzDd;ED0Dc;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACI,OChFnB;EDiFmB;;AAIJ;EACI,OCtFnB;;ADyFe;EACI;EACA;;AACA;EACI,OC1FtB;ED2FsB;;AAII;EACI,OCnG/B;;AD2GG;EACI;;AAEJ;EAxEJ;IAyEQ;;EACA;IACI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,OC3HX;ID4HW;;EAEJ;IACI;;EACA;IACI;IACA;IACA;IACA;IACA;IACA,KC7GR;ID8GQ;IACA;IACA;;EAGQ;IACI;;EAGR;IACI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAQA;;EANI;IACI;IACA;IACA,OC3J9B;;;ADsKN;EACI;EACA;EACA;EACA;;AE7KJ;EACI;EACA;;AAGA;EACI;;AAGR;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EAOA;EACA;EACA;;AARA;EACI;;AAEJ;EACI;;AAKJ;EACI;EACA;EACA;EACA;;AAGR;EACI;EACA;EACA;EACA;EACA;;AACA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA,kBDjDF;ECkDE;;AACA;EACI;EACA;EACA;EACA;;AACA;EACI;;AAEJ;AAAA;EAEI;;AAIZ;EACI;EACA;EACA;EACA;EACA;;AACA;EACI;EACA;EACA;EACA;;AACA;EACI,OD/EX;ECgFW;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACI;;AAEJ;EACI;EACA;EACA;;AAIJ;EACI;EACA;;AAMhB;EACI;EACA;EACA,kBD7HF;EC8HE;;AACA;AAAA;EAEI;EACA;EACA;EACA;;AACA;AAAA;EACI;;AAGA;AAAA;EACI;EACA;;AACA;AAAA;EACI;EACA;;AAOxB;EAEQ;IACI;;EACA;IACI;;EACA;IACI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EACA;IACI;;EAEJ;IACI;IACA;IACA;;EACA;IACI,OD9KvB;;;ACuLL;EACI;IACI;IACA;;EAGA;IACI;;EAGR;IACI;IACA;;EAEJ;IACI;IACA;;EACA;IACI;IACA;IACA;;EAGR;IACI;IACA;;EACA;IACI;;EAEJ;IACI;IACA;IACA;IACA;;EAEJ;IACI;IACA;IACA;;EACA;IACI;;EACA;IACI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAEI;IACI,OD5OvB;;ECmPG;IACI;IACA;IACA;IACA;;EACA;AAAA;IAEI;IACA;IACA;IACA;;EAEI;AAAA;IACI;;EACA;AAAA;IACI;IACA;;;AFpF5B;EACI;EACA;EACA","file":"style.css"}
\ No newline at end of file