From 335e26ce8b49d298d094c700091a2de25ce587bb Mon Sep 17 00:00:00 2001
From: Barne Kleinen
Date: Tue, 16 Jul 2024 08:35:20 +0200
Subject: [PATCH] STW: Move theme to main repo (#378)
* copy showtime-theme-2021 to showtime-theme-2024 - commit 20b1090e41e42f6cf27fcabd52f19281fb43befd tag: last_version_as_submodule
* config new theme, delete old theme folder
* remove get theme from gh actions
* remove theme from readme
* add old theme to gitignore
* remove deploy-production-without-archive.yml
---
.github/workflows/check-pr.yml | 3 -
.github/workflows/deploy-preview.yml | 1 +
.../deploy-production-without-archive.yml | 37 -
.github/workflows/deploy-staging.yml | 3 -
.github/workflows/deploy-tryout.yml | 5 +-
.github/workflows/deploy_pull_request.yml | 3 -
.github/workflows/gh-pages-action.yml | 8 +-
.github/workflows/gh-pages-branch.yml | 6 +-
.gitignore | 1 +
README.md | 41 +-
config/_default/config.toml | 2 +-
themes/showtime-theme-2021 | 1 -
themes/showtime-theme-2024/.gitignore | 2 +
themes/showtime-theme-2024/NOTES.MD | 6 +
themes/showtime-theme-2024/README.md | 28 +
.../showtime-theme-2024/archetypes/default.md | 2 +
.../assets/sass/_colors.scss | 11 +
.../assets/sass/main.template | 1510 +++++++++++++++++
themes/showtime-theme-2024/layouts/404.html | 0
.../_markup/render-codeblock-mermaid.html | 5 +
.../layouts/_default/archive.html | 54 +
.../layouts/_default/baseof.html | 53 +
.../layouts/_default/contact.html | 27 +
.../layouts/_default/dates.html | 24 +
.../layouts/_default/list.html | 4 +
.../layouts/_default/project.html | 106 ++
.../layouts/_default/projects_list.html | 47 +
.../layouts/_default/projects_list_debug.html | 45 +
.../layouts/_default/schedule.html | 70 +
.../layouts/_default/single.html | 14 +
themes/showtime-theme-2024/layouts/index.html | 70 +
.../layouts/partials/footer.html | 53 +
.../layouts/partials/head.html | 14 +
.../layouts/partials/header.html | 2 +
.../layouts/partials/project/anchor.html | 8 +
.../partials/project/first_project.page | 23 +
.../project/first_project_in_semester.page | 22 +
.../partials/project/list_partial.html | 32 +
.../partials/project/meta_data_overview.html | 50 +
.../partials/project/next_project.html | 96 ++
.../partials/project/schedule_data.toml | 6 +
.../layouts/partials/project/short_list.html | 18 +
.../layouts/partials/semester.html | 31 +
.../layouts/partials/semester_selection.html | 14 +
.../layouts/shortcodes/archive-path.html | 1 +
.../layouts/shortcodes/gallery.html | 3 +
.../layouts/shortcodes/image-float.html | 35 +
.../layouts/shortcodes/image.html | 25 +
.../layouts/shortcodes/infobox.html | 13 +
.../layouts/shortcodes/mediathek.html | 18 +
.../layouts/shortcodes/quote.html | 15 +
.../layouts/shortcodes/section.html | 13 +
.../layouts/shortcodes/team-member.html | 21 +
.../layouts/shortcodes/teaser.html | 17 +
.../static/fonts/JetBrainsMono-Bold.woff2 | Bin 0 -> 59436 bytes
.../fonts/JetBrainsMono-ExtraBold.woff2 | Bin 0 -> 59004 bytes
.../static/fonts/JetBrainsMono-Italic.woff2 | Bin 0 -> 60864 bytes
.../static/fonts/JetBrainsMono-Light.woff2 | Bin 0 -> 59112 bytes
.../static/fonts/JetBrainsMono-Regular.woff2 | Bin 0 -> 58268 bytes
.../showtime-theme-2024/static/img/16x9.png | Bin 0 -> 567 bytes
.../static/img/arrow-down.svg | 9 +
.../showtime-theme-2024/static/img/code.svg | 3 +
.../static/img/deco-rect-01.svg | 12 +
.../static/img/deco-rect-02.svg | 14 +
.../showtime-theme-2024/static/img/demo.svg | 3 +
.../static/img/diagonal.svg | 9 +
.../static/img/htw-logo.png | Bin 0 -> 9525 bytes
.../static/img/showtime-keyvisual-live.svg | 27 +
.../static/img/showtime-keyvisual.svg | 31 +
.../static/img/start-background.svg | 17 +
.../static/img/website.svg | 3 +
.../showtime-theme-2024/static/js/secret.js | 22 +
.../static/js/semester-select.js | 7 +
.../static/js/title-animate.js | 70 +
.../static/licenses/jetbrains-mono.txt | 93 +
.../static/licenses/material-icons.txt | 202 +++
themes/showtime-theme-2024/theme.toml | 11 +
77 files changed, 3171 insertions(+), 81 deletions(-)
delete mode 100644 .github/workflows/deploy-production-without-archive.yml
delete mode 160000 themes/showtime-theme-2021
create mode 100644 themes/showtime-theme-2024/.gitignore
create mode 100644 themes/showtime-theme-2024/NOTES.MD
create mode 100644 themes/showtime-theme-2024/README.md
create mode 100644 themes/showtime-theme-2024/archetypes/default.md
create mode 100644 themes/showtime-theme-2024/assets/sass/_colors.scss
create mode 100644 themes/showtime-theme-2024/assets/sass/main.template
create mode 100644 themes/showtime-theme-2024/layouts/404.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/_markup/render-codeblock-mermaid.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/archive.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/baseof.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/contact.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/dates.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/list.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/project.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/projects_list.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/projects_list_debug.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/schedule.html
create mode 100644 themes/showtime-theme-2024/layouts/_default/single.html
create mode 100644 themes/showtime-theme-2024/layouts/index.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/footer.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/head.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/header.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/project/anchor.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/project/first_project.page
create mode 100644 themes/showtime-theme-2024/layouts/partials/project/first_project_in_semester.page
create mode 100644 themes/showtime-theme-2024/layouts/partials/project/list_partial.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/project/meta_data_overview.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/project/next_project.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/project/schedule_data.toml
create mode 100644 themes/showtime-theme-2024/layouts/partials/project/short_list.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/semester.html
create mode 100644 themes/showtime-theme-2024/layouts/partials/semester_selection.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/archive-path.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/gallery.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/image-float.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/image.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/infobox.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/mediathek.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/quote.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/section.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/team-member.html
create mode 100644 themes/showtime-theme-2024/layouts/shortcodes/teaser.html
create mode 100644 themes/showtime-theme-2024/static/fonts/JetBrainsMono-Bold.woff2
create mode 100644 themes/showtime-theme-2024/static/fonts/JetBrainsMono-ExtraBold.woff2
create mode 100644 themes/showtime-theme-2024/static/fonts/JetBrainsMono-Italic.woff2
create mode 100644 themes/showtime-theme-2024/static/fonts/JetBrainsMono-Light.woff2
create mode 100644 themes/showtime-theme-2024/static/fonts/JetBrainsMono-Regular.woff2
create mode 100644 themes/showtime-theme-2024/static/img/16x9.png
create mode 100644 themes/showtime-theme-2024/static/img/arrow-down.svg
create mode 100644 themes/showtime-theme-2024/static/img/code.svg
create mode 100644 themes/showtime-theme-2024/static/img/deco-rect-01.svg
create mode 100644 themes/showtime-theme-2024/static/img/deco-rect-02.svg
create mode 100644 themes/showtime-theme-2024/static/img/demo.svg
create mode 100644 themes/showtime-theme-2024/static/img/diagonal.svg
create mode 100644 themes/showtime-theme-2024/static/img/htw-logo.png
create mode 100644 themes/showtime-theme-2024/static/img/showtime-keyvisual-live.svg
create mode 100644 themes/showtime-theme-2024/static/img/showtime-keyvisual.svg
create mode 100644 themes/showtime-theme-2024/static/img/start-background.svg
create mode 100644 themes/showtime-theme-2024/static/img/website.svg
create mode 100644 themes/showtime-theme-2024/static/js/secret.js
create mode 100644 themes/showtime-theme-2024/static/js/semester-select.js
create mode 100644 themes/showtime-theme-2024/static/js/title-animate.js
create mode 100644 themes/showtime-theme-2024/static/licenses/jetbrains-mono.txt
create mode 100644 themes/showtime-theme-2024/static/licenses/material-icons.txt
create mode 100644 themes/showtime-theme-2024/theme.toml
diff --git a/.github/workflows/check-pr.yml b/.github/workflows/check-pr.yml
index 5870a3168..cbd97fb1a 100644
--- a/.github/workflows/check-pr.yml
+++ b/.github/workflows/check-pr.yml
@@ -12,9 +12,6 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: false
- - name: Get Theme
- run: |
- git submodule update --init themes/showtime-theme-2021
- name: Hugo setup
uses: peaceiris/actions-hugo@v3
diff --git a/.github/workflows/deploy-preview.yml b/.github/workflows/deploy-preview.yml
index 8a71a3cbf..4ee275269 100644
--- a/.github/workflows/deploy-preview.yml
+++ b/.github/workflows/deploy-preview.yml
@@ -15,6 +15,7 @@ jobs:
with:
submodules: true
+
- name: Hugo setup
uses: peaceiris/actions-hugo@v3
with:
diff --git a/.github/workflows/deploy-production-without-archive.yml b/.github/workflows/deploy-production-without-archive.yml
deleted file mode 100644
index d4565055e..000000000
--- a/.github/workflows/deploy-production-without-archive.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: production w/o archive
-
-on:
- workflow_dispatch:
-
-jobs:
- deploy:
- if: github.repository == 'htw-imi-showtime/showtime-website'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- with:
- submodules: false
- - name: Get Theme
- run: |
- git submodule update --init themes/showtime-theme-2021
- - name: Hugo setup
- uses: peaceiris/actions-hugo@v3
- with:
- hugo-version: '0.128.0'
- extended: true
-
- - name: Build
- run: |
- hugo \
- --environment production \
- --minify
-
- - name: Deploy
- uses: appleboy/scp-action@v0.1.7
- with:
- host: ${{ secrets.SCP_HOST }}
- username: ${{ secrets.SCP_USERNAME }}
- key: ${{ secrets.SCP_KEY }}
- source: public/
- target: /var/www/html/
- rm: true
diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml
index c617dd833..10ea62428 100644
--- a/.github/workflows/deploy-staging.yml
+++ b/.github/workflows/deploy-staging.yml
@@ -14,9 +14,6 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: false
- - name: Get Theme
- run: |
- git submodule update --init themes/showtime-theme-2021
- name: Hugo setup
uses: peaceiris/actions-hugo@v3
diff --git a/.github/workflows/deploy-tryout.yml b/.github/workflows/deploy-tryout.yml
index 606f536f5..228e7835a 100644
--- a/.github/workflows/deploy-tryout.yml
+++ b/.github/workflows/deploy-tryout.yml
@@ -14,10 +14,7 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: false
- - name: Get Theme
- run: |
- git submodule update --init themes/showtime-theme-2021
-
+
- name: Hugo setup
uses: peaceiris/actions-hugo@v3
with:
diff --git a/.github/workflows/deploy_pull_request.yml b/.github/workflows/deploy_pull_request.yml
index a04f52e87..7b2b84693 100644
--- a/.github/workflows/deploy_pull_request.yml
+++ b/.github/workflows/deploy_pull_request.yml
@@ -14,9 +14,6 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: false
- - name: Get Theme
- run: |
- git submodule update --init themes/showtime-theme-2021
- name: Hugo setup
uses: peaceiris/actions-hugo@v3
diff --git a/.github/workflows/gh-pages-action.yml b/.github/workflows/gh-pages-action.yml
index 6d006a779..f0fcd97c4 100644
--- a/.github/workflows/gh-pages-action.yml
+++ b/.github/workflows/gh-pages-action.yml
@@ -35,12 +35,8 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: false
- fetch-depth: 1 # Fetch all history for .GitInfo and .Lastmod
-
- - name: Get Theme
- run: |
- git submodule update --init themes/showtime-theme-2021
-
+ fetch-depth: 1
+
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
diff --git a/.github/workflows/gh-pages-branch.yml b/.github/workflows/gh-pages-branch.yml
index 41b00cc64..34641b6c9 100644
--- a/.github/workflows/gh-pages-branch.yml
+++ b/.github/workflows/gh-pages-branch.yml
@@ -28,11 +28,7 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: false
- fetch-depth: 1 # Fetch all history for .GitInfo and .Lastmod
-
- - name: Get Theme
- run: |
- git submodule update --init themes/showtime-theme-2021
+ fetch-depth: 1
# see https://github.com/marketplace/actions/hugo-setup
- name: Setup Hugo
diff --git a/.gitignore b/.gitignore
index 364f35ece..bc5dfb6b5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,4 @@ hugo-temp/
tmp/
files-other.txt
files-project.txt
+themes/showtime-theme-2021/
diff --git a/README.md b/README.md
index c74113ac0..5cd3a851f 100644
--- a/README.md
+++ b/README.md
@@ -71,28 +71,21 @@ If you want to add your project to the website, please follow these steps and cr
2. Clone the project:
2.a Without archive submodule:
-```
-git clone --depth 1 https://github.com//showtime-website.git
-cd showtime-website
-```
-or using SSH:
+
```
git clone --depth 1 git@github.com:/showtime-website.git
cd showtime-website
```
-then get the theme submodule:
+you can always get the archive later by running:
+(currently about 1,3G)
```
-git submodule update --init themes/showtime-theme-2021
+git submodule update --init project-archive
```
-2.b Complete with both submodules:
-```
-git clone --depth 1 --recurse-submodules https://github.com//showtime-website.git
-cd showtime-website
-```
-or using SSH:
+2.b Complete with archive submodules:
+
```
git clone --depth 1 --recurse-submodules git@github.com:/showtime-website.git
cd showtime-website
@@ -101,13 +94,22 @@ cd showtime-website
3. [Install Hugo (extended)](https://gohugo.io/getting-started/installing) from https://gohugo.io \
You can check your installation by executing `hugo server` and visiting
http://localhost:1313/ in your browser.
+
+
If you get an error:
* Did you forget to clone the submodules? If so, you can get the theme submodule by running
- ```
- git submodule update --init themes/showtime-theme-2021
- ```
+
* Did you install the Hugo extended version? This is needed for Hugo to correctly compile the theme's SCSS files
+4. Create a branch
+
+As we are using the forking workflow on the showtime website, never change main directly, but keep it synced with the
+main repository. Always work in branches. After your changes have been merged with a pull request, discard the branch,
+update main (get your merged changes squashed into one commit) and create a new branch from there.
+
+```
+git checkout -b b0_first_version_of_our_project_site_or_anything_else_you_fancy_as_a_branch_name
+```
4. Create a new project directory for your project by duplicating either the bachelor's or the master's sample project directory:
```
@@ -116,7 +118,11 @@ cp -R content/ws23/bachelor/b0-template/ content/ws23/bachelor/b#-your-project/
```
cp -R content/ws23/master/m0-template/ content/ws23/master/m#-your-project/
```
-**Please make sure to include your project number! (e.g. B2, M1, ...)**
+
+**Please make sure to include your project number! (e.g. b2, m1, ...)**
+
+File names need to be all lower case, WITHOUT SPACES and no special characters except - and _ .
+see [bin/check-project-update-pr/check-file-names.sh](bin/check-project-update-pr/check-file-names.sh)
5. Fill out your project's homepage `content/ss24//##-your-project/_index.md` and any subpages in your project's directory you'd like to keep. Delete the subpages you don't need.\
@@ -145,7 +151,6 @@ I've started a documentation on how we should use the forking workflow here:
[https://github.com/htw-imi-showtime/showtime-website/blob/documentation/doc/forking-workflow/index.md](https://github.com/htw-imi-showtime/showtime-website/blob/documentation/doc/forking-workflow/index.md)
(will not be merged to main due to file sizes)
-
## Deploy your Fork on GH-Pages
diff --git a/config/_default/config.toml b/config/_default/config.toml
index aea03199d..1f9c3df5d 100644
--- a/config/_default/config.toml
+++ b/config/_default/config.toml
@@ -1,7 +1,7 @@
baseURL = "http://localhost:1313/"
languageCode = "de-de"
title = "IMI Showtime"
-theme = "showtime-theme-2021"
+theme = "showtime-theme-2024"
enableGitInfo = true
[params]
diff --git a/themes/showtime-theme-2021 b/themes/showtime-theme-2021
deleted file mode 160000
index 20b1090e4..000000000
--- a/themes/showtime-theme-2021
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 20b1090e41e42f6cf27fcabd52f19281fb43befd
diff --git a/themes/showtime-theme-2024/.gitignore b/themes/showtime-theme-2024/.gitignore
new file mode 100644
index 000000000..fafff2e8d
--- /dev/null
+++ b/themes/showtime-theme-2024/.gitignore
@@ -0,0 +1,2 @@
+.DS_Store
+Thumbs.db
diff --git a/themes/showtime-theme-2024/NOTES.MD b/themes/showtime-theme-2024/NOTES.MD
new file mode 100644
index 000000000..8a8a7cda9
--- /dev/null
+++ b/themes/showtime-theme-2024/NOTES.MD
@@ -0,0 +1,6 @@
+## Thursday, 13.June 2024 12:33
+
+blocks are not supported within partials, see
+https://github.com/gohugoio/hugo/issues/7936
+
+-> include header and footer in baseof.html
diff --git a/themes/showtime-theme-2024/README.md b/themes/showtime-theme-2024/README.md
new file mode 100644
index 000000000..9b0b7c0f3
--- /dev/null
+++ b/themes/showtime-theme-2024/README.md
@@ -0,0 +1,28 @@
+# Showtime Hugo Theme
+The new 2021 Hugo showtime theme!
+
+## Structure
+
+### `archetypes/`
+Contains templates for generating new pages using the Hugo CLI.
+
+### `assets/`
+The assets folder contains files that should be processed by Hugo before being served. This includes assets like SCSS.
+
+### `layouts/`
+The layouts folder contains the HTML templates for this theme.
+* `index.html` - Contains the home page's layout
+* `_default/`
+ * `baseof.html` - Contains the base structure of the site which should be always applied
+ * `list.html` - Contains the layout for the index pages of the different sections (e.g. ss20, ...)
+ * `project.html` - Contains the layout for the project pages
+ * `projects-list.html` - Contains the layout for the projects list for the current semester
+ * `single.html` - Contains the layout for all single pages, like the imprint
+* `partials/` - Contains partial templates to be included/reused in other templates for this theme
+* `shortcodes/` - Contains partials which can be included in markdown pages
+
+### `static/`
+The static folder contains files that should be served without being processed by Hugo. You may put files like images, CSS or scripts into this folder.
+
+### `theme.toml`
+Contains metadata about the theme (e.g. theme name, author, description)
diff --git a/themes/showtime-theme-2024/archetypes/default.md b/themes/showtime-theme-2024/archetypes/default.md
new file mode 100644
index 000000000..ac36e0622
--- /dev/null
+++ b/themes/showtime-theme-2024/archetypes/default.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/themes/showtime-theme-2024/assets/sass/_colors.scss b/themes/showtime-theme-2024/assets/sass/_colors.scss
new file mode 100644
index 000000000..440b831c7
--- /dev/null
+++ b/themes/showtime-theme-2024/assets/sass/_colors.scss
@@ -0,0 +1,11 @@
+$color-primary: #ff7578;
+$color-accent: #fdfe83;
+$color-link: #29d09f;
+$color-dark: #3e2d4a;
+
+$color-background: #fff6f6;
+$color-secondary: #ff927a;
+$color-link-dark: #0ad0a1;
+
+$color-dropdown: #67ffd2;
+$color-button-active: #1CA37B;
diff --git a/themes/showtime-theme-2024/assets/sass/main.template b/themes/showtime-theme-2024/assets/sass/main.template
new file mode 100644
index 000000000..cdcfc3d62
--- /dev/null
+++ b/themes/showtime-theme-2024/assets/sass/main.template
@@ -0,0 +1,1510 @@
+@font-face {
+ src: url({{- "fonts/JetBrainsMono-Regular.woff2" | absURL -}}) format("woff2");
+ font-family: "JetBrains Mono";
+}
+
+@font-face {
+ src: url({{- "fonts/JetBrainsMono-Italic.woff2" | absURL -}}) format("woff2");
+ font-family: "JetBrains Mono";
+ font-style: italic;
+}
+
+@font-face {
+ src: url({{- "fonts/JetBrainsMono-Light.woff2" | absURL -}}) format("woff2");
+ font-family: "JetBrains Mono";
+ font-weight: 100 300;
+}
+
+@font-face {
+ src: url({{- "fonts/JetBrainsMono-Bold.woff2" | absURL -}}) format("woff2");
+ font-family: "JetBrains Mono";
+ font-weight: bold;
+}
+
+@font-face {
+ src: url({{- "fonts/JetBrainsMono-ExtraBold.woff2" | absURL -}}) format("woff2");
+ font-family: "JetBrains Mono";
+ font-weight: 800 900;
+}
+
+@import 'colors';
+
+* {
+ box-sizing: border-box;
+}
+
+html {
+ font: 14px/200% "JetBrains Mono";
+ color: $color-dark;
+ background-color: $color-background;
+ scroll-behavior: smooth;
+ transition: 2s ease-in-out;
+
+ &.roll {
+ transform: rotate(360deg);
+ }
+}
+
+body {
+ margin: 0;
+}
+
+h1 {
+ font-size: 6rem;
+ font-weight: 900;
+ color: $color-dark;
+ text-transform: uppercase;
+ margin: 0;
+ line-height: 100%;
+
+ .underscore-spacer {
+ display: block;
+ font-weight: 900;
+ text-transform: inherit;
+ line-height: 100%;
+ }
+}
+
+h3 {
+ color: $color-primary;
+ font-weight: 900;
+ font-size: 2.5rem;
+ line-height: 1.25;
+ margin-top: 0;
+
+ &::after {
+ display: block;
+ content: "_";
+ }
+
+ &.no-underscore::after {
+ display: none;
+ }
+}
+.plain {
+
+ &::after {
+ content: "";
+ }
+}
+
+.project-subtitle {
+ font-size: 1rem;
+ &::before {
+ display: block;
+ content: '\A';
+ }
+}
+
+h4 {
+ font-weight: 900;
+}
+
+a {
+ color: $color-link;
+ text-decoration: none;
+
+ &:visited {
+ color: $color-link-dark;
+ }
+}
+
+strong {
+ font-weight: 900;
+}
+
+ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+img {
+ max-width: 100%;
+}
+
+button {
+ margin-top: 2.5rem;
+ background-color: $color-dropdown;
+ border: none;
+ height: 3rem;
+ font-family: "JetBrains Mono";
+ font-size: 1.2rem;
+ text-transform: uppercase;
+ border-radius: 1.5rem;
+ padding-right: 3rem;
+ padding-left: 3rem;
+
+ &:hover {
+ background-color: $color-link;
+ }
+
+ &:active {
+ background-color: $color-button-active;
+ }
+}
+
+.light {
+ font-weight: 100;
+}
+
+.select-wrapper {
+ background-color: $color-dropdown;
+ border-radius: 5px;
+ position: relative;
+
+ &::after {
+ content: "↓";
+ display: inline;
+ position: absolute;
+ right: 1.5rem;
+ top: 0;
+ bottom: 0;
+ font-size: 1.5rem;
+ line-height: 2.5;
+ border-left: 2px solid $color-background;
+ padding-left: 1.3rem;
+ pointer-events: none;
+ }
+
+ select {
+ appearance: none;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ border: none;
+ background: none;
+ font: inherit;
+ text-transform: uppercase;
+ padding: 0.8rem 1.2rem;
+ width: 100%;
+ height: 100%;
+ }
+}
+
+nav {
+ color: $color-background;
+ background-color: $color-primary;
+ padding: 1.5rem 3rem;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: 1;
+
+ & > a {
+ font-size: 1.5rem;
+ }
+
+ ul {
+ display: flex;
+ }
+
+ li {
+ margin: 0 1rem;
+
+ &:last-of-type {
+ margin-right: 0;
+ }
+ }
+
+ a, a:visited {
+ color: inherit;
+ }
+
+ a:hover {
+ color: $color-accent;
+ }
+
+ input {
+ display: none;
+ }
+}
+
+footer {
+ background-color: $color-primary;
+ color: $color-background;
+ padding: 3rem;
+ display: flex;
+ flex-direction: column;
+ margin-top: 15rem;
+
+ section {
+ display: flex;
+ justify-content: space-between;
+
+ > a {
+ font-size: 1.5rem;
+ }
+ }
+
+ ul {
+ list-style: none;
+ padding: 0;
+ display: flex;
+ }
+
+ li {
+ margin: 0 1rem;
+
+ &:last-of-type {
+ margin-right: 0;
+ }
+ }
+
+ a {
+ color: inherit;
+
+ &:visited {
+ color: inherit;
+ }
+ }
+
+ img {
+ max-width: 15rem;
+ align-self: flex-end;
+ margin-top: 7rem;
+ }
+}
+
+main, header {
+ margin-left: 1/6*100%;
+ margin-right: 1/6*100%;
+}
+
+.home-content {
+ padding-top: 14rem;
+}
+
+header {
+ margin-top: 14rem;
+ margin-bottom: 14rem;
+ display: flex;
+
+ &.project-header {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding: 6rem 0;
+
+ .type {
+ line-height: 100%;
+ }
+ }
+
+ h1 {
+ flex: 5;
+ position: relative;
+
+ &::after {
+ content: "_";
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ }
+ }
+
+ .type {
+ margin-bottom: 1rem;
+ }
+
+
+ section {
+ flex: 3;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ vertical-align: bottom;
+
+ p {
+ padding-top: 1rem;
+ }
+
+ &.underscore::before {
+ content: "_";
+ font-size: 6rem;
+ font-weight: 900;
+ color: $color-dark;
+ line-height: 1;
+ margin-top: -5.5rem;
+ position: absolute;
+ right: 0;
+ }
+
+ p {
+ margin-top: 8rem;
+ margin-bottom: 0;
+ }
+ }
+}
+
+hr {
+ border: none;
+ height: 2px;
+ background-color: $color-primary;
+ position: relative;
+
+ &::after {
+ display: block;
+ content: "";
+ height: 10px;
+ width: 30px;
+ background-color: $color-primary;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ }
+
+ &.alternate:nth-of-type(even)::after {
+ left: 0;
+ }
+ &.project_divider {
+ margin-bottom: 8rem;
+ }
+}
+
+span.type {
+ text-transform: uppercase;
+ color: $color-primary;
+ font-weight: 100;
+ font-size: 1rem;
+ display: block;
+
+ &::after {
+ content: " PROJECT";
+ }
+}
+
+span.subtitle {
+ text-transform: uppercase;
+ color: $color-primary;
+ line-height: 2rem;
+ font-weight: 100;
+ font-size: 1.5rem;
+ display: block;
+ margin-top: 2rem;
+ margin-bottom: 1rem;
+ &.bachelor {
+ color: $color-dark;
+
+ }
+}
+
+
+.block {
+ display: block;
+}
+
+.spacer {
+ flex: 1;
+}
+
+.gist {
+ margin-left: 37.5%;
+}
+
+.background {
+ background-color: $color-primary;
+
+ &.master {
+ background-color: $color-dark;
+ color: $color-primary;
+
+ h1 {
+ color: inherit;
+ }
+
+ a {
+ color: $color-background;
+ }
+ }
+
+ .type {
+ color: inherit;
+ }
+}
+
+.background-dark {
+ background-color: $color-dark;
+}
+
+.teaser {
+
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin-bottom: 12rem;
+
+ h3 {
+ width: 37.5%;
+ font-size: 4rem;
+ }
+
+ hr {
+ margin-top: 4rem;
+ width: 100%;
+ }
+
+ div {
+ width: 50%;
+ }
+
+ a {
+ display: block;
+ margin-top: 2rem;
+ text-transform: uppercase;
+ }
+
+ &:nth-child(even) {
+ h4, h3 {
+ text-align: right;
+ }
+
+ div {
+ order: 1;
+ }
+
+ h3 {
+ order: 2;
+ }
+
+ hr {
+ order: 3;
+
+ &::after {
+ left: 0;
+ }
+ }
+ }
+}
+
+.category {
+ text-transform: uppercase;
+ color: $color-primary;
+ font-weight: 100;
+ width: 100%;
+}
+
+.call-to-action {
+ display: flex;
+ flex-wrap: wrap;
+ background-color: $color-primary;
+
+
+ h3 {
+ margin: 0;
+ height: 100%;
+ width: 3/8*100%;
+ padding: 3rem;
+ color: $color-dark;
+ font-size: 3.5rem;
+ text-transform: uppercase;
+ }
+ div {
+ width: 5/8*100%;
+ padding: 3rem;
+ text-align: center;
+ background-color: $color-accent;
+ }
+
+ p {
+ margin: 0;
+ text-align: left;
+ font-size: 1.5rem;
+ line-height: 200%;
+ }
+}
+
+.start {
+ background: $color-primary left repeat fixed url("/img/start-background.svg");
+ height: 100vh;
+
+ .content {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ width: calc(4 / 6 * 100%);
+ height: 100%;
+ margin: auto;
+ padding-top: 10rem;
+
+ h1 {
+ font-size: 5rem;
+ }
+
+ p {
+ margin-top: 3rem;
+ margin-left: 0.4rem;
+ margin-bottom: 0;
+ }
+
+ .live {
+ flex-direction: column;
+ align-items: center;
+
+ .keyvisual-live {
+
+ width: calc(3 / 8 * 100%);
+ margin-bottom: 0;
+ padding-top: 4rem;
+ }
+
+ h1 {
+ margin-top: 4rem;
+ text-align: center;
+ }
+
+ div {
+ margin-top: 4rem;
+ text-align: center;
+
+ &::after {
+ content: none;
+ }
+ }
+
+
+ a {
+ color: $color-background;
+ margin: 0 1rem;
+
+ &:hover {
+ color: $color-accent;
+ }
+
+ button {
+ margin-top: 0;
+ }
+ }
+ }
+
+ div {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-end;
+
+ div {
+ display: block;
+ margin-top: 0rem;
+
+ &::after {
+ content: "_";
+ font-size: 5rem;
+ font-weight: 800;
+ }
+ }
+ }
+
+ div:first-child {
+ img {
+ width: calc(3/8 * 100%);
+ }
+ }
+
+ div:last-child {
+ margin-bottom: 3rem;
+
+ h1 {
+ padding-top: 0;
+ color: $color-accent;
+ text-align: right;
+ }
+ }
+ }
+
+ .deco-01 {
+ position: absolute;
+ left: calc(1 / 12 * 100%);
+ top: 25vh;
+ }
+
+ .deco-02 {
+ position: absolute;
+ right: calc(1 / 12 * 100%);
+ top: 75vh;
+ }
+}
+
+.projects-list-entry {
+ display: flex;
+ justify-content: space-between;
+ margin: 15rem 0 7rem 0;
+
+ &:first-of-type {
+ margin-top: 8rem;
+ }
+
+ p {
+ margin: 4rem 0 2rem 0;
+ }
+
+ a {
+ text-transform: uppercase;
+ }
+
+ img {
+ width: 3/8*100%;
+ height: auto;
+ align-self: center;
+ margin-left: 1/8*100%;
+ box-shadow: 10px 10px $color-dark;
+ }
+
+ &:nth-of-type(even) {
+ flex-direction: row-reverse;
+
+ img {
+ margin-left: 0;
+ margin-right: 1/8*100%;
+ }
+ }
+}
+
+.project-menu {
+ position: sticky;
+ z-index: 1;
+ top: 5rem;
+ margin-bottom: 8rem;
+
+ ul {
+ margin: 0 1/6*100%;
+ display: flex;
+ }
+
+ li {
+ padding: 0.5rem 1.2rem;
+ white-space: nowrap;
+
+ a {
+ color: $color-background;
+ }
+
+ &.active {
+ background: $color-background;
+
+ a {
+ color: $color-dark;
+ }
+ }
+ }
+}
+
+.mobile-menu {
+ display: none;
+}
+
+.project {
+ > *:first-child {
+ margin-top: 0;
+ }
+
+ .project-link {
+ display: inline-flex;
+ align-items: center;
+ text-transform: uppercase;
+ text-decoration: none;
+ margin: 0 4rem 3rem 0;
+
+ &:last-of-type {
+ margin-right: 0;
+ }
+
+ img {
+ margin-right: 1rem;
+ }
+ }
+
+ .intro, blockquote {
+ font-size: 2rem;
+ line-height: 1.666;
+ color: $color-primary;
+ }
+
+ .intro {
+ margin-left: 0;
+ margin-bottom: 6rem;
+ }
+
+ & > p {
+ margin: 2rem 0 2rem 3/8*100%;
+ }
+
+ a {
+ text-decoration: underline;
+ }
+
+ ul {
+ list-style: none;
+ margin: 0;
+
+ li {
+ margin-left: 2rem;
+ margin-top: .5rem;
+ }
+
+ li::before {
+ content: "-> ";
+ color: $color-primary;
+ margin-left: -2rem;
+ }
+ }
+
+ section, figure, .mediathek-embed {
+ margin: 6rem 0;
+ }
+
+ section {
+ display: flex;
+
+ h3 {
+ flex: 2;
+ }
+
+ .content {
+ flex: 5;
+
+ p:first-of-type {
+ margin-top: 0;
+ }
+
+ p:last-of-type {
+ margin-bottom: 0;
+ }
+ }
+ }
+
+ blockquote {
+ font-style: italic;
+ margin: 0 1/8*100% 0 2/8*100%;
+ }
+
+ .mediathek-embed {
+
+ .mediathek-player {
+ position: relative;
+
+ img {
+ display: block;
+ width: 100%;
+ height: auto;
+ }
+
+ iframe {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+
+ figure {
+ figcaption {
+ margin-top: 1rem;
+ color: $color-primary;
+ text-align: right;
+ text-transform: uppercase;
+ }
+
+ img {
+ display: block;
+ margin: 0 auto;
+
+ & + figcaption {
+ margin-left: 3/8*100%;
+ text-align: left;
+ }
+ }
+ }
+
+ .gallery {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+
+ figure {
+ width: 1/3 * 100%;
+ padding: 0 4rem;
+ margin: 0 0 6rem 0;
+
+ figcaption {
+ margin: 1rem 0 0 0;
+ text-align: center;
+ }
+
+ &.team-member {
+ img {
+ border-radius: 50%;
+ }
+
+ figcaption {
+ text-transform: none;
+ font-weight: bold;
+ }
+ }
+ }
+ }
+
+ .infobox {
+ border: 0.3rem solid $color-primary;
+ padding: 1.5rem;
+ }
+}
+
+.schedule > section {
+ ul > li {
+ display: flex;
+ margin-top: 1rem;
+
+ $time-width: 1/8 * 100%;
+
+ p {
+ padding-top: .4rem;
+ width: $time-width;
+ }
+
+ div {
+ flex-grow: 2;
+ display: flex;
+ justify-content: space-between;
+ flex-direction: column;
+ box-sizing: border-box;
+ min-height: 8rem;
+ padding: 1rem;
+ width: 100% - $time-width;
+
+ h3 {
+ margin: 0 0 1rem 0;
+ font-size: 1.6rem;
+ }
+
+ a {
+ color: $color-background;
+ text-transform: uppercase;
+ line-height: 100%;
+ }
+
+ a:hover {
+ color: $color-accent;
+ }
+
+
+ }
+
+
+ .general {
+ border-top: $color-primary 2px solid;
+ background-color: transparentize($color-primary, 0.9);
+ }
+
+ .bachelor {
+ border-top: $color-dark 2px solid;
+ background-color: $color-primary;
+
+ h3 {
+ color: $color-dark;
+ }
+ }
+
+ .master {
+ color: $color-primary;
+ border-top: $color-primary 2px solid;
+ background-color: $color-dark;
+ }
+ }
+}
+
+.dates > section {
+ display: flex;
+ margin: 3rem 0;
+
+ div:first-of-type {
+ flex: 3
+ }
+
+ div:last-of-type {
+ flex: 5;
+ color: $color-primary;
+
+ h3 {
+ margin-top: 0;
+ margin-bottom: 1rem;
+ }
+ }
+}
+
+.contacts > section {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ margin: 3rem 0;
+
+ h3 {
+ margin-top: 0;
+ margin-bottom: 1rem;
+ width: 100%;
+ }
+
+ p {
+ margin: 0;
+ }
+
+ p:first-of-type {
+ color: $color-primary;
+ width: 4/8 * 100%;
+ }
+
+ p:last-of-type {
+ width: 3/8 * 100%;
+ font-weight: 900;
+ position: relative;
+
+ &::before {
+ content: "->";
+ position: absolute;
+ left: -2rem;
+ }
+ }
+
+ a {
+ display: block;
+ font-weight: normal;
+ }
+}
+
+
+
+/****** Mobile View ******/
+
+@media (max-width: 576px) {
+
+ main, header, .project-menu ul {
+ margin-left: 1/18*100%;
+ margin-right: 1/18*100%;
+ }
+
+ h1 {
+ font-size: 3rem;
+ }
+
+ h3 {
+ font-size: 2rem;
+ }
+
+ nav {
+ padding: 1rem 1/18*100%;
+ flex-wrap: wrap;
+
+ ul {
+ width: 100%;
+ display: block;
+ overflow: hidden;
+ height: 0;
+ transition: height .3s cubic-bezier(0.37, 0, 0.63, 1);
+
+ li {
+ text-align: right;
+ font-size: 1.1rem;
+ line-height: 350%;
+ margin: 1rem 0 0 0;
+ border-bottom: 2px solid $color-background;
+
+ &:first-of-type {
+ margin-top: 2rem;
+ }
+
+ &::after {
+ display: block;
+ content: "";
+ height: 8px;
+ width: 30px;
+ background-color: $color-background;
+ position: relative;
+ bottom: 0;
+ left: 0;
+ z-index: 99;
+ }
+ }
+ }
+
+ label {
+ cursor: pointer;
+ padding: 3px 0;
+ user-select: none;
+
+ span {
+ background: $color-background;
+ display: block;
+ height: 2px;
+ position: relative;
+ width: 16px;
+ transition: background .2s ease-out;
+
+ &::before, &::after {
+ background: $color-background;
+ content: '';
+ display: block;
+ height: 100%;
+ width: 100%;
+ position: absolute;
+ transition: all .2s ease-out;
+ }
+
+ &::before {
+ top: -5px;
+ }
+
+ &::after {
+ top: 5px;
+ }
+ }
+ }
+
+ input {
+
+ &:checked ~ ul {
+ height: 100vh;
+ }
+
+ &:checked ~ label > span {
+ background: transparent;
+
+ &::before {
+ transform: rotate(-45deg);
+ top: 0;
+ }
+
+ &::after {
+ transform: rotate(45deg);
+ top: 0;
+ }
+ }
+ }
+ }
+
+ .home-content {
+ padding-top: 5rem;
+ }
+
+ header {
+ display: block;
+ margin-top: 8rem;
+ margin-bottom: 5rem;
+
+ section {
+
+ &.underscore::before {
+ content: "";
+ }
+
+ p {
+ margin-top: 3rem;
+ }
+
+ display: block;
+
+ ul {
+
+ }
+ }
+ }
+
+ footer {
+ margin-top: 1/18*100%;
+ padding: 1/18*100%;
+
+ ul {
+ display: block;
+
+ li {
+ text-align: right;
+ margin-right: 0;
+ margin-bottom: .5rem;
+ }
+ }
+
+ a {
+ }
+ }
+
+ .start {
+ background-image: none;
+
+ .content {
+ display: block;
+ width: auto;
+ margin-left: 1/18*100%;
+ margin-right: 1/18*100%;
+ padding-top: 6rem;
+
+ .live {
+ flex-direction: column;
+ align-items: center;
+
+ .keyvisual-live {
+ width: calc(6 / 8 * 100%);
+ }
+
+ h1 {
+ padding-top: 0;
+ text-align: center;
+ }
+
+ a {
+ display: block;
+ }
+ div:last-child {
+ margin-top: 4rem;
+ width: 100%;
+ position: relative;
+ bottom: auto;
+ }
+ }
+
+ h1 {
+ font-size: 2.5rem;
+ }
+
+ div:first-child {
+ display: block;
+ margin: 0;
+
+ div:after {
+ content: "";
+ }
+
+
+ img {
+ display: block;
+ width: 90%;
+ margin: 2rem auto;
+ }
+ }
+
+ div:last-child {
+ width: 16/18*100%;
+ position: absolute;
+ bottom: 2rem;
+ margin: 0;
+
+ a {
+ height: 5rem;
+
+ img {
+ height: 100%;
+ }
+ }
+
+ }
+
+ p {
+ margin-top: 1rem;
+ margin-left: 0;
+ }
+
+ }
+
+ .deco-01, .deco-02 {
+ display: none;
+ }
+
+ }
+
+ .teaser {
+ display: block;
+ margin-bottom: 3rem;
+
+ h3, p {
+ width: auto;
+ }
+
+ h3 {
+ font-size: 2rem;
+ }
+
+ hr {
+ margin-top: 3rem;
+ margin-bottom: 0;
+ }
+
+ div {
+ width: auto;
+
+ }
+
+ &:nth-child(even) {
+ h4, h3 {
+ text-align: inherit;
+ }
+
+ hr {
+ &::after {
+ left:auto;
+ }
+ }
+ }
+
+ }
+
+ .call-to-action {
+ display: block;
+
+ h3, div {
+ padding: 1/18*100%;
+ }
+
+ h3 {
+ width: auto;
+ font-size: 2.5rem;
+ }
+
+ div {
+ width: auto;
+ }
+
+ p {
+ font-size: 1rem;
+ }
+ }
+
+ .schedule > section {
+ ul > li {
+ display: block;
+
+ div {
+ width: inherit;
+ }
+ }
+ }
+
+ .dates > section {
+ display: block;
+
+ div:last-of-type {
+ h3 {
+ margin-top: .5rem;
+ }
+ }
+ }
+
+ .contacts > section {
+ display: block;
+
+ p, p:last-of-type, p:first-of-type {
+ width: auto;
+ }
+
+ p:last-of-type {
+ margin-top: 2rem;
+ margin-left: 2rem;
+ }
+ }
+
+ .projects-list-entry {
+ display: block;
+ margin-top: 4rem;
+ margin-bottom: 5rem;
+
+ &:first-of-type {
+ margin-top: 0;
+ }
+
+ p {
+ margin-top: 2rem;
+ }
+
+ img {
+ margin-top: 2rem;
+ margin-left: 0;
+ width: 100%;
+ }
+
+ }
+
+ .project {
+ .intro, blockquote {
+ font-size: 1.5rem;
+ line-height: 1.666;
+ }
+
+ section, figure, .mediathek-embed {
+ margin: 4rem 0;
+ }
+
+ .intro {
+ margin-bottom: 4rem;
+ }
+
+ section {
+ display: block;
+ }
+
+ blockquote {
+ margin: 0;
+ }
+
+ p {
+ margin: 2rem 0;
+ }
+
+ figure {
+ img + figcaption {
+ margin-left: 0;
+ }
+ }
+
+ .gist {
+ margin-left: 0;
+ }
+
+ .gallery {
+ figure.team-member {
+ width: 60%;
+ padding: 0;
+ margin-bottom: 3rem;
+ }
+ }
+
+ .project-link {
+ display: flex;
+ margin-bottom: 1rem;
+
+ img {
+ width: 3rem;
+ }
+
+ &:last-of-type {
+ margin-bottom: 4rem;
+ }
+ }
+ }
+
+ .project-menu {
+ top: 4rem;
+ margin-bottom: 6rem;
+ }
+
+ .desktop-menu {
+ display: none;
+ }
+
+ .mobile-menu {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ input {
+ display: none;
+
+ &:checked ~ .dropdown-menu {
+ display: block;
+ }
+ }
+
+ label {
+ cursor: pointer;
+ padding: 10px 1/18*100%;
+ user-select: none;
+
+ span {
+ background: $color-background;
+ display: block;
+ height: 4px;
+ width: 4px;
+ border-radius: 50%;
+ position: relative;
+ transition: background .2s ease-out;
+
+ &::before, &::after {
+ background: $color-background;
+ content: '';
+ display: block;
+ height: 100%;
+ width: 100%;
+ border-radius: 50%;
+ position: absolute;
+ transition: all .2s ease-out;
+ }
+
+ &::before {
+ top: -6px;
+ }
+
+ &::after {
+ top: 6px;
+ }
+ }
+ }
+
+ .dropdown-menu {
+ display: none;
+ position: absolute;
+ top: 2.5rem;
+ right: 1rem;
+ width: 50%;
+ padding: 0.5rem 0;
+ background-color: $color-background;
+
+ ul {
+ display: flex;
+ flex-direction: column;
+ text-align: right;
+ margin: 0;
+
+ li {
+ width: 100%;
+ padding: 0.5rem 1.5rem;
+ }
+ }
+
+ a {
+ color: $color-link;
+ }
+ }
+
+ &.bachelor {
+ .dropdown-menu {
+ border: 1px solid $color-primary;
+
+ li a {
+ color: $color-primary;
+ }
+
+ li.active {
+ background-color: $color-primary;
+
+ a {
+ color: $color-background;
+ }
+ }
+ }
+ }
+
+ &.master {
+ .dropdown-menu {
+ border: 1px solid $color-dark;
+
+ li a {
+ color: $color-dark;
+ }
+
+ li.active {
+ background-color: $color-dark;
+
+ a {
+ color: $color-primary;
+ }
+ }
+ }
+ }
+ }
+}
+.warn {
+ color: $color-accent;
+ font-weight: bold;
+ font-size: 2rem;
+ &.small {
+ font-size: 1rem;
+ }
+}
diff --git a/themes/showtime-theme-2024/layouts/404.html b/themes/showtime-theme-2024/layouts/404.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/themes/showtime-theme-2024/layouts/_default/_markup/render-codeblock-mermaid.html b/themes/showtime-theme-2024/layouts/_default/_markup/render-codeblock-mermaid.html
new file mode 100644
index 000000000..2c85ab3b3
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/_markup/render-codeblock-mermaid.html
@@ -0,0 +1,5 @@
+
+ {{- .Inner | safeHTML }}
+
+{{ .Page.Store.Set "hasMermaid" true }}
+
\ No newline at end of file
diff --git a/themes/showtime-theme-2024/layouts/_default/archive.html b/themes/showtime-theme-2024/layouts/_default/archive.html
new file mode 100644
index 000000000..75b30f09f
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/archive.html
@@ -0,0 +1,54 @@
+{{ define "main" }}
+
+
+
+
+
+ {{ $current_semester := slice (.Site.GetPage .Site.Params.current_semester) }}
+ {{ $all_weight_reversed := sort .Site.Pages ".Weight" "desc" }}
+ {{ $all_weight_reversed = where $all_weight_reversed "Params.category" "project-archive" }}
+ {{ $all := append $all_weight_reversed $current_semester }}
+ {{ $all = $all_weight_reversed}}
+
+ {{ range $all }}
+
+
+ {{ $semester := .Title }}
+ {{ range .Pages }}
+
+
+
+
+ {{ end }}
+
+{{ end }}
+
+
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/_default/baseof.html b/themes/showtime-theme-2024/layouts/_default/baseof.html
new file mode 100644
index 000000000..64d137bd8
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/baseof.html
@@ -0,0 +1,53 @@
+
+
+ {{- partial "head.html" . -}}
+
+
+
+
+
+ IMI× ST {{ partial "semester" (dict "semester" .Site.Params.current_semester)}}
+ {{ if not (eq .Site.BaseURL .Site.Params.Production_site )}}
+
+ {{ .Site.Params.Preview_message}}
+ {{ with .Site.Params.Preview_url}}
+
↗️
+ {{ end }}
+
+
+ ({{ if .Site.BuildDrafts }}with{{ else }}without{{ end }} drafts)
+
+ {{ end }}
+
+ Projects
+ Schedule
+ Dates
+ {{ $archive_page := .GetPage .Site.Params.Archive_path }}
+ {{ with $archive_page}}
+ Archive
+ {{ else }}
+ Archive
+ {{ end }}
+ Contact
+ {{- block "project_navigation" . }}{{- end }}
+
+
+
+
+
+ {{- block "main" . }}{{- end }}
+ {{- partial "footer.html" . -}}
+
+ {{ if or (.Store.Get "hasMermaid") (.Params.HasMermaid) }}
+
+{{ end }}
+
+
+
+{{ define "project_navigation" }}
+ {{ $first_project := partial "project/first_project_in_semester.page" .}}
+ Browse Projects
+{{ end }}
\ No newline at end of file
diff --git a/themes/showtime-theme-2024/layouts/_default/contact.html b/themes/showtime-theme-2024/layouts/_default/contact.html
new file mode 100644
index 000000000..e4e9a6f78
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/contact.html
@@ -0,0 +1,27 @@
+{{ define "main" }}
+
+
+ {{ range .Site.Data.contacts.contacts }}
+
+ {{ .title }}
+
+ {{ .description }}
+
+
+ {{ .contact }}
+ {{ .email }}
+
+
+
+ {{ end }}
+
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/_default/dates.html b/themes/showtime-theme-2024/layouts/_default/dates.html
new file mode 100644
index 000000000..1ff72222f
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/dates.html
@@ -0,0 +1,24 @@
+{{ define "main" }}
+
+
+ {{ range .Site.Data.dates.dates }}
+
+ {{ .date }}
+
+
{{ .title }}
+ {{ .description }}
+
+
+
+ {{ end }}
+
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/_default/list.html b/themes/showtime-theme-2024/layouts/_default/list.html
new file mode 100644
index 000000000..25904c715
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/list.html
@@ -0,0 +1,4 @@
+{{ define "main" }}
+ {{ .Title }}
+ {{ .Content }}
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/_default/project.html b/themes/showtime-theme-2024/layouts/_default/project.html
new file mode 100644
index 000000000..4f9eff542
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/project.html
@@ -0,0 +1,106 @@
+{{ define "project_navigation" }}
+ {{ partial "project/next_project.html" . }}
+{{ end }}
+
+
+{{ define "main" }}
+
+
+
+
+
+
+ {{ if .IsNode }}
+ {{ with .CurrentSection.Params.demo_link }}
+
+
+ Demo
+
+ {{ end }}
+ {{ with .CurrentSection.Params.source_link }}
+
+
+ Source_Code
+
+ {{ end }}
+ {{ with .CurrentSection.Params.website_link }}
+
+
+ Website
+
+ {{ end }}
+
+ {{ if ne "" .Params.claim }}{{ .Params.claim }}
+ {{ else }}{{ .Params.card_description }}{{ end }}
+
+ {{ end }}
+ {{ with .Params.Intro }}
+ {{ . }}
+ {{ end }}
+ {{ with .Params.Abstract }}
+
+ Abstract
+
+
+ {{ . }}
+
+
+ {{ end }}
+ {{ .Content }}
+
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/_default/projects_list.html b/themes/showtime-theme-2024/layouts/_default/projects_list.html
new file mode 100644
index 000000000..e92455ceb
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/projects_list.html
@@ -0,0 +1,47 @@
+{{ define "main" }}
+
+
+{{ $semester := .Title }}
+{{ $title := "Archive" }}
+{{ $show_semester_selection := true}}
+
+
+{{ if eq .Title "Projects" }}
+ {{ $semester = .Site.Params.current_semester }}
+ {{ $title = .Title }}
+ {{ $show_semester_selection = false}}
+{{ end }}
+
+
+
+
+ {{ $title }}
+
+ {{ partial "semester" (dict "type" "short" "semester" $semester) }}
+
+
+
+
+
+
+ {{ if $show_semester_selection }}
+
+ {{ partial "semester_selection.html" . }}
+
+ {{ end }}
+
+ {{- .Content -}}
+
+
+
+
+ {{ $current_semester_page := .Site.GetPage $semester}}
+
+ {{ partial "project/list_partial.html" $current_semester_page }}
+
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/_default/projects_list_debug.html b/themes/showtime-theme-2024/layouts/_default/projects_list_debug.html
new file mode 100644
index 000000000..ad2380d46
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/projects_list_debug.html
@@ -0,0 +1,45 @@
+{{ define "main" }}
+
+{{ $semester := .Title }}
+{{ $title := "Project Overview" }}
+{{ $show_semester_selection := false}}
+
+{{ if eq .Title "Projects" }}
+ {{ $semester = .Site.Params.current_semester }}
+ {{ $title = .Title }}
+ {{ $show_semester_selection = false}}
+{{ end }}
+{{ $current_semester_page := .Site.GetPage $semester}}
+
+
+
+ {{ $title }}
+
+ {{ partial "semester" (dict "type" "short" "semester" $semester) }}
+
+
+
+
+
+
+ {{ if $show_semester_selection }}{{ partial "semester_selection.html" . }}{{ end }}
+
+
+ {{- .Content -}}
+ {{ partial "project/short_list.html" $current_semester_page }}
+
+
+
+
+
+
+
+
+ {{ partial "project/meta_data_overview.html" $current_semester_page }}
+
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/_default/schedule.html b/themes/showtime-theme-2024/layouts/_default/schedule.html
new file mode 100644
index 000000000..fd57cea8b
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/schedule.html
@@ -0,0 +1,70 @@
+{{ define "main" }}
+
+
+ {{ .Title }}
+ {{ partial "semester" (dict "type" "short" "semester" .Site.Params.current_semester) }}
+
+
+
+
+
+
+
+ {{ $semester := .Site.Params.current_semester }}
+ {{ $semester_projects := where $.Site.Pages "Section" $semester}}
+
+ {{ range .Site.Data.schedule.slot }}
+
+ {{ $slot_title := .title }}
+ {{ $slot_text := "" }}
+ {{ $slot_link := "#" }}
+ {{ $slot_class := "general" }}
+ {{ if isset . "class"}}
+ {{ $slot_class = .class }}
+ {{ end }}
+ {{ if isset . "text"}}
+ {{ $slot_text = .text }}
+ {{ end }}
+ {{ if isset . "projectDetail"}}
+ {{ $slot_link = .projectDetail }}
+ {{ end }}
+
+ {{ if isset . "project_id"}}
+ {{ $project_index := index (where $semester_projects ".Params.project_id" .project_id ) 0 }}
+ {{ with $project_index}}
+ {{ $slot_title = printf "%s - %s: %s" .Params.project_id .Title .Params.Subtitle}}
+ {{ $slot_link = .RelPermalink}}
+ {{ with .Params.sub_title }}
+ {{ $slot_text = printf "%s - %s" $slot_text . | lower }}
+ {{ end }}
+ {{ end }}
+
+ {{ if in .project_id "B" }}
+ {{ $slot_class = "bachelor" }}
+ {{ else }}
+ {{ if in .project_id "M" }}
+ {{ $slot_class = "master" }}
+ {{ end}}
+ {{ end}}
+
+
+ {{ end }}
+
+
+ {{ .time }}
+
+
{{ $slot_title }}
+ {{ $slot_text }}
+ {{ if not (eq $slot_link "#") }}
+
-> Project_Details
+ {{ end }}
+ {{ end }}
+
+
+
+
+
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/_default/single.html b/themes/showtime-theme-2024/layouts/_default/single.html
new file mode 100644
index 000000000..2bcf2e1aa
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/_default/single.html
@@ -0,0 +1,14 @@
+{{ define "main" }}
+
+
+ {{ .Content }}
+
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/index.html b/themes/showtime-theme-2024/layouts/index.html
new file mode 100644
index 000000000..847f2a284
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/index.html
@@ -0,0 +1,70 @@
+{{ define "main" }}
+
+
+
+
+ {{ if eq .Params.is_live "false" }}
+
+
+
+ IMI× Showtime
+ {{ partial "semester" (dict "type" "short" "semester" .Site.Params.current_semester) }}
+
+
+
+ Projects showcase
+ {{ partial "semester" (dict "type" "long" "semester" .Site.Params.current_semester) }}
+
+ International Media and Computing B/M
+ HTW Berlin
+
+
+
+
+ {{ else }}
+
+
+
+ IMI× ST
+ {{ partial "semester" (dict "semester" .Site.Params.current_semester) }} is live!
+
+
+
+
+ {{end}}
+
+
+ {{ if eq .Params.is_live "false" }}
+
+ _
+ {{ $std := .Params.showtime_save_the_date }}
+ {{ if (not (eq "" $std)) }}
+ {{ $std }} {{ end }}
+ {{ .Params.showtime_date }}
+ {{ .Params.showtime_place }}
+
+ {{end}}
+
+
+
+
+
+ {{ .Content }}
+
+ Work withour students
+
+
+
+
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/partials/footer.html b/themes/showtime-theme-2024/layouts/partials/footer.html
new file mode 100644
index 000000000..f7120ab95
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/footer.html
@@ -0,0 +1,53 @@
+
+ {{ if .Site.Params.Debug }}
+
+ {{ $this_project := .CurrentSection }}
+ .CurrentSection: {{ .CurrentSection }}
+ .CurrentSection.Parent: {{ .CurrentSection.Parent }}
+ {{ with .CurrentSection.Parent }}
+ .CurrentSection.Parent.Pages: {{ .Pages }}
+ ({{ range .Pages }}
+ {{ . }},
+ {{ end }})
+ This: {{ $this_project }}
+ Next: {{ .Pages.Next . }}
+ Prev: {{ .Pages.Prev . }}
+ NextInSection: {{ $this_project.NextInSection }}
+ PrevInSection: #{{ $this_project.PrevInSection }}##
+ {{ end }}
+
+ {{ with . }}
+ {{ $pages := .Pages }}
+
+
+ {{ .}}
+ {{ .CurrentSection }}
+
+
+ {{ with $pages.Next . }}
+ <
+ {{ end }}{{ .CurrentSection.Params.project_id }}
+
+ {{ with $pages.Prev . }}
+ >
+ {{ end }}
+
+ {{ end }}
+
+
+
+
+
+
+ {{ end }}
+
+
+
+
diff --git a/themes/showtime-theme-2024/layouts/partials/head.html b/themes/showtime-theme-2024/layouts/partials/head.html
new file mode 100644
index 000000000..5efd89cb3
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/head.html
@@ -0,0 +1,14 @@
+
+
+
+
+{{ $sassTemplate := resources.Get "sass/main.template" }}
+{{- $options := dict "transpiler" "libsass" "targetPath" "css/style.css" }}
+{{- with $sassTemplate | resources.ExecuteAsTemplate "main.scss" . | toCSS $options | minify | fingerprint -}}
+
+{{ end }}
+
+
+
+
+IMI Showtime - HTW Berlin
diff --git a/themes/showtime-theme-2024/layouts/partials/header.html b/themes/showtime-theme-2024/layouts/partials/header.html
new file mode 100644
index 000000000..d8ce3fba6
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/header.html
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/themes/showtime-theme-2024/layouts/partials/project/anchor.html b/themes/showtime-theme-2024/layouts/partials/project/anchor.html
new file mode 100644
index 000000000..b9f276ab9
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/project/anchor.html
@@ -0,0 +1,8 @@
+{{- $project_id := .id -}}
+{{- $anchor_prefix := .a_pref -}}
+{{- printf "%s_%s" $project_id $anchor_prefix -}}
+{{/*
+ usage:
+ partial "project/anchor.html" (dict "id" .Params.project_id "a_pref" "some_prefix" )
+
+ */}}
\ No newline at end of file
diff --git a/themes/showtime-theme-2024/layouts/partials/project/first_project.page b/themes/showtime-theme-2024/layouts/partials/project/first_project.page
new file mode 100644
index 000000000..921a54f7e
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/project/first_project.page
@@ -0,0 +1,23 @@
+
+{{ $all_semester := where .Site.Pages.ByWeight "Params.category" "project-archive" }}
+
+ {{ $all_projects := slice }}
+ {{ $next_semester_project := "" }}
+ {{ $prev_semester_project := "" }}
+
+ {{ range $all_semester }}
+ {{ $sem := .}}
+ {{- /* Bachelor/Master */ -}}
+ {{ $projects_in_s := slice}}
+ {{ range .Pages }}
+ {{ $projects_in_s_bm := where .Pages "Params.project_id" "ne" "" }}
+ {{ $projects_in_s_bm = .Pages }}
+ {{ $projects_in_s_bm = sort $projects_in_s_bm "Params.Project_id"}}
+ {{ $projects_in_s = $projects_in_s | append $projects_in_s_bm }}
+ {{ end }}
+ {{ $all_projects = $all_projects | append $projects_in_s }}
+
+ {{ end }}
+
+
+{{ return index $all_projects 0 }}
diff --git a/themes/showtime-theme-2024/layouts/partials/project/first_project_in_semester.page b/themes/showtime-theme-2024/layouts/partials/project/first_project_in_semester.page
new file mode 100644
index 000000000..f55e4b1cd
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/project/first_project_in_semester.page
@@ -0,0 +1,22 @@
+
+{{ $all_semester := where .Site.Pages.ByWeight "Params.category" "project-archive" }}
+
+ {{ $all_projects := slice }}
+ {{ $next_semester_project := "" }}
+ {{ $prev_semester_project := "" }}
+ {{ with .GetPage .Site.Params.current_semester }}
+ {{ $sem := .}}
+ {{- /* Bachelor/Master */ -}}
+ {{ $projects_in_s := slice}}
+ {{ range .Pages }}
+ {{ $projects_in_s_bm := where .Pages "Params.project_id" "ne" "" }}
+ {{ $projects_in_s_bm = .Pages }}
+ {{ $projects_in_s_bm = sort $projects_in_s_bm "Params.Project_id"}}
+ {{ $projects_in_s = $projects_in_s | append $projects_in_s_bm }}
+ {{ end }}
+ {{ $all_projects = $all_projects | append $projects_in_s }}
+
+ {{ end }}
+
+
+{{ return index $all_projects 0 }}
diff --git a/themes/showtime-theme-2024/layouts/partials/project/list_partial.html b/themes/showtime-theme-2024/layouts/partials/project/list_partial.html
new file mode 100644
index 000000000..44797d309
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/project/list_partial.html
@@ -0,0 +1,32 @@
+{{ $projects := slice }}
+{{ range .Pages }} {{ $projects = append .Pages $projects}} {{ end }}
+{{ $projects = sort $projects "Params.project_id"}}
+
+ {{ range $projects }}
+
+
+
+ {{ $image := newScratch }}
+ {{ if (and .Params.card_image (.Resources.GetMatch .Params.card_image)) }}
+ {{ $image.Set "src" (.Resources.GetMatch .Params.card_image).RelPermalink }}
+ {{ else }}
+ {{ $image.Set "src" (printf "%s/images/placeholder.png" .Site.BaseURL) }}
+ {{ end }}
+
+
+
+ {{ end }}
+
\ No newline at end of file
diff --git a/themes/showtime-theme-2024/layouts/partials/project/meta_data_overview.html b/themes/showtime-theme-2024/layouts/partials/project/meta_data_overview.html
new file mode 100644
index 000000000..934b717b6
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/project/meta_data_overview.html
@@ -0,0 +1,50 @@
+
+{{/* put disk usage data into a dict */}}
+{{/* see Makefile -> disk_usage_update */}}
+{{ $disk_usages := dict }}
+{{ range .Site.Data.disk_usage.disk_usage }}
+ {{ $disk_usages = merge $disk_usages (dict .path .size )}}
+{{ end }}
+
+
+
+{{ $projects := slice }}
+{{ range .Pages }} {{ $projects = append .Pages $projects}} {{ end }}
+{{ $projects = sort $projects "Params.project_id"}}
+
+
+ {{ range $projects }}
+
+
+
+ {{ .Params.project_id }} {{ .Title }}
+ {{ .Type }}
+ project_id: {{ .Params.project_id }}
+ title: = {{ .Title }}
+ subtitle: = {{ .Params.Subtitle }}
+ team: {{ .Params.Team }} ({{ printf "%T" .Params.Supervisor }})
+ supervisor: {{ .Params.Supervisor }} ({{ printf "%T" .Params.Supervisor }})
+
+ claim = {{ .Params.claim }}
+ abstract = {{ .Params.abstract }}
+ card_description = (deprecated, use claim instead!) = {{ .Params.card_description }}
+
+ url : {{ .RelPermalink }}
+ Disk Usage: {{ $path := (.File.Dir | strings.TrimSuffix "/") }}
+
+ {{ index $disk_usages $path }}
+
+ {{ partial "taxonomies" . }}
+ for data/schedule.toml:
+ {{ partial "project/schedule_data.toml" . }}
+
+
+{{ end }}
+
+
+for data/schedule.toml:
+{{ range $projects }}
+{{ partial "project/schedule_data.toml" . }}
+{{ end }}
+
+
\ No newline at end of file
diff --git a/themes/showtime-theme-2024/layouts/partials/project/next_project.html b/themes/showtime-theme-2024/layouts/partials/project/next_project.html
new file mode 100644
index 000000000..02b5e8a80
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/project/next_project.html
@@ -0,0 +1,96 @@
+{{ if or (eq .Type "Bachelor") (eq .Type "Master") }}
+
+ {{ $this_project := .CurrentSection}}
+ {{ $this_semester := .CurrentSection.Parent.Parent }}
+
+ {{ $this_semester_step1 :=index (findRE "^.*/((ws|ss)..)/.*" .RelPermalink) 0 }}
+ {{ $this_semester_name :=index (findRE "((ws|ss)..)" $this_semester_step1) 0 }}
+ {{ $all_semester := where .Site.Pages.ByWeight "Params.category" "project-archive" }}
+
+
+ {{ $prev_semester := $all_semester.Next $this_semester }}
+ {{ if not $prev_semester }}
+ {{ $prev_semester = index ($all_semester | last 1) 0 }}
+ {{ end }}
+ {{ $next_semester := $all_semester.Prev $this_semester }}
+ {{ if not $next_semester }}
+ {{ $next_semester = index $all_semester 0 }}
+ {{ end }}
+
+ {{- /* Get all projects ordered by semester, then project name . */ -}}
+
+ {{ $semester_first_project := dict }}
+ {{ $all_projects := slice }}
+ {{ $next_semester_project := "" }}
+ {{ $prev_semester_project := "" }}
+
+ {{ range $all_semester }}
+ {{ $sem := .}}
+ {{- /* Bachelor/Master */ -}}
+ {{ $projects_in_s := slice}}
+ {{ range .Pages }}
+ {{ $projects_in_s_bm := where .Pages "Params.project_id" "ne" "" }}
+ {{ $projects_in_s_bm = .Pages }}
+ {{ $projects_in_s_bm = sort $projects_in_s_bm "Params.Project_id"}}
+ {{ $projects_in_s = $projects_in_s | append $projects_in_s_bm }}
+ {{ end }}
+ {{- /* $all_projects = $all_projects | append $projects_in_s */ -}}
+ {{ if eq $this_semester $sem}}
+ {{ $all_projects = $projects_in_s }}
+ {{ end }}
+ {{ if eq $sem $prev_semester }}
+ {{ $prev_semester_project = index $projects_in_s 0 }}
+ {{ end }}
+ {{ if eq $sem $next_semester }}
+ {{ $next_semester_project = index $projects_in_s 0 }}
+ {{ end }}
+ {{ end }}
+
+
+
+ {{- /* Get all projects in this semester. */ -}}
+
+ {{ $projects_in_this_semester := slice }}
+
+ {{ range where .Site.Pages.ByWeight.Reverse "Params.project_id" "ne" "" }}
+ {{ $project_semester := index (findRE "((ws|ss)..)" .RelPermalink) 0 }}
+ {{ if eq $project_semester $this_semester_name }}
+ {{ $projects_in_this_semester = $projects_in_this_semester | append . }}
+ {{ end }}
+ {{ end }}
+
+ {{ $projects_in_this_semester := sort $projects_in_this_semester "Params.Project_id" }}
+
+
+
+
+ {{- /* Semester Prev/Next Navigation.
+ This jumps to the first project in the semester
+ */ -}}
+ {{- with $prev_semester_project }}
+ <
+ {{ else }} {{ end -}}
+
+ {{ $this_semester_name -}}
+
+ {{- with $next_semester_project }}
+ >
+ {{ else }} {{ end -}}
+
+
+ {{- /* Project Prev/Next Navigation. */ -}}
+
+{{ $pages := $all_projects}}
+
+{{- with $pages.Next $this_project }}
+<
+{{ else }} {{ end -}}
+
+{{ $this_project.Params.project_id -}}
+
+{{- with $pages.Prev $this_project }}
+ >
+{{ else }} {{ end -}}
+
+
+{{ end }}
\ No newline at end of file
diff --git a/themes/showtime-theme-2024/layouts/partials/project/schedule_data.toml b/themes/showtime-theme-2024/layouts/partials/project/schedule_data.toml
new file mode 100644
index 000000000..aa897a6ba
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/project/schedule_data.toml
@@ -0,0 +1,6 @@
+[[slot]]
+time = "10:00"
+project_id = "{{ .Params.project_id }}"
+# title = "{{ .Params.project_id }} - {{ .Title }}: {{ .Params.Subtitle }}"
+# projectDetail = "{{ .RelPermalink }}"
+# class = "{{ .Type | lower}}"
diff --git a/themes/showtime-theme-2024/layouts/partials/project/short_list.html b/themes/showtime-theme-2024/layouts/partials/project/short_list.html
new file mode 100644
index 000000000..81af05352
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/project/short_list.html
@@ -0,0 +1,18 @@
+
+
+
+{{ $projects := slice }}
+{{ range .Pages }} {{ $projects = append .Pages $projects}} {{ end }}
+{{ $projects = sort $projects "Params.project_id"}}
+{{ $anchor_prefix := "meta_list"}}
+
+
+ {{ range $projects }}
+
+
+{{ end }}
+
diff --git a/themes/showtime-theme-2024/layouts/partials/semester.html b/themes/showtime-theme-2024/layouts/partials/semester.html
new file mode 100644
index 000000000..be8bc0e06
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/semester.html
@@ -0,0 +1,31 @@
+{{ $semester := .semester }}
+{{ $type := slicestr $semester 0 2 }}
+{{ $year := slicestr $semester 2 }}
+
+{{ if eq .type "long" }}
+ {{ if eq $type "ws" }}
+ Winter semester
+ {{ else }}
+ Summer semester
+ {{ end }}
+{{ else if eq .type "short" }}
+ {{ if eq $type "ws" }}
+ winter
+ {{ else }}
+ summer
+ {{ end }}
+{{ end }}
+
+{{ if eq $type "ss" }}
+ {{ if eq (len $year) 2 }}
+ 20{{ print $year }}
+ {{ else }}
+ {{ print $year }}
+ {{ end }}
+{{ else if eq $type "ws" }}
+ {{ if and (eq (len $year) 2) (eq .type "long") }}
+ 20{{ print $year }}/{{ print (add (int $year) 1) }}
+ {{ else }}
+ {{ print $year }}/{{ print (add (int $year) 1) }}
+ {{ end }}
+{{ end }}
diff --git a/themes/showtime-theme-2024/layouts/partials/semester_selection.html b/themes/showtime-theme-2024/layouts/partials/semester_selection.html
new file mode 100644
index 000000000..e980fe061
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/partials/semester_selection.html
@@ -0,0 +1,14 @@
+
+Explore the projects of previous semesters - or see
+ a complete archive overview.
+
+
+
+
+ Complete Overview
+ {{ range where .Site.Pages.ByWeight.Reverse "Params.category" "project-archive" }}
+ {{ .Params.full_title }}
+ {{ end }}
+
+
+
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/archive-path.html b/themes/showtime-theme-2024/layouts/shortcodes/archive-path.html
new file mode 100644
index 000000000..360dc502b
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/archive-path.html
@@ -0,0 +1 @@
+{{- .Site.Params.Archive_path -}}
\ No newline at end of file
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/gallery.html b/themes/showtime-theme-2024/layouts/shortcodes/gallery.html
new file mode 100644
index 000000000..6ae413627
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/gallery.html
@@ -0,0 +1,3 @@
+
+ {{ .Inner | markdownify }}
+
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/image-float.html b/themes/showtime-theme-2024/layouts/shortcodes/image-float.html
new file mode 100644
index 000000000..441a54e39
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/image-float.html
@@ -0,0 +1,35 @@
+{{ $image := newScratch }}
+{{ if .IsNamedParams }}
+ {{ if $.Page.Resources.GetMatch (.Get "src") }}
+ {{ $image.Set "src" ($.Page.Resources.GetMatch (.Get "src")) }}
+ {{ else }}
+ {{ $image.Set "src" ($.Page.Parent.Resources.GetMatch (.Get "src")) }}
+ {{ end }}
+ {{ with .Get "alt"}}
+ {{ $image.Set "alt" . }}
+ {{ end }}
+ {{ $image.Set "caption" (.Get "caption") }}
+
+ {{- with .Get "float"}}
+ {{ $image.Set "float" . }}
+ {{ end -}}
+
+{{ else }}
+ {{ if $.Page.Resources.GetMatch (.Get 0) }}
+ {{ $image.Set "src" ($.Page.Resources.GetMatch (.Get 0)) }}
+ {{ else }}
+ {{ $image.Set "src" ($.Page.Parent.Resources.GetMatch (.Get 0)) }}
+ {{ end }}
+ {{ $image.Set "alt" (.Get 1) }}
+ {{ $image.Set "caption" (.Get 2) }}
+{{ end }}
+
+
+
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/image.html b/themes/showtime-theme-2024/layouts/shortcodes/image.html
new file mode 100644
index 000000000..c75fbd741
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/image.html
@@ -0,0 +1,25 @@
+{{ $image := newScratch }}
+{{ if .IsNamedParams }}
+ {{ if $.Page.Resources.GetMatch (.Get "src") }}
+ {{ $image.Set "src" ($.Page.Resources.GetMatch (.Get "src")) }}
+ {{ else }}
+ {{ $image.Set "src" ($.Page.Parent.Resources.GetMatch (.Get "src")) }}
+ {{ end }}
+ {{ $image.Set "alt" (.Get "alt") }}
+ {{ $image.Set "caption" (.Get "caption") }}
+{{ else }}
+ {{ if $.Page.Resources.GetMatch (.Get 0) }}
+ {{ $image.Set "src" ($.Page.Resources.GetMatch (.Get 0)) }}
+ {{ else }}
+ {{ $image.Set "src" ($.Page.Parent.Resources.GetMatch (.Get 0)) }}
+ {{ end }}
+ {{ $image.Set "alt" (.Get 1) }}
+ {{ $image.Set "caption" (.Get 2) }}
+{{ end }}
+
+
+
+{{ if $image.Get "caption" }}
+{{ $image.Get "caption" }}
+{{ end }}
+
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/infobox.html b/themes/showtime-theme-2024/layouts/shortcodes/infobox.html
new file mode 100644
index 000000000..74884f8fc
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/infobox.html
@@ -0,0 +1,13 @@
+
+
+ {{ if .IsNamedParams }}
+ {{ .Get "title" }}
+ {{ else }}
+ {{ .Get 0 }}
+ {{ end }}
+
+
+
+ {{ .Inner | markdownify }}
+
+
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/mediathek.html b/themes/showtime-theme-2024/layouts/shortcodes/mediathek.html
new file mode 100644
index 000000000..c4f9761bf
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/mediathek.html
@@ -0,0 +1,18 @@
+{{ $video := newScratch }}
+{{ if .IsNamedParams }}
+ {{ $video.Set "id" (.Get "id") }}
+ {{ $video.Set "title" (.Get "title") }}
+{{ else }}
+ {{ $video.Set "id" (.Get 0) }}
+ {{ $video.Set "title" (.Get 1) }}
+{{ end }}
+
+
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/quote.html b/themes/showtime-theme-2024/layouts/shortcodes/quote.html
new file mode 100644
index 000000000..845ffc21c
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/quote.html
@@ -0,0 +1,15 @@
+{{ $quote := newScratch }}
+{{ if .IsNamedParams }}
+ {{ $quote.Set "source" (.Get "source") }}
+ {{ $quote.Set "caption" (.Get "caption") }}
+{{ else }}
+ {{ $quote.Set "source" (.Get 0) }}
+ {{ $quote.Set "caption" (.Get 1) }}
+{{ end }}
+
+
+
+ {{ .Inner | markdownify }}
+
+ {{ $quote.Get "caption" }}
+
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/section.html b/themes/showtime-theme-2024/layouts/shortcodes/section.html
new file mode 100644
index 000000000..77d608043
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/section.html
@@ -0,0 +1,13 @@
+
+
+ {{ if .IsNamedParams }}
+ {{ .Get "title" }}
+ {{ else }}
+ {{ .Get 0 }}
+ {{ end }}
+
+
+
+ {{ .Inner | markdownify }}
+
+
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/team-member.html b/themes/showtime-theme-2024/layouts/shortcodes/team-member.html
new file mode 100644
index 000000000..a0163f933
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/team-member.html
@@ -0,0 +1,21 @@
+{{ $member := newScratch }}
+{{ if .IsNamedParams }}
+ {{ if $.Page.Resources.GetMatch (.Get "image") }}
+ {{ $member.Set "image" ($.Page.Resources.GetMatch (.Get "image")) }}
+ {{ else }}
+ {{ $member.Set "image" ($.Page.Parent.Resources.GetMatch (.Get "image")) }}
+ {{ end }}
+ {{ $member.Set "name" (.Get "name") }}
+{{ else }}
+ {{ if $.Page.Resources.GetMatch (.Get 0) }}
+ {{ $member.Set "image" ($.Page.Resources.GetMatch (.Get 0)) }}
+ {{ else }}
+ {{ $member.Set "image" ($.Page.Parent.Resources.GetMatch (.Get 0)) }}
+ {{ end }}
+ {{ $member.Set "name" (.Get 1) }}
+{{ end }}
+
+
+
+ {{ $member.Get "name" }}
+
diff --git a/themes/showtime-theme-2024/layouts/shortcodes/teaser.html b/themes/showtime-theme-2024/layouts/shortcodes/teaser.html
new file mode 100644
index 000000000..699f5e63a
--- /dev/null
+++ b/themes/showtime-theme-2024/layouts/shortcodes/teaser.html
@@ -0,0 +1,17 @@
+{{ $teaser := newScratch }}
+{{ if .IsNamedParams }}
+ {{ $teaser.Set "category" (.Get "category") }}
+ {{ $teaser.Set "title" (.Get "title") }}
+{{ else }}
+ {{ $teaser.Set "category" (.Get 0) }}
+ {{ $teaser.Set "title" (.Get 1) }}
+{{ end }}
+
+
+ {{ $teaser.Get "category" }}
+ {{ $teaser.Get "title" }}
+
+ {{ .Inner | markdownify }}
+
+
+
diff --git a/themes/showtime-theme-2024/static/fonts/JetBrainsMono-Bold.woff2 b/themes/showtime-theme-2024/static/fonts/JetBrainsMono-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..07fe5d7578f7ab333fb03910a0c3fd8f54868606
GIT binary patch
literal 59436
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