diff --git a/Development.md b/Development.md
index be1580fbe0e4c44832508e77868cb366ca1d949c..a5a0593428dcc0e556d58a457c5740923ae57f8f 100644
--- a/Development.md
+++ b/Development.md
@@ -105,7 +105,7 @@ DATABASES = {
 Sämtliche Hub-Komponenten müssen eigene Variablen definieren. Alle Variablen sind in [`_variables-hub.scss`](./src/plainui/styles/_variables-hub.scss) enthalten.
 Gegebenenfalls müssen neue Variablen hinzugefügt werden. Ein neues Theme kann dann Variablen aus Bootstrap oder dem Hub überschreiben.
 
-Als Beispiel kann das [`hub-high-contrast.scss`](./src/plainui/styles/hub-high-contrast.scss) genommen werden.
+Als Beispiel kann das [`hub-high-contrast.scss`](./src/plainui/styles/themes/hub-high-contrast.scss) genommen werden.
 
 ### CSS Kompilieren (PlainUi)
 
diff --git a/Dockerfile b/Dockerfile
index 05e99ab62212278c9a0b0b4a972261c00439c754..c42e4e943b26b08af195021ccd4435ecbf447dca 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -122,7 +122,7 @@ CMD ["watch"]
 
 FROM build AS build-static
 
-COPY --from=node-build /app/plainui/static/plainui/hub.css /app/plainui/static/plainui/hub.css.map /app/plainui/static/plainui/
+COPY --from=node-build /app/plainui/static/plainui/*.css* /app/plainui/static/plainui/
 COPY /src/ /app
 
 WORKDIR /app
@@ -160,7 +160,7 @@ RUN install -o appuser -g appuser -m 774 /dev/null /data/django.log
 # Copy additional dev dependencies
 COPY --from=build-dev /install/.venv /install/.venv
 # Copy plainui styles
-COPY --from=node-build /app/plainui/static/hub.css* /app/plainui/static/
+COPY --from=node-build /app/plainui/static/*.css* /app/plainui/static/
 ENV PATH="/install/.venv/bin:$PATH"
 
 USER appuser
diff --git a/src/plainui/jinja2.py b/src/plainui/jinja2.py
index 54216092927184d46bdfc57357f131ea58dc0fe5..a3be9bc73fbdf87c8a048d17029686b85602a215 100644
--- a/src/plainui/jinja2.py
+++ b/src/plainui/jinja2.py
@@ -198,6 +198,8 @@ def show_vars(ctx, var=_UNSET):
 def css_scope(ctx):
     request = ctx['request']
 
+    return '38c3'
+
     if (request.user.is_authenticated and request.user.high_contrast) or request.session.get('high_contrast', False):
         return 'hub-high-contrast'
 
diff --git a/src/plainui/jinja2/plainui/base.html.j2 b/src/plainui/jinja2/plainui/base.html.j2
index 28224f4ef21ee905c84ab93bebc22f860c4af88c..558c1e1c42b67781579891b6b51dc63de4451a1a 100644
--- a/src/plainui/jinja2/plainui/base.html.j2
+++ b/src/plainui/jinja2/plainui/base.html.j2
@@ -108,7 +108,9 @@
               </ul>
               <ul class="d-flex gap-2 list-unstyled">
                 <li>{{ hbtns.share() }}</li>
+                <!-- Temporary disabled due to 38c3 design implementation.
                 <li>{{ hbtns.themeswitcher() }}</li>
+                -->
                 <li>{{ hbtns.globe() }}</li>
               </ul>
             </div>
diff --git a/src/plainui/package.json b/src/plainui/package.json
index a6f04a299c10bbd370fe833a6aeaf766b86a86da..f33fd8febf40007fa0c1cf70dede52ce4d25fb4a 100644
--- a/src/plainui/package.json
+++ b/src/plainui/package.json
@@ -16,8 +16,8 @@
     "bootstrap-icons": "^1.11.3"
   },
   "scripts": {
-    "build": "sass --silence-deprecation slash-div,mixed-decls,color-functions,global-builtin,import -I node_modules --style=compressed styles:static/plainui",
-    "watch": "sass --silence-deprecation slash-div,mixed-decls,color-functions,global-builtin,import --watch -I node_modules styles:static/plainui"
+    "build": "sass --silence-deprecation slash-div,mixed-decls,color-functions,global-builtin,import -I node_modules --style=compressed styles/themes:static/plainui",
+    "watch": "sass --silence-deprecation slash-div,mixed-decls,color-functions,global-builtin,import --watch -I node_modules styles/themes:static/plainui"
   },
   "packageManager": "yarn@4.5.1"
 }
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Bold.otf b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Bold.otf
new file mode 100644
index 0000000000000000000000000000000000000000..117c61ec2e970f5f0e882a32ca51703c77bf8960
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Bold.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Bold.woff b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..6c191133f52ce3ac8d0abe26da37d5c0ccb5c2c2
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Bold.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Bold.woff2 b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..e477e71d1802de3c657ac77e2b051d0a32d335c4
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Bold.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Light.otf b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Light.otf
new file mode 100644
index 0000000000000000000000000000000000000000..aca07787432ad3ddb319459dd4002c1366abe464
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Light.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Light.woff b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Light.woff
new file mode 100644
index 0000000000000000000000000000000000000000..af5f85e6c5ce282d41eb8c22c2872d299c8f7755
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Light.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Light.woff2 b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Light.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..2f694261a4f68507678193565a96dcf5ba2038d1
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Light.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Medium.otf b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Medium.otf
new file mode 100644
index 0000000000000000000000000000000000000000..86627da3ea070f56a67a036058de9b318ecc5489
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Medium.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Medium.woff b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Medium.woff
new file mode 100644
index 0000000000000000000000000000000000000000..ffbe3f7381a3ce303bd610b5c3f241fcd7029aaf
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Medium.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Medium.woff2 b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Medium.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..ec1d64e18426e8d30deaf9e38a78f648837a7070
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Medium.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Regular.otf b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Regular.otf
new file mode 100644
index 0000000000000000000000000000000000000000..818582d279603f8e1571588b72a75ee1e19c2648
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Regular.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Regular.woff b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..31df4dfa3985f0ddc9af459c00709c41c4d519ba
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Regular.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Regular.woff2 b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..99ee1d39c33d3ec1e26db7ebd255e69d751def13
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-Regular.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-SemiBold.otf b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-SemiBold.otf
new file mode 100644
index 0000000000000000000000000000000000000000..80097da3f0abb6d87e0d5cf0baa12d922169c32f
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-SemiBold.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-SemiBold.woff b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-SemiBold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..1e45a4aa395e68f41dfc43a819c3538c71ff932c
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-SemiBold.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-SemiBold.woff2 b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-SemiBold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..e4935e0adf4ab335db7e8b099de817ef06f47fba
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/SpaceGrotesk-SemiBold.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Bold.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-Bold.otf
new file mode 100644
index 0000000000000000000000000000000000000000..e88f97d91cbe0088764a94d91781a086419de4ad
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Bold.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Bold.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..06c95ceb97ecf06f30e7fdb4bb05d35d8e3c7931
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Bold.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Bold.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..bfeab29715f41d34364cbdd70f766b24ddd77d78
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Bold.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-BoldItalic.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-BoldItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..14719a0a435ad74662a1af07242365ddfe248c5e
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-BoldItalic.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-BoldItalic.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-BoldItalic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..b7032e4c7b3225ebab2d0399263456162a60daed
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-BoldItalic.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-BoldItalic.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-BoldItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..b0caee4dde9e48f9975f68a17379128296eda4b2
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-BoldItalic.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Book.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-Book.otf
new file mode 100644
index 0000000000000000000000000000000000000000..a20cfe57f615b385a689b58a548d354262bbfeea
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Book.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Book.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-Book.woff
new file mode 100644
index 0000000000000000000000000000000000000000..4c29e59dd587ad279332d7553491f67c51df0155
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Book.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Book.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-Book.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..197167c933dda8bbdbe3953382a4bf14515f8b8e
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Book.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-BookItalic.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-BookItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..5971e494ad31ea0ff73ad3818db9f42d491ae7cb
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-BookItalic.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-BookItalic.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-BookItalic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..85979d8f668740ffca5c7df6f0badbbddceb0d33
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-BookItalic.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-BookItalic.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-BookItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..8acf135ed88b56ee86baf4def17f83e1233b62f9
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-BookItalic.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Light.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-Light.otf
new file mode 100644
index 0000000000000000000000000000000000000000..175724ec2d8bac0de9cbf426836bc7b8bb01df48
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Light.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Light.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-Light.woff
new file mode 100644
index 0000000000000000000000000000000000000000..3937706bc32a1aa8007519fd40f798dc747508cc
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Light.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Light.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-Light.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..5d7a19d484be2b0a3fdb62229139589ba86e4ffd
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Light.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-LightItalic.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-LightItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..bd80afb8f2e66b20a4995bbb6c559e12e29041cb
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-LightItalic.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-LightItalic.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-LightItalic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..12a2513102d8ce53cf1c2820db77eefd19f624d4
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-LightItalic.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-LightItalic.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-LightItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..28d3a8be2c190cdb0246a0e2f8d3a87f8de3ca0b
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-LightItalic.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Medium.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-Medium.otf
new file mode 100644
index 0000000000000000000000000000000000000000..f349be9623d260ad2643dcae02343bb76d9b7769
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Medium.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Medium.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-Medium.woff
new file mode 100644
index 0000000000000000000000000000000000000000..afa7e522a2f7e4c5d4df308044291ba45651915f
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Medium.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Medium.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-Medium.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..25bb2ff193dd7bf009b50c6ad3c30231eaa84c07
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Medium.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-MediumItalic.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-MediumItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..6ec6886f5ff62d6c683beca2fb8aecdb28f8fe3b
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-MediumItalic.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-MediumItalic.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-MediumItalic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..4ceaf14279b89ab7e10ecaccf441e7b69f62463c
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-MediumItalic.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-MediumItalic.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-MediumItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..44ea32668afd4f9d84b638635f8a68ea38f5bf97
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-MediumItalic.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Regular.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-Regular.otf
new file mode 100644
index 0000000000000000000000000000000000000000..3f98990eeb7b9bf62b9a1e3565cbf7b1ef704d4f
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Regular.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Regular.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..4268825d72a2a5ac14ea615f8cb18100c6325e73
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Regular.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Regular.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..cb91495575ed6f8d56ddcd7821dcfb0e887b18c5
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Regular.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-RegularItalic.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-RegularItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..ccdc70501aa74f52dcc66f5fbbfbb1d13bacb6d0
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-RegularItalic.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-RegularItalic.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-RegularItalic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..cb44cbf3b2ed3578c92a341c2b863534ef946ee1
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-RegularItalic.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-RegularItalic.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-RegularItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..e7aef35101b58cc17d440bc363d5f7dee00c1e6f
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-RegularItalic.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Semibold.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-Semibold.otf
new file mode 100644
index 0000000000000000000000000000000000000000..c018522f7b3459de99b9ba333b9a78728db45285
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Semibold.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Semibold.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-Semibold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..c6c1e7e77eba5e9719f699dfd36c0a20a0df9f6f
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Semibold.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Semibold.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-Semibold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..505af446a95bd3f0575016b50f8abeb28f536886
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Semibold.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-SemiboldItalic.otf b/src/plainui/static/plainui/38c3/fonts/UncutSans-SemiboldItalic.otf
new file mode 100644
index 0000000000000000000000000000000000000000..c151c3cd862905e87f725de8c9e463a2d5212f3a
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-SemiboldItalic.otf differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-SemiboldItalic.woff b/src/plainui/static/plainui/38c3/fonts/UncutSans-SemiboldItalic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..427a10b0d3c875a661c19f4406298f1722026bc9
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-SemiboldItalic.woff differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-SemiboldItalic.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-SemiboldItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..62c9b6b7004575c43d67a7b15e7226602f673334
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-SemiboldItalic.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/fonts/UncutSans-Variable.woff2 b/src/plainui/static/plainui/38c3/fonts/UncutSans-Variable.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..db2dd6bb6bf33aa6c630daa62390a9482e6e98da
Binary files /dev/null and b/src/plainui/static/plainui/38c3/fonts/UncutSans-Variable.woff2 differ
diff --git a/src/plainui/static/plainui/38c3/img/grid-12x16.svg b/src/plainui/static/plainui/38c3/img/grid-12x16.svg
new file mode 100644
index 0000000000000000000000000000000000000000..09c139cada64fd695bba54bbc013d961e15a851c
--- /dev/null
+++ b/src/plainui/static/plainui/38c3/img/grid-12x16.svg
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="481"
+   height="641"
+   viewBox="0 0 481 641"
+   fill="none"
+   version="1.1"
+   id="svg30"
+   sodipodi:docname="grid-12x16.svg"
+   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <defs
+     id="defs30" />
+  <sodipodi:namedview
+     id="namedview30"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:zoom="1.8705148"
+     inkscape:cx="244.58507"
+     inkscape:cy="284.94829"
+     inkscape:window-width="2556"
+     inkscape:window-height="1383"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg30" />
+  <line
+     y1="0.5"
+     x2="481"
+     y2="0.5"
+     stroke="#29114C"
+     id="line1" />
+  <line
+     y1="40.5"
+     x2="481"
+     y2="40.5"
+     stroke="#29114C"
+     id="line2" />
+  <line
+     y1="80.5"
+     x2="481"
+     y2="80.5"
+     stroke="#29114C"
+     id="line3" />
+  <line
+     y1="120.5"
+     x2="481"
+     y2="120.5"
+     stroke="#29114C"
+     id="line4" />
+  <line
+     y1="160.5"
+     x2="481"
+     y2="160.5"
+     stroke="#29114C"
+     id="line5" />
+  <line
+     y1="200.5"
+     x2="481"
+     y2="200.5"
+     stroke="#29114C"
+     id="line6" />
+  <line
+     y1="240.5"
+     x2="481"
+     y2="240.5"
+     stroke="#29114C"
+     id="line7" />
+  <line
+     y1="280.5"
+     x2="481"
+     y2="280.5"
+     stroke="#29114C"
+     id="line8" />
+  <line
+     y1="320.5"
+     x2="481"
+     y2="320.5"
+     stroke="#29114C"
+     id="line9" />
+  <line
+     y1="360.5"
+     x2="481"
+     y2="360.5"
+     stroke="#29114C"
+     id="line10" />
+  <line
+     y1="400.5"
+     x2="481"
+     y2="400.5"
+     stroke="#29114C"
+     id="line11" />
+  <line
+     y1="440.5"
+     x2="481"
+     y2="440.5"
+     stroke="#29114C"
+     id="line12" />
+  <line
+     y1="480.5"
+     x2="481"
+     y2="480.5"
+     stroke="#29114C"
+     id="line13" />
+  <line
+     y1="520.5"
+     x2="481"
+     y2="520.5"
+     stroke="#29114C"
+     id="line14" />
+  <line
+     y1="560.5"
+     x2="481"
+     y2="560.5"
+     stroke="#29114C"
+     id="line15" />
+  <line
+     y1="600.5"
+     x2="481"
+     y2="600.5"
+     stroke="#29114C"
+     id="line16" />
+  <line
+     x1="0.5"
+     y1="641"
+     x2="0.500006"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line18" />
+  <line
+     x1="40.5"
+     y1="641"
+     x2="40.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line19" />
+  <line
+     x1="80.5"
+     y1="641"
+     x2="80.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line20" />
+  <line
+     x1="120.5"
+     y1="641"
+     x2="120.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line21" />
+  <line
+     x1="160.5"
+     y1="641"
+     x2="160.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line22" />
+  <line
+     x1="200.5"
+     y1="641"
+     x2="200.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line23" />
+  <line
+     x1="240.5"
+     y1="641"
+     x2="240.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line24" />
+  <line
+     x1="280.5"
+     y1="641"
+     x2="280.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line25" />
+  <line
+     x1="320.5"
+     y1="641"
+     x2="320.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line26" />
+  <line
+     x1="360.5"
+     y1="641"
+     x2="360.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line27" />
+  <line
+     x1="400.5"
+     y1="641"
+     x2="400.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line28" />
+  <line
+     x1="440.5"
+     y1="641"
+     x2="440.5"
+     y2="-7.86099e-09"
+     stroke="#29114C"
+     id="line29" />
+</svg>
diff --git a/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables-bootstrap.css b/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables-bootstrap.css
new file mode 100644
index 0000000000000000000000000000000000000000..d3fcbf6468dea469f82237aa46a27606ff1e91de
--- /dev/null
+++ b/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables-bootstrap.css
@@ -0,0 +1 @@
+/*# sourceMappingURL=hub-high-contrast-variables-bootstrap.css.map */
diff --git a/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables-bootstrap.css.map b/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables-bootstrap.css.map
new file mode 100644
index 0000000000000000000000000000000000000000..b005dab8a4354a2bbf09b06f3da35d2b6c73fee9
--- /dev/null
+++ b/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables-bootstrap.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":[],"names":[],"mappings":"","file":"hub-high-contrast-variables-bootstrap.css"}
\ No newline at end of file
diff --git a/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables.css b/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables.css
new file mode 100644
index 0000000000000000000000000000000000000000..3f38d0302f0828640762a5f1434d178d08209ff0
--- /dev/null
+++ b/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables.css
@@ -0,0 +1 @@
+/*# sourceMappingURL=hub-high-contrast-variables.css.map */
diff --git a/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables.css.map b/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables.css.map
new file mode 100644
index 0000000000000000000000000000000000000000..c82c4622e7e47be058a9153edb76424f11c378aa
--- /dev/null
+++ b/src/plainui/static/plainui/hub-high-contrast/hub-high-contrast-variables.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":[],"names":[],"mappings":"","file":"hub-high-contrast-variables.css"}
\ No newline at end of file
diff --git a/src/plainui/styles/_variables-bootstrap.scss b/src/plainui/styles/_variables-bootstrap.scss
index a1e731409f2efcd9ac69fb2ee37d81fdbbed97c0..f1c3c5122be85fe6a1d31b9d54a48636be407590 100644
--- a/src/plainui/styles/_variables-bootstrap.scss
+++ b/src/plainui/styles/_variables-bootstrap.scss
@@ -2,11 +2,11 @@
 
 /* Copied over from bootstrap variables */
 
-$cyan: #0dcaf0;
+$cyan: #0dcaf0 !default;
 
 /* Bootstrap variables customisation */
 
-$secondary: $cyan;
+$secondary: $cyan !default;
 
 $body-color-dark: rgba(255, 255, 255, 0.85) !default;
 $body-bg-dark: rgba(0, 0, 0, 1);
@@ -14,7 +14,7 @@ $body-bg-dark: rgba(0, 0, 0, 1);
 $body-emphasis-color: rgba(255, 255, 255, 1);
 
 $body-secondary-color-dark: rgba(255, 255, 255, 0.65) !default;
-$body-secondary-bg-dark: rgba(20, 20, 20, 1);
+$body-secondary-bg-dark: rgba(20, 20, 20, 1) !default;
 
 $link-decoration: none;
 $link-hover-decoration: underline;
diff --git a/src/plainui/styles/_variables-hub.scss b/src/plainui/styles/_variables-hub.scss
index f0ff694c9979734d928cbf96dca2455bd2b9a892..f0343565417cbcddd29b0c0c94382a3b3edb1624 100644
--- a/src/plainui/styles/_variables-hub.scss
+++ b/src/plainui/styles/_variables-hub.scss
@@ -2,10 +2,18 @@
 
 $hub-mobile-navbar-height: 73px !default;
 
+/* Fonts and font colours */
+
 $hub-text-main-font: 400 14px $font-family-sans-serif !default;
 $hub-badge-font: 700 18px $font-family-sans-serif !default;
 $hub-head-category-font: 400 19px $font-family-sans-serif !default;
 
+$hub-head-page-font: 400 33px $font-family-sans-serif !default;
+$hub-head-page-color: $body-color-dark !default;
+
+$hub-section-title-color: $secondary !default;
+$hub-head-main-color: $body-color-dark !default;
+
 /* Badges */
 
 $hub-badge-bg-image: url(img/shield.svg) !default;
@@ -94,3 +102,8 @@ $hub-tag-user-color: $black !default;
 /* Navigation */
 
 $hub-main-nav-category-font-weight: 300 !default;
+$hub-main-nav-bg: $body-bg-dark !default;
+
+/* Lists*/
+
+$hub-list-item-bg: var(--bs-dark) !default;
diff --git a/src/plainui/styles/components/_logo.scss b/src/plainui/styles/components/_logo.scss
index 0860b9de0b4ff6ebda2d965a0f32d1309f3c5abe..0bb9edb05da76e19e6ef41edacf6913aee361cba 100644
--- a/src/plainui/styles/components/_logo.scss
+++ b/src/plainui/styles/components/_logo.scss
@@ -3,5 +3,6 @@
 
   svg {
     height: 100%;
+    max-width: 100%;
   }
 }
diff --git a/src/plainui/styles/components/_nav.scss b/src/plainui/styles/components/_nav.scss
index b47df7654568f5fdc80341dbc0828d2f469db193..3b907ce02a601be27fc3760f41def079af4cd917 100644
--- a/src/plainui/styles/components/_nav.scss
+++ b/src/plainui/styles/components/_nav.scss
@@ -1,5 +1,5 @@
 .hub-main-navbar {
-  background-color: $body-bg-dark;
+  background-color: $hub-main-nav-bg;
   display: flex;
   flex-direction: column;
   height: 100vh;
diff --git a/src/plainui/styles/hub-high-contrast.scss b/src/plainui/styles/hub-high-contrast.scss
deleted file mode 100644
index 244eea92f7cfb28731e4103aedc27c4e3a1b94d5..0000000000000000000000000000000000000000
--- a/src/plainui/styles/hub-high-contrast.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-@import "./helpers";
-
-@import "./themes/hub-high-contrast-variables-bootstrap";
-@import "./variables-bootstrap";
-@import "./bootstrap";
-@import "./themes/hub-high-contrast-variables";
-@import "./variables-hub";
-
-@import "bootstrap-icons/font/bootstrap-icons";
-
-@import "./utils";
-@import "./components";
-@import "./base";
diff --git a/src/plainui/styles/hub.scss b/src/plainui/styles/hub.scss
deleted file mode 100644
index 5d03b724675e256d7011cbbeb2f6751f9f0ebe4b..0000000000000000000000000000000000000000
--- a/src/plainui/styles/hub.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-@import "./helpers";
-
-@import "./variables-bootstrap";
-@import "./bootstrap";
-@import "./variables-hub";
-
-@import "bootstrap-icons/font/bootstrap-icons";
-
-@import "./utils";
-@import "./components";
-@import "./base";
diff --git a/src/plainui/styles/themes/38c3.scss b/src/plainui/styles/themes/38c3.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e25cf5a13ebf5a0476997f2523c5365e7deb61f5
--- /dev/null
+++ b/src/plainui/styles/themes/38c3.scss
@@ -0,0 +1,19 @@
+@import "../helpers";
+
+@import "./38c3/fonts";
+@import "./38c3/38c3-variables-bootstrap";
+@import "../variables-bootstrap";
+@import "../bootstrap";
+@import "./38c3/38c3-variables";
+@import "../variables-hub";
+
+@import "bootstrap-icons/font/bootstrap-icons";
+
+@import "../utils";
+@import "../components";
+@import "../base";
+
+body {
+  background-image: url("38c3/img/grid-12x16.svg");
+  background-repeat: repeat;
+}
diff --git a/src/plainui/styles/themes/38c3/_38c3-variables-bootstrap.scss b/src/plainui/styles/themes/38c3/_38c3-variables-bootstrap.scss
new file mode 100644
index 0000000000000000000000000000000000000000..49cf84ad774ecf58a05fe55ee416a8a9bceec043
--- /dev/null
+++ b/src/plainui/styles/themes/38c3/_38c3-variables-bootstrap.scss
@@ -0,0 +1,23 @@
+@import "bootstrap/scss/functions";
+
+/* 38c3 Bootstrap variables */
+
+$black: #0f000a;
+$cyan: #b2aaff;
+$white: #fef2ff;
+
+$primary: #ff5053;
+$secondary: $cyan;
+
+$body-color-dark: $white;
+$body-bg-dark: $black;
+$body-secondary-color-dark: $white;
+$body-secondary-bg-dark: #190b2f;
+
+$link-color-dark: $secondary;
+$link-hover-color-dark: $secondary;
+
+$font-family-sans-serif: "Uncut Sans";
+$font-size-base: 1.1rem;
+
+@import "bootstrap/scss/variables";
diff --git a/src/plainui/styles/themes/38c3/_38c3-variables.scss b/src/plainui/styles/themes/38c3/_38c3-variables.scss
new file mode 100644
index 0000000000000000000000000000000000000000..f2e95dc19092b9603a7477baf94fbdc4bb3b23ba
--- /dev/null
+++ b/src/plainui/styles/themes/38c3/_38c3-variables.scss
@@ -0,0 +1,19 @@
+@import "bootstrap/scss/functions";
+@import "bootstrap/scss/variables";
+
+/* 38c3 variables */
+
+$hub-event-list-past-color: #6a5fdb;
+$hub-event-list-upcoming-color: #fef2ff;
+$hub-event-list-now-color: $black;
+
+$hub-head-page-font: 400 40px "Space Grotesk";
+$hub-head-page-color: $primary;
+
+$hub-main-nav-bg: "transparent";
+$hub-main-nav-category-font-weight: normal;
+
+$hub-head-category-font: 400 22px "Space Grotesk";
+$hub-section-title-color: $primary;
+$hub-head-main-color: $primary;
+$hub-list-item-bg: #29114c;
diff --git a/src/plainui/styles/themes/38c3/_fonts.scss b/src/plainui/styles/themes/38c3/_fonts.scss
new file mode 100644
index 0000000000000000000000000000000000000000..a0ce3cb8f60e87c547833f30f3566d34bc1b3539
--- /dev/null
+++ b/src/plainui/styles/themes/38c3/_fonts.scss
@@ -0,0 +1,19 @@
+@font-face {
+  font-family: "Space Grotesk";
+  src:
+    local("Space Grotesk"),
+    url("38c3/fonts/SpaceGrotesk-Regular.otf") format("opentype"),
+    url("38c3/fonts/SpaceGrotesk-Regular.woff") format("woff"),
+    url("38c3/fonts/SpaceGrotesk-Regular.woff2") format("woff2");
+  font-weight: normal;
+}
+
+@font-face {
+  font-family: "Uncut Sans";
+  src:
+    local("Uncut Sans"),
+    url("38c3/fonts/UncutSans-Regular.otf") format("opentype"),
+    url("38c3/fonts/UncutSans-Regular.woff") format("woff"),
+    url("38c3/fonts/UncutSans-Regular.woff2") format("woff2");
+  font-weight: normal;
+}
diff --git a/src/plainui/styles/themes/hub-high-contrast.scss b/src/plainui/styles/themes/hub-high-contrast.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e57f640811ba89beb2f5531eeae972304419e391
--- /dev/null
+++ b/src/plainui/styles/themes/hub-high-contrast.scss
@@ -0,0 +1,13 @@
+@import "../helpers";
+
+@import "./hub-high-contrast/hub-high-contrast-variables-bootstrap";
+@import "../variables-bootstrap";
+@import "../bootstrap";
+@import "./hub-high-contrast/hub-high-contrast-variables";
+@import "../variables-hub";
+
+@import "bootstrap-icons/font/bootstrap-icons";
+
+@import "../utils";
+@import "../components";
+@import "../base";
diff --git a/src/plainui/styles/themes/hub-high-contrast-variables-bootstrap.scss b/src/plainui/styles/themes/hub-high-contrast/_hub-high-contrast-variables-bootstrap.scss
similarity index 100%
rename from src/plainui/styles/themes/hub-high-contrast-variables-bootstrap.scss
rename to src/plainui/styles/themes/hub-high-contrast/_hub-high-contrast-variables-bootstrap.scss
diff --git a/src/plainui/styles/themes/hub-high-contrast-variables.scss b/src/plainui/styles/themes/hub-high-contrast/_hub-high-contrast-variables.scss
similarity index 99%
rename from src/plainui/styles/themes/hub-high-contrast-variables.scss
rename to src/plainui/styles/themes/hub-high-contrast/_hub-high-contrast-variables.scss
index 87c948649ce604cec1c6770f70b73cb50e3760e4..983e2c9fa98eddeb859c0bbb7a8c6b216077c286 100644
--- a/src/plainui/styles/themes/hub-high-contrast-variables.scss
+++ b/src/plainui/styles/themes/hub-high-contrast/_hub-high-contrast-variables.scss
@@ -1,5 +1,4 @@
 @import "bootstrap/scss/functions";
-@import "bootstrap/scss/variables";
 
 /* High contrast Hub variables */
 
@@ -11,3 +10,5 @@ $hub-event-list-upcoming-bg: $black;
 $hub-event-list-upcoming-border: 1px solid $white;
 
 $hub-main-nav-category-font-weight: normal;
+
+@import "bootstrap/scss/variables";
diff --git a/src/plainui/styles/themes/hub.scss b/src/plainui/styles/themes/hub.scss
new file mode 100644
index 0000000000000000000000000000000000000000..1a208115f037a6aaf0986eb1cdb8458f49566200
--- /dev/null
+++ b/src/plainui/styles/themes/hub.scss
@@ -0,0 +1,11 @@
+@import "../helpers";
+
+@import "../variables-bootstrap";
+@import "../bootstrap";
+@import "../variables-hub";
+
+@import "bootstrap-icons/font/bootstrap-icons";
+
+@import "../utils";
+@import "../components";
+@import "../base";
diff --git a/src/plainui/styles/utils/_layout.scss b/src/plainui/styles/utils/_layout.scss
index 7c1a4f647f8fed14c55adbf43cbc3f8c1a84fcf4..625a13ce0b5f354c0f24135f8e26624a5875e684 100644
--- a/src/plainui/styles/utils/_layout.scss
+++ b/src/plainui/styles/utils/_layout.scss
@@ -16,7 +16,7 @@
 }
 
 .hub-list-item {
-  background-color: var(--bs-dark);
+  background-color: $hub-list-item-bg;
   border-radius: var(--bs-border-radius);
   display: grid;
   gap: 0.625rem;
diff --git a/src/plainui/styles/utils/_typography.scss b/src/plainui/styles/utils/_typography.scss
index f54b01efda242bf460931faca9c93e475179bb0d..a3f318af0122b681c0a83222ac0a226b89a6e5d5 100644
--- a/src/plainui/styles/utils/_typography.scss
+++ b/src/plainui/styles/utils/_typography.scss
@@ -23,14 +23,14 @@
 }
 
 .hub-head-page {
-  font-family: $font-family-sans-serif;
-  font-size: 33px;
-  font-weight: 400;
+  color: $hub-head-page-color;
+  font: $hub-head-page-font;
   line-height: 130.19%;
   letter-spacing: 0%;
 }
 
 .hub-head-main {
+  color: $hub-head-main-color;
   font-family: $font-family-sans-serif;
   font-size: 50px;
   font-weight: 400;
@@ -97,7 +97,7 @@
 }
 
 .hub-section-title {
-  color: var(--bs-secondary-color);
+  color: $hub-section-title-color;
   font: $hub-head-category-font;
 }