diff --git a/fet2020/static/img/favicons/android-chrome-192x192.png b/fet2020/static/img/favicons/android-chrome-192x192.png
new file mode 100644
index 00000000..46d48388
Binary files /dev/null and b/fet2020/static/img/favicons/android-chrome-192x192.png differ
diff --git a/fet2020/static/img/favicons/android-chrome-512x512.png b/fet2020/static/img/favicons/android-chrome-512x512.png
new file mode 100644
index 00000000..52444f71
Binary files /dev/null and b/fet2020/static/img/favicons/android-chrome-512x512.png differ
diff --git a/fet2020/static/img/favicons/apple-touch-icon.png b/fet2020/static/img/favicons/apple-touch-icon.png
new file mode 100644
index 00000000..5ea55af4
Binary files /dev/null and b/fet2020/static/img/favicons/apple-touch-icon.png differ
diff --git a/fet2020/static/img/favicons/browserconfig.xml b/fet2020/static/img/favicons/browserconfig.xml
new file mode 100644
index 00000000..d416bc53
--- /dev/null
+++ b/fet2020/static/img/favicons/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #ffffff
+
+
+
diff --git a/fet2020/static/img/favicons/favicon-16x16.png b/fet2020/static/img/favicons/favicon-16x16.png
new file mode 100644
index 00000000..6995483d
Binary files /dev/null and b/fet2020/static/img/favicons/favicon-16x16.png differ
diff --git a/fet2020/static/img/favicons/favicon-32x32.png b/fet2020/static/img/favicons/favicon-32x32.png
new file mode 100644
index 00000000..7b5dfea0
Binary files /dev/null and b/fet2020/static/img/favicons/favicon-32x32.png differ
diff --git a/fet2020/static/img/favicons/favicon.ico b/fet2020/static/img/favicons/favicon.ico
new file mode 100644
index 00000000..7ce657e4
Binary files /dev/null and b/fet2020/static/img/favicons/favicon.ico differ
diff --git a/fet2020/static/img/favicons/mstile-150x150.png b/fet2020/static/img/favicons/mstile-150x150.png
new file mode 100644
index 00000000..b75c95ce
Binary files /dev/null and b/fet2020/static/img/favicons/mstile-150x150.png differ
diff --git a/fet2020/static/img/favicons/safari-pinned-tab.svg b/fet2020/static/img/favicons/safari-pinned-tab.svg
new file mode 100644
index 00000000..99798dd8
--- /dev/null
+++ b/fet2020/static/img/favicons/safari-pinned-tab.svg
@@ -0,0 +1,193 @@
+
+
+
diff --git a/fet2020/static/img/favicons/site.webmanifest b/fet2020/static/img/favicons/site.webmanifest
new file mode 100644
index 00000000..5b4ac899
--- /dev/null
+++ b/fet2020/static/img/favicons/site.webmanifest
@@ -0,0 +1,18 @@
+{
+ "name": "FET",
+ "short_name": "FET",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff"
+}
diff --git a/fet2020/static/responsive-hidden-nav.js b/fet2020/static/responsive-hidden-nav.js
deleted file mode 100644
index b40d3118..00000000
--- a/fet2020/static/responsive-hidden-nav.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // define getter function for harmony exports
-/******/ __webpack_require__.d = function(exports, name, getter) {
-/******/ if(!__webpack_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ }
-/******/ };
-/******/
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = function(exports) {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/
-/******/ // create a fake namespace object
-/******/ // mode & 1: value is a module id, require it
-/******/ // mode & 2: merge all properties of value into the ns
-/******/ // mode & 4: return value when already ns object
-/******/ // mode & 8|1: behave like require
-/******/ __webpack_require__.t = function(value, mode) {
-/******/ if(mode & 1) value = __webpack_require__(value);
-/******/ if(mode & 8) return value;
-/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ var ns = Object.create(null);
-/******/ __webpack_require__.r(ns);
-/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ return ns;
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __webpack_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __webpack_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-/******/
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 0);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ "./src/assets/js/building-blocks/responsive-hidden-nav.js":
-/*!****************************************************************!*\
- !*** ./src/assets/js/building-blocks/responsive-hidden-nav.js ***!
- \****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports) {
-
-var $topBar = $('[data-responsive-hidden-nav]');
-var $button = $('[data-responsive-hidden-nav] .responsive-hidden-button');
-var $visibleLinks = $('[data-responsive-hidden-nav] .visible-links');
-var $hiddenLinks = $('[data-responsive-hidden-nav] .hidden-links');
-var responsiveBreaks = []; // Empty List (Array) on initialization
-
-function updateTopBar() {
- var availableSpace = $button.hasClass('hidden') ? $topBar.width() : $topBar.width() - $button.width() - 30; // Calculation of available space on the logic of whether button has the class `hidden` or not
-
- if ($visibleLinks.width() > availableSpace) {
- // Logic when visible list is overflowing the nav
- responsiveBreaks.push($visibleLinks.width()); // Record the width of the list
-
- $visibleLinks.children().last().prependTo($hiddenLinks); // Move item to the hidden list
- // Show the resonsive hidden button
-
- if ($button.hasClass('hidden')) {
- $button.removeClass('hidden');
- }
- } else {
- // Logic when visible list is not overflowing the nav
- if (availableSpace > responsiveBreaks[responsiveBreaks.length - 1]) {
- // Logic when there is space for another item in the nav
- $hiddenLinks.children().first().appendTo($visibleLinks);
- responsiveBreaks.pop(); // Move the item to the visible list
- } // Hide the resonsive hidden button if list is empty
-
-
- if (responsiveBreaks.length < 1) {
- $button.addClass('hidden');
- $hiddenLinks.addClass('hidden');
- }
- }
-
- $button.attr("count", responsiveBreaks.length); // Keeping counter updated
-
- if ($visibleLinks.width() > availableSpace) {
- // Occur again if the visible list is still overflowing the nav
- updateTopBar();
- }
-} // Window listeners
-
-
-$(window).resize(function () {
- updateTopBar();
-});
-$button.on('click', function () {
- $hiddenLinks.toggleClass('hidden');
-});
-updateTopBar();
-
-/***/ }),
-
-/***/ 0:
-/*!**********************************************************************!*\
- !*** multi ./src/assets/js/building-blocks/responsive-hidden-nav.js ***!
- \**********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__(/*! /srv/test_1/myproject/src/assets/js/building-blocks/responsive-hidden-nav.js */"./src/assets/js/building-blocks/responsive-hidden-nav.js");
-
-
-/***/ })
-
-/******/ });
-//# sourceMappingURL=responsive-hidden-nav.js.map
\ No newline at end of file
diff --git a/fet2020/static/responsive-hidden-nav.js.map b/fet2020/static/responsive-hidden-nav.js.map
deleted file mode 100644
index 84955c2e..00000000
--- a/fet2020/static/responsive-hidden-nav.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/js/building-blocks/responsive-hidden-nav.js"],"names":["$topBar","$","$button","$visibleLinks","$hiddenLinks","responsiveBreaks","updateTopBar","availableSpace","hasClass","width","push","children","last","prependTo","removeClass","length","first","appendTo","pop","addClass","attr","window","resize","on","toggleClass"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA,IAAIA,OAAO,GAAGC,CAAC,CAAC,8BAAD,CAAf;AACA,IAAIC,OAAO,GAAGD,CAAC,CAAC,wDAAD,CAAf;AACA,IAAIE,aAAa,GAAGF,CAAC,CAAC,6CAAD,CAArB;AACA,IAAIG,YAAY,GAAGH,CAAC,CAAC,4CAAD,CAApB;AAEA,IAAII,gBAAgB,GAAG,EAAvB,C,CAA2B;;AAE3B,SAASC,YAAT,GAAwB;AAEtB,MAAIC,cAAc,GAAGL,OAAO,CAACM,QAAR,CAAiB,QAAjB,IAA6BR,OAAO,CAACS,KAAR,EAA7B,GAA+CT,OAAO,CAACS,KAAR,KAAkBP,OAAO,CAACO,KAAR,EAAlB,GAAoC,EAAxG,CAFsB,CAEsF;;AAE5G,MAAGN,aAAa,CAACM,KAAd,KAAwBF,cAA3B,EAA2C;AAAE;AAE3CF,oBAAgB,CAACK,IAAjB,CAAsBP,aAAa,CAACM,KAAd,EAAtB,EAFyC,CAEK;;AAC9CN,iBAAa,CAACQ,QAAd,GAAyBC,IAAzB,GAAgCC,SAAhC,CAA0CT,YAA1C,EAHyC,CAGgB;AAEzD;;AACA,QAAGF,OAAO,CAACM,QAAR,CAAiB,QAAjB,CAAH,EAA+B;AAC7BN,aAAO,CAACY,WAAR,CAAoB,QAApB;AACD;AAEF,GAVD,MAUO;AAAE;AAEP,QAAGP,cAAc,GAAGF,gBAAgB,CAACA,gBAAgB,CAACU,MAAjB,GAAwB,CAAzB,CAApC,EAAiE;AAAE;AACjEX,kBAAY,CAACO,QAAb,GAAwBK,KAAxB,GAAgCC,QAAhC,CAAyCd,aAAzC;AACAE,sBAAgB,CAACa,GAAjB,GAF+D,CAEvC;AACzB,KALI,CAOL;;;AACA,QAAGb,gBAAgB,CAACU,MAAjB,GAA0B,CAA7B,EAAgC;AAC9Bb,aAAO,CAACiB,QAAR,CAAiB,QAAjB;AACAf,kBAAY,CAACe,QAAb,CAAsB,QAAtB;AACD;AACF;;AAEDjB,SAAO,CAACkB,IAAR,CAAa,OAAb,EAAsBf,gBAAgB,CAACU,MAAvC,EA5BsB,CA4B0B;;AAEhD,MAAGZ,aAAa,CAACM,KAAd,KAAwBF,cAA3B,EAA2C;AAAE;AAC3CD,gBAAY;AACb;AACF,C,CAED;;;AACAL,CAAC,CAACoB,MAAD,CAAD,CAAUC,MAAV,CAAiB,YAAW;AACxBhB,cAAY;AACf,CAFD;AAGAJ,OAAO,CAACqB,EAAR,CAAW,OAAX,EAAoB,YAAW;AAC7BnB,cAAY,CAACoB,WAAb,CAAyB,QAAzB;AACD,CAFD;AAGAlB,YAAY,G","file":"responsive-hidden-nav.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","var $topBar = $('[data-responsive-hidden-nav]');\nvar $button = $('[data-responsive-hidden-nav] .responsive-hidden-button');\nvar $visibleLinks = $('[data-responsive-hidden-nav] .visible-links');\nvar $hiddenLinks = $('[data-responsive-hidden-nav] .hidden-links');\n\nvar responsiveBreaks = []; // Empty List (Array) on initialization\n\nfunction updateTopBar() {\n \n var availableSpace = $button.hasClass('hidden') ? $topBar.width() : $topBar.width() - $button.width() - 30; // Calculation of available space on the logic of whether button has the class `hidden` or not\n\n if($visibleLinks.width() > availableSpace) { // Logic when visible list is overflowing the nav\n \n responsiveBreaks.push($visibleLinks.width()); // Record the width of the list\n $visibleLinks.children().last().prependTo($hiddenLinks); // Move item to the hidden list\n \n // Show the resonsive hidden button\n if($button.hasClass('hidden')) {\n $button.removeClass('hidden');\n }\n \n } else { // Logic when visible list is not overflowing the nav\n \n if(availableSpace > responsiveBreaks[responsiveBreaks.length-1]) { // Logic when there is space for another item in the nav\n $hiddenLinks.children().first().appendTo($visibleLinks);\n responsiveBreaks.pop(); // Move the item to the visible list\n }\n \n // Hide the resonsive hidden button if list is empty\n if(responsiveBreaks.length < 1) {\n $button.addClass('hidden');\n $hiddenLinks.addClass('hidden');\n }\n }\n\n $button.attr(\"count\", responsiveBreaks.length); // Keeping counter updated\n\n if($visibleLinks.width() > availableSpace) { // Occur again if the visible list is still overflowing the nav\n updateTopBar();\n }\n}\n\n// Window listeners\n$(window).resize(function() {\n updateTopBar();\n});\n$button.on('click', function() {\n $hiddenLinks.toggleClass('hidden');\n});\nupdateTopBar();\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/fet2020/templates/base.html b/fet2020/templates/base.html
index e18986a9..be33f161 100644
--- a/fet2020/templates/base.html
+++ b/fet2020/templates/base.html
@@ -16,16 +16,19 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
+