From a14351c801d8678449eb653799e624944a47a3c4 Mon Sep 17 00:00:00 2001
From: Raphaela Gil <128820385+RaphaGil@users.noreply.github.com>
Date: Tue, 26 May 2026 09:32:20 +0100
Subject: [PATCH 1/8] Redesign hero section with updated UI
---
assets/css/hero.css | 239 +++++++++++++++++++++++++++++++++
assets/css/styles_override.css | 27 ----
config.yaml | 26 ++--
layouts/partials/hero.html | 48 +++++++
4 files changed, 304 insertions(+), 36 deletions(-)
create mode 100644 assets/css/hero.css
create mode 100644 layouts/partials/hero.html
diff --git a/assets/css/hero.css b/assets/css/hero.css
new file mode 100644
index 0000000..a0b2baa
--- /dev/null
+++ b/assets/css/hero.css
@@ -0,0 +1,239 @@
+/* Modern hero — matches OpenMS_Modern_Dynamic_Design mockup */
+
+.hero-modern {
+ --hero-orange: #ff9500;
+ --hero-pink: #ff1b9e;
+ --hero-navy: #001a4d;
+ --hero-accent-yellow: #ffd700;
+ --hero-white: #ffffff;
+
+ position: relative;
+ overflow: hidden;
+ color: var(--hero-white);
+ background: linear-gradient(135deg, var(--hero-navy) 0%, #1a2a5f 50%, #0a1a3f 100%);
+ padding: 5rem 2.5rem;
+ min-height: 32rem;
+}
+
+.hero-modern::before,
+.hero-modern::after {
+ content: "";
+ position: absolute;
+ border-radius: 50%;
+ z-index: 1;
+ pointer-events: none;
+}
+
+.hero-modern::before {
+ top: -50%;
+ right: -10%;
+ width: 37.5rem;
+ height: 37.5rem;
+ background: radial-gradient(circle, rgba(255, 149, 0, 0.15) 0%, transparent 70%);
+}
+
+.hero-modern::after {
+ bottom: -30%;
+ left: -5%;
+ width: 31.25rem;
+ height: 31.25rem;
+ background: radial-gradient(circle, rgba(255, 27, 158, 0.1) 0%, transparent 70%);
+}
+
+.hero-modern__container {
+ position: relative;
+ z-index: 2;
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 3.75rem;
+ align-items: center;
+ max-width: 75rem;
+ margin: 0 auto;
+}
+
+.hero-modern__title {
+ font-size: clamp(2rem, 4.5vw, 3.375rem);
+ font-weight: 800;
+ line-height: 1.15;
+ letter-spacing: -0.02em;
+ margin-bottom: 1.5rem;
+ color: var(--hero-white);
+}
+
+.hero-modern__gradient-text {
+ background: linear-gradient(90deg, var(--hero-accent-yellow), var(--hero-orange), var(--hero-pink));
+ -webkit-background-clip: text;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+.hero-modern__description {
+ font-size: 1.125rem;
+ line-height: 1.7;
+ opacity: 0.95;
+ margin-bottom: 2rem;
+ max-width: 31.25rem;
+}
+
+.hero-modern__buttons {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1rem;
+ margin-bottom: 2.5rem;
+}
+
+.hero-modern__btn {
+ display: inline-block;
+ padding: 0.875rem 2rem;
+ font-size: 0.9375rem;
+ font-weight: 600;
+ border-radius: 0.5rem;
+ text-decoration: none;
+ transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease, border-color 0.3s ease;
+}
+
+.hero-modern__btn--primary {
+ color: var(--hero-white);
+ background: linear-gradient(135deg, var(--hero-orange), var(--hero-pink));
+ box-shadow: 0 0.5rem 1.5rem rgba(255, 149, 0, 0.3);
+}
+
+.hero-modern__btn--primary:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 0.75rem 2rem rgba(255, 149, 0, 0.4);
+ color: var(--hero-white);
+}
+
+.hero-modern__btn--secondary {
+ color: var(--hero-white);
+ background: rgba(255, 255, 255, 0.15);
+ border: 2px solid var(--hero-white);
+ backdrop-filter: blur(10px);
+}
+
+.hero-modern__btn--secondary:hover {
+ background: rgba(255, 255, 255, 0.25);
+ border-color: var(--hero-accent-yellow);
+ color: var(--hero-white);
+}
+
+.hero-modern__stats {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 2.5rem;
+ padding-top: 2.5rem;
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
+}
+
+.hero-modern__stat {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+.hero-modern__stat-number {
+ font-size: 1.75rem;
+ font-weight: 800;
+ background: linear-gradient(90deg, var(--hero-accent-yellow), var(--hero-orange));
+ -webkit-background-clip: text;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+.hero-modern__stat-label {
+ font-size: 0.8125rem;
+ opacity: 0.85;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.hero-modern__visual {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 18rem;
+}
+
+.hero-modern__waveform {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 0.1875rem;
+ width: 100%;
+ max-width: 25rem;
+ height: 100%;
+ min-height: 16rem;
+}
+
+.hero-modern__wave-bar {
+ width: 0.375rem;
+ height: 20%;
+ border-radius: 0.1875rem;
+ background: linear-gradient(180deg, var(--hero-orange), var(--hero-pink));
+ animation: hero-modern-waveform 2s ease-in-out infinite;
+}
+
+.hero-modern__wave-bar:nth-child(1) { animation-delay: 0s; }
+.hero-modern__wave-bar:nth-child(2) { animation-delay: 0.1s; }
+.hero-modern__wave-bar:nth-child(3) { animation-delay: 0.2s; }
+.hero-modern__wave-bar:nth-child(4) { animation-delay: 0.3s; }
+.hero-modern__wave-bar:nth-child(5) { animation-delay: 0.4s; }
+.hero-modern__wave-bar:nth-child(6) { animation-delay: 0.5s; }
+.hero-modern__wave-bar:nth-child(7) { animation-delay: 0.6s; }
+.hero-modern__wave-bar:nth-child(8) { animation-delay: 0.7s; }
+.hero-modern__wave-bar:nth-child(9) { animation-delay: 0.8s; }
+.hero-modern__wave-bar:nth-child(10) { animation-delay: 0.9s; }
+.hero-modern__wave-bar:nth-child(11) { animation-delay: 1s; }
+
+@keyframes hero-modern-waveform {
+ 0%,
+ 100% {
+ height: 20%;
+ }
+ 50% {
+ height: 100%;
+ }
+}
+
+@media (max-width: 1024px) {
+ .hero-modern {
+ padding: 5rem 1.5rem;
+ min-height: auto;
+ }
+
+ .hero-modern__container {
+ grid-template-columns: 1fr;
+ gap: 2.5rem;
+ }
+
+ .hero-modern__visual {
+ min-height: 12rem;
+ }
+}
+
+@media (max-width: 768px) {
+ .hero-modern {
+ padding: 3.75rem 1rem;
+ }
+
+ .hero-modern__buttons {
+ flex-direction: column;
+ align-items: stretch;
+ }
+
+ .hero-modern__btn {
+ text-align: center;
+ }
+
+ .hero-modern__stats {
+ flex-direction: column;
+ gap: 1.5rem;
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .hero-modern__wave-bar {
+ animation: none;
+ height: 55%;
+ }
+}
diff --git a/assets/css/styles_override.css b/assets/css/styles_override.css
index ef8a8b8..d19c8fb 100644
--- a/assets/css/styles_override.css
+++ b/assets/css/styles_override.css
@@ -8,15 +8,6 @@
background-color: #1a3a7a;
}
-.hero-title-content {
- max-width: 1200px;
- margin: 1vh auto;
-}
-
-.hero-logo {
- max-height: 200px;
-}
-
.navbar.is-fresh .navbar-item.has-dropdown .navbar-link {
color: var(--colorPrimaryDark);
}
@@ -32,24 +23,6 @@
}
}
-@media only screen and (max-width: 600px) {
- .hero-logo {
- max-height: 150px;
- }
-}
-
-@media only screen and (max-width: 400px) {
- .hero-logo {
- max-height: 120px;
- }
-}
-
-@media only screen and (max-width: 320px) {
- .hero-logo {
- max-height: 100px;
- }
-}
-
/* =============================================
FOOTER — REDESIGN
============================================= */
diff --git a/config.yaml b/config.yaml
index c66342e..5a62c75 100644
--- a/config.yaml
+++ b/config.yaml
@@ -37,16 +37,24 @@ languages:
image: OpenMS_transparent_blackFont.png
link: /
hero:
- # Main hero title
- # title: OpenMS
- # Hero subtitle (optional)
- subtitle: The open-source framework for Mass Spectrometry
- # Button text
- buttontext: Install
- # Where the main hero button links to
+ titleBefore: "The "
+ titleHighlight: open-source framework
+ titleAfter: " for Mass Spectrometry"
+ description: >-
+ Build sophisticated LC/MS data analysis tools with C++ or Python.
+ Process large datasets at scale. Create high-performance algorithms.
+ Join 1000+ researchers worldwide.
+ buttontext: Get Started Now
buttonlink: https://openms.readthedocs.io/en/latest/about/installation.html
- # Hero image (from static/images/___)
- image: OpenMS_transparent_blackFont.png
+ secondaryButtonText: Watch Demo
+ secondaryButtonLink: https://openms.readthedocs.io/en/latest/getting-started/walkthrough.html
+ stats:
+ - number: "10+"
+ label: Years Active
+ - number: "1000+"
+ label: Researchers
+ - number: "3.5.0"
+ label: Latest Version
heroGroup:
- title: "OpenMS allows users to:"
diff --git a/layouts/partials/hero.html b/layouts/partials/hero.html
new file mode 100644
index 0000000..09d9114
--- /dev/null
+++ b/layouts/partials/hero.html
@@ -0,0 +1,48 @@
+{{- $hero := .Site.Params.hero }}
+{{- $titleBefore := index $hero "titleBefore" | default "The " }}
+{{- $titleHighlight := index $hero "titleHighlight" | default "open-source framework" }}
+{{- $titleAfter := index $hero "titleAfter" | default " for Mass Spectrometry" }}
+{{- $description := index $hero "description" }}
+{{- $buttonText := index $hero "buttontext" }}
+{{- $buttonLink := index $hero "buttonlink" }}
+{{- $secondaryText := index $hero "secondaryButtonText" }}
+{{- $secondaryLink := index $hero "secondaryButtonLink" }}
+{{- $stats := index $hero "stats" }}
+
+
+
+
+
+ {{ $titleBefore }}{{ $titleHighlight }}{{ $titleAfter }}
+
+ {{- with $description }}
+
{{ . }}
+ {{- end }}
+
+ {{- with $stats }}
+
+ {{- range . }}
+
+
{{ .number }}
+
{{ .label }}
+
+ {{- end }}
+
+ {{- end }}
+
+
+
+
From 987e40925f634d5df4a2ffbb0ee444323e91cf64 Mon Sep 17 00:00:00 2001
From: Raphaela Gil <128820385+RaphaGil@users.noreply.github.com>
Date: Tue, 26 May 2026 09:43:14 +0100
Subject: [PATCH 2/8] Redesign hero section with updated UI
---
assets/css/styles_override.css | 22 +++++++++++
config.yaml | 2 +
layouts/partials/navbar-clone.html | 63 ++++++++++++++++++++++++++++++
layouts/partials/navbar.html | 63 ++++++++++++++++++++++++++++++
4 files changed, 150 insertions(+)
create mode 100644 layouts/partials/navbar-clone.html
create mode 100644 layouts/partials/navbar.html
diff --git a/assets/css/styles_override.css b/assets/css/styles_override.css
index d19c8fb..756aba2 100644
--- a/assets/css/styles_override.css
+++ b/assets/css/styles_override.css
@@ -12,9 +12,31 @@
color: var(--colorPrimaryDark);
}
+.navbar.is-fresh .navbar-brand .navbar-brand-link {
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+ padding-left: 0;
+}
+
.navbar.is-fresh .navbar-brand img {
max-height: 50px !important;
height: 50px;
+ width: auto;
+}
+
+.navbar.is-fresh .navbar-logo-text {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: #001a4d;
+ line-height: 1;
+}
+
+/* Solid bar over the dark homepage hero (matches design mockup) */
+body:has(.hero-modern) #nav.navbar.is-fresh {
+ background: rgba(255, 255, 255, 0.95);
+ backdrop-filter: blur(10px);
+ border-bottom: 2px solid #e8eaed;
}
@media only screen and (max-width: 850px) {
diff --git a/config.yaml b/config.yaml
index 5a62c75..27bdca3 100644
--- a/config.yaml
+++ b/config.yaml
@@ -36,6 +36,8 @@ languages:
navbarlogo:
image: OpenMS_transparent_blackFont.png
link: /
+ text: OpenMS
+ altText: OpenMS
hero:
titleBefore: "The "
titleHighlight: open-source framework
diff --git a/layouts/partials/navbar-clone.html b/layouts/partials/navbar-clone.html
new file mode 100644
index 0000000..7ab73e9
--- /dev/null
+++ b/layouts/partials/navbar-clone.html
@@ -0,0 +1,63 @@
+{{- $title := .Site.Params.title }}
+{{- $navbar := .Site.Params.navbar }}
+{{- $navbarLogo := .Site.Params.navbarlogo }}
+
diff --git a/layouts/partials/navbar.html b/layouts/partials/navbar.html
new file mode 100644
index 0000000..e811dc5
--- /dev/null
+++ b/layouts/partials/navbar.html
@@ -0,0 +1,63 @@
+{{- $title := .Site.Params.title }}
+{{- $navbar := .Site.Params.navbar }}
+{{- $navbarLogo := .Site.Params.navbarlogo }}
+
From 2e404bd9cc207af7c1c3e750203ed76c5512972c Mon Sep 17 00:00:00 2001
From: Raphaela Gil <128820385+RaphaGil@users.noreply.github.com>
Date: Tue, 26 May 2026 10:23:54 +0100
Subject: [PATCH 3/8] added brand-pallete.css with the RGB Color Scheme
---
assets/css/brand-palette.css | 43 +++++++++++++
assets/css/casestudies.css | 8 +--
assets/css/content_override.css | 2 +-
assets/css/hero.css | 69 ++++++++++++---------
assets/css/keyfeatures_override.css | 8 +--
assets/css/mailchimp.css | 2 +-
assets/css/members.css | 4 +-
assets/css/news-banner.css | 94 +++++++++++++++++++++++++++++
assets/css/quick-facts.css | 10 +--
assets/css/shell.css | 8 +--
assets/css/styles_override.css | 79 ++++++++++++++++--------
assets/css/tabs.css | 12 ++--
assets/css/terminal.css | 16 ++---
assets/css/vars_override.css | 6 --
assets/css/webapps.css | 6 +-
config.yaml | 11 +++-
layouts/_default/baseof.html | 1 +
layouts/partials/news-banner.html | 22 +++++++
18 files changed, 302 insertions(+), 99 deletions(-)
create mode 100644 assets/css/brand-palette.css
create mode 100644 assets/css/news-banner.css
delete mode 100644 assets/css/vars_override.css
create mode 100644 layouts/partials/news-banner.html
diff --git a/assets/css/brand-palette.css b/assets/css/brand-palette.css
new file mode 100644
index 0000000..68eb097
--- /dev/null
+++ b/assets/css/brand-palette.css
@@ -0,0 +1,43 @@
+/* OpenMS brand palette — load before other site CSS (filename sorts first) */
+:root {
+ --fontFamily: {{ .Site.Params.font.name }};
+
+ --openms-yellow: #ffcb4f;
+ --openms-orange: #ff7501;
+ --openms-pink: #ff03cb;
+ --openms-purple: #b503ff;
+ --openms-blue: #3157e9;
+ --openms-dark: #231f20;
+ --openms-grey: #c2babc;
+ --openms-white: #ffffff;
+
+ --openms-yellow-rgb: 255, 203, 79;
+ --openms-orange-rgb: 255, 117, 1;
+ --openms-pink-rgb: 255, 3, 203;
+ --openms-purple-rgb: 181, 3, 255;
+ --openms-blue-rgb: 49, 87, 233;
+ --openms-dark-rgb: 35, 31, 32;
+ --openms-grey-rgb: 194, 186, 188;
+ --openms-white-rgb: 255, 255, 255;
+
+ --colorPrimaryDark: var(--openms-blue);
+ --colorPrimaryDarkBtn: var(--openms-orange);
+ --colorPrimary: var(--openms-blue);
+ --colorPrimaryLight: var(--openms-purple);
+ --colorSecondaryDark: var(--openms-dark);
+ --colorSecondary: var(--openms-grey);
+ --colorSecondaryLight: var(--openms-white);
+ --colorHeading: var(--openms-dark);
+ --colorHighlight: var(--openms-yellow);
+ --colorShadow: rgba(var(--openms-dark-rgb), 0.1);
+ --colorContentLink: var(--openms-blue);
+ --colorIcon: var(--openms-blue);
+ --colorNoteHeading: var(--openms-blue);
+ --colorNoteContent: var(--openms-grey);
+ --colorInfoHeading: var(--openms-orange);
+ --colorInfoContent: var(--openms-grey);
+ --colorWarningHeading: var(--openms-pink);
+ --colorWarningContent: var(--openms-grey);
+ --colorTipHeading: var(--openms-purple);
+ --colorTipContent: var(--openms-grey);
+}
diff --git a/assets/css/casestudies.css b/assets/css/casestudies.css
index dc35cac..c1b82d0 100644
--- a/assets/css/casestudies.css
+++ b/assets/css/casestudies.css
@@ -4,7 +4,7 @@
.casestudies a:hover {
text-decoration: none;
- color:black
+ color: var(--openms-dark);
}
.casestudies-title {
@@ -29,7 +29,7 @@
}
.casestudies a {
- color: rgb(1, 50, 67) !important;
+ color: var(--openms-blue) !important;
}
.casestudies-box-title {
@@ -62,7 +62,7 @@
-webkit-transform: perspective(1px) translateZ(0);
transform: perspective(1px) translateZ(0);
/* Black, with 10% opacity */
- box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1);
+ box-shadow: 0px 8px 15px rgba(var(--openms-dark-rgb), 0.1);
position: relative;
overflow: hidden;
}
@@ -74,7 +74,7 @@
left: 0;
right: 100%;
bottom: 0;
- background: rgb(1, 50, 67);
+ background: var(--openms-blue);
height: 4px;
-webkit-transition-property: right;
transition-property: right;
diff --git a/assets/css/content_override.css b/assets/css/content_override.css
index e719ef7..41c8eda 100644
--- a/assets/css/content_override.css
+++ b/assets/css/content_override.css
@@ -1,5 +1,5 @@
.content-container .divider {
- background: #1e0010;
+ background: var(--openms-dark);
}
.content-container h1 {
diff --git a/assets/css/hero.css b/assets/css/hero.css
index a0b2baa..6425a8f 100644
--- a/assets/css/hero.css
+++ b/assets/css/hero.css
@@ -1,16 +1,15 @@
-/* Modern hero — matches OpenMS_Modern_Dynamic_Design mockup */
+/* Modern hero — OpenMS brand palette */
.hero-modern {
- --hero-orange: #ff9500;
- --hero-pink: #ff1b9e;
- --hero-navy: #001a4d;
- --hero-accent-yellow: #ffd700;
- --hero-white: #ffffff;
-
position: relative;
overflow: hidden;
- color: var(--hero-white);
- background: linear-gradient(135deg, var(--hero-navy) 0%, #1a2a5f 50%, #0a1a3f 100%);
+ color: var(--openms-white);
+ background: linear-gradient(
+ 135deg,
+ var(--openms-blue) 0%,
+ var(--openms-purple) 50%,
+ var(--openms-dark) 100%
+ );
padding: 5rem 2.5rem;
min-height: 32rem;
}
@@ -29,7 +28,11 @@
right: -10%;
width: 37.5rem;
height: 37.5rem;
- background: radial-gradient(circle, rgba(255, 149, 0, 0.15) 0%, transparent 70%);
+ background: radial-gradient(
+ circle,
+ rgba(var(--openms-orange-rgb), 0.15) 0%,
+ transparent 70%
+ );
}
.hero-modern::after {
@@ -37,7 +40,11 @@
left: -5%;
width: 31.25rem;
height: 31.25rem;
- background: radial-gradient(circle, rgba(255, 27, 158, 0.1) 0%, transparent 70%);
+ background: radial-gradient(
+ circle,
+ rgba(var(--openms-pink-rgb), 0.1) 0%,
+ transparent 70%
+ );
}
.hero-modern__container {
@@ -57,11 +64,16 @@
line-height: 1.15;
letter-spacing: -0.02em;
margin-bottom: 1.5rem;
- color: var(--hero-white);
+ color: var(--openms-white);
}
.hero-modern__gradient-text {
- background: linear-gradient(90deg, var(--hero-accent-yellow), var(--hero-orange), var(--hero-pink));
+ background: linear-gradient(
+ 90deg,
+ var(--openms-yellow),
+ var(--openms-orange),
+ var(--openms-pink)
+ );
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
@@ -89,32 +101,33 @@
font-weight: 600;
border-radius: 0.5rem;
text-decoration: none;
- transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease, border-color 0.3s ease;
+ transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease,
+ border-color 0.3s ease;
}
.hero-modern__btn--primary {
- color: var(--hero-white);
- background: linear-gradient(135deg, var(--hero-orange), var(--hero-pink));
- box-shadow: 0 0.5rem 1.5rem rgba(255, 149, 0, 0.3);
+ color: var(--openms-white);
+ background: linear-gradient(135deg, var(--openms-orange), var(--openms-pink));
+ box-shadow: 0 0.5rem 1.5rem rgba(var(--openms-orange-rgb), 0.3);
}
.hero-modern__btn--primary:hover {
transform: translateY(-2px);
- box-shadow: 0 0.75rem 2rem rgba(255, 149, 0, 0.4);
- color: var(--hero-white);
+ box-shadow: 0 0.75rem 2rem rgba(var(--openms-orange-rgb), 0.4);
+ color: var(--openms-white);
}
.hero-modern__btn--secondary {
- color: var(--hero-white);
- background: rgba(255, 255, 255, 0.15);
- border: 2px solid var(--hero-white);
+ color: var(--openms-white);
+ background: rgba(var(--openms-white-rgb), 0.15);
+ border: 2px solid var(--openms-white);
backdrop-filter: blur(10px);
}
.hero-modern__btn--secondary:hover {
- background: rgba(255, 255, 255, 0.25);
- border-color: var(--hero-accent-yellow);
- color: var(--hero-white);
+ background: rgba(var(--openms-white-rgb), 0.25);
+ border-color: var(--openms-yellow);
+ color: var(--openms-white);
}
.hero-modern__stats {
@@ -122,7 +135,7 @@
flex-wrap: wrap;
gap: 2.5rem;
padding-top: 2.5rem;
- border-top: 1px solid rgba(255, 255, 255, 0.1);
+ border-top: 1px solid rgba(var(--openms-white-rgb), 0.1);
}
.hero-modern__stat {
@@ -134,7 +147,7 @@
.hero-modern__stat-number {
font-size: 1.75rem;
font-weight: 800;
- background: linear-gradient(90deg, var(--hero-accent-yellow), var(--hero-orange));
+ background: linear-gradient(90deg, var(--openms-yellow), var(--openms-orange));
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
@@ -169,7 +182,7 @@
width: 0.375rem;
height: 20%;
border-radius: 0.1875rem;
- background: linear-gradient(180deg, var(--hero-orange), var(--hero-pink));
+ background: linear-gradient(180deg, var(--openms-orange), var(--openms-pink));
animation: hero-modern-waveform 2s ease-in-out infinite;
}
diff --git a/assets/css/keyfeatures_override.css b/assets/css/keyfeatures_override.css
index 7d6bd2d..79a2c34 100644
--- a/assets/css/keyfeatures_override.css
+++ b/assets/css/keyfeatures_override.css
@@ -4,7 +4,7 @@
.keyfeatures a:hover {
text-decoration: none;
- color:black
+ color: var(--openms-dark);
}
.keyfeatures-img{
@@ -38,11 +38,11 @@
}
.keyfeatures-box-content:hover {
- box-shadow: 0 8px 16px 0 rgba(12, 42, 96, 0.4);
+ box-shadow: 0 8px 16px 0 rgba(var(--openms-blue-rgb), 0.4);
}
.keyfeatures a {
- color: rgb(1, 50, 67) !important;
+ color: var(--openms-blue) !important;
}
.keyfeatures-box-title {
@@ -70,5 +70,5 @@
}
.keyfeatures-underline:before {
- background: rgb(1, 50, 67);
+ background: var(--openms-blue);
}
\ No newline at end of file
diff --git a/assets/css/mailchimp.css b/assets/css/mailchimp.css
index 00894e7..aba156b 100644
--- a/assets/css/mailchimp.css
+++ b/assets/css/mailchimp.css
@@ -1,5 +1,5 @@
:root {
- --openmsSlateGray: rgb(108, 122, 137);
+ --openmsSlateGray: var(--openms-grey);
}
.sign-up-container {
diff --git a/assets/css/members.css b/assets/css/members.css
index 0ddb3e8..320e1df 100644
--- a/assets/css/members.css
+++ b/assets/css/members.css
@@ -8,8 +8,8 @@
.role {
display: inline-block;
- background-color: #eee;
- color: #333;
+ background-color: var(--openms-grey);
+ color: var(--openms-dark);
padding: 0.2rem 0.5rem;
border-radius: 0.5rem;
font-size: 0.85em;
diff --git a/assets/css/news-banner.css b/assets/css/news-banner.css
new file mode 100644
index 0000000..75c5684
--- /dev/null
+++ b/assets/css/news-banner.css
@@ -0,0 +1,94 @@
+/* Site-wide news / alert banner above the navbar */
+
+.news-banner {
+ position: relative;
+ z-index: 100;
+ background: linear-gradient(
+ 90deg,
+ var(--openms-blue) 0%,
+ var(--openms-purple) 50%,
+ var(--openms-dark) 100%
+ );
+ color: var(--openms-white);
+ border-bottom: 1px solid rgba(var(--openms-orange-rgb), 0.35);
+}
+
+.news-banner__inner {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 2.75rem;
+ padding: 0.625rem 2.5rem;
+ text-align: center;
+}
+
+.news-banner__message {
+ margin: 0;
+ font-size: 0.9375rem;
+ line-height: 1.5;
+ flex: 1;
+}
+
+.news-banner__label {
+ display: inline-block;
+ margin-right: 0.625rem;
+ padding: 0.125rem 0.5rem;
+ font-size: 0.6875rem;
+ font-weight: 700;
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
+ border-radius: 0.25rem;
+ background: linear-gradient(135deg, var(--openms-orange), var(--openms-pink));
+ color: var(--openms-white);
+ vertical-align: middle;
+}
+
+.news-banner__link {
+ display: inline;
+ color: inherit;
+ text-decoration: none;
+ transition: opacity 0.2s ease;
+}
+
+.news-banner__link:hover {
+ color: var(--openms-white);
+ opacity: 0.92;
+}
+
+.news-banner__link:hover .news-banner__cta {
+ color: var(--openms-yellow);
+}
+
+.news-banner__text {
+ font-weight: 500;
+}
+
+.news-banner__cta {
+ margin-left: 0.5rem;
+ font-weight: 600;
+ color: var(--openms-orange);
+ white-space: nowrap;
+}
+
+@media (max-width: 768px) {
+ .news-banner__inner {
+ padding: 0.625rem 1.25rem;
+ text-align: left;
+ }
+
+ .news-banner__message {
+ font-size: 0.875rem;
+ }
+
+ .news-banner__label {
+ display: block;
+ width: fit-content;
+ margin: 0 0 0.375rem;
+ }
+
+ .news-banner__cta {
+ display: block;
+ margin: 0.25rem 0 0;
+ white-space: normal;
+ }
+}
diff --git a/assets/css/quick-facts.css b/assets/css/quick-facts.css
index ab77a28..7adcb88 100644
--- a/assets/css/quick-facts.css
+++ b/assets/css/quick-facts.css
@@ -28,12 +28,12 @@
height: 86px;
font-size: 36px;
font-family: 'Bebas Neue', cursive;
- background: linear-gradient(45deg, transparent 5%, #FF013C 5%);
+ background: linear-gradient(45deg, transparent 5%, var(--openms-pink) 5%);
border: 0;
- color: #fff;
+ color: var(--openms-white);
letter-spacing: 3px;
line-height: 88px;
- box-shadow: 6px 0px 0px #00E6F6;
+ box-shadow: 6px 0px 0px var(--openms-blue);
outline: transparent;
position: relative;
}
@@ -53,8 +53,8 @@
left: 0;
right: 0;
bottom: 0;
- background: linear-gradient(45deg, transparent 3%, #00E6F6 3%, #00E6F6 5%, #FF013C 5%);
- text-shadow: -3px -3px 0px #F8F005, 3px 3px 0px #00E6F6;
+ background: linear-gradient(45deg, transparent 3%, var(--openms-blue) 3%, var(--openms-blue) 5%, var(--openms-pink) 5%);
+ text-shadow: -3px -3px 0px var(--openms-yellow), 3px 3px 0px var(--openms-blue);
clip-path: var(--slice-0);
}
diff --git a/assets/css/shell.css b/assets/css/shell.css
index 46eaed3..441e5bf 100644
--- a/assets/css/shell.css
+++ b/assets/css/shell.css
@@ -2,8 +2,8 @@
display: flex;
flex-direction: column;
/* Black, with 10% opacity */
- box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1);
- background: rgb(238, 238, 238);
+ box-shadow: 0px 8px 15px rgba(var(--openms-dark-rgb), 0.1);
+ background: var(--openms-grey);
padding: 15px;
}
@@ -68,11 +68,11 @@
}
.CodeMirror pre {
- color: rgb(255, 255, 255) !important;
+ color: var(--openms-white) !important;
}
.CodeMirror-cursor {
- color: rgb(255, 255, 255) !important;
+ color: var(--openms-white) !important;
border-left: 1px solid white !important;
}
diff --git a/assets/css/styles_override.css b/assets/css/styles_override.css
index 756aba2..31f3aaf 100644
--- a/assets/css/styles_override.css
+++ b/assets/css/styles_override.css
@@ -1,42 +1,73 @@
/* Back to top – colour override to match footer theme */
#backtotop a {
- background-color: #0b214a;
- border: 2px solid rgba(255, 255, 255, 0.25);
+ background-color: var(--openms-blue);
+ border: 2px solid rgba(var(--openms-white-rgb), 0.25);
}
#backtotop.visible a:hover {
- background-color: #1a3a7a;
+ background-color: var(--openms-purple);
}
.navbar.is-fresh .navbar-item.has-dropdown .navbar-link {
color: var(--colorPrimaryDark);
}
+.navbar.is-fresh {
+ min-height: 5.5rem;
+}
+
+.navbar.is-fresh .container,
+.navbar.is-fresh .navbar-brand {
+ min-height: 5.5rem;
+}
+
.navbar.is-fresh .navbar-brand .navbar-brand-link {
display: flex;
align-items: center;
- gap: 0.75rem;
+ gap: 0.875rem;
padding-left: 0;
}
-.navbar.is-fresh .navbar-brand img {
- max-height: 50px !important;
- height: 50px;
- width: auto;
+.navbar.is-fresh .navbar-brand img.navbar-logo {
+ max-height: 88px !important;
+ height: 88px !important;
+ width: auto !important;
+ padding-right: 0;
}
.navbar.is-fresh .navbar-logo-text {
- font-size: 1.5rem;
+ font-size: 1.875rem;
font-weight: 700;
- color: #001a4d;
+ color: var(--openms-dark);
line-height: 1;
}
+@media only screen and (max-width: 768px) {
+ .navbar.is-fresh,
+ .navbar.is-fresh .container,
+ .navbar.is-fresh .navbar-brand {
+ min-height: 4.5rem;
+ }
+
+ .navbar.is-fresh .navbar-brand {
+ padding-left: 1.25rem;
+ }
+
+ .navbar.is-fresh .navbar-brand img.navbar-logo {
+ max-height: 56px !important;
+ height: 56px !important;
+ }
+
+ .navbar.is-fresh .navbar-logo-text {
+ font-size: 1.5rem;
+ }
+}
+
/* Solid bar over the dark homepage hero (matches design mockup) */
body:has(.hero-modern) #nav.navbar.is-fresh {
- background: rgba(255, 255, 255, 0.95);
+ background: rgba(var(--openms-white-rgb), 0.95);
backdrop-filter: blur(10px);
- border-bottom: 2px solid #e8eaed;
+ border-bottom: 2px solid var(--openms-grey);
}
@media only screen and (max-width: 850px) {
@@ -50,8 +81,8 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
============================================= */
.footer-redesign {
- background-color: #0b214a;
- color: #e2e8f0;
+ background-color: var(--openms-blue);
+ color: var(--openms-grey);
padding: 3rem 0 0;
font-family: inherit;
}
@@ -74,7 +105,7 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
.footer-title {
font-size: 1.75rem;
font-weight: 800;
- color: #ffffff;
+ color: var(--openms-white);
margin-bottom: 1.5rem;
letter-spacing: -0.3px;
}
@@ -99,8 +130,8 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
.footer-link-group ul li a:focus-visible,
.footer-socials a:focus-visible {
- color: #ffffff;
- outline: 2px solid rgba(255, 255, 255, 0.45);
+ color: var(--openms-white);
+ outline: 2px solid rgba(var(--openms-white-rgb), 0.45);
outline-offset: 4px;
}
@@ -134,7 +165,7 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
- color: rgba(255, 255, 255, 0.45);
+ color: rgba(var(--openms-white-rgb), 0.45);
margin: 0 0 0.875rem 0;
padding: 0;
}
@@ -147,7 +178,7 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
}
.footer-link-group ul li a {
- color: #c8d4e8;
+ color: var(--openms-grey);
text-decoration: none;
font-size: 0.9rem;
display: flex;
@@ -157,7 +188,7 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
}
.footer-link-group ul li a:hover {
- color: #ffffff;
+ color: var(--openms-white);
text-decoration: underline;
}
@@ -166,7 +197,7 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
max-width: 1200px;
margin: 0 auto;
padding: 1.25rem 2rem;
- border-top: 1px solid rgba(255, 255, 255, 0.1);
+ border-top: 1px solid rgba(var(--openms-white-rgb), 0.1);
display: flex;
align-items: center;
justify-content: space-between;
@@ -187,12 +218,12 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
justify-content: center;
min-width: 44px;
min-height: 44px;
- color: #c8d4e8;
+ color: var(--openms-grey);
transition: color 0.2s ease;
}
.footer-socials a:hover {
- color: #ffffff;
+ color: var(--openms-white);
}
.footer-socials svg.icon {
@@ -203,7 +234,7 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
/* ---- Copyright ---- */
.footer-copyright {
- color: rgba(255, 255, 255, 0.45);
+ color: rgba(var(--openms-white-rgb), 0.45);
font-size: 0.85rem;
}
diff --git a/assets/css/tabs.css b/assets/css/tabs.css
index a7c39bc..c5db831 100644
--- a/assets/css/tabs.css
+++ b/assets/css/tabs.css
@@ -36,7 +36,7 @@
text-transform: uppercase;
letter-spacing: 1.5px;
font-weight: 500;
- color: rgb(108, 122, 137);
+ color: var(--openms-grey);
}
#tabs-content > li {
@@ -63,7 +63,7 @@
.grid-container > div {
/* White, with 80% opacity */
- background-color: rgba(255, 255, 255, 0.8);
+ background-color: rgba(var(--openms-white-rgb), 0.8);
text-align: middle;
}
@@ -85,8 +85,8 @@
}
.image-grid > div {
- background-color: rgb(238, 238, 238);
- border: 2px solid rgb(255, 255, 255);
+ background-color: var(--openms-grey);
+ border: 2px solid var(--openms-white);
border-radius: 10px;
padding: 10px;
}
@@ -102,7 +102,7 @@ td > a {
}
tr.highlight-th {
- border-top: 1px solid rgb(238, 238, 238);
+ border-top: 1px solid var(--openms-grey);
font-size: 0.8rem;
}
@@ -134,7 +134,7 @@ td.full-center-text {
td.lastrow-center-text {
text-align: center;
line-height: 35%;
- border-bottom: 1px solid rgb(255, 255, 255);
+ border-bottom: 1px solid var(--openms-white);
}
/* Array Libraries */
diff --git a/assets/css/terminal.css b/assets/css/terminal.css
index d41efda..45b162c 100644
--- a/assets/css/terminal.css
+++ b/assets/css/terminal.css
@@ -7,7 +7,7 @@ position: relative;
}
.terminal-window header {
-background: #E0E8F0;
+background: var(--openms-grey);
height: 30px;
border-radius: 8px 8px 0 0;
padding-left: 10px;
@@ -23,22 +23,22 @@ padding: 0%;
}
.terminal-window header .button.green {
-background: #3BB662;
+background: var(--openms-yellow);
}
.terminal-window header .button.yellow {
-background: #E5C30F;
+background: var(--openms-orange);
}
.terminal-window header .button.red {
-background: #E75448;
+background: var(--openms-pink);
}
.terminal-window section.terminal {
-color: white;
+color: var(--openms-white);
font-family: Menlo, Monaco, "Consolas", "Courier New", "Courier";
font-size: 11pt;
-background: #30353A;
+background: var(--openms-dark);
padding: 10px;
box-sizing: border-box;
position: absolute;
@@ -71,5 +71,5 @@ overflow: auto;
}
.terminal-data { display: none; }
-.terminal-window .gray { color: gray; }
-.terminal-window .green { color: green;}
\ No newline at end of file
+.terminal-window .gray { color: var(--openms-grey); }
+.terminal-window .green { color: var(--openms-purple); }
diff --git a/assets/css/vars_override.css b/assets/css/vars_override.css
deleted file mode 100644
index d0697dc..0000000
--- a/assets/css/vars_override.css
+++ /dev/null
@@ -1,6 +0,0 @@
-:root {
- --fontFamily: {{ .Site.Params.font.name }};
-
- --colorPrimaryDark: #0c2a60;
- --colorPrimaryDarkBtn: #0c2a60;
-}
diff --git a/assets/css/webapps.css b/assets/css/webapps.css
index f782644..514dec2 100644
--- a/assets/css/webapps.css
+++ b/assets/css/webapps.css
@@ -29,9 +29,9 @@
flex-direction: column;
align-items: center;
height: 60%;
- border: 1px solid lightgray;
+ border: 1px solid var(--openms-grey);
border-radius: 25px;
- box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.1);
+ box-shadow: 2px 2px 6px rgba(var(--openms-dark-rgb), 0.1);
transition: height 0.6s ease;
}
@@ -115,7 +115,7 @@
.swiper-button-prev,
.swiper-button-next {
- color: #000080;
+ color: var(--openms-blue);
position: absolute;
top: 40%;
}
diff --git a/config.yaml b/config.yaml
index 27bdca3..c222381 100644
--- a/config.yaml
+++ b/config.yaml
@@ -33,10 +33,15 @@ languages:
languageName: English
params:
description: Why OpenMS? Mass Spectrometry. Visualizations. Open source.
+ newsBanner:
+ enabled: true
+ label: News
+ text: OpenMS 3.5.0 is now available — ARM64 Linux support and more.
+ link: /news/release3.5/
+ linkText: Read more
navbarlogo:
image: OpenMS_transparent_blackFont.png
link: /
- text: OpenMS
altText: OpenMS
hero:
titleBefore: "The "
@@ -60,7 +65,7 @@ languages:
heroGroup:
- title: "OpenMS allows users to:"
- bgColor: ECF2F9
+ bgColor: C2BABC
heroItems:
- title: Run existing workflows
subtitle: Run existing workflows for proteomics and metabolomics with OpenMS in KNIME.
@@ -82,7 +87,7 @@ languages:
buttonText: Get Started
buttonLink: "https://pyopenms.readthedocs.io/en/latest/"
- title: "Advanced users / developers can use OpenMS to:"
- bgColor: FFF1E0
+ bgColor: FFCB4F
heroItems:
- title: Analyze large datasets
subtitle: Run workflows on very large datasets on powerful compute infrastructure
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index 8b196d1..71ecfb0 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -39,6 +39,7 @@
{{ end }}
{{ block "navbar" . }}
+ {{ partial "news-banner.html" . }}
{{ partial "navbar.html" . }}
{{ partial "navbar-clone.html" . }}
{{ end }}
diff --git a/layouts/partials/news-banner.html b/layouts/partials/news-banner.html
new file mode 100644
index 0000000..3d2b0d0
--- /dev/null
+++ b/layouts/partials/news-banner.html
@@ -0,0 +1,22 @@
+{{- $banner := .Site.Params.newsBanner }}
+{{- if and $banner $banner.enabled }}
+
+{{- end }}
From c4ea78b3a0272754bc5e3f07756ec540f5665118 Mon Sep 17 00:00:00 2001
From: Raphaela Gil <128820385+RaphaGil@users.noreply.github.com>
Date: Tue, 26 May 2026 13:27:32 +0100
Subject: [PATCH 4/8] Redesign hero and navigation with responsive mobile
layout.
Add sticky site header, news banner styling, brand typography, and hero stats animation while restructuring the navbar for tablet and mobile.
Co-authored-by: Cursor
---
assets/css/brand-palette.css | 29 ++-
assets/css/casestudies.css | 4 +-
assets/css/content_override.css | 37 +--
assets/css/hero.css | 244 +++++++++++++++---
assets/css/keyfeatures_override.css | 6 -
assets/css/mailchimp.css | 14 +-
assets/css/navbar-responsive.css | 374 ++++++++++++++++++++++++++++
assets/css/news-banner.css | 54 ++--
assets/css/quick-facts.css | 3 -
assets/css/shell.css | 5 -
assets/css/site-header.css | 26 ++
assets/css/styles_override.css | 205 ++++++++++++---
assets/css/tabs.css | 10 +-
assets/css/typography.css | 164 ++++++++++++
assets/js/hero-stats.js | 69 +++++
assets/js/navbar.js | 70 ++++++
config.yaml | 45 +++-
layouts/_default/baseof.html | 6 +-
layouts/index.html | 6 +-
layouts/partials/css.html | 17 +-
layouts/partials/hero.html | 7 +-
layouts/partials/navbar-clone.html | 27 +-
layouts/partials/navbar-cta.html | 8 +
layouts/partials/navbar.html | 27 +-
24 files changed, 1255 insertions(+), 202 deletions(-)
create mode 100644 assets/css/navbar-responsive.css
create mode 100644 assets/css/site-header.css
create mode 100644 assets/css/typography.css
create mode 100644 assets/js/hero-stats.js
create mode 100644 assets/js/navbar.js
create mode 100644 layouts/partials/navbar-cta.html
diff --git a/assets/css/brand-palette.css b/assets/css/brand-palette.css
index 68eb097..142bdc6 100644
--- a/assets/css/brand-palette.css
+++ b/assets/css/brand-palette.css
@@ -1,12 +1,38 @@
/* OpenMS brand palette — load before other site CSS (filename sorts first) */
:root {
- --fontFamily: {{ .Site.Params.font.name }};
+ --fontFamily: "{{ .Site.Params.font.name | default "Montserrat" }}", system-ui, -apple-system,
+ "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
+ --openms-font-heading: var(--fontFamily);
+ --openms-font-body: "{{ .Site.Params.bodyFont.name | default "Raleway" }}", system-ui, -apple-system,
+ "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
+
+ /* Primary headings — Montserrat (pt) */
+ --openms-heading-xl-size: 26pt;
+ --openms-heading-xl-weight: 800;
+ --openms-heading-lg-size: 20pt;
+ --openms-heading-lg-weight: 700;
+
+ /* Body & secondary headings — Raleway (pt) */
+ --openms-text-min: 11pt;
+ --openms-body-size: 12pt;
+ --openms-body-size-lg: 14pt;
+ --openms-secondary-heading-size: 14pt;
+ --openms-secondary-heading-size-lg: 16pt;
+ --openms-presentation-size: 18pt;
+ --openms-body-weight: 400;
+ --openms-secondary-heading-weight: 400;
+
+ /* Quotes, callouts & emphasis — JetBrains Mono thin */
+ --openms-font-mono: "{{ .Site.Params.monoFont.name | default "JetBrains Mono" }}", ui-monospace,
+ "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;
+ --openms-mono-weight: 100;
--openms-yellow: #ffcb4f;
--openms-orange: #ff7501;
--openms-pink: #ff03cb;
--openms-purple: #b503ff;
--openms-blue: #3157e9;
+ --openms-navy: #0c2171;
--openms-dark: #231f20;
--openms-grey: #c2babc;
--openms-white: #ffffff;
@@ -16,6 +42,7 @@
--openms-pink-rgb: 255, 3, 203;
--openms-purple-rgb: 181, 3, 255;
--openms-blue-rgb: 49, 87, 233;
+ --openms-navy-rgb: 12, 33, 113;
--openms-dark-rgb: 35, 31, 32;
--openms-grey-rgb: 194, 186, 188;
--openms-white-rgb: 255, 255, 255;
diff --git a/assets/css/casestudies.css b/assets/css/casestudies.css
index c1b82d0..e7a084a 100644
--- a/assets/css/casestudies.css
+++ b/assets/css/casestudies.css
@@ -10,8 +10,6 @@
.casestudies-title {
display: flex;
justify-content: center;
- letter-spacing: 1.5px;
- font-size: 27px;
}
.casestudies-box-container {
@@ -40,7 +38,7 @@
.casestudies-box-text {
margin: 30px 15px;
- font-size: 14px;
+ font-size: var(--openms-body-size-lg);
}
@media only screen and (max-width: 1300px) {
diff --git a/assets/css/content_override.css b/assets/css/content_override.css
index 41c8eda..cc1bba2 100644
--- a/assets/css/content_override.css
+++ b/assets/css/content_override.css
@@ -1,43 +1,16 @@
.content-container .divider {
- background: var(--openms-dark);
-}
-
-.content-container h1 {
- font-size: 2em;
- text-transform: uppercase;
- letter-spacing: 1.5px;
- font-weight: bold;
-}
-
-.content-container h2 {
- font-size: 2em;
- text-transform: uppercase;
- letter-spacing: 1.5px;
- font-weight: bold;
+ background: var(--openms-dark);
}
.content-container h3 {
- font-size: 1.5em;
- text-transform: uppercase;
- letter-spacing: 1.3px;
- font-weight: bold;
- margin-top: 25px;
+ margin-top: 1.5rem;
}
.content-container h4 {
- text-transform: uppercase;
- font-weight: bold;
- margin-top: 40px;
- margin-bottom: -10px;
+ margin-top: 2.5rem;
+ margin-bottom: -0.625rem;
}
.content-container h5 {
- text-transform: uppercase;
- font-weight: bold;
- margin-top: 22px;
+ margin-top: 1.375rem;
}
-
-.content-container h6 {
- text-transform: uppercase;
- font-weight: bold;
-}
\ No newline at end of file
diff --git a/assets/css/hero.css b/assets/css/hero.css
index 6425a8f..9e6b3a4 100644
--- a/assets/css/hero.css
+++ b/assets/css/hero.css
@@ -1,17 +1,21 @@
/* Modern hero — OpenMS brand palette */
+:root {
+ /* News banner + navbar (approx.) — used to fit hero in one screen */
+ --openms-hero-chrome: 8.5rem;
+}
+
.hero-modern {
position: relative;
overflow: hidden;
color: var(--openms-white);
- background: linear-gradient(
- 135deg,
- var(--openms-blue) 0%,
- var(--openms-purple) 50%,
- var(--openms-dark) 100%
- );
- padding: 5rem 2.5rem;
- min-height: 32rem;
+ background: var(--openms-navy);
+ padding: clamp(2rem, 4vh, 5rem) 2.5rem;
+ min-height: min(32rem, calc(100svh - var(--openms-hero-chrome)));
+ max-height: calc(100svh - var(--openms-hero-chrome));
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
}
.hero-modern::before,
@@ -30,7 +34,7 @@
height: 37.5rem;
background: radial-gradient(
circle,
- rgba(var(--openms-orange-rgb), 0.15) 0%,
+ rgba(var(--openms-white-rgb), 0.12) 0%,
transparent 70%
);
}
@@ -42,7 +46,7 @@
height: 31.25rem;
background: radial-gradient(
circle,
- rgba(var(--openms-pink-rgb), 0.1) 0%,
+ rgba(var(--openms-purple-rgb), 0.15) 0%,
transparent 70%
);
}
@@ -55,12 +59,14 @@
gap: 3.75rem;
align-items: center;
max-width: 75rem;
+ width: 100%;
margin: 0 auto;
}
.hero-modern__title {
- font-size: clamp(2rem, 4.5vw, 3.375rem);
- font-weight: 800;
+ font-family: var(--openms-font-heading);
+ font-size: clamp(1.875rem, 4.5vw, 3.125rem);
+ font-weight: var(--openms-heading-xl-weight);
line-height: 1.15;
letter-spacing: -0.02em;
margin-bottom: 1.5rem;
@@ -68,11 +74,15 @@
}
.hero-modern__gradient-text {
+ font-size: 1.25em;
+ line-height: 1.1;
+ display: inline-block;
background: linear-gradient(
90deg,
- var(--openms-yellow),
- var(--openms-orange),
- var(--openms-pink)
+ var(--openms-yellow) 0%,
+ var(--openms-orange) 40%,
+ var(--openms-pink) 75%,
+ var(--openms-pink) 100%
);
-webkit-background-clip: text;
background-clip: text;
@@ -80,10 +90,8 @@
}
.hero-modern__description {
- font-size: 1.125rem;
- line-height: 1.7;
opacity: 0.95;
- margin-bottom: 2rem;
+ margin-bottom: clamp(1rem, 2vh, 2rem);
max-width: 31.25rem;
}
@@ -91,13 +99,13 @@
display: flex;
flex-wrap: wrap;
gap: 1rem;
- margin-bottom: 2.5rem;
+ margin-bottom: clamp(1rem, 2vh, 2.5rem);
}
.hero-modern__btn {
display: inline-block;
padding: 0.875rem 2rem;
- font-size: 0.9375rem;
+ font-size: var(--openms-body-size-lg);
font-weight: 600;
border-radius: 0.5rem;
text-decoration: none;
@@ -107,14 +115,17 @@
.hero-modern__btn--primary {
color: var(--openms-white);
- background: linear-gradient(135deg, var(--openms-orange), var(--openms-pink));
- box-shadow: 0 0.5rem 1.5rem rgba(var(--openms-orange-rgb), 0.3);
+ background: var(--openms-orange);
+ border: 2px solid var(--openms-orange);
+ box-shadow: 0 0.5rem 1.5rem rgba(var(--openms-orange-rgb), 0.35);
}
.hero-modern__btn--primary:hover {
transform: translateY(-2px);
- box-shadow: 0 0.75rem 2rem rgba(var(--openms-orange-rgb), 0.4);
- color: var(--openms-white);
+ background: var(--openms-yellow);
+ border-color: var(--openms-yellow);
+ box-shadow: 0 0.75rem 2rem rgba(var(--openms-yellow-rgb), 0.4);
+ color: var(--openms-dark);
}
.hero-modern__btn--secondary {
@@ -134,7 +145,7 @@
display: flex;
flex-wrap: wrap;
gap: 2.5rem;
- padding-top: 2.5rem;
+ padding-top: clamp(1rem, 2vh, 2.5rem);
border-top: 1px solid rgba(var(--openms-white-rgb), 0.1);
}
@@ -147,14 +158,13 @@
.hero-modern__stat-number {
font-size: 1.75rem;
font-weight: 800;
- background: linear-gradient(90deg, var(--openms-yellow), var(--openms-orange));
- -webkit-background-clip: text;
- background-clip: text;
- -webkit-text-fill-color: transparent;
+ font-variant-numeric: tabular-nums;
+ min-width: 7ch;
+ color: var(--openms-yellow);
}
.hero-modern__stat-label {
- font-size: 0.8125rem;
+ font-size: var(--openms-text-min);
opacity: 0.85;
text-transform: uppercase;
letter-spacing: 0.05em;
@@ -209,38 +219,198 @@
}
@media (max-width: 1024px) {
+ :root {
+ --openms-hero-chrome: 9.5rem;
+ }
+
.hero-modern {
- padding: 5rem 1.5rem;
- min-height: auto;
+ padding: clamp(1.25rem, 2.5vh, 2.5rem) 1.5rem;
+ min-height: calc(100dvh - var(--openms-hero-chrome));
+ max-height: calc(100dvh - var(--openms-hero-chrome));
+ }
+
+ .hero-modern::before {
+ width: 22rem;
+ height: 22rem;
+ right: -25%;
+ }
+
+ .hero-modern::after {
+ width: 18rem;
+ height: 18rem;
+ left: -20%;
}
.hero-modern__container {
grid-template-columns: 1fr;
- gap: 2.5rem;
+ gap: clamp(0.75rem, 2vh, 1.5rem);
+ max-height: 100%;
+ overflow-y: auto;
+ overscroll-behavior: contain;
+ }
+
+ .hero-modern__content {
+ text-align: center;
+ width: 100%;
+ }
+
+ .hero-modern__description {
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ .hero-modern__buttons {
+ justify-content: center;
}
.hero-modern__visual {
- min-height: 12rem;
+ min-height: 0;
+ max-height: clamp(5rem, 14vh, 8rem);
+ }
+
+ .hero-modern__waveform {
+ min-height: 0;
+ max-height: 100%;
+ height: clamp(5rem, 14vh, 8rem);
+ }
+
+ .hero-modern__stats {
+ justify-content: center;
+ align-items: flex-start;
+ width: 100%;
+ }
+
+ .hero-modern__stat {
+ align-items: center;
+ text-align: center;
+ }
+
+ .hero-modern__stat-number {
+ min-width: auto;
}
}
@media (max-width: 768px) {
+ :root {
+ --openms-hero-chrome: 10.5rem;
+ }
+
.hero-modern {
- padding: 3.75rem 1rem;
+ padding: clamp(0.75rem, 1.5vh, 1.5rem) 1.25rem;
+ }
+
+ .hero-modern__container {
+ gap: clamp(0.5rem, 1.5vh, 1rem);
+ }
+
+ .hero-modern__title {
+ margin-bottom: 0.5rem;
+ font-size: clamp(1.375rem, 5.5vw, 1.75rem);
+ line-height: 1.2;
+ }
+
+ .hero-modern__gradient-text {
+ font-size: 1.12em;
+ }
+
+ .hero-modern__description {
+ max-width: none;
+ margin-bottom: 0.75rem;
+ font-size: var(--openms-body-size-lg);
+ line-height: 1.45;
}
.hero-modern__buttons {
flex-direction: column;
align-items: stretch;
+ margin-bottom: 0.75rem;
}
.hero-modern__btn {
text-align: center;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 0.75rem 1.25rem;
}
.hero-modern__stats {
- flex-direction: column;
- gap: 1.5rem;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ justify-content: space-evenly;
+ gap: 0.5rem;
+ padding-top: 0.75rem;
+ }
+
+ .hero-modern__stat {
+ flex: 1 1 0;
+ min-width: 0;
+ max-width: 6.5rem;
+ }
+
+ .hero-modern__stat-number {
+ font-size: 1.375rem;
+ }
+
+ .hero-modern__stat-label {
+ font-size: var(--openms-text-min);
+ letter-spacing: 0.04em;
+ line-height: 1.3;
+ }
+
+ .hero-modern__visual {
+ min-height: 0;
+ max-height: clamp(3.5rem, 10vh, 5.5rem);
+ }
+
+ .hero-modern__waveform {
+ min-height: 0;
+ max-height: 100%;
+ height: clamp(3.5rem, 10vh, 5.5rem);
+ max-width: 14rem;
+ }
+
+ .hero-modern__wave-bar {
+ width: 0.3rem;
+ }
+}
+
+@media (max-width: 768px) and (max-height: 700px) {
+ .hero-modern__visual {
+ display: none;
+ }
+
+ .hero-modern__container {
+ gap: 0.5rem;
+ }
+}
+
+@media (max-width: 380px) {
+ :root {
+ --openms-hero-chrome: 11rem;
+ }
+
+ .hero-modern {
+ padding: 0.75rem 1rem;
+ }
+
+ .hero-modern__title {
+ font-size: 1.25rem;
+ }
+
+ .hero-modern__stats {
+ gap: 0.5rem;
+ }
+
+ .hero-modern__stat {
+ max-width: 5.5rem;
+ }
+
+ .hero-modern__stat-number {
+ font-size: 1.2rem;
+ }
+
+ .hero-modern__stat-label {
+ font-size: var(--openms-text-min);
}
}
diff --git a/assets/css/keyfeatures_override.css b/assets/css/keyfeatures_override.css
index 79a2c34..6b23356 100644
--- a/assets/css/keyfeatures_override.css
+++ b/assets/css/keyfeatures_override.css
@@ -19,9 +19,6 @@
.keyfeatures-title {
display: flex;
justify-content: center;
- letter-spacing: 1.5px;
- font-size: 27px;
- font-weight: bold;
}
.keyfeatures-box-container {
@@ -47,9 +44,6 @@
.keyfeatures-box-title {
margin: 15px;
- font-size: 16px;
- text-transform: uppercase;
- font-weight: bold;
}
.keyfeatures-box-text {
diff --git a/assets/css/mailchimp.css b/assets/css/mailchimp.css
index aba156b..349d4c1 100644
--- a/assets/css/mailchimp.css
+++ b/assets/css/mailchimp.css
@@ -31,18 +31,18 @@
width: 75%;
height: 35px;
padding-left: 5px;
- font-size: 14px;
+ font-size: var(--openms-body-size-lg);
color: var(--colorPrimaryDark);
}
.submission-instructions {
position: absolute;
right: 18%;
- font-size: 10px;
+ font-size: var(--openms-text-min);
color: var(--openmsSlateGray);
}
-.signup-button {
+.sign-up-container .signup-button {
display: none;
}
@@ -64,7 +64,7 @@
@media only screen and (max-width: 1150px) {
.sign-up-input {
- font-size: 12px;
+ font-size: var(--openms-text-min);
}
}
@@ -81,14 +81,14 @@
display: none;
}
- .signup-button {
+ .sign-up-container .signup-button {
display: block;
height: 35px;
border-radius: 5px;
margin-left: 5px;
width: 60px;
color: black;
- border:none;
- outline:none;
+ border: none;
+ outline: none;
}
}
diff --git a/assets/css/navbar-responsive.css b/assets/css/navbar-responsive.css
new file mode 100644
index 0000000..06d991f
--- /dev/null
+++ b/assets/css/navbar-responsive.css
@@ -0,0 +1,374 @@
+/* Navbar — tablet (md) & mobile (sm) */
+
+/* Mobile bar CTAs — hidden on desktop */
+.navbar-mobile-ctas,
+.navbar-mobile-ctas-end {
+ display: none;
+}
+
+.navbar-brand-actions {
+ display: flex;
+ align-items: center;
+}
+
+/* Desktop — horizontal bar */
+@media (min-width: 1024px) {
+ .navbar-mobile-ctas,
+ .navbar-mobile-ctas-end,
+ .navbar-brand-actions {
+ display: none;
+ }
+
+ .navbar-desktop-cta {
+ display: contents;
+ }
+
+ .navbar.is-fresh .navbar-burger,
+ #navbar-clone.navbar.is-fresh .navbar-burger {
+ display: none;
+ }
+
+ .navbar.is-fresh .navbar-menu.is-static,
+ #navbar-clone.navbar.is-fresh .navbar-menu.is-fixed {
+ display: flex !important;
+ flex: 1;
+ min-width: 0;
+ position: static;
+ box-shadow: none;
+ background: transparent;
+ overflow: visible;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-end,
+ #navbar-clone.navbar.is-fresh .navbar-end {
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ align-items: center;
+ }
+}
+
+/* Medium desktop — tighter items so CTAs stay visible */
+@media (min-width: 1024px) and (max-width: 1280px) {
+ .navbar.is-fresh .navbar-brand img.navbar-logo,
+ #navbar-clone.navbar.is-fresh .navbar-brand img.navbar-logo {
+ max-height: 64px !important;
+ height: 64px !important;
+ }
+
+ .navbar.is-fresh .navbar-logo-text,
+ #navbar-clone.navbar.is-fresh .navbar-logo-text {
+ font-size: var(--openms-secondary-heading-size-lg);
+ }
+
+ .navbar.is-fresh .navbar-item,
+ .navbar.is-fresh a.navbar-item.is-secondary,
+ #navbar-clone.navbar.is-fresh .navbar-item,
+ #navbar-clone.navbar.is-fresh a.navbar-item.is-secondary {
+ font-size: var(--openms-text-min);
+ padding-left: 0.5rem;
+ padding-right: 0.5rem;
+ }
+
+ .navbar.is-fresh .signup-button,
+ #navbar-clone.navbar.is-fresh .signup-button {
+ font-size: var(--openms-text-min);
+ padding: 0.5rem 0.875rem !important;
+ white-space: nowrap;
+ }
+}
+
+/* Tablet & mobile — collapsible menu (Bulma < 1024px) */
+@media (max-width: 1023px) {
+ .site-header #nav.navbar.is-fresh,
+ #navbar-clone.navbar.is-fresh {
+ min-height: auto;
+ }
+
+ .site-header #nav.navbar.is-fresh .container,
+ #navbar-clone.navbar.is-fresh .container {
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: center;
+ min-height: 3.75rem;
+ padding-left: 0.5rem;
+ padding-right: 0.5rem;
+ }
+
+ .navbar-desktop-cta {
+ display: none !important;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-brand,
+ #navbar-clone.navbar.is-fresh .navbar-brand {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex: 1;
+ min-height: 3.75rem;
+ min-width: 0;
+ padding-left: 0;
+ gap: 0.25rem;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-brand-link,
+ #navbar-clone.navbar.is-fresh .navbar-brand-link {
+ flex: 0 1 auto;
+ min-width: 0;
+ max-width: 42%;
+ padding: 0;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-brand img.navbar-logo,
+ #navbar-clone.navbar.is-fresh .navbar-brand img.navbar-logo {
+ max-height: 44px !important;
+ height: 44px !important;
+ max-width: 100%;
+ width: auto;
+ object-fit: contain;
+ object-position: left center;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-logo-text,
+ #navbar-clone.navbar.is-fresh .navbar-logo-text {
+ display: none;
+ }
+
+ .navbar-brand-actions {
+ display: flex !important;
+ align-items: center;
+ flex: 1 1 auto;
+ min-width: 0;
+ margin-left: auto;
+ justify-content: flex-end;
+ overflow: visible;
+ }
+
+ /* Right cluster: Spon → Give → menu */
+ .navbar-mobile-ctas-end {
+ display: flex !important;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ align-items: center;
+ gap: 0.25rem;
+ flex-shrink: 0;
+ margin-left: auto;
+ overflow: visible;
+ max-width: 100%;
+ }
+
+ .navbar-mobile-ctas-end .navbar-cta-label--full,
+ .navbar-mobile-ctas .navbar-cta-label--full {
+ display: none;
+ }
+
+ .navbar-mobile-ctas-end .navbar-cta-label--short,
+ .navbar-mobile-ctas .navbar-cta-label--short {
+ display: inline;
+ }
+
+ .navbar-mobile-ctas-end .navbar-cta-item {
+ display: inline-flex !important;
+ align-items: center;
+ flex-shrink: 0;
+ width: auto !important;
+ max-width: none;
+ justify-content: center;
+ text-align: center;
+ padding: 0;
+ }
+
+ .navbar-mobile-ctas-end .navbar-cta-item:nth-child(1) {
+ order: 1;
+ }
+
+ .navbar-mobile-ctas-end .navbar-cta-item:nth-child(2) {
+ order: 2;
+ }
+
+ .navbar-mobile-ctas-end .signup-button {
+ display: inline-block !important;
+ padding: 0.35rem 0.5rem !important;
+ font-size: var(--openms-text-min);
+ line-height: 1.15;
+ white-space: nowrap;
+ border-width: 1.5px !important;
+ }
+
+ .navbar-mobile-ctas-end .navbar-burger {
+ order: 3;
+ display: flex !important;
+ flex-shrink: 0;
+ align-items: center;
+ justify-content: center;
+ width: 2.75rem;
+ height: 2.75rem;
+ margin-right: 0;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-burger,
+ #navbar-clone.navbar.is-fresh .navbar-burger {
+ display: flex !important;
+ align-items: center;
+ justify-content: center;
+ width: 2.75rem;
+ height: 2.75rem;
+ margin-right: 0;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-burger span,
+ #navbar-clone.navbar.is-fresh .navbar-burger span {
+ width: 1.35rem;
+ left: calc(50% - 0.675rem);
+ }
+
+ /* Overlay menu — does not expand header height */
+ .site-header #nav.navbar.is-fresh .navbar-menu.is-static,
+ #navbar-clone.navbar.is-fresh .navbar-menu.is-fixed {
+ display: none;
+ flex: none;
+ width: 100%;
+ position: fixed;
+ left: 0;
+ right: 0;
+ top: var(--openms-header-height, 9rem);
+ bottom: 0;
+ z-index: 199;
+ margin: 0;
+ background: var(--openms-white);
+ box-shadow: 0 0.5rem 1.25rem rgba(var(--openms-dark-rgb), 0.12);
+ border-top: 1px solid var(--openms-grey);
+ max-height: none;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-menu.is-static.is-active,
+ #navbar-clone.navbar.is-fresh .navbar-menu.is-fixed.is-active {
+ display: block;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-end,
+ #navbar-clone.navbar.is-fresh .navbar-end {
+ flex-direction: column;
+ align-items: stretch;
+ width: 100%;
+ flex-wrap: nowrap;
+ gap: 0;
+ padding: 0.5rem 0 1rem;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-menu .navbar-item,
+ .site-header #nav.navbar.is-fresh .navbar-menu a.navbar-item.is-secondary,
+ .site-header #nav.navbar.is-fresh .navbar-menu .navbar-item.has-dropdown,
+ #navbar-clone.navbar.is-fresh .navbar-menu .navbar-item,
+ #navbar-clone.navbar.is-fresh .navbar-menu a.navbar-item.is-secondary,
+ #navbar-clone.navbar.is-fresh .navbar-menu .navbar-item.has-dropdown {
+ width: 100%;
+ justify-content: center;
+ text-align: center;
+ padding: 0.65rem 1rem;
+ }
+
+ .navbar.is-fresh .navbar-item.has-dropdown .navbar-link,
+ #navbar-clone.navbar.is-fresh .navbar-item.has-dropdown .navbar-link {
+ width: 100%;
+ justify-content: center;
+ }
+
+ .navbar.is-fresh .navbar-item.has-dropdown .navbar-link::after,
+ #navbar-clone.navbar.is-fresh .navbar-item.has-dropdown .navbar-link::after {
+ position: relative;
+ top: auto;
+ right: auto;
+ margin-left: 0.35rem;
+ }
+
+ .navbar.is-fresh .navbar-item.has-dropdown .navbar-dropdown,
+ #navbar-clone.navbar.is-fresh .navbar-item.has-dropdown .navbar-dropdown {
+ position: static;
+ display: none;
+ width: 100%;
+ min-width: 0;
+ margin-top: 0;
+ box-shadow: none;
+ border-top: none;
+ background: rgba(var(--openms-blue-rgb), 0.06);
+ }
+
+ .navbar.is-fresh .navbar-item.has-dropdown.is-active .navbar-dropdown,
+ #navbar-clone.navbar.is-fresh .navbar-item.has-dropdown.is-active .navbar-dropdown {
+ display: block;
+ }
+
+ .navbar.is-fresh .navbar-item.has-dropdown.is-hoverable:hover .navbar-dropdown,
+ #navbar-clone.navbar.is-fresh .navbar-item.has-dropdown.is-hoverable:hover .navbar-dropdown {
+ display: none;
+ }
+
+ .navbar.is-fresh .navbar-item.has-dropdown.is-active.is-hoverable:hover .navbar-dropdown,
+ #navbar-clone.navbar.is-fresh .navbar-item.has-dropdown.is-active.is-hoverable:hover .navbar-dropdown {
+ display: block;
+ }
+
+}
+
+/* Small phones */
+@media (max-width: 768px) {
+ .site-header #nav.navbar.is-fresh .container,
+ #navbar-clone.navbar.is-fresh .container {
+ min-height: 3.5rem;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-brand,
+ #navbar-clone.navbar.is-fresh .navbar-brand {
+ min-height: 3.5rem;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-brand img.navbar-logo,
+ #navbar-clone.navbar.is-fresh .navbar-brand img.navbar-logo {
+ max-height: 38px !important;
+ height: 38px !important;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-brand-link,
+ #navbar-clone.navbar.is-fresh .navbar-brand-link {
+ max-width: 38%;
+ }
+}
+
+@media (max-width: 380px) {
+ .site-header #nav.navbar.is-fresh .navbar-brand img.navbar-logo,
+ #navbar-clone.navbar.is-fresh .navbar-brand img.navbar-logo {
+ max-height: 32px !important;
+ height: 32px !important;
+ }
+
+ .site-header #nav.navbar.is-fresh .navbar-brand-link,
+ #navbar-clone.navbar.is-fresh .navbar-brand-link {
+ max-width: 34%;
+ }
+
+ .navbar-mobile-ctas-end {
+ gap: 0.2rem;
+ }
+
+ .navbar-mobile-ctas-end .signup-button {
+ padding: 0.3rem 0.4rem !important;
+ }
+
+ .navbar-mobile-ctas-end .navbar-burger {
+ width: 2.5rem;
+ height: 2.5rem;
+ }
+}
+
+/* Desktop CTA labels */
+@media (min-width: 1024px) {
+ .navbar-cta-label--short {
+ display: none;
+ }
+
+ .navbar-cta-label--full {
+ display: inline;
+ }
+}
diff --git a/assets/css/news-banner.css b/assets/css/news-banner.css
index 75c5684..ec63d59 100644
--- a/assets/css/news-banner.css
+++ b/assets/css/news-banner.css
@@ -1,16 +1,11 @@
-/* Site-wide news / alert banner above the navbar */
+/* Site-wide news / alert banner — matches hero color scheme */
.news-banner {
position: relative;
z-index: 100;
- background: linear-gradient(
- 90deg,
- var(--openms-blue) 0%,
- var(--openms-purple) 50%,
- var(--openms-dark) 100%
- );
+ background: var(--openms-navy);
color: var(--openms-white);
- border-bottom: 1px solid rgba(var(--openms-orange-rgb), 0.35);
+ border-bottom: 1px solid rgba(var(--openms-white-rgb), 0.1);
}
.news-banner__inner {
@@ -24,21 +19,23 @@
.news-banner__message {
margin: 0;
- font-size: 0.9375rem;
+ font-size: var(--openms-body-size);
line-height: 1.5;
flex: 1;
}
+/* Matches hero primary button */
.news-banner__label {
display: inline-block;
margin-right: 0.625rem;
padding: 0.125rem 0.5rem;
- font-size: 0.6875rem;
+ font-size: var(--openms-text-min);
font-weight: 700;
letter-spacing: 0.06em;
text-transform: uppercase;
border-radius: 0.25rem;
- background: linear-gradient(135deg, var(--openms-orange), var(--openms-pink));
+ background: var(--openms-orange);
+ border: 2px solid var(--openms-orange);
color: var(--openms-white);
vertical-align: middle;
}
@@ -47,48 +44,57 @@
display: inline;
color: inherit;
text-decoration: none;
- transition: opacity 0.2s ease;
+ transition: color 0.2s ease, opacity 0.2s ease;
}
.news-banner__link:hover {
color: var(--openms-white);
- opacity: 0.92;
-}
-
-.news-banner__link:hover .news-banner__cta {
- color: var(--openms-yellow);
}
.news-banner__text {
font-weight: 500;
}
+/* Matches hero stat numbers */
.news-banner__cta {
margin-left: 0.5rem;
font-weight: 600;
- color: var(--openms-orange);
+ color: var(--openms-yellow);
white-space: nowrap;
+ transition: color 0.2s ease;
+}
+
+.news-banner__link:hover .news-banner__cta {
+ color: var(--openms-yellow);
}
@media (max-width: 768px) {
.news-banner__inner {
- padding: 0.625rem 1.25rem;
- text-align: left;
+ padding: 0.75rem 1rem;
+ text-align: center;
+ justify-content: center;
}
.news-banner__message {
- font-size: 0.875rem;
+ flex: none;
+ width: 100%;
+ font-size: var(--openms-body-size);
+ text-align: center;
}
.news-banner__label {
- display: block;
- width: fit-content;
+ display: inline-block;
margin: 0 0 0.375rem;
}
+ .news-banner__link {
+ display: inline-block;
+ text-align: center;
+ }
+
.news-banner__cta {
display: block;
- margin: 0.25rem 0 0;
+ margin: 0.25rem auto 0;
white-space: normal;
}
}
diff --git a/assets/css/quick-facts.css b/assets/css/quick-facts.css
index 7adcb88..78003a8 100644
--- a/assets/css/quick-facts.css
+++ b/assets/css/quick-facts.css
@@ -9,9 +9,6 @@
.facts-title {
display: flex;
justify-content: center;
- letter-spacing: 1.5px;
- font-size: 30px;
- font-weight: bold;
}
.facts-list {
diff --git a/assets/css/shell.css b/assets/css/shell.css
index 441e5bf..6afefcb 100644
--- a/assets/css/shell.css
+++ b/assets/css/shell.css
@@ -32,11 +32,6 @@
align-items: center;
}
-.shell-title {
- font-size: 35px;
- font-weight: bold;
-}
-
.shell-lesson {
text-align: left;
flex: 1;
diff --git a/assets/css/site-header.css b/assets/css/site-header.css
new file mode 100644
index 0000000..1c9270f
--- /dev/null
+++ b/assets/css/site-header.css
@@ -0,0 +1,26 @@
+/* Sticky site header — news banner + navbar stay aligned at top */
+
+.site-header {
+ position: sticky;
+ top: 0;
+ z-index: 200;
+ width: 100%;
+ background: var(--openms-white);
+}
+
+.site-header .news-banner {
+ position: relative;
+ z-index: 1;
+ flex-shrink: 0;
+}
+
+.site-header #nav.navbar.is-fresh {
+ position: relative;
+ z-index: 2;
+ width: 100%;
+}
+
+/* Scroll clone duplicates nav only — hide; sticky header handles scroll */
+#navbar-clone.navbar.is-fresh {
+ display: none !important;
+}
diff --git a/assets/css/styles_override.css b/assets/css/styles_override.css
index 31f3aaf..618034a 100644
--- a/assets/css/styles_override.css
+++ b/assets/css/styles_override.css
@@ -8,8 +8,160 @@
background-color: var(--openms-purple);
}
-.navbar.is-fresh .navbar-item.has-dropdown .navbar-link {
- color: var(--colorPrimaryDark);
+.navbar.is-fresh .navbar-item,
+.navbar.is-fresh .navbar-link,
+.navbar.is-fresh a.navbar-item.is-secondary,
+.navbar.is-fresh .navbar-menu .navbar-item,
+#navbar-clone.navbar.is-fresh .navbar-item,
+#navbar-clone.navbar.is-fresh .navbar-link,
+#navbar-clone.navbar.is-fresh a.navbar-item.is-secondary,
+#navbar-clone.navbar.is-fresh .navbar-menu .navbar-item {
+ color: var(--openms-dark) !important;
+}
+
+.navbar.is-fresh .navbar-item:focus-visible,
+.navbar.is-fresh .navbar-link:focus-visible,
+.navbar.is-fresh .navbar-dropdown .navbar-item:focus-visible,
+#navbar-clone.navbar.is-fresh .navbar-item:focus-visible,
+#navbar-clone.navbar.is-fresh .navbar-link:focus-visible,
+#navbar-clone.navbar.is-fresh .navbar-dropdown .navbar-item:focus-visible {
+ outline: 2px solid var(--openms-blue);
+ outline-offset: 2px;
+}
+
+.navbar.is-fresh .navbar-item:hover,
+.navbar.is-fresh .navbar-link:hover,
+.navbar.is-fresh .navbar-item.has-dropdown:hover .navbar-link,
+.navbar.is-fresh .navbar-brand .navbar-brand-link:hover,
+#navbar-clone.navbar.is-fresh .navbar-item:hover,
+#navbar-clone.navbar.is-fresh .navbar-link:hover,
+#navbar-clone.navbar.is-fresh .navbar-item.has-dropdown:hover .navbar-link,
+#navbar-clone.navbar.is-fresh .navbar-brand .navbar-brand-link:hover {
+ color: var(--openms-blue) !important;
+}
+
+.navbar.is-fresh a.navbar-item.is-secondary,
+#navbar-clone.navbar.is-fresh a.navbar-item.is-secondary {
+ transition: color 0.2s ease;
+}
+
+.navbar.is-fresh a.navbar-item.is-secondary:hover,
+.navbar.is-fresh a.navbar-item.is-secondary:focus-visible,
+#navbar-clone.navbar.is-fresh a.navbar-item.is-secondary:hover,
+#navbar-clone.navbar.is-fresh a.navbar-item.is-secondary:focus-visible {
+ color: var(--openms-blue) !important;
+ background-color: transparent !important;
+}
+
+.navbar.is-fresh .navbar-item.has-dropdown .navbar-link::after,
+#navbar-clone.navbar.is-fresh .navbar-item.has-dropdown .navbar-link::after {
+ border-color: var(--openms-dark) !important;
+}
+
+.navbar.is-fresh .navbar-item.has-dropdown:hover .navbar-link::after,
+#navbar-clone.navbar.is-fresh .navbar-item.has-dropdown:hover .navbar-link::after {
+ border-color: var(--openms-blue) !important;
+}
+
+.navbar.is-fresh .navbar-item.has-dropdown .navbar-dropdown,
+#navbar-clone.navbar.is-fresh .navbar-item.has-dropdown .navbar-dropdown {
+ border-top-color: var(--openms-blue);
+ box-shadow: 0 0.5rem 1.5rem rgba(var(--openms-dark-rgb), 0.08);
+}
+
+.navbar.is-fresh .navbar-dropdown .navbar-item,
+#navbar-clone.navbar.is-fresh .navbar-dropdown .navbar-item {
+ color: var(--openms-dark) !important;
+}
+
+.navbar.is-fresh .navbar-dropdown .navbar-item:hover,
+#navbar-clone.navbar.is-fresh .navbar-dropdown .navbar-item:hover {
+ color: var(--openms-blue) !important;
+ background-color: rgba(var(--openms-blue-rgb), 0.1);
+}
+
+/* Navbar CTA buttons (mailchimp.css must not hide these) */
+.navbar.is-fresh .signup-button,
+#navbar-clone.navbar.is-fresh .signup-button {
+ display: inline-block !important;
+}
+
+/* Donate — matches hero primary button */
+.navbar.is-fresh .signup-button.secondary-btn,
+#navbar-clone.navbar.is-fresh .signup-button.secondary-btn {
+ background-color: var(--openms-orange) !important;
+ color: var(--openms-white) !important;
+ border: 2px solid var(--openms-orange) !important;
+ box-shadow: 0 0.25rem 0.75rem rgba(var(--openms-orange-rgb), 0.3);
+}
+
+.navbar.is-fresh .signup-button.secondary-btn:hover,
+#navbar-clone.navbar.is-fresh .signup-button.secondary-btn:hover {
+ background-color: var(--openms-yellow) !important;
+ color: var(--openms-dark) !important;
+ border-color: var(--openms-yellow) !important;
+ box-shadow: 0 0.35rem 1rem rgba(var(--openms-yellow-rgb), 0.35);
+}
+
+/* Sponsor — outline blue */
+.navbar.is-fresh .signup-button.sponsor-btn,
+#navbar-clone.navbar.is-fresh .signup-button.sponsor-btn {
+ background-color: transparent !important;
+ color: var(--openms-blue) !important;
+ border: 2px solid var(--openms-blue) !important;
+ box-shadow: none;
+}
+
+.navbar.is-fresh .signup-button.sponsor-btn:hover,
+#navbar-clone.navbar.is-fresh .signup-button.sponsor-btn:hover {
+ background-color: var(--openms-blue) !important;
+ color: var(--openms-white) !important;
+ border-color: var(--openms-blue) !important;
+ box-shadow: 0 0.25rem 0.75rem rgba(var(--openms-blue-rgb), 0.3);
+}
+
+.navbar.is-fresh .navbar-burger,
+#navbar-clone.navbar.is-fresh .navbar-burger {
+ color: var(--openms-dark);
+ width: 3.5rem;
+ height: 3.5rem;
+ margin-right: 1rem;
+}
+
+@media (max-width: 1023px) {
+ .navbar.is-fresh .navbar-burger,
+ #navbar-clone.navbar.is-fresh .navbar-burger {
+ margin-right: 0;
+ }
+}
+
+.navbar.is-fresh .navbar-burger span,
+#navbar-clone.navbar.is-fresh .navbar-burger span {
+ background-color: var(--openms-dark);
+ height: 3px;
+ width: 1.75rem;
+ left: calc(50% - 0.875rem);
+ border-radius: 1px;
+}
+
+.navbar.is-fresh .navbar-burger span:nth-child(1),
+#navbar-clone.navbar.is-fresh .navbar-burger span:nth-child(1) {
+ top: calc(50% - 8px);
+}
+
+.navbar.is-fresh .navbar-burger span:nth-child(2),
+#navbar-clone.navbar.is-fresh .navbar-burger span:nth-child(2) {
+ top: calc(50% - 1.5px);
+}
+
+.navbar.is-fresh .navbar-burger span:nth-child(3),
+#navbar-clone.navbar.is-fresh .navbar-burger span:nth-child(3) {
+ top: calc(50% + 5px);
+}
+
+.navbar.is-fresh .navbar-burger:hover,
+#navbar-clone.navbar.is-fresh .navbar-burger:hover {
+ background-color: rgba(var(--openms-yellow-rgb), 0.15);
}
.navbar.is-fresh {
@@ -21,6 +173,12 @@
min-height: 5.5rem;
}
+.navbar.is-fresh .navbar-item:has(.signup-button) {
+ flex-shrink: 0;
+ padding-left: 0.35rem;
+ padding-right: 0.35rem;
+}
+
.navbar.is-fresh .navbar-brand .navbar-brand-link {
display: flex;
align-items: center;
@@ -35,36 +193,22 @@
padding-right: 0;
}
-.navbar.is-fresh .navbar-logo-text {
- font-size: 1.875rem;
- font-weight: 700;
- color: var(--openms-dark);
+.navbar.is-fresh .navbar-logo-text,
+#navbar-clone.navbar.is-fresh .navbar-logo-text {
+ font-family: var(--openms-font-heading);
+ font-size: var(--openms-heading-lg-size);
+ font-weight: var(--openms-heading-lg-weight);
+ color: var(--openms-dark) !important;
line-height: 1;
}
-@media only screen and (max-width: 768px) {
- .navbar.is-fresh,
- .navbar.is-fresh .container,
- .navbar.is-fresh .navbar-brand {
- min-height: 4.5rem;
- }
-
- .navbar.is-fresh .navbar-brand {
- padding-left: 1.25rem;
- }
-
- .navbar.is-fresh .navbar-brand img.navbar-logo {
- max-height: 56px !important;
- height: 56px !important;
- }
-
- .navbar.is-fresh .navbar-logo-text {
- font-size: 1.5rem;
- }
+.navbar.is-fresh .navbar-brand .navbar-brand-link:hover .navbar-logo-text,
+#navbar-clone.navbar.is-fresh .navbar-brand .navbar-brand-link:hover .navbar-logo-text {
+ color: var(--openms-blue) !important;
}
/* Solid bar over the dark homepage hero (matches design mockup) */
-body:has(.hero-modern) #nav.navbar.is-fresh {
+body:has(.hero-modern) .site-header #nav.navbar.is-fresh {
background: rgba(var(--openms-white-rgb), 0.95);
backdrop-filter: blur(10px);
border-bottom: 2px solid var(--openms-grey);
@@ -103,11 +247,8 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
}
.footer-title {
- font-size: 1.75rem;
- font-weight: 800;
color: var(--openms-white);
margin-bottom: 1.5rem;
- letter-spacing: -0.3px;
}
/* ---- Partner logo row ---- */
@@ -161,7 +302,7 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
/* ---- Column heading ---- */
.footer-group-heading {
- font-size: 0.68rem;
+ font-size: var(--openms-text-min);
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
@@ -180,7 +321,7 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
.footer-link-group ul li a {
color: var(--openms-grey);
text-decoration: none;
- font-size: 0.9rem;
+ font-size: var(--openms-body-size);
display: flex;
align-items: center;
min-height: 44px;
@@ -235,7 +376,7 @@ body:has(.hero-modern) #nav.navbar.is-fresh {
/* ---- Copyright ---- */
.footer-copyright {
color: rgba(var(--openms-white-rgb), 0.45);
- font-size: 0.85rem;
+ font-size: var(--openms-text-min);
}
/* =============================================
diff --git a/assets/css/tabs.css b/assets/css/tabs.css
index c5db831..f69d395 100644
--- a/assets/css/tabs.css
+++ b/assets/css/tabs.css
@@ -16,8 +16,6 @@
.tabs-title {
display: flex;
justify-content: center;
- letter-spacing: 1.5px;
- font-size: 27px;
margin: 30px 0;
}
@@ -32,7 +30,7 @@
.uk-nav > li > a {
height: 35px;
- font-size: 13px;
+ font-size: var(--openms-text-min);
text-transform: uppercase;
letter-spacing: 1.5px;
font-weight: 500;
@@ -93,17 +91,17 @@
/* Scientific Domains */
td, th {
- font-size: 0.8rem;
+ font-size: var(--openms-text-min);
padding: 8px;
}
td > a {
- font-size: 0.8rem;
+ font-size: var(--openms-text-min);
}
tr.highlight-th {
border-top: 1px solid var(--openms-grey);
- font-size: 0.8rem;
+ font-size: var(--openms-text-min);
}
td.bold-text {
diff --git a/assets/css/typography.css b/assets/css/typography.css
new file mode 100644
index 0000000..0d41178
--- /dev/null
+++ b/assets/css/typography.css
@@ -0,0 +1,164 @@
+/* OpenMS typography
+ Montserrat — primary headings (h1, h2, large titles)
+ Raleway — body copy & secondary headings (h3–h6)
+ JetBrains Mono thin — quotes, callouts & emphasis
+ Web minimum — 11pt
+*/
+
+html {
+ font-size: var(--openms-body-size);
+}
+
+body {
+ font-family: var(--openms-font-body);
+ font-size: 1rem;
+ font-weight: var(--openms-body-weight);
+ line-height: 1.5;
+ color: var(--openms-dark);
+}
+
+/* Normal text — 11–14pt */
+p,
+li,
+dd,
+dt,
+td,
+th,
+label,
+input,
+textarea,
+select,
+button,
+.content-container,
+.subtitle:not(.is-1):not(.is-2):not(.is-3),
+.navbar-item,
+.navbar-link,
+.news-banner__message {
+ font-family: var(--openms-font-body);
+ font-weight: var(--openms-body-weight);
+}
+
+.openms-text-sm {
+ font-size: var(--openms-text-min);
+}
+
+.openms-text-lg {
+ font-size: var(--openms-body-size-lg);
+}
+
+/* Presentations — 18pt */
+.openms-text-presentation,
+.hero-modern__description,
+.keyfeatures > .container > p {
+ font-family: var(--openms-font-body);
+ font-size: var(--openms-presentation-size);
+ font-weight: var(--openms-body-weight);
+ line-height: 1.55;
+}
+
+/* Titles & large headings — Montserrat extra bold 26pt */
+h1,
+.title.is-1,
+.keyfeatures-title,
+.casestudies-title,
+.heroItemTitle,
+.facts-title,
+.shell-title,
+.tabs-title,
+.section-title,
+.content-container h1 {
+ font-family: var(--openms-font-heading);
+ font-size: var(--openms-heading-xl-size);
+ font-weight: var(--openms-heading-xl-weight);
+ line-height: 1.25;
+ letter-spacing: normal;
+ text-transform: none;
+}
+
+/* Chapters & headings — Montserrat bold 20pt */
+h2,
+.title.is-2,
+.footer-title,
+.content-container h2,
+.post-title h2 {
+ font-family: var(--openms-font-heading);
+ font-size: var(--openms-heading-lg-size);
+ font-weight: var(--openms-heading-lg-weight);
+ line-height: 1.3;
+ letter-spacing: normal;
+ text-transform: none;
+}
+
+/* Secondary headings — Raleway regular */
+h3,
+.title.is-3,
+.keyfeatures-box-title,
+.casestudies-box-title,
+.content-container h3,
+.post-subtitle h3 {
+ font-family: var(--openms-font-body);
+ font-size: var(--openms-secondary-heading-size-lg);
+ font-weight: var(--openms-secondary-heading-weight);
+ line-height: 1.35;
+ letter-spacing: normal;
+ text-transform: none;
+}
+
+h4,
+h5,
+h6,
+.title.is-4,
+.title.is-5,
+.title.is-6,
+.content-container h4,
+.content-container h5,
+.content-container h6 {
+ font-family: var(--openms-font-body);
+ font-size: var(--openms-secondary-heading-size);
+ font-weight: var(--openms-secondary-heading-weight);
+ line-height: 1.35;
+ letter-spacing: normal;
+ text-transform: none;
+}
+
+/* Quotes, callouts & emphasis — JetBrains Mono thin */
+blockquote,
+blockquote p,
+q,
+.notice,
+.notice-content,
+.notice-type,
+em,
+i,
+cite,
+mark {
+ font-family: var(--openms-font-mono);
+ font-weight: var(--openms-mono-weight);
+ font-style: normal;
+ font-size: max(var(--openms-text-min), 1em);
+ line-height: 1.55;
+}
+
+.notice-type {
+ letter-spacing: 0.05em;
+ text-transform: uppercase;
+}
+
+blockquote p {
+ font-size: inherit;
+}
+
+/* Web minimum — nothing smaller than 11pt */
+.news-banner__label,
+.news-banner__message,
+.hero-modern__stat-label,
+.hero-modern__btn,
+.footer-link-group ul li a,
+.footer-copyright,
+.footer-column-label,
+.tabs-section .tab,
+.mailchimp-form,
+.members-card,
+.casestudies-box-text {
+ font-size: max(var(--openms-text-min), 1em);
+}
diff --git a/assets/js/hero-stats.js b/assets/js/hero-stats.js
new file mode 100644
index 0000000..b5a12e5
--- /dev/null
+++ b/assets/js/hero-stats.js
@@ -0,0 +1,69 @@
+(function () {
+ var counters = document.querySelectorAll(".hero-modern__stat-number[data-count-value]");
+ if (!counters.length) return;
+
+ var prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
+
+ function formatValue(value, decimals) {
+ return decimals > 0 ? value.toFixed(decimals) : String(Math.round(value));
+ }
+
+ function setFinal(counter) {
+ var target = parseFloat(counter.getAttribute("data-count-value"));
+ var suffix = counter.getAttribute("data-count-suffix") || "";
+ var decimals = parseInt(counter.getAttribute("data-count-decimals") || "0", 10);
+ counter.textContent = formatValue(target, decimals) + suffix;
+ }
+
+ function animateCounter(counter) {
+ if (counter.dataset.countAnimated === "true") return;
+ counter.dataset.countAnimated = "true";
+
+ var target = parseFloat(counter.getAttribute("data-count-value"));
+ var suffix = counter.getAttribute("data-count-suffix") || "";
+ var decimals = parseInt(counter.getAttribute("data-count-decimals") || "0", 10);
+ var duration = 2000;
+ var start = performance.now();
+
+ function tick(now) {
+ var progress = Math.min((now - start) / duration, 1);
+ var eased = 1 - Math.pow(1 - progress, 3);
+ var current = target * eased;
+ counter.textContent = formatValue(current, decimals) + suffix;
+
+ if (progress < 1) {
+ requestAnimationFrame(tick);
+ } else {
+ counter.textContent = formatValue(target, decimals) + suffix;
+ }
+ }
+
+ requestAnimationFrame(tick);
+ }
+
+ if (prefersReducedMotion) {
+ counters.forEach(setFinal);
+ return;
+ }
+
+ if (!("IntersectionObserver" in window)) {
+ counters.forEach(animateCounter);
+ return;
+ }
+
+ var observer = new IntersectionObserver(
+ function (entries) {
+ entries.forEach(function (entry) {
+ if (entry.isIntersecting) {
+ animateCounter(entry.target);
+ observer.unobserve(entry.target);
+ }
+ });
+ },
+ { threshold: 0.3 }
+ );
+
+ counters.forEach(function (counter) {
+ observer.observe(counter);
+ });
+})();
diff --git a/assets/js/navbar.js b/assets/js/navbar.js
new file mode 100644
index 0000000..cbadf55
--- /dev/null
+++ b/assets/js/navbar.js
@@ -0,0 +1,70 @@
+/**
+ * Mobile navbar — dropdown toggles & close menu on navigate
+ */
+(function () {
+ var MOBILE_MAX = 1023;
+
+ function isMobileNav() {
+ return window.matchMedia("(max-width: " + MOBILE_MAX + "px)").matches;
+ }
+
+ function closeMenus(nav) {
+ if (!nav) return;
+ nav.querySelectorAll(".navbar-item.has-dropdown.is-active").forEach(function (el) {
+ el.classList.remove("is-active");
+ });
+ }
+
+ function setupNav(nav) {
+ if (!nav) return;
+
+ var menu = nav.querySelector(".navbar-menu");
+ var burger = nav.querySelector(".navbar-burger");
+
+ nav.querySelectorAll(".navbar-item.has-dropdown > .navbar-link").forEach(function (link) {
+ link.addEventListener("click", function (e) {
+ if (!isMobileNav()) return;
+ e.preventDefault();
+ e.stopPropagation();
+ var parent = link.closest(".navbar-item.has-dropdown");
+ var open = parent.classList.contains("is-active");
+ closeMenus(nav);
+ if (!open) parent.classList.add("is-active");
+ });
+ });
+
+ if (menu) {
+ menu.querySelectorAll("a.navbar-item[href], a.navbar-cta-item").forEach(function (anchor) {
+ anchor.addEventListener("click", function () {
+ if (!isMobileNav()) return;
+ menu.classList.remove("is-active");
+ if (burger) burger.classList.remove("is-active");
+ closeMenus(nav);
+ });
+ });
+ }
+ }
+
+ function updateHeaderHeight() {
+ var header = document.querySelector(".site-header");
+ if (!header) return;
+ document.documentElement.style.setProperty(
+ "--openms-header-height",
+ header.offsetHeight + "px"
+ );
+ }
+
+ document.addEventListener("DOMContentLoaded", function () {
+ setupNav(document.getElementById("nav"));
+ setupNav(document.getElementById("navbar-clone"));
+ updateHeaderHeight();
+
+ window.addEventListener("resize", function () {
+ updateHeaderHeight();
+ if (!isMobileNav()) {
+ closeMenus(document.getElementById("nav"));
+ closeMenus(document.getElementById("navbar-clone"));
+ }
+ });
+ });
+})();
diff --git a/config.yaml b/config.yaml
index c222381..1b0d14f 100644
--- a/config.yaml
+++ b/config.yaml
@@ -16,6 +16,23 @@ markup:
disableLanguages: []
params:
+ font:
+ name: Montserrat
+ sizes:
+ - 400
+ - 600
+ - 700
+ - 800
+ bodyFont:
+ name: Raleway
+ sizes:
+ - 400
+ - 500
+ - 600
+ monoFont:
+ name: JetBrains Mono
+ sizes:
+ - 100
images:
- /images/logo.svg
navColor: blue
@@ -36,9 +53,9 @@ languages:
newsBanner:
enabled: true
label: News
- text: OpenMS 3.5.0 is now available — ARM64 Linux support and more.
- link: /news/release3.5/
- linkText: Read more
+ text: Workshop at University of Helsinki on April 30th 2026.
+ link: /news/
+ # linkText: Learn more
navbarlogo:
image: OpenMS_transparent_blackFont.png
link: /
@@ -53,14 +70,16 @@ languages:
Join 1000+ researchers worldwide.
buttontext: Get Started Now
buttonlink: https://openms.readthedocs.io/en/latest/about/installation.html
- secondaryButtonText: Watch Demo
- secondaryButtonLink: https://openms.readthedocs.io/en/latest/getting-started/walkthrough.html
stats:
- - number: "10+"
+ - value: 10
+ suffix: "+"
label: Years Active
- - number: "1000+"
+ - value: 1000
+ suffix: "+"
label: Researchers
- - number: "3.5.0"
+ - value: 3.5
+ suffix: ".0"
+ decimals: 1
label: Latest Version
heroGroup:
@@ -234,6 +253,12 @@ languages:
url: /applications
- title: Publications
url: /publications
- - title: Help Request
- url: /help-request
+ - title: Sponsor
+ shortTitle: Spon
+ url: /about#sponsors
+ button: true
+ buttonVariant: sponsor
+ - title: Donate
+ shortTitle: Give
+ url: /about#donate
button: true
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index 71ecfb0..1e2ee50 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -39,8 +39,10 @@
{{ end }}
{{ block "navbar" . }}
- {{ partial "news-banner.html" . }}
- {{ partial "navbar.html" . }}
+
{{ partial "navbar-clone.html" . }}
{{ end }}
diff --git a/layouts/index.html b/layouts/index.html
index 01136f5..0dce7c8 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -10,11 +10,7 @@
{{ if .Content }}
{{ partial "single/content.html" . }}
{{ end }}
-
- {{ if .Site.GetPage "/news" }}
- {{ partial "news.html" . }}
- {{ end }}
-
+
{{ if .Site.Params.keyfeatures }}
{{ partial "keyfeatures.html" . }}
{{ end }}
diff --git a/layouts/partials/css.html b/layouts/partials/css.html
index 70295f0..dc0d2d4 100644
--- a/layouts/partials/css.html
+++ b/layouts/partials/css.html
@@ -5,14 +5,19 @@
{{- $sass := (slice "theme-css/fresh/core.scss") -}}
{{- $cssOpts := cond ($inServerMode) (dict "enableSourceMap" true) (dict "outputStyle" "compressed") -}}
-
-
-
+
+{{- $headingFont := .Site.Params.font.name | default "Montserrat" -}}
+{{- $headingWeights := .Site.Params.font.sizes | default (slice 400 600 700 800) -}}
+{{- $bodyFont := .Site.Params.bodyFont.name | default "Raleway" -}}
+{{- $bodyWeights := .Site.Params.bodyFont.sizes | default (slice 400 500 600) -}}
+{{- $monoFont := .Site.Params.monoFont.name | default "JetBrains Mono" -}}
+{{- $monoWeights := .Site.Params.monoFont.sizes | default (slice 100) -}}
+{{- $fontUrl := printf "https://fonts.googleapis.com/css2?family=%s:wght@%s&family=%s:wght@%s&family=%s:wght@%s&display=swap" (replace $headingFont " " "+") (delimit $headingWeights ";") (replace $bodyFont " " "+") (delimit $bodyWeights ";") (replace $monoFont " " "+") (delimit $monoWeights ";") -}}
-
+
+
+
diff --git a/layouts/partials/hero.html b/layouts/partials/hero.html
index 09d9114..48ea26c 100644
--- a/layouts/partials/hero.html
+++ b/layouts/partials/hero.html
@@ -30,7 +30,12 @@