diff --git a/public/assets/icons/close-button-white.svg b/public/assets/icons/close-button-white.svg
new file mode 100644
index 0000000..619713c
--- /dev/null
+++ b/public/assets/icons/close-button-white.svg
@@ -0,0 +1 @@
+<svg width="49" xmlns="http://www.w3.org/2000/svg" height="49" id="screenshot-2eeb1bb6-24d8-8068-8004-52a064185289" viewBox="0 0 49 49" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1"><g id="shape-2eeb1bb6-24d8-8068-8004-52a064185289" height="800px" width="800px" rx="0" ry="0" style="fill: rgb(255, 255, 255);"><g id="shape-2eeb1bb6-24d8-8068-8004-52a06419c052"><g class="fills" id="fills-2eeb1bb6-24d8-8068-8004-52a06419c052"><path d="M24.500,4.594C13.524,4.594,4.594,13.524,4.594,24.500C4.594,35.476,13.524,44.406,24.500,44.406C35.476,44.406,44.406,35.476,44.406,24.500C44.406,13.524,35.476,4.594,24.500,4.594ZZM31.707,29.543C32.111,29.926,32.275,30.498,32.135,31.036C31.996,31.575,31.575,31.996,31.036,32.135C30.498,32.275,29.926,32.111,29.543,31.707L24.500,26.666L19.457,31.707C18.855,32.279,17.907,32.267,17.320,31.680C16.733,31.093,16.721,30.145,17.293,29.543L22.334,24.500L17.293,19.457C16.721,18.855,16.733,17.907,17.320,17.320C17.907,16.733,18.855,16.721,19.457,17.293L24.500,22.334L29.543,17.293C30.145,16.721,31.093,16.733,31.680,17.320C32.267,17.907,32.279,18.855,31.707,19.457L26.666,24.500Z" style="fill: none;"/></g><g id="strokes-2eeb1bb6-24d8-8068-8004-52a06419c052" class="strokes"><g class="outer-stroke-shape"><defs><mask id="outer-stroke-render-2-2eeb1bb6-24d8-8068-8004-52a06419c052-0" x="-2.6488906871192848" y="-2.6488906871192848" width="54.29778137423857" height="54.29778137423857" maskUnits="userSpaceOnUse"><use href="#stroke-shape-render-2-2eeb1bb6-24d8-8068-8004-52a06419c052-0" style="fill: none; stroke: white; stroke-width: 6;"/><use href="#stroke-shape-render-2-2eeb1bb6-24d8-8068-8004-52a06419c052-0" style="fill: black; stroke: none;"/></mask><path d="M24.500,4.594C13.524,4.594,4.594,13.524,4.594,24.500C4.594,35.476,13.524,44.406,24.500,44.406C35.476,44.406,44.406,35.476,44.406,24.500C44.406,13.524,35.476,4.594,24.500,4.594ZZM31.707,29.543C32.111,29.926,32.275,30.498,32.135,31.036C31.996,31.575,31.575,31.996,31.036,32.135C30.498,32.275,29.926,32.111,29.543,31.707L24.500,26.666L19.457,31.707C18.855,32.279,17.907,32.267,17.320,31.680C16.733,31.093,16.721,30.145,17.293,29.543L22.334,24.500L17.293,19.457C16.721,18.855,16.733,17.907,17.320,17.320C17.907,16.733,18.855,16.721,19.457,17.293L24.500,22.334L29.543,17.293C30.145,16.721,31.093,16.733,31.680,17.320C32.267,17.907,32.279,18.855,31.707,19.457L26.666,24.500Z" id="stroke-shape-render-2-2eeb1bb6-24d8-8068-8004-52a06419c052-0"/></defs><use href="#stroke-shape-render-2-2eeb1bb6-24d8-8068-8004-52a06419c052-0" mask="url(#outer-stroke-render-2-2eeb1bb6-24d8-8068-8004-52a06419c052-0)" style="fill: none; stroke-width: 6; stroke: rgb(255, 255, 255); stroke-opacity: 1;"/><use href="#stroke-shape-render-2-2eeb1bb6-24d8-8068-8004-52a06419c052-0" style="fill: none; stroke-width: 3; stroke: none; stroke-opacity: 1;"/></g></g></g></g></svg>
\ No newline at end of file
diff --git a/src/components/screens/Characters.vue b/src/components/screens/Characters.vue
index 0a218d2..a9a287a 100644
--- a/src/components/screens/Characters.vue
+++ b/src/components/screens/Characters.vue
@@ -19,17 +19,21 @@
 </div>
 
 <Modal :isModalOpen="isModalOpen">
-  <form method="post" @submit.prevent="create">
-    <h1>Create your character</h1>
-    <div>
-      <label for="name">Name</label>
-      <input v-model="name" name="name" id="name">
-    </div>
-    <div>
-      <button @click="create">Create</button>
-    </div>
-  </form>
-  <button @click="isModalOpen = false">Cancel</button>
+  <template #modal-header>
+    <h2 class="modal-title">Create your character</h2>
+  </template>
+  <template #modal-body>
+    <form method="post" @submit.prevent="create" class="modal-form">
+      <div class="form-fields">
+        <label for="name">Name</label>
+        <input v-model="name" name="name" id="name">
+      </div>
+      <div class="submit">
+        <button @click="create">Create</button>
+      </div>
+    </form>
+    <button @click="isModalOpen = false">Cancel</button>
+  </template>
 </Modal>
 </template>
 
@@ -108,8 +112,7 @@ function create() {
           width: 100%;
           height: 40px;
           background-color: rgba($purple, 0.6);
-          border-top-left-radius: 20px;
-          border-top-right-radius: 20px;
+          border-radius: 20px 20px 0 0;
         }
 
         // hide the radio buttons
@@ -137,10 +140,17 @@ function create() {
       display: flex;
       gap: 30px;
       button {
-        padding: 5px 12px;
+        padding: 10px 16px;
+        &:hover {
+          cursor: pointer;
+        }
       }
     }
   }
+
+  .modal-title {
+    margin: 0;
+  }
 }
 
 
diff --git a/src/components/utilities/Modal.vue b/src/components/utilities/Modal.vue
index 9151984..2aa21f9 100644
--- a/src/components/utilities/Modal.vue
+++ b/src/components/utilities/Modal.vue
@@ -2,11 +2,11 @@
   <Teleport to="body" v-if="isModalOpen">
   <div class="modal-container" :style="{ top: y + 'px', left: x + 'px' }">
     <div class="modal-header" @mousedown="startDrag">
-      <h3>Modal</h3>
-      <button @click="close">X</button>
+      <slot name="modal-header"/>
+      <button @click="close"><img src="/assets/icons/close-button-white.svg"></button>
     </div>
     <div class="modal-body">
-      <slot />
+      <slot name="modal-body"/>
     </div>
   </div>
   </Teleport>
@@ -79,21 +79,76 @@ onUnmounted(() => {
   left: 0;
   width: 30%;
   height: 40%;
-  border-radius: 30px;
-  background-color: #cfcfcf;
+  border-radius: 20px;
+  background-color: rgba($white, 0.8);
   z-index: 999;
 
   // make draggable
   .modal-header {
     cursor: move;
-    background-color: #333;
-    color: white;
-    padding: 3px 15px;
-    border-radius: 5px 5px 0 0;
+    background-color: rgba($purple, 0.6);
+    color: $white;
+    padding: 0 20px;
+    border-radius: 20px 20px 0 0;
+    height: 3.75rem;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+    .modal-title {
+      margin: 0;
+    }
+
+    button {
+      width: 40px;
+      height: 40px;
+      margin: auto 0;
+      padding: 0;
+      background-color: transparent;
+      border: none;
+      position: relative;
+
+      img {
+        width: inherit;
+        height: inherit;
+      }
+
+      &:hover {
+        cursor: pointer;
+
+        &::after {
+          content: '';
+          position: absolute;
+          width: 38px;
+          height: 38px;
+          left: 1px;
+          top: 1px;
+          border-radius: 100%;
+          background-color: $lilac;
+          z-index: -1;
+        }
+      }
+    }
   }
 
   .modal-body {
     padding: 15px;
+    button {
+      padding: 10px 16px;
+      background-color: rgba($purple, 0.75);
+      border: 2px solid rgba($white, 0.5);
+      border-radius: 5px;
+      color: $white;
+    }
+    .modal-form {
+      .form-fields {
+        display: flex;
+        flex-direction: column;
+        input {
+          max-width: 250px;
+        }
+      }
+    }
   }
 }
 </style>
\ No newline at end of file