diff --git a/src/main/java/Team5/SmartTowns/SmartTownsController.java b/src/main/java/Team5/SmartTowns/SmartTownsController.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f21592b64931ea5a0eb04abe0de1c0ade0fb5f9
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/SmartTownsController.java
@@ -0,0 +1,16 @@
+package Team5.SmartTowns;
+
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+@Controller
+public class SmartTownsController {
+
+
+    @GetMapping("/")
+    public ModelAndView getHomePage(){
+        return new ModelAndView("welcome-page");
+    }
+}
diff --git a/src/main/java/Team5/SmartTowns/towns/TownController.java b/src/main/java/Team5/SmartTowns/towns/TownController.java
index 9063712be2de660379c504bb064254367dcaa3d8..acd352fec42a135cdf7a5dfe6ef6f0dc5f99ebd1 100644
--- a/src/main/java/Team5/SmartTowns/towns/TownController.java
+++ b/src/main/java/Team5/SmartTowns/towns/TownController.java
@@ -11,7 +11,16 @@ public class TownController {
 
     @GetMapping("/home")
     public ModelAndView getTownList(){
-        ModelAndView modelAndView = new ModelAndView("Towns/home/homePage");
+        ModelAndView modelAndView = new ModelAndView("towns/home/homePage");
+        TownStorage townsCurrent= new TownStorage().getInstance();
+        List<Towns> towns = townsCurrent.getTownList();
+        modelAndView.addObject("towns",towns);
+        return modelAndView;
+
+    }
+    @GetMapping("/mobile-home")
+    public ModelAndView getTownListMobile(){
+        ModelAndView modelAndView = new ModelAndView("towns/home/mobile-homepage");
         TownStorage townsCurrent= new TownStorage().getInstance();
         List<Towns> towns = townsCurrent.getTownList();
         modelAndView.addObject("towns",towns);
diff --git a/src/main/java/Team5/SmartTowns/towns/Towns.java b/src/main/java/Team5/SmartTowns/towns/Towns.java
index ebe6fd4797c205ace803727026e64837a2af93e6..677faf85a287ac8903edcbf9ff4395a234d9e44f 100644
--- a/src/main/java/Team5/SmartTowns/towns/Towns.java
+++ b/src/main/java/Team5/SmartTowns/towns/Towns.java
@@ -59,4 +59,23 @@ public class Towns {
         this.trailProgress = trailProgress;
         this.imageTown = imageTown;
     }
+
+    public String setTrailProgressClass() {
+        /*SUGGESTION INSTEAD OF DOING THIS IS THE HTML*/
+        String progress;
+        if (trailProgress < 50) {
+            progress = "notComplete";
+        } else if (trailProgress < 70) {
+            progress = "farComplete";
+        } else if (trailProgress < 90) {
+            progress = "nearComplete";
+        } else if (trailProgress < 100) {
+            progress = "closeComplete";
+        } else {
+            progress = "Complete";
+        }
+        return progress;
+    }
+
+
 }
diff --git a/src/main/resources/static/css/colours.css b/src/main/resources/static/css/colours.css
new file mode 100644
index 0000000000000000000000000000000000000000..fd5fc2bf78240e9a2b07b222cab37d118145e2a0
--- /dev/null
+++ b/src/main/resources/static/css/colours.css
@@ -0,0 +1,50 @@
+/* AUTHOR: Gabriel Copat
+ * Variable list for website palette, to be re-used throughout the site
+ *
+ * This makes it easy to change up the site's colours without having to go through
+ *     each individual reference in the CSS
+*/
+
+/*FONTS*/
+@import url('https://fonts.googleapis.com/css2?family=MedievalSharp&display=swap'); /*MedievalSharp*/
+@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap'); /*Montserrat*/
+
+:root {
+    /*Variable Colours for Dark Theme Users
+    *************DEFAULT VALUES************
+    */
+
+    --primary-colour: hsl(271, 100%, 20%);
+    --primary-dark: hsl(271, 100%, 15%);
+    --primary-darker: hsl(272, 100%, 10%);
+    --prim-shade-1:#632e93;
+    --prim-shade-2:#9159c2;
+    --prim-shade-3:#c285f3;
+
+    --secondary-colour: #f2724a;
+    --accent-colour: #cc2f58;
+    --accent-secondary: #8f0065;
+
+    /*DEFAULT TEXT COLOUR*/
+    color:  white;
+    font-family: 'Montserrat', sans-serif;
+
+
+    /*Variable Colours for Light Theme Users*/
+    /*UN-IMPLEMENTED AS OF YET*/
+    @media (prefers-color-scheme: light) {
+        /*--primary-darker: hsl(272, 100%, 10%);*/
+        /*--primary-dark: hsl(271, 100%, 20%);*/
+        /*--primary-colour: hsl(271, 100%, 30%);*/
+        /*--primary-light: hsl(271, 100%, 40%);*/
+        /*--primary-lighter: hsl(271, 100%, 50%);*/
+
+        /*--secondary-colour: hsl(12, 81%, 46%);*/
+        /*--accent-colour: hsl(12, 82%, 32%);*/
+        /*--accent-border: hsl(12, 81%, 25%);*/
+
+        /*--accent-shadow: rgba(0, 0, 0, 0.7) 0 0.5em 1em -0.5em;*/
+
+        /*color: white;*/
+    }
+}
diff --git a/src/main/resources/static/css/homePageStyle.css b/src/main/resources/static/css/homePageStyle.css
index 64f767d40b32ccef413ea7b749e11356ef045aa4..4d69af3c489fc11c8772ed8e68eda94d2d536b75 100644
--- a/src/main/resources/static/css/homePageStyle.css
+++ b/src/main/resources/static/css/homePageStyle.css
@@ -1,172 +1,264 @@
+@media only screen
+and (min-device-width: 1000px) {
+    body {
+        background-color: rgb(41, 41, 41)
+    }
+
+    #homeTitle {
+        grid-area: pageTitle;
+        color: whitesmoke;
+    }
+
+    .submitLand {
+        grid-area: submitButton;
+    }
+
+    .Banner {
+        margin-top: 20px;
+        background-color: darkslategrey;
+        margin-bottom: 20px;
+        /*border: solid 2px whitesmoke;*/
+        /*border colour here at .banner and .bannertrail*/
+        border-right: none;
+    }
+
+    /* .BannerTrail.Complete(100%) .BannerTrail.closeComplete(90-99%) .BannerTrail.nearComplete(70-99%) .BannerTrail.farComplete(50-69%) .BannerTrail.notComplete(0-49%) */
+    .BannerTrail, .BannerTrail.Complete, .BannerTrail.closeComplete, .BannerTrail.nearComplete, .BannerTrail.farComplete, .BannerTrail.notComplete {
+        margin-top: 20px;
+        margin-bottom: 20px;
+        border: solid 2px whitesmoke;
+        text-align: center;
+    }
+
+    .BannerTrail th, .BannerTrail.Complete th, .BannerTrail.closeComplete th, .BannerTrail.nearComplete th, .BannerTrail.farComplete th, .BannerTrail.notComplete th {
+        grid-area: townBannerDetsR
+    }
+
+    .BannerTrail, .BannerTrail.Complete, .BannerTrail.closeComplete, .BannerTrail.nearComplete, .BannerTrail.farComplete, .BannerTrail.notComplete {
+        grid-area: townBannerDets;
+    }
+
+    .BannerTrail {
+        background-color: darkslategrey;
+
+    }
+
+    .BannerTrail.Complete {
+        background-color: gold;
+        border: 2px solid gold;
+        border-left: solid 2px whitesmoke;
+    }
+
+    .BannerTrail.closeComplete {
+        background-color: darkgoldenrod;
+        background-color: darkgoldenrod;
+        border: 2px solid darkgoldenrod;
+        border-left: solid 2px whitesmoke;
+    }
+
+    .BannerTrail.nearComplete {
+        background-color: deepskyblue;
+        background-color: deepskyblue;
+        border: 2px solid deepskyblue;
+        border-left: solid 2px whitesmoke;
+    }
+
+    .BannerTrail.farComplete {
+        background-color: green;
+        background-color: green;
+        border: 2px solid green;
+        border-left: solid 2px whitesmoke;
+    }
+
+    .BannerTrail.notComplete {
+        background-color: red;
+        background-color: red;
+        border: 2px solid red;
+        border-left: solid 2px whitesmoke;
+    }
+
+    /*Below selects banner that has the Complete class to change color*/
+    .Banner:has(+.BannerTrail.Complete) {
+        border: 2px solid gold;
+        border-right: solid 2px whitesmoke;
+    }
+
+    .Banner:has(+.BannerTrail.closeComplete) {
+        border: 2px solid darkgoldenrod;
+        border-right: solid 2px whitesmoke;
+    }
+
+
+    .Banner:has(+.BannerTrail.nearComplete) {
+        border: 2px solid deepskyblue;
+        border-right: solid 2px whitesmoke;
+    }
+
+    .Banner:has(+.BannerTrail.farComplete) {
+        border: 2px solid green;
+        border-right: solid 2px whitesmoke;
+    }
+
+    .Banner:has(+.BannerTrail.notComplete) {
+        border: 2px solid red;
+        border-right: solid 2px whitesmoke;
+    }
 
-body{
-    background-color: rgb(41, 41, 41)
-}
-#homeTitle{
-    grid-area: pageTitle;
-    color: whitesmoke;
-}
-.submitLand{
-    grid-area: submitButton;
-}
-.Banner {
-    margin-top: 20px;
-    background-color: darkslategrey;
-    margin-bottom: 20px;
-    /*border: solid 2px whitesmoke;*/
-    /*border colour here at .banner and .bannertrail*/
-    border-right: none;
-}
-
-/* .BannerTrail.Complete(100%) .BannerTrail.closeComplete(90-99%) .BannerTrail.nearComplete(70-99%) .BannerTrail.farComplete(50-69%) .BannerTrail.notComplete(0-49%) */
-.BannerTrail, .BannerTrail.Complete, .BannerTrail.closeComplete, .BannerTrail.nearComplete, .BannerTrail.farComplete, .BannerTrail.notComplete {
-    margin-top: 20px;
-    margin-bottom: 20px;
-    border: solid 2px whitesmoke;
-    text-align: center;
-}
-
-.BannerTrail th, .BannerTrail.Complete th, .BannerTrail.closeComplete th, .BannerTrail.nearComplete th, .BannerTrail.farComplete th, .BannerTrail.notComplete th{
-    grid-area:townBannerDetsR
-}
-
-.BannerTrail, .BannerTrail.Complete, .BannerTrail.closeComplete, .BannerTrail.nearComplete, .BannerTrail.farComplete, .BannerTrail.notComplete{
-    grid-area:townBannerDets;
-}
-
-.BannerTrail {
-    background-color: darkslategrey;
-
-}
-
-.BannerTrail.Complete {
-    background-color: gold;
-    border: 2px solid gold;
-    border-left: solid 2px whitesmoke;
-}
-.BannerTrail.closeComplete {
-    background-color: darkgoldenrod;
-    background-color: darkgoldenrod;
-    border: 2px solid darkgoldenrod;
-    border-left: solid 2px whitesmoke;
-}
-
-.BannerTrail.nearComplete {
-    background-color: deepskyblue;
-    background-color: deepskyblue;
-    border: 2px solid deepskyblue;
-    border-left: solid 2px whitesmoke;
-}
-
-.BannerTrail.farComplete {
-    background-color: green;
-    background-color: green;
-    border: 2px solid green;
-    border-left: solid 2px whitesmoke;
-}
-
-.BannerTrail.notComplete {
-    background-color: red;
-    background-color: red;
-    border: 2px solid red;
-    border-left: solid 2px whitesmoke;
-}
-
-/*Below selects banner that has the Complete class to change color*/
-.Banner:has(+.BannerTrail.Complete){
-    border: 2px solid gold;
-    border-right: solid 2px whitesmoke;
-}
-
-.Banner:has(+.BannerTrail.closeComplete){
-    border: 2px solid darkgoldenrod;
-    border-right: solid 2px whitesmoke;
-}
-
-
-.Banner:has(+.BannerTrail.nearComplete){
-    border: 2px solid deepskyblue;
-    border-right: solid 2px whitesmoke;
-}
-.Banner:has(+.BannerTrail.farComplete){
-    border: 2px solid green;
-    border-right: solid 2px whitesmoke;
-}
-.Banner:has(+.BannerTrail.notComplete){
-    border: 2px solid red;
-    border-right: solid 2px whitesmoke;
-}
-
-
-.BannerTrail {
-    background-color: darkslategrey;
-
-}
-
 
+    .BannerTrail {
+        background-color: darkslategrey;
+
+    }
+
+
+    .Banner {
+        grid-area: townBanner;
+        color: inherit;
+        text-decoration: none;
+        background-color: hotpink;
+    }
 
 
+    a {
+        background-size: contain;
 
-
-.Banner {
-    grid-area:townBanner;
-    color: inherit;
-    text-decoration: none;
-    background-color: hotpink;
-}
-
-
-a{
-    background-size: contain;
-
-}
+    }
 
 
+    #aboutUsFlavour {
+        grid-area: textFlavour;
+        margin-top: 25px;
+        margin-bottom: 15px;
+        color: whitesmoke;
+    }
 
-#aboutUsFlavour{
-    grid-area: textFlavour;
-    margin-top: 25px;
-    margin-bottom: 15px;
-    color: whitesmoke;
-}
-#trailCount{
-    flex:1;
-
+    #trailCount {
+        flex: 1;
 
 
+    }
 
-}
-#trailProgress{
-    flex:2;
-    align-content: center;
+    #trailProgress {
+        flex: 2;
+        align-content: center;
 
-}
+    }
 
 
-.gridContainer1 {
-    display:grid;
-    grid-template-columns: 10% 10% 60% 5% 5% 10%;
-    grid-template-rows: auto;
-    grid-template-areas:
+    .gridContainer1 {
+        display: grid;
+        grid-template-columns: 10% 10% 60% 5% 5% 10%;
+        grid-template-rows: auto;
+        grid-template-areas:
             ". pageTitle pageTitle pageTitle pageTitle ."
             ". . . submitButton submitButton .";
-}
+    }
 
-.gridContainer2 {
-    display:grid;
-    grid-template-columns: 10% 10% 60% 5% 5% 10%;
-    grid-template-rows: auto;
-    grid-template-areas:
+    .gridContainer2 {
+        display: grid;
+        grid-template-columns: 10% 10% 60% 5% 5% 10%;
+        grid-template-rows: auto;
+        grid-template-areas:
 
             ". townBanner townBanner townBannerDets . .";
-}
+    }
 
-.gridContainer3 {
-    display:grid;
-    grid-template-columns: 10% 10% 60% 5% 5% 10%;
-    grid-template-rows: auto;
-    grid-template-areas:
+    .gridContainer3 {
+        display: grid;
+        grid-template-columns: 10% 10% 60% 5% 5% 10%;
+        grid-template-rows: auto;
+        grid-template-areas:
 
             " . . textFlavour . . .";
+    }
 }
 
+@media only screen
+and (min-device-width: 320px)
+and (max-device-width: 640px) {
+    .small-text {
+        font-size: 0.8em;
+    }
+
+
+    .towns-wrapper {
+        width: 100%;
+    }
+    .gridContainer2 {
+        height: 10svh;
+        position: relative;
+        display: flex;
+        justify-content: flex-start;
+        text-align: left;
+        flex: 1 1;
+        margin-block: 1svh;
+    }
+    .town-name {
+        position: absolute;
+        z-index: 5;
+        padding: 0.2em;
+        margin: 0.5em;
+        border-radius: 35%;
+        background: rgba(31, 31, 31, 0.6);
+
+    }
+    .img-container {
+        float: left;
+        z-index: 1;
+        height: 100%;
+        width: 60vw;
+    }
+    .town-img {
+        width: 100%;
+        height: 100%;
+        border-radius: 20% 0 0 20%;
+        border: #36454F solid;
+        border-width: 6px 3px 6px 6px;
+    }
+    .BannerTrail {
+        width: 25vw;
+        height: 10svh;
+        border-radius: 0 20% 20% 0;
+        border: #36454F solid;
+        border-width: 6px 6px 6px 3px;
+        position: relative;
+        overflow: hidden;
+        & h4 {
+            text-align: center;
+        }
+    }
+    .trail-info {
+        position: relative;
+        display: flex;
+        flex-direction: column;
+        justify-content: space-around;
+        align-items: center;
+        width: 25vw;
+        height: 10svh;
+    }
+
+    /*Below selects banner that has the Complete class to change color*/
+    .BannerFill {
+        position: absolute;
+        background: var(--trail-colour, transparent);
+        width: 10%;
+        height: 10svh;
+        opacity: 0.9;
+        z-index: 0;
+    }
+    .Complete {
+        --trail-colour: gold;
+    }
+    .closeComplete {
+        --trail-colour: darkgoldenrod;
+    }
+    .nearComplete {
+        --trail-colour: deepskyblue;
+    }
+    .farComplete {
+        --trail-colour: green;
+    }
+    .notComplete {
+        --trail-colour: red;
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/static/css/login.css b/src/main/resources/static/css/login.css
index 023566c253e9354e789e85744cd1e4989d523845..429650407d571c6b75283b6bb67db4962951cf84 100644
--- a/src/main/resources/static/css/login.css
+++ b/src/main/resources/static/css/login.css
@@ -1,8 +1,8 @@
 @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap');
-
+@import url(colours.css);
 :root {
     --container-colour: #2a2a2a;
-    --details-colour: var(--primary-light);
+    --details-colour: var(--prim-shade-1);
     --details-light: #512da8;
 
     --font-buttons: 14px;
@@ -21,19 +21,6 @@
     color: white;
 }
 
-body{
-    align-items: center;
-    height: 100svh;
-}
-
-main {
-    height: 90%;
-    width: 90%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-
 @keyframes move{
     0%, 49.99%{
         opacity: 0;
@@ -48,9 +35,6 @@ main {
 @media only screen
 and (min-device-width: 650px) {
     .container{
-        background-color: var(--container-colour);
-        border-radius: 30px;
-        box-shadow: 0 5px 15px rgba(0, 0, 0, 0.35);
         position: relative;
         overflow: hidden;
         min-width: 768px;
@@ -215,53 +199,64 @@ and (min-device-width: 650px) {
     }
 
 }
+
 @media only screen
 and (max-device-width: 640px) {
+    main {
+        padding: 0;
+        height: 70svh;
+    }
     .container {
         position: relative;
-
-        background-color: var(--container-colour);
-        border-radius: 30px;
-        box-shadow: 0 5px 15px rgba(0, 0, 0, 0.35);
-
         overflow: hidden;
-
         width: 100%;
         height: 100%;
-
-        display: flex;
-        flex-direction: column;
-        justify-content: space-evenly;
     }
     .form-container {
-        height: 100%;
+        height: 50%;
         transition: all 0.6s ease-in-out;
-        display: flex;
-        flex-direction: column;
-        align-items: center;
-        justify-content: center;
+    }
+    .form-title {
+        padding-top: 3svh;
+        font-size: 3em;
     }
     .form-container form {
         display: flex;
-
+        width: 100%;
+        height: 100%;
+        padding-block: 1svh;
         flex-direction: column;
-        align-items: center;
-        font-size: 3em;
-        margin-inline: 5%;
+        font-size: 1.5em;
+        & label {
+            width: 100%;
+        }
     }
+    .form-container label {
+        margin-block: 0.5svh;
+    }
+
     .form-container input {
-        flex: 1 1;
+        width: 70%;
+        height: 90%;
+        padding: 0.5em;
         font-size: 1em;
         color: black;
-        margin-block: 5%;
-        padding: 2%;
         border-radius: 30px;
+        border: #36454F 5px solid;
+        box-shadow: rgba(0, 0, 0, 0.25) 0 1svh 1svh;
+        /*margin-top: 1svh;*/
     }
 
     .form-container button {
-        flex: 1 1;
+        width: 40%;
         font-size: 1em;
+        margin: auto;
+    }
+    .recovery-text {
+        margin-top: 1svh;
+        font-size: 0.6em;
     }
+
     .toggle-container {
         position: absolute;
         top: 0;
@@ -269,16 +264,16 @@ and (max-device-width: 640px) {
         height: 50%;
         transition: all 0.6s ease-in-out;
         overflow: hidden;
-        border-radius:  0 0 150px 150px;
-        z-index: 1000;
-
+        border-radius: 150px 150px 0 0;
+        transform: translateY(100%);
     }
     .container.active .toggle-container{
-        transform: translateY(100%); /*BG THING*/
-        border-radius: 150px 150px 0 0;
+        transform: translateY(0); /*BG THING*/
+
+        border-radius:  0 0 150px 150px;
     }
     .toggle {
-        position: absolute;
+        position: relative;
         width: 100%;
         height: 200%;
         display: flex;
@@ -289,46 +284,48 @@ and (max-device-width: 640px) {
         /*background-color: red;*/
     }
     .toggle-panel {
-        flex: 1 1;
+        height: 100%;
         width: 100%;
+        position: absolute;
     }
     .container .toggle-right {
-        transform: translateY(0);
         opacity: 1;
+        z-index: 5;
+        transform: translateY(-25%);
     }
     .container .toggle-left {
         transform: translateY(-100%);
         opacity: 0;
     }
     .container.active .toggle-right{
-        transform: translateY(-100%);
+        transform: translateY(50%);
         opacity: 0;
     }
     .container.active .toggle-left{
-        transform: translateY(-100%);
+        transform: translateY(-25%);
         opacity: 1;
     }
 
     .container .sign-up {
         opacity: 0;
         z-index: -1;
-        transform: translateY(100%);
+        transform: translateY(0%);
     }
     .container .sign-in {
+        transform: translateY(-100%);
         opacity: 1;
         z-index: 5;
     }
 
     .container.active .sign-in{
-        transform: translateY(-100%);
+        transform: translateY(0);
         opacity: 0;
         z-index: -1;
     }
     .container.active .sign-up{
-        animation: move 0.6s;
         opacity: 1;
         z-index: 5;
-        transform: translateY(0);
+        transform: translateY(100%);
     }
 
 
@@ -347,7 +344,7 @@ and (max-device-width: 640px) {
         line-height: 1.5em;
     }
     .container button{
-        background-color: var(--details-colour)/*#512da8*/;
+        background-color: var(--details-colour);
         color: #fff;
         font-size: xxx-large;
         padding: 40px 40px;
diff --git a/src/main/resources/static/css/mobile-style.css b/src/main/resources/static/css/mobile-style.css
new file mode 100644
index 0000000000000000000000000000000000000000..cba00c1ca92b75e0785f80614f09710c14ce3704
--- /dev/null
+++ b/src/main/resources/static/css/mobile-style.css
@@ -0,0 +1,197 @@
+@import url(colours.css);
+
+/*PHONES - PORTRAIT*/
+@media only screen
+and (min-device-width: 320px)
+and (max-device-width: 640px) {
+    :root{
+        --font-headers: 20px;
+        --font-body: 20px;
+    }
+    *{
+        margin: 0;
+        padding: 0;
+        box-sizing: border-box;
+    }
+    body {
+        background: linear-gradient(to bottom right,
+        var(--primary-darker),
+        var(--primary-dark),
+        var(--primary-darker));
+
+        display: flex;
+        flex-direction: column;
+        align-content: center;
+
+        width: 100vw;
+        min-height: 100svh;
+        font-size: 2em;
+        row-gap: 2svh;
+    }
+
+    header {
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+        margin-inline: auto;
+        width: 95vw;
+        height: 6svh;
+        margin-top: 1svh;
+
+        .head-navbar {
+            display: flex;
+            width: 100%;
+            height: 100%;
+            background-color: #1f1f1f;
+            border-radius: 20px;
+            box-shadow: rgba(0, 0, 0, 0.4) 0 1svh 1svh;
+            overflow: hidden;
+        }
+
+        .nav-ul {
+            list-style: none;
+            display: flex;
+            justify-content: space-evenly;
+            flex: 1 1;
+        }
+
+        .nav-li {
+            display: flex;
+            flex: 1 1;
+        }
+
+        .nav-links {
+            display: grid;
+            align-content: center;
+            flex: 1 1;
+            text-align: center;
+            transition: 0.3s ease-in-out 1ms;
+            font-weight: bolder;
+            text-decoration: none;
+            color: white;
+        }
+
+        .nav-links:hover {
+            background-color: #36454F;
+        }
+
+        .nav-logo-container {
+            display: flex;
+            width: 20vw;
+            height: 100%;
+            z-index: 5;
+        }
+
+        .nav-logo {
+            height: 100%;
+            width: 100%;
+            border-radius: 45% 15% 15% 45%;
+            border: #1f1f1f 5px solid;
+            box-shadow: rgba(0, 0, 0, 0.4) 0 1svh 1svh;
+            transition: 0.3s ease-in-out 1ms;
+        }
+
+        .nav-logo:hover {
+            filter: grayscale(0.7);
+        }
+
+        .li-middle {
+            border-style: solid;
+            border-width: 2px;
+            border-image: linear-gradient(to bottom, transparent 10%, #36454F, transparent 90%) 0 50;
+        }
+
+        .li-last {
+            border-style: solid;
+            border-width: 2px;
+            border-image: linear-gradient(to bottom, transparent 10%, #36454F, transparent 90%) 0 0 0 50;
+        }
+
+        .li-first {
+            border-style: solid;
+            border-width: 2px;
+            border-image: linear-gradient(to bottom, transparent 10%, #36454F, transparent 90%) 0 50 0 0;
+        }
+    }
+
+    main {
+        background-color: #1f1f1f;
+        border-radius: 20px;
+        overflow: hidden;
+        box-shadow: rgba(0, 0, 0, 0.4) 0 1svh 2svh;
+        padding: 3vw;
+        margin-inline: 5vw;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        text-align: center;
+        min-height: 80svh;
+        height: max-content;
+        /*overflow-y: scroll;*/
+
+    }
+    .center-flex-columns {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+    }
+
+    footer {
+        display: flex;
+        font-size: 0.5em;
+        justify-content: space-evenly;
+        margin-inline: 5%;
+        padding-top: 2%;
+        border-width: 5px;
+        border-style: solid;
+        border-image: linear-gradient(to left, transparent 5%, #36454F, transparent 95%) 50 0 0 0;
+
+
+        .footer-div {
+            width: 30%;
+        }
+
+        .centerFooter {
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            justify-content: flex-end;
+        }
+
+        .rightFooter {
+            text-align: right;
+        }
+
+        .icon {
+            border-radius: 50%;
+            width: 4vw;
+            height: auto;
+            aspect-ratio: 1;
+        }
+    }
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*PHONES - LANDSCAPE*/
+/* TODO -> UNIMPLEMENTED LANDSCAPE STYLE FOR PHONES*/
+@media only screen
+and (min-device-width: 640px)
+and (max-device-width: 1000px) {
+
+
+}
\ No newline at end of file
diff --git a/src/main/resources/templates/fragments/banners.html b/src/main/resources/templates/fragments/banners.html
new file mode 100644
index 0000000000000000000000000000000000000000..57bfda57bc38a010bb528cad9e2c1d3c0560a4d3
--- /dev/null
+++ b/src/main/resources/templates/fragments/banners.html
@@ -0,0 +1,43 @@
+<header th:fragment="header">
+  <a class="nav-logo-container"><img th:src="@{/images/icons/VZTA.png}" alt="Logo" class="nav-logo"></a>
+  <nav class="head-navbar">
+    <ul class="nav-ul">
+      <li class="nav-li li-first"><a href="/mobile-home" class="nav-links">Home</a></li>
+      <li class="nav-li li-middle"><a class="nav-links">Profile</a></li>
+      <li class="nav-li li-middle"><a class="nav-links">FAQ</a></li>
+      <li class="nav-li li-last" th:if="${#authentication.principal}==anonymousUser">
+        <a href="/login" class="nav-links">Log In</a>
+      </li>
+      <li class="nav-li li-last" th:if="${#authentication.principal}!=anonymousUser">
+        <a href="/logout" class="nav-links">Log Out</a>
+      </li>
+    </ul>
+  </nav>
+</header>
+
+<footer th:fragment="footer">
+  <!-- By Rhys Nute -->
+  <div class="footer-div leftFooter">
+    <h3>VZTA</h3>
+    Near Me Now LTD
+    <br>Britania House
+    <br>Caerphilly Business Park
+    <br>Caerphilly
+    <br>CF83 3GG
+  </div>
+  <div class="footer-div centerFooter">
+    <div class="footerText">
+      <h3>Follow Us</h3>
+      <a href="https://www.facebook.com/VZTAsmarttowns/" class="icon"><img src="/images/icons/Facebook.png" height="25" width="25" alt="Facebook Logo" class="icon"/></a>
+      <a href="https://www.twitter.com/VZTAsmarttowns/" class="icon"><img src="/images/icons/Twitter.jpg" height="25" width="25" alt="X (formally Twitter) Logo" class="icon"/></a>
+      <a href="https://www.instagram.com/vztasmarttowns/" class="icon"><img src="/images/icons/Instagram.jpg" height="25" width="25" alt="Instagram Logo" class="icon"/></a>
+      <a href="https://www.linkin.com/company/vztasmarttowns/" class="icon"><img src="/images/icons/Linkedin.png" height="25" width="25" alt="Linkedin Logo" class="icon"/></a><br>
+    </div>
+  </div>
+  <div class="footer-div rightFooter">
+    <h3>Connect with us</h3>
+    <p>Be the first to know about updates by joining out Community page</p>
+    (C) VZTA 2022<br>
+    Policy Terms and Conditions
+  </div>
+</footer>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/home/mobile-homepage.html b/src/main/resources/templates/towns/home/mobile-homepage.html
new file mode 100644
index 0000000000000000000000000000000000000000..d413c4531829de4abc2f538ab89c0e5d2f050e35
--- /dev/null
+++ b/src/main/resources/templates/towns/home/mobile-homepage.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>VZTA - Smart Towns Trails</title>
+    <link rel="stylesheet" th:href="@{/css/mobile-style.css}">
+    <link rel="stylesheet" th:href="@{/css/homePageStyle.css}">
+</head>
+<body>
+<header th:replace="~{/fragments/banners::header}"></header>
+
+<main>
+    <div class="title-container">
+        <h1 class="title">Welcome to VZTA Smart Towns!</h1>
+        <a class="submitLand" href="/landmarkSubmission">  <button> Submit Landmark!</button></a>
+        <p class="small-text">Choose your town and start tracking your trails!</p>
+    </div>
+
+    <article class="towns-wrapper">
+        <div th:each="town:${towns}" class="gridContainer2">
+            <h2 class="town-name" th:text="${town.getName()}"></h2>
+            <a href="/allTrails" class="img-container">
+                <img class="town-img" th:src="${town.getImageTown()}" th:alt="${town.getName()}">
+            </a>
+            <div class="BannerTrail">
+                <div class="BannerFill" th:style="'width: '+ ${town.getTrailProgress()} + '%;'" th:classappend="${town.setTrailProgressClass()}" ></div>
+                <div class="trail-info">
+                    <h4 class="trailCount" th:text="'Trails: '+ ${town.getTrailNumber()}"></h4>
+                    <h4 class="trailProgress" th:text="${town.getTrailProgress()}+'%'"></h4>
+                </div>
+            </div>
+        </div>
+    </article>
+
+
+    <div class="gridContainer3">
+
+
+        <div id="aboutUsFlavour"> This is placeholder text about VZTA, this application,
+            the trails and towns and resultant awards written in an excitable manner!!</div>
+
+    </div>
+
+</main>
+<footer th:replace="~{/fragments/banners::footer}"></footer>
+
+</body>
+</html>
diff --git a/src/main/resources/templates/users/login.html b/src/main/resources/templates/users/login.html
index 51c6222e2f98b73a01116a4123fb5050a7f43eeb..d134eff130f4fc3867f77f0cd33457e7d29a8992 100644
--- a/src/main/resources/templates/users/login.html
+++ b/src/main/resources/templates/users/login.html
@@ -3,23 +3,23 @@
 <head>
     <meta charset="UTF-8">
     <title>User Log In</title>
-    <link rel="stylesheet" th:href="@{/css/style.css}">
+    <link rel="stylesheet" th:href="@{/css/colours.css.css}">
+    <link rel="stylesheet" th:href="@{/css/mobile-style.css}">
     <link rel="stylesheet" th:href="@{/css/login.css}">
     <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
 
 </head>
 <body>
 
-<header>
-</header>
+<header th:replace="~{/fragments/banners::header}"></header>
 
 <main>
     <!--CODE MODIFIED FROM: https://github.com/AsmrProg-YT/Modern-Login -->
-    <div class="container sign-in">
+
         <div class="container" id="container">
             <div class="form-container sign-up">
+                <h1 class="form-title">Create Account</h1>
                 <form th:object="${user}" action="#" th:action="@{/login/register}" th:method="POST" onsubmit="return registerFormValidation()">
-                    <h1>Create Account</h1>
                     <label>
                         <input class="input" th:field="*{name}" id="register-username" type="text" placeholder="Name">
                     </label>
@@ -33,8 +33,8 @@
                 </form>
             </div>
             <div class="form-container sign-in">
+                <h1 class="form-title">Sign In</h1>
                 <form  name="f" th:action="@{/login}" th:method="POST">
-                    <h1>Sign In</h1>
                     <div th:if="${param.error}" class="alert alert-error">Invalid Username or Password</div>
                     <div th:if="${param.logout}" class="alert alert-success">Successfully Logged out</div>
                     <label>
@@ -43,7 +43,7 @@
                     <label>
                         <input class="input" id="password" type="password" name="password" placeholder="Password">
                     </label>
-                    <a href="#" class="text">Forget Your Password?</a>
+                    <a href="#" class="recovery-text">Forget Your Password?</a>
                     <button type="submit">Sign In</button>
                 </form>
             </div>
@@ -62,10 +62,10 @@
                 </div>
             </div>
         </div>
-    </div>
-</main>
 
+</main>
 
+<footer th:replace="~{/fragments/banners::footer}"></footer>
 
 <script type="text/javascript" th:src="@{scripts/login.js}"></script>
 
diff --git a/src/main/resources/templates/welcome-page.html b/src/main/resources/templates/welcome-page.html
new file mode 100644
index 0000000000000000000000000000000000000000..ed84a8bb9a708c8d6ed940d42dcdfa338ded18b0
--- /dev/null
+++ b/src/main/resources/templates/welcome-page.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+    <link rel="stylesheet" th:href="@{/css/colours.css}">
+    <link rel="stylesheet" th:href="@{/css/mobile-style.css}">
+</head>
+
+<body>
+    <header th:replace="~{/fragments/banners :: header}"></header>
+
+    <main>
+        <h1>Welcome to Smart Towns by VZTA!</h1>
+        <p>Click here to start exploring!</p>
+        <button type="submit">Explore!</button>
+    </main>
+
+    <footer th:replace="~{/fragments/banners :: footer}"></footer>
+</body>
+</html>
\ No newline at end of file