This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/groovy-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 538a401  style: implement premium modern design with glassmorphism and 
HSL color system
538a401 is described below

commit 538a401f25a086fbad00c02b75f50facab3cd848
Author: Sanjana <[email protected]>
AuthorDate: Mon Mar 2 01:00:08 2026 +0530

    style: implement premium modern design with glassmorphism and HSL color 
system
---
 site/src/site/assets/css/modern-design.css | 323 +++++++++++++++++++++++++++++
 site/src/site/layouts/page.groovy          |   2 +-
 2 files changed, 324 insertions(+), 1 deletion(-)

diff --git a/site/src/site/assets/css/modern-design.css 
b/site/src/site/assets/css/modern-design.css
new file mode 100644
index 0000000..664a453
--- /dev/null
+++ b/site/src/site/assets/css/modern-design.css
@@ -0,0 +1,323 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+/*
+ * Modern Design System for Apache Groovy
+ * Features: HSL Variables, Glassmorphism, Premium Typography, Micro-animations
+ */
+
+:root {
+    /* Core HSL Tokens */
+    --primary-h: 198;
+    /* Groovy Blue */
+    --primary-s: 47%;
+    --primary-l: 49%;
+
+    --accent-h: 20;
+    /* Groovy Orange/Red */
+    --accent-s: 100%;
+    --accent-l: 43%;
+
+    --bg-dark: hsl(var(--primary-h), 20%, 10%);
+    --bg-card: hsla(var(--primary-h), 20%, 15%, 0.7);
+    --text-main: hsl(var(--primary-h), 10%, 90%);
+    --text-muted: hsl(var(--primary-h), 10%, 70%);
+
+    --glass-bg: hsla(var(--primary-h), 20%, 5%, 0.9);
+    --glass-border: hsla(0, 0%, 100%, 0.1);
+
+    --shadow-soft: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
+    --transition-standard: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+}
+
+/* Base Modernization */
+body {
+    background-color: var(--bg-dark) !important;
+    color: var(--text-main) !important;
+    transition: var(--transition-standard);
+    font-size: 16px !important;
+    letter-spacing: 0.01em;
+}
+
+/* Aggressive Dark Mode Nuclear Overrides */
+html,
+body,
+#st-container,
+.st-pusher,
+.st-content,
+.st-content-inner,
+#content,
+#footer,
+.sidebarblock,
+.main-content,
+.navbar,
+.navbar-default,
+.navbar-static-top,
+.navbar-collapse,
+.container,
+.container-fluid,
+.well,
+.panel,
+.panel-default,
+.panel-heading {
+    background-color: var(--bg-dark) !important;
+    background: var(--bg-dark) !important;
+    color: var(--text-main) !important;
+    border-color: var(--glass-border) !important;
+}
+
+/* Ensure all links inside main content possess good contrast */
+#content a,
+.st-content a {
+    color: hsl(var(--primary-h), 80%, 70%) !important;
+}
+
+#content a:hover,
+.st-content a:hover {
+    color: white !important;
+    text-decoration: underline !important;
+}
+
+#footer {
+    border-top: 1px solid var(--glass-border);
+}
+
+/* Glassmorphism Navbar */
+.navbar-default {
+    background: var(--glass-bg) !important;
+    backdrop-filter: blur(12px) !important;
+    -webkit-backdrop-filter: blur(12px) !important;
+    border-bottom: 1px solid var(--glass-border) !important;
+    box-shadow: var(--shadow-soft);
+    transition: var(--transition-standard);
+}
+
+.navbar-brand {
+    font-weight: 700 !important;
+    letter-spacing: -0.02em;
+    color: white !important;
+    text-shadow: 0 0 10px hsla(var(--primary-h), 100%, 50%, 0.3);
+    padding: 15px 10px !important;
+}
+
+.navbar-nav>li>a {
+    color: var(--text-muted) !important;
+    transition: var(--transition-standard);
+    border-radius: 8px;
+    margin: 0 2px;
+    padding: 10px 8px !important;
+    font-size: 14px !important;
+}
+
+.navbar-nav>li>a:hover,
+.navbar-nav>li>a:focus,
+.navbar-nav>li>a:focus-visible {
+    background-color: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 
0.2) !important;
+    color: white !important;
+    transform: translateY(-1px);
+    outline: 2px solid hsla(var(--accent-h), var(--accent-s), var(--accent-l), 
0.8);
+    outline-offset: 2px;
+}
+
+/* Sidebar & Navigation Modernization */
+ul.nav-sidebar {
+    border: 1px solid var(--glass-border) !important;
+    background-color: var(--bg-card) !important;
+    border-radius: 12px;
+    padding: 10px 0 !important;
+}
+
+ul.nav-sidebar li a {
+    color: var(--text-muted) !important;
+    transition: var(--transition-standard);
+    padding: 8px 15px !important;
+}
+
+ul.nav-sidebar li a:hover,
+ul.nav-sidebar li.active a {
+    color: white !important;
+    background-color: hsla(var(--primary-h), 50%, 30%, 0.5) !important;
+}
+
+ul.nav-sidebar li.active a {
+    border-left: 4px solid hsl(var(--accent-h), var(--accent-s), 
var(--accent-l)) !important;
+}
+
+/* Table Modernization for Download & Docs */
+.table,
+.download-table {
+    border-collapse: separate !important;
+    border-spacing: 0 !important;
+    width: 100% !important;
+    margin: 20px 0 !important;
+    border: 1px solid var(--glass-border) !important;
+    border-radius: 12px !important;
+    overflow: hidden !important;
+}
+
+.table th,
+.table td,
+.download-table th,
+.download-table td {
+    background-color: transparent !important;
+    border-top: 1px solid var(--glass-border) !important;
+    padding: 12px 15px !important;
+    color: var(--text-main) !important;
+}
+
+.table thead th,
+.download-table thead th {
+    background-color: hsla(var(--primary-h), 20%, 20%, 0.5) !important;
+    border-top: none !important;
+    font-weight: 600 !important;
+}
+
+.table tbody tr:hover,
+.download-table tbody tr:hover {
+    background-color: hsla(var(--primary-h), 20%, 20%, 0.3) !important;
+}
+
+/* Premium Hero Section */
+.band {
+    background-color: hsl(var(--primary-h), 30%, 20%) !important;
+    background-image:
+        url(../img/groovy-logo-white.svg),
+        linear-gradient(135deg, hsla(var(--primary-h), 60%, 40%, 0.5) 0%, 
hsla(var(--primary-h), 30%, 20%, 0.7) 100%) !important;
+    background-position: 50% 30%, center center !important;
+    background-repeat: no-repeat !important;
+    background-size: auto, cover !important;
+    position: relative;
+    overflow: hidden;
+}
+
+.band::after {
+    content: '';
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background: radial-gradient(circle at 70% 30%, hsla(var(--accent-h), 100%, 
50%, 0.15) 0%, transparent 50%);
+    pointer-events: none;
+}
+
+/* Buttons */
+#big-download-button,
+.btn-primary {
+    background-color: hsl(var(--accent-h), var(--accent-s), var(--accent-l)) 
!important;
+    border: none !important;
+    box-shadow: 0 4px 14px 0 hsla(var(--accent-h), var(--accent-s), 
var(--accent-l), 0.39);
+    transition: var(--transition-standard) !important;
+}
+
+#big-download-button:hover,
+.btn-primary:hover,
+#big-download-button:focus,
+.btn-primary:focus {
+    transform: translateY(-2px);
+    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.23);
+    background-color: hsl(var(--accent-h), var(--accent-s), 50%) !important;
+    outline: 2px solid white;
+    outline-offset: 2px;
+}
+
+/* Cards & Content Blocks */
+article .content {
+    background: var(--bg-card) !important;
+    backdrop-filter: blur(8px);
+    border: 1px solid var(--glass-border);
+    border-radius: 16px !important;
+    padding: 24px !important;
+    transition: var(--transition-standard);
+    box-shadow: var(--shadow-soft);
+}
+
+article:hover .content {
+    transform: translateY(-5px);
+    border-color: hsla(var(--primary-h), 100%, 50%, 0.3);
+}
+
+/* Typography Polish */
+h1,
+h2,
+h3 {
+    letter-spacing: -0.03em !important;
+    line-height: 1.2 !important;
+}
+
+a {
+    transition: var(--transition-standard);
+}
+
+pre {
+    background-color: hsla(0, 0%, 5%, 0.5) !important;
+    border: 1px solid var(--glass-border) !important;
+    border-radius: 12px !important;
+    padding: 1.5em !important;
+}
+
+/* Homepage Specific Overrides */
+html body #content .colset-2-its>h1,
+html body #content .colset-2-its>p,
+html body #content .colset-2-its article>h1,
+html body #content .colset-2-its article p {
+    color: var(--text-main) !important;
+}
+
+#they-use-groovy {
+    background-color: hsla(var(--accent-h), 100%, 10%, 0.8) !important;
+    background-image: linear-gradient(135deg, hsla(var(--accent-h), 100%, 30%, 
0.3) 0%, transparent 100%) !important;
+    border-top: 1px solid var(--glass-border) !important;
+    border-bottom: 1px solid var(--glass-border) !important;
+    padding: 30px 0 !important;
+}
+
+#they-use-groovy .item {
+    color: var(--text-main) !important;
+}
+
+/* Protect Icon Fonts */
+.fa,
+.fa-classic,
+.fa-solid,
+.fa-regular,
+.fa-brands,
+[class^="fa-"],
+[class*=" fa-"] {
+    font-family: 'Font Awesome 6 Free', 'Font Awesome 6 Brands', 
'FontAwesome', sans-serif !important;
+    font-style: normal !important;
+    background: transparent !important;
+    /* Ensure no background overrides icons */
+}
+
+/* Accessibility: Reduced Motion */
+@media (prefers-reduced-motion: reduce) {
+
+    *,
+    ::before,
+    ::after {
+        animation-delay: -1ms !important;
+        animation-duration: 1ms !important;
+        animation-iteration-count: 1 !important;
+        background-attachment: initial !important;
+        scroll-behavior: auto !important;
+        transition-duration: 0s !important;
+        transition-delay: 0s !important;
+    }
+}
\ No newline at end of file
diff --git a/site/src/site/layouts/page.groovy 
b/site/src/site/layouts/page.groovy
index 9ebfe19..d7663a2 100644
--- a/site/src/site/layouts/page.groovy
+++ b/site/src/site/layouts/page.groovy
@@ -30,7 +30,7 @@ head {
         script(src: relative('js/matomo.js')) { }
     }
     def styles = extraStyles ?: []
-    ['bootstrap.css', 'fontawesome.min.css', 'brands.min.css', 
'regular.min.css', 'solid.min.css', 'style.css', *styles].each {
+    ['bootstrap.css', 'fontawesome.min.css', 'brands.min.css', 
'regular.min.css', 'solid.min.css', 'style.css', 'modern-design.css', 
*styles].each {
         link rel: 'stylesheet', type: 'text/css', href:
                 it.startsWith('http')?it:relative("css/$it")
     }

Reply via email to