diff --git a/AUTHORS.md b/AUTHORS.md
index 9d4fea95a9b0c19100af57b4d85c299a5f4d640b..40aa9cae61066a46e1b53d916859acfc7560cfae 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -6,4 +6,4 @@
 
 -   Daniela Jaramillo <jaramillo@cl.uni-heidelberg.de>
 -   Leander Karp <karp@cl.uni-heidelberg.de>
-- Elias Hanke <hanke@cl.uni-heidelberg.de>
+-   Elias Hanke <hanke@cl.uni-heidelberg.de>
diff --git a/JS-README.md b/JS-README.md
index 743caf1ce330d1737551a476418236d2ec5feabf..6d02a35f364eba004b667a6c5cca70b3cd139529 100644
--- a/JS-README.md
+++ b/JS-README.md
@@ -10,41 +10,37 @@ This is mostly Mithril.js.
 This is where the frontend components are located. The components are divided into two categories: `pages` and `pieces`. **Mithril.js** uses `pages` to render the main content of the website, while `pieces` are used to render smaller components that are used in multiple places. `pieces` then are embedded into `pages`.
 
 This could help you around
-+ [Mithril.js documentation](https://mithril.js.org/)
-+ [Convert plain HTML to Mithril](https://arthurclemens.github.io/mithril-template-converter/index.html)
-
 
+-   [Mithril.js documentation](https://mithril.js.org/)
+-   [Convert plain HTML to Mithril](https://arthurclemens.github.io/mithril-template-converter/index.html)
 
 ### `/portal/static/js/components/pages`
 
-
-
 Generally, everything having its own tab in the Navbar is a `page`. They are the first components that are rendered when the website is loaded.
 
-+ `Base.mjs`
-+ `Fachschaftssitzung.mjs`
-+ `FsServices.mjs`
-+ `Login.mjs`
-+ `Me.mjs`
-+ `Start.mjs`
-+ `UniServices.mjs`
-+ `Unlock.mjs`
+-   `Base.mjs`
+-   `Fachschaftssitzung.mjs`
+-   `FsServices.mjs`
+-   `Login.mjs`
+-   `Me.mjs`
+-   `Start.mjs`
+-   `UniServices.mjs`
+-   `Unlock.mjs`
 
 ### `/portal/static/js/components/pieces`
 
 These are the smaller components that are embedded in multiple places.
 
-
-+ `AccountRequired.mjs`
-+ `Agenda.mjs`
-+ `BoxedButton.mjs`
-+ `ButtonAndTextLink.mjs`
-+ `Nav.mjs`
-+ `NavPageLink.mjs`
-+ `PasswordinVault.mjs`
-+ `ServiceLink.mjs`
-+ `Toast.mjs`
-+ `UnlockRequired`
+-   `AccountRequired.mjs`
+-   `Agenda.mjs`
+-   `BoxedButton.mjs`
+-   `ButtonAndTextLink.mjs`
+-   `Nav.mjs`
+-   `NavPageLink.mjs`
+-   `PasswordinVault.mjs`
+-   `ServiceLink.mjs`
+-   `Toast.mjs`
+-   `UnlockRequired`
 
 ## `/portal/static/js/model`
 
@@ -70,4 +66,3 @@ Also, there's some yapping about the Same Origin Policy, might be interesting, b
 ## `/portal/static/js/portal.mjs`
 
 This is the main file that initializes the Mithril.js app and sets up the routing.
-
diff --git a/README.md b/README.md
index 9dd644dc1d3b309f83482f8d2d0d43fa2302c1fb..6717fb317f49e2e8316f240c8f180409ae16833f 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,6 @@
 
 # Portal: this service can fit so many services in it!
 
-
 Aren't you tired of having to remember shortlinks or URLs for all the services offered by the Fachschaft? Does it embarrass you to always ask about the agenda of a Fachschaftssitzung, because you never worked with a Taiga implementation? How was the shortlink to Sturacloud again? Are you overwhelmed by 19 (and counting, **fast**) different services offered by the Fachschaft, the Institute and the University?
 
 **Well, that is a thing of the past!** That's why we created Portal, a service-aggregating meta-service for over-zealous students like us, the FS Coli.
@@ -15,16 +14,15 @@ If you are a rather visual learner, we got you covered:
 
 ![This will make the purpose of portal clear once and for all.](info-4-devs/metaservice-badboy.png)
 
-
 ## What can you do with Portal?
 
 Most importantly, you can access all the services that the Fachschaft offers in one place. Also, Portal offers
 
-+ a neat LDAP integration
-+ a Taiga (fsco.li/todo) integration
-+ even a f*cking GitLab integration (we are so proud of this one)
-+ an user-friendly interface
-+ a responsive design (mostly)
+-   a neat LDAP integration
+-   a Taiga (fsco.li/todo) integration
+-   even a f\*cking GitLab integration (we are so proud of this one)
+-   an user-friendly interface
+-   a responsive design (mostly)
 
 # If you are a contributor...
 
@@ -82,15 +80,18 @@ db.session.add(l)
 db.session.commit()
 exit()
 ```
+
 The app should run without problems now.
 
 Also, if you are using an Apple device, please deactivate the "AirPlay Receiver" as it might cause problems with the LDAP connection.
 
 ---
+
 #### Important:
 
 Alembic must always be up to date in order to update the database schema.
 Please run `alembic upgrade head` after pulling changes from the repository.
+
 ---
 
 ## How to move around in this repo
@@ -120,7 +121,6 @@ Here you can find the CSS files for the frontend. The main CSS file is `main.css
 Here you can find the documentation for the API in its respective versions.
 API specifications (`openapi-spec.yaml`) are written in OpenAPI 3.0.0 and are located in the `/api/{version}` folder.
 
-
 #### `/portal/static/img`: Frag nicht, was für Bilder. Einfach Bilder. I won't translate this.
 
 What did you expect?
@@ -131,14 +131,13 @@ Lol, that should actually ![have its own README](info-4-devs/JS-README.md).
 
 It contains all the JavaScript files that are responsible for the frontend interactions.
 
-
 ### `/portal/templates`
 
 These are the HTML files that Flask renders. They are written in Jinja2, which is a template engine for Python.
 
 ### `.py`-files
 
-+ `__init__.py`: Fortunately, explaining this was not a Prog2 exam question
-+ `db_config.py`: [TODO] Have fun, Jakob. Database configuration (arcane magic).
-+ `main.py`: The Flask server is in here
-+ `problem_details.py`: RFC 7807-compliant problem details responses for the API.
+-   `__init__.py`: Fortunately, explaining this was not a Prog2 exam question
+-   `db_config.py`: [TODO] Have fun, Jakob. Database configuration (arcane magic).
+-   `main.py`: The Flask server is in here
+-   `problem_details.py`: RFC 7807-compliant problem details responses for the API.
diff --git a/portal/static/css/main.css b/portal/static/css/main.css
index 4022a1352fd34a446d90491c14131cbd7e6b6489..8f4a54cdf933a45ac207767182c8c233aa9b0c77 100644
--- a/portal/static/css/main.css
+++ b/portal/static/css/main.css
@@ -4,6 +4,11 @@
 
 :root {
     --shadow-width: 2px;
+    --box-bg: radial-gradient(
+        circle,
+        rgba(255, 255, 255, 1) 0%,
+        rgba(255, 255, 255, 0.85) 100%
+    );
 }
 
 .blue {
@@ -21,6 +26,21 @@
     --primary-light: #2aac6d;
 }
 
+:root {
+    --box-bg: radial-gradient(
+        circle,
+        rgb(43, 43, 43) 0%,
+        rgba(43, 43, 43, 0.85) 100%
+    );
+}
+
+.blue {
+    --primary: white;
+}
+
+@media (prefers-color-scheme: dark) {
+}
+
 /* ---------------------- Scaffolding ---------------------- */
 
 body {
@@ -90,11 +110,7 @@ a {
 .box {
     border-radius: 1em;
     box-shadow: var(--shadow-width) var(--shadow-width) 5px rgba(0, 0, 0, 0.5);
-    background: radial-gradient(
-        circle,
-        rgba(255, 255, 255, 1) 0%,
-        rgba(255, 255, 255, 0.85) 100%
-    );
+    background: var(--box-bg);
 }
 
 .button {
diff --git a/portal/static/js/components/pieces/AccountRequired.mjs b/portal/static/js/components/pieces/AccountRequired.mjs
index 35fd2eaa6587454eb6f7150a6967580d6718b6d3..9f0a566917d73e30ef2d3b827fac0dfc8dbc989f 100644
--- a/portal/static/js/components/pieces/AccountRequired.mjs
+++ b/portal/static/js/components/pieces/AccountRequired.mjs
@@ -4,7 +4,7 @@ export const AccountRequired = {
             "CL-Account": "fa-regular fa-user",
             "Eigener Account": "fa-solid fa-user-plus",
             "Geteilter Account": "fa-solid fa-user-group",
-            "Uni-ID": "fa-solid fa-id-card"
+            "Uni-ID": "fa-solid fa-id-card",
         }
 
         return m("span.detail", [