diff --git a/configs/conferences/fossgis2024/assets/NotoSans-Regular.otf b/configs/conferences/fossgis2024/assets/NotoSans-Regular.otf
new file mode 100644
index 00000000..fdb12a5d
Binary files /dev/null and b/configs/conferences/fossgis2024/assets/NotoSans-Regular.otf differ
diff --git a/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.eot b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.eot
new file mode 100644
index 00000000..78e0578b
Binary files /dev/null and b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.eot differ
diff --git a/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.svg b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.svg
new file mode 100644
index 00000000..bd2894d6
--- /dev/null
+++ b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.svg
@@ -0,0 +1,335 @@
+
+
+
diff --git a/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.ttf b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.ttf
new file mode 100644
index 00000000..0ce9e1ca
Binary files /dev/null and b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.ttf differ
diff --git a/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.woff b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.woff
new file mode 100644
index 00000000..4f1dd100
Binary files /dev/null and b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.woff differ
diff --git a/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.woff2 b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.woff2
new file mode 100644
index 00000000..cf2b74a6
Binary files /dev/null and b/configs/conferences/fossgis2024/assets/noto-sans-v8-latin-regular.woff2 differ
diff --git a/configs/conferences/fossgis2024/config.json b/configs/conferences/fossgis2024/config.json
new file mode 100644
index 00000000..1cca65be
--- /dev/null
+++ b/configs/conferences/fossgis2024/config.json
@@ -0,0 +1,57 @@
+{
+ "$schema": "../../../docs/config-schema.json",
+ "conference": {
+ "title": "FOSSGIS-Konferenz 2024",
+ "acronym": "fossgis2024",
+ "description": "Die FOSSGIS-Konferenz ist die deutschsprachige Konferenz zu Open-Source-GIS und OpenStreetMap. Sie findet vom 20. bis 23. März 2024 in Hamburg und im Netz statt.",
+ "keywords": [ "FOSSGIS 2024", "OpenStreetMap", "GIS", "OpenSource", "Geo" ],
+ "organizer": "FOSSGIS e.V.",
+ "start": "2024-03-20T00:08:00+01:00",
+ "end": "2024-03-23T15:00:00+01:00",
+ "streamingConfig": {
+ "features": {
+ "embed": true,
+ "audio": false,
+ "sd_video": false,
+ "social": {
+ "hashtag": "#fossgis2024",
+ "mastodon": true
+ }
+ },
+ "overviewPage": {},
+ "schedule": {
+ "url": "https://pretalx.com/fossgis2024/schedule/export/schedule.xml",
+ "scale": 3
+ },
+ "html": {
+ "footer": "FOSSGIS-Konferenz 2024 by FOSSGIS e.V & C3VOC"
+ }
+ },
+ "rooms": [
+ {
+ "slug": "hoersaal1",
+ "guid": "957a3507-97da-5f98-95be-fb0af990e9c8",
+ "name": "Hörsaal 1 (Audimax 1)",
+ "streamId": "s1"
+ },
+ {
+ "slug": "hoersaal2",
+ "guid": "5a2c817d-77a6-5677-a134-bb65c0d38cdf",
+ "name": "Hörsaal 2 (Ditze H016)",
+ "streamId": "s2"
+ },
+ {
+ "slug": "hoersaal3",
+ "guid": "70fe1680-75fc-5b9a-b46a-df2972c1d5c0",
+ "name": "Hörsaal 3 (K0506/ Audimax 2)",
+ "streamId": "s3"
+ },
+ {
+ "slug": "hoersaal4",
+ "guid": "65993316-4b1b-5229-9209-613c50effa13",
+ "name": "Hörsaal 4 (A0.13)",
+ "streamId": "s4"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/configs/conferences/fossgis2024/main.less b/configs/conferences/fossgis2024/main.less
new file mode 100644
index 00000000..f1af483d
--- /dev/null
+++ b/configs/conferences/fossgis2024/main.less
@@ -0,0 +1,275 @@
+@import "../../../assets/css/_structure.less";
+
+/* noto-sans-regular - latin */
+@font-face {
+ font-family: 'Noto Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: url('/configs/conferences/fossgis2023/assets/noto-sans-v8-latin-regular.eot'); /* IE9 Compat Modes */
+ src: local('Noto Sans'), local('NotoSans'),
+ url('/configs/conferences/fossgis2023/assets/noto-sans-v8-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('/configs/conferences/fossgis2023/assets/noto-sans-v8-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
+ url('/configs/conferences/fossgis2023/assets/noto-sans-v8-latin-regular.woff') format('woff'), /* Modern Browsers */
+ url('/configs/conferences/fossgis2023/assets/noto-sans-v8-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('/configs/conferences/fossgis2023/assets/noto-sans-v8-latin-regular.svg#NotoSans') format('svg'); /* Legacy iOS */
+}
+
+
+// conference specific styles here
+@pw-color: #000;
+@bg-orange: #ee7f00;
+@bg-main: white;
+
+@body-text: @pw-color;
+
+@overview-color: @darker-grey;
+
+@darker-grey: rgba(16,16,15,.9);
+@dark-grey: lighten(@darker-grey, 10%);
+@light-grey: lighten(@darker-grey, 30%);
+@lighter-grey: lighten(@darker-grey, 40%);
+
+// often configured values (and their defaults):
+//
+@brand-primary: @bg-main;
+@text-color: @body-text;
+
+@link-color: @body-text;
+//@link-color: black;
+@link-hover-color: @lighter-grey;
+
+// @navbar-height: 70px;
+
+@navbar-default-bg: @bg-main;
+@navbar-default-border: @bg-orange;
+
+@navbar-default-link-color: @pw-color;
+//@navbar-default-link-hover-color: @link-hover-color;
+
+body {
+ // background-image: url("/configs/conferences/fossgis2023/assets/bg.svg");
+ // background-repeat: no-repeat;
+ // background-position: bottom center;
+ // background-attachment: fixed;
+ // background-size: contain;
+ padding: @navbar-height 0;
+ color: @body-text;
+ font-family: "Noto Sans",Arial,sans-serif;
+}
+
+h1, h2, body.overview .room a.title, body.overview .panel-primary a, .navbar-brand {
+ font-family: "Noto Sans",Arial,sans-serif;
+ font-weight: bold;
+}
+
+.group-live {
+ margin-top: 60px;
+}
+
+.room {
+ h1 {
+ text-align: center;
+
+ text-transform: uppercase;
+ font-weight: bold;
+
+ margin: 40px 0 20px 0;
+ color: @bg-orange;
+ }
+}
+
+.overview, .relive {
+ h1, h2 {
+ text-align: center;
+
+ text-transform: uppercase;
+ font-weight: bold;
+
+ margin: 40px 0 20px 0;
+ color: @bg-orange;
+ }
+
+ .room, .recordings, .recording {
+ a, a:hover {
+ text-decoration: none;
+ color: @overview-color;
+ }
+
+ .panel {
+ border-color: @bg-orange;
+ border-width: 5px 0 0 0;
+ border-style: solid;
+ border-radius: 1px;
+
+ &:hover {
+ text-decoration: none;
+ background-color: @lighter-grey;
+ }
+
+ .panel-title {
+ color: @bg-main;
+ font-size: 18px;
+ }
+
+ .panel-primary {
+ background-color: @light-grey;
+ border-color: @light-grey;
+ color: @overview-color;
+ a {
+ color: @overview-color;
+ }
+ }
+
+ .panel-heading {
+ background: none;
+ border: none;
+ border-radius: 0 !important;
+ background-color: @darker-grey;
+
+ display: block !important;
+
+ text-transform: uppercase;
+ font-weight: bold;
+
+ padding: 8px 15px;
+ }
+
+ .panel-body {
+ border-style: solid;
+ border-color: @lighter-grey;
+ border-width: 0 1px 1px 1px;
+ }
+
+ }
+ }
+}
+
+.overview .room-group-live-music .room .panel .panel-body {
+ margin-bottom: 0;
+}
+
+.banner img {
+ max-width: 50%;
+}
+.banner {
+ display: none
+}
+
+.well a {
+ color: @dark-grey;
+ text-decoration: underline;
+}
+.alert {
+ a {
+ text-decoration: underline;
+ }
+ &.alert-success a {
+ color: @state-success-text;
+ }
+ &.alert-info a {
+ color: @state-info-text;
+ }
+ &.alert-warning a {
+ color: @state-warning-text;
+ }
+ &.alert-danger a {
+ color: @state-danger-text;
+ }
+}
+
+body.multiview .cell {
+ color: black;
+}
+
+.closed .about a {
+ text-decoration: underline;
+ color: @brand-primary;
+}
+
+.schedule .block.pause {
+ color: black !important;
+}
+
+.schedule {
+ a {
+ color: @darker-grey;
+ }
+
+ a:hover {
+ color: @light-grey;
+ }
+}
+
+footer {
+ color: lightgrey;
+}
+
+.nav-tabs > li > a {
+ //border-radius: 0 !important;
+ background-color: @darker-grey;
+ border-color: @bg-orange;
+ border-width: 5px 0 0 0 !important;
+ border-radius: 1px !important;
+ &:hover {
+ background-color: @dark-grey;
+ text-decoration: none;
+ border-color: @bg-orange;
+ color: @bg-main !important;
+ }
+}
+
+body.room .tab-content {
+ background-color: @lighter-grey;
+ border: none;
+}
+
+@media (max-width: 768px)
+{
+ nav {
+ position: static !important;
+ }
+ body {
+ padding: 0 0;
+ }
+}
+
+@media (max-width: 480px) {
+ .banner {
+ margin-top: 60px;
+ }
+}
+
+nav, .navbar-default, .navbar-brand {
+ color: @bg-orange !important;
+}
+
+.navbar-fixed-top {
+ border-width: 0 0 5px;
+}
+
+.nav-tabs > li.active > a {
+ background-color: @bg-orange !important;
+ color: @darker-grey;
+}
+
+.nav-tabs.nav-justified > .active > a {
+ border-color: @bg-orange !important;
+}
+
+.nav-player a {
+ color: @bg-main !important;
+}
+.nav-tabs > li > a {
+ color: @bg-main;
+}
+
+// extra rules to make schedule things not be white-on-white
+body .schedule .block h4 {
+ color: @dark-grey;
+}
+body .schedule .block.daychange {
+ color: @dark-grey;
+}
+body .schedule .block.pause, body .schedule .block.optout {
+ color: @dark-grey;
+}