diff --git a/.github/assets/js/shortcut-key.js b/.github/assets/js/shortcut-key.js
new file mode 100644
index 00000000..75bdc7a1
--- /dev/null
+++ b/.github/assets/js/shortcut-key.js
@@ -0,0 +1,29 @@
+document.addEventListener('DOMContentLoaded', function() {
+ // Platform detection is now handled by platform-utils.js
+ /**
+ * Dynamically loads a stylesheet into the document's head.
+ *
+ * Creates a element with the specified URL, sets attributes necessary for secure loading,
+ * and appends it to the document's head. If the stylesheet fails to load, an error is logged
+ * to the console.
+ *
+ * @param {string} href - The URL of the stylesheet to be loaded.
+ * @returns {HTMLLinkElement} The created and appended link element.
+ */
+
+ function loadStylesheet(href) {
+ const link = document.createElement('link');
+ link.rel = 'stylesheet';
+ link.href = href;
+ link.crossOrigin = 'anonymous';
+ link.onerror = () => console.error(`Failed to load stylesheet: ${href}`);
+ document.head.appendChild(link);
+ return link;
+ }
+
+ const FA_VERSION = '6.7.2'; // Extract version to a constant for easier updates
+
+ loadStylesheet(`https://use.fontawesome.com/releases/v${FA_VERSION}/css/solid.css`);
+ loadStylesheet(`https://use.fontawesome.com/releases/v${FA_VERSION}/css/brands.css`);
+ loadStylesheet(`https://use.fontawesome.com/releases/v${FA_VERSION}/css/fontawesome.css`);
+});
\ No newline at end of file
diff --git a/News.md b/News.md
index 74e77698..2eb4193c 100644
--- a/News.md
+++ b/News.md
@@ -13,7 +13,7 @@
Read More
-
+
Image credit: J. Heitman, B. J. Howlett, P. W. Crous, E. H. Stukenbrock, T. Y. James & N. A. R. Gow, The fungal kingdom, John Wiley & Sons (2020)
diff --git a/README.md b/README.md
index 01de94a7..2feb8c61 100644
--- a/README.md
+++ b/README.md
@@ -33,12 +33,13 @@ A static website for the Computational Multiphase Physics Laboratory, built with
│ │ ├── research.css # Research page styles with dark mode support
│ │ ├── teaching.css # Teaching page styles with dark mode support
│ │ ├── team.css # Team page styles with dark mode support
-│ │ ├── styles.css # Global styles with light/dark theme variables
+│ │ ├── styles.css # Global styles with light/dark theme variables (optimized)
│ │ └── command-palette.css # Command palette styles (⌘K)
│ ├── js # JavaScript files
│ │ ├── main.js # Main JavaScript
│ │ ├── command-data.js # Command palette data and functionality
-│ │ ├── shortcut-key.js # Platform detection for shortcuts
+│ │ ├── platform-utils.js # Platform detection and UI utilities
+│ │ ├── shortcut-key.js # Keyboard shortcut handling
│ │ └── search_db.json # Generated search database (used by command palette)
│ ├── favicon # Favicon files
│ └── img # Image assets
@@ -467,4 +468,65 @@ To submit a PR:
3. Test changes locally
4. Create a PR using the template
5. Link any related issues
-6. Wait for review
\ No newline at end of file
+6. Wait for review
+
+### Code Style
+
+#### General
+- Use 2-space indentation across all files
+- Follow DRY principles: reuse components, variables, and styles
+- Add comments for complex logic, but keep code self-documenting
+
+#### HTML/Markdown
+- Use semantic HTML elements
+- Follow BEM naming convention for CSS classes (e.g., `s-header__nav-list`)
+- Keep content files in markdown format where possible
+
+#### CSS
+- Use CSS variables for colors and typography (defined in `:root`)
+- Use responsive breakpoints at 1700px, 1300px, 900px, 768px, 500px
+- Use `rem` units for font sizes and spacing
+- Follow mobile-first approach for media queries
+- Leverage CSS custom properties for theme switching
+- Organize media queries by breakpoint for better maintainability
+- Use standardized variable naming for consistent styling
+
+#### JavaScript
+- Use ES6+ features (arrow functions, const/let, template literals)
+- Always include 'use strict' mode
+- Use async/await for asynchronous operations
+- Implement error handling with try/catch blocks
+- Use camelCase for variable and function names
+- Prefer event delegation for multiple similar elements
+
+#### Images
+- Optimize images for web (compress to reduce file size)
+- Follow naming convention: `[name]-[descriptor].[extension]`
+- Include alt text for all images
+
+### CSS Architecture
+
+The website's CSS has been optimized for better performance and maintainability:
+
+1. **Variable System**
+ - Color variables for both light and dark themes
+ - Typography variables for consistent font sizing
+ - Spacing variables for layout consistency
+ - Shadow and transition presets for unified effects
+
+2. **Consolidated Media Queries**
+ - Queries organized by breakpoint rather than by component
+ - Shared breakpoints at 1700px, 1300px, 1200px, 900px, 768px, and 500px
+ - Mobile-first approach throughout
+
+3. **Optimized Dark Theme Support**
+ - CSS variables for seamless theme switching
+ - Fallback values for older browsers
+ - Theme-specific accent colors and contrasts
+ - Consistent text and background colors across components
+
+4. **Performance Improvements**
+ - Reduced redundant selectors
+ - Consolidated duplicate styles
+ - Optimized transitions and animations
+ - Simplified box shadows for better rendering
\ No newline at end of file
diff --git a/_layouts/default.html b/_layouts/default.html
index 92e8742f..04400de6 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -92,6 +92,8 @@
+
+
+
+
@@ -137,25 +138,22 @@
+
@@ -127,37 +128,25 @@
-
-
-
-
-
-
diff --git a/_layouts/team.html b/_layouts/team.html
index d69cbdd4..2e1ed270 100644
--- a/_layouts/team.html
+++ b/_layouts/team.html
@@ -111,6 +111,7 @@
+
diff --git a/assets/css/command-palette.css b/assets/css/command-palette.css
index 6f5e7ace..29d5c92a 100644
--- a/assets/css/command-palette.css
+++ b/assets/css/command-palette.css
@@ -26,7 +26,8 @@
transform: translateX(-50%);
width: 640px;
max-width: 90vw;
- background-color: #f9f5fb;
+ background-color: #2d1e30; /* Always use dark purple background */
+ color: #fff; /* Always use white text */
border-radius: 12px;
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3);
overflow: hidden;
@@ -38,25 +39,25 @@
width: 100%;
padding: 16px 18px;
border: none;
- border-bottom: 2px solid rgba(104, 35, 109, 0.3);
+ border-bottom: 2px solid rgba(104, 35, 109, 0.5);
font-size: 16px;
outline: none;
- background-color: #fff;
+ background-color: #3a2a3d; /* Always use dark purple input */
transition: all 0.3s ease;
- color: #333;
+ color: #fff; /* Always use white text */
font-weight: 500;
}
#command-palette-input:focus {
- border-bottom-color: #68236D;
- background-color: #fff;
+ border-bottom-color: rgba(104, 35, 109, 0.8);
+ background-color: #3a2a3d; /* Keep dark background on focus */
}
.command-palette-results {
max-height: 60vh;
overflow-y: auto;
padding: 0 4px;
- background-color: #f9f5fb;
+ background-color: #2d1e30; /* Always use dark purple background */
}
.command-palette-section {
@@ -67,7 +68,7 @@
padding: 6px 16px;
font-size: 12px;
font-weight: bold;
- color: #68236D;
+ color: #d4a5db; /* Always use light purple for section titles */
text-transform: uppercase;
letter-spacing: 0.5px;
}
@@ -85,23 +86,23 @@
border-radius: 8px;
transition: all 0.2s ease;
margin: 2px 4px;
- color: #333;
+ color: #f0f0f0; /* Always use white text */
}
.command-palette-command:hover, .command-palette-command.selected {
- background-color: rgba(104, 35, 109, 0.15);
+ background-color: rgba(104, 35, 109, 0.3); /* Darker hover state */
}
.command-palette-command.selected {
outline: 2px solid rgba(104, 35, 109, 0.3);
position: relative;
- background-color: rgba(104, 35, 109, 0.1);
+ background-color: rgba(104, 35, 109, 0.25); /* Darker selected state */
}
.command-palette-icon {
flex: 0 0 24px;
margin-right: 14px;
- color: #68236D;
+ color: #d4a5db; /* Always use light purple for icons */
}
.command-palette-title {
@@ -110,16 +111,16 @@
overflow: hidden;
text-overflow: ellipsis;
font-weight: 500;
- color: #333;
+ color: #f0f0f0; /* Always use white text */
}
.command-palette-shortcut {
flex: 0 0 auto;
padding: 3px 8px;
border-radius: 4px;
- background-color: rgba(104, 35, 109, 0.15);
+ background-color: rgba(104, 35, 109, 0.3); /* Darker background */
font-size: 12px;
- color: #68236D;
+ color: #f0f0f0; /* Always use white text */
font-weight: 600;
}
@@ -128,7 +129,7 @@
margin-top: 6px;
margin-left: 38px;
font-size: 13px;
- color: #555;
+ color: #ccc; /* Always use light gray for excerpts */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@@ -146,7 +147,7 @@
.command-palette-no-results {
padding: 20px;
text-align: center;
- color: #666;
+ color: #ccc; /* Always use light gray for no results */
font-style: italic;
}
@@ -243,95 +244,14 @@
}
}
-/* Dark mode styling */
-@media (prefers-color-scheme: dark) {
- .simple-command-palette-modal {
- background-color: #2d1e30;
- color: #fff;
- border-color: rgba(104, 35, 109, 0.3);
- }
-
- #command-palette-input {
- background-color: #3a2a3d;
- color: #fff;
- border-bottom-color: rgba(104, 35, 109, 0.5);
- }
-
- #command-palette-input:focus {
- border-bottom-color: rgba(104, 35, 109, 0.8);
- background-color: #3a2a3d;
- }
-
- .command-palette-results {
- background-color: #2d1e30;
- }
-
- .command-palette-section-title {
- color: #d4a5db;
- }
-
- .command-palette-command {
- color: #f0f0f0;
- }
-
- .command-palette-command:hover, .command-palette-command.selected {
- background-color: rgba(104, 35, 109, 0.3);
- }
-
- .command-palette-command.selected {
- background-color: rgba(104, 35, 109, 0.25);
- }
-
- .command-palette-icon {
- color: #d4a5db;
- }
-
- .command-palette-title {
- color: #f0f0f0;
- }
-
- .command-palette-shortcut {
- background-color: rgba(104, 35, 109, 0.3);
- color: #f0f0f0;
- }
-
- .command-palette-excerpt {
- color: #ccc;
- }
-
- .command-palette-section:has(.command-palette-section-title:contains("Search Results")) {
- border-top-color: rgba(104, 35, 109, 0.3);
- }
-
- .command-palette-no-results {
- color: #ccc;
- }
+/* Original Dark mode styling has been moved to the base styles above.
+ These styles have been applied directly to make the command palette
+ consistently use the dark purple theme across all browsers. */
- /* Dark mode for the command-k-style button */
- .command-k-style-btn {
- background: rgba(255, 255, 255, 0.1);
- color: #f0f0f0;
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
- }
-
- .command-k-style-btn:hover {
- background: rgba(255, 255, 255, 0.15);
- }
-
- .command-k-style-btn:focus,
- .command-k-style-btn.focused {
- outline: 2px solid rgba(212, 165, 219, 0.6);
- }
-
- .command-k-style-btn .search-icon {
- color: #000000;
- }
-
- .command-k-style-btn .default-theme-text,
- .command-k-style-btn .mac-theme-text {
- color: #000000;
- }
-}
+/* Dark mode styles for command-k button that we aren't using in the main palette */
+/* Dark mode styles for command-k button that we aren't using in the main palette */
+
+/* Command palette footer styles are defined below */
/* Custom styles for the shortcut help modal */
.shortcut-help-overlay {
@@ -447,8 +367,8 @@
justify-content: center;
align-items: center;
padding: 12px;
- background-color: rgba(104, 35, 109, 0.06);
- border-top: 1px solid rgba(104, 35, 109, 0.15);
+ background-color: rgba(104, 35, 109, 0.1);
+ border-top: 1px solid rgba(104, 35, 109, 0.3);
gap: 16px;
flex-wrap: wrap;
}
@@ -456,7 +376,7 @@
.command-palette-footer-item {
display: flex;
align-items: center;
- color: #555;
+ color: #ddd;
font-size: 13px;
}
@@ -467,10 +387,10 @@
min-width: 22px;
height: 22px;
padding: 0 5px;
- background-color: rgba(104, 35, 109, 0.15);
- border: 1px solid rgba(104, 35, 109, 0.3);
+ background-color: rgba(104, 35, 109, 0.25);
+ border: 1px solid rgba(104, 35, 109, 0.4);
border-radius: 4px;
- color: #68236D;
+ color: #f0f0f0;
margin: 0 3px;
font-size: 12px;
line-height: 1;
@@ -479,19 +399,4 @@
font-weight: 600;
}
-@media (prefers-color-scheme: dark) {
- .command-palette-footer {
- background-color: rgba(104, 35, 109, 0.1);
- border-top-color: rgba(104, 35, 109, 0.3);
- }
-
- .command-palette-footer-item {
- color: #ddd;
- }
-
- .command-palette-footer kbd {
- background-color: rgba(104, 35, 109, 0.25);
- border-color: rgba(104, 35, 109, 0.4);
- color: #f0f0f0;
- }
-}
\ No newline at end of file
+/* Footer dark styling is now applied to all color schemes above */
\ No newline at end of file
diff --git a/assets/css/research.css b/assets/css/research.css
index e4d8033d..844b0917 100644
--- a/assets/css/research.css
+++ b/assets/css/research.css
@@ -637,6 +637,30 @@
border: 1px solid rgba(120, 170, 255, 0.3);
}
+/* Fix for top filter tags in dark theme */
+[data-theme="dark"] tags span,
+[data-theme="dark"] tags a.tag-link {
+ background: rgba(40, 44, 52, 0.8) !important;
+ color: #ffffff !important;
+ border: 1px solid rgba(111, 161, 255, 0.4) !important;
+}
+
+[data-theme="dark"] tags span:hover,
+[data-theme="dark"] tags a.tag-link:hover {
+ background: rgba(76, 110, 245, 0.5) !important;
+ border-color: rgba(111, 161, 255, 0.6) !important;
+}
+
+/* Fix for active tags in dark theme */
+[data-theme="dark"] tags span.active,
+[data-theme="dark"] tags a.tag-link.active {
+ background: rgba(76, 110, 245, 0.8) !important;
+ color: #ffffff !important;
+ border-color: rgba(111, 161, 255, 0.8) !important;
+ transform: scale(1.1);
+ box-shadow: 0 2px 5px rgba(111, 161, 255, 0.5) !important;
+}
+
/* First tag - brightest background */
.research-content tags span:nth-of-type(1) {
background: rgba(147, 51, 234, 0.15);
diff --git a/assets/css/styles.css b/assets/css/styles.css
index 9365a0b6..dd611cff 100644
--- a/assets/css/styles.css
+++ b/assets/css/styles.css
@@ -1,14 +1,16 @@
/* Base Styles */
:root {
+ /* Core colors */
--color-primary: #0056b3;
--color-secondary: #2b2b2b;
--color-text: #333333;
--color-background: #ffffff;
- --font-primary: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Arial', sans-serif;
- --color-primary-hover: #004494;
--color-link: #0056b3;
--color-link-hover: #004494;
+ /* Core fonts */
+ --font-primary: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Arial', sans-serif;
+
/* Heading styling */
--h2-gradient-start: #2b65c6;
--h2-gradient-end: #0e4594;
@@ -23,15 +25,34 @@
--nav-item-hover-bg: rgba(255, 255, 255, 0.35);
--nav-item-shadow: rgba(0, 0, 0, 0.1);
--nav-item-hover-shadow: rgba(0, 0, 0, 0.15);
+
+ /* Icon colors */
+ --icon-color: #ffffff;
+
+ /* Box shadow presets */
+ --shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.1);
+ --shadow-md: 0 4px 15px rgba(0, 0, 0, 0.15);
+ --shadow-lg: 0 4px 30px rgba(0, 0, 0, 0.2);
+
+ /* Transition presets */
+ --transition-fast: all 0.2s ease;
+ --transition-medium: all 0.3s ease;
+
+ /* Spacing system */
+ --space-xs: 0.5rem;
+ --space-sm: 1rem;
+ --space-md: 2rem;
+ --space-lg: 4rem;
+ --space-xl: 8rem;
}
/* Dark theme variables */
[data-theme="dark"] {
+ /* Core colors */
--color-text: #e0e0e0;
--color-background: #121212;
--color-primary: #4c8dff;
--color-secondary: #a0a0a0;
- --color-primary-hover: #6fa1ff;
--color-link: #4c8dff;
--color-link-hover: #6fa1ff;
@@ -49,8 +70,17 @@
--nav-item-hover-bg: rgba(40, 40, 40, 0.8);
--nav-item-shadow: rgba(0, 0, 0, 0.3);
--nav-item-hover-shadow: rgba(0, 0, 0, 0.4);
+
+ /* Icon color */
+ --icon-color: #ffffff;
+
+ /* Box shadow presets */
+ --shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.2);
+ --shadow-md: 0 4px 15px rgba(0, 0, 0, 0.3);
+ --shadow-lg: 0 4px 30px rgba(0, 0, 0, 0.4);
}
+/* Base element styles */
html {
font-size: 62.5%;
box-sizing: border-box;
@@ -70,32 +100,142 @@ body {
-moz-osx-font-smoothing: grayscale;
}
-/* Make icons white in dark mode */
-[data-theme="dark"] .s-header__nav i,
-[data-theme="dark"] .s-header__nav-list i,
-[data-theme="dark"] .fa-brands,
-[data-theme="dark"] .fa-solid,
-[data-theme="dark"] .ai,
-[data-theme="dark"] .s-footer i,
-[data-theme="dark"] .site-footer i,
-[data-theme="dark"] .footer-left i,
-[data-theme="dark"] .footer-right i {
+/* Make icons use theme colors */
+.s-footer i,
+.site-footer i,
+.footer-left i,
+.footer-right i,
+.fa-solid:not(.s-header__nav-list .fa-solid),
+.fa-brands:not(.s-header__nav-list .fa-brands),
+.ai:not(.s-header__nav-list .ai):not(.team-member .ai) {
+ color: var(--icon-color);
+ font-size: 1.5em;
+ transition: transform 0.3s ease, color 0.3s ease;
+}
+
+/* Header icons in command palette retain their natural colors */
+.s-header__nav i,
+.s-header__nav-list i {
+ /* Use their natural colors */
+ font-size: 1.5em;
+ transition: transform 0.3s ease, color 0.3s ease;
+}
+
+/* Ensure social media icons are white in dark theme */
+[data-theme="dark"] .fa-brands.fa-github,
+[data-theme="dark"] .team-member .fa-brands.fa-github,
+[data-theme="dark"] .fa-brands.fa-linkedin,
+[data-theme="dark"] .team-member .fa-brands.fa-linkedin,
+[data-theme="dark"] .fa-brands.fa-x-twitter,
+[data-theme="dark"] .team-member .fa-brands.fa-x-twitter,
+[data-theme="dark"] .fa-brands.fa-bluesky,
+[data-theme="dark"] .team-member .fa-brands.fa-bluesky,
+[data-theme="dark"] .fa-brands.fa-wikipedia-w,
+[data-theme="dark"] .team-member .fa-brands.fa-wikipedia-w {
+ color: #ffffff !important;
+}
+
+/* Apply exceptions for colored icons */
+.s-header__nav-list .fa-bluesky,
+.team-member .fa-bluesky {
+ color: #0085ff !important;
+}
+
+.footer-right .fa-bluesky {
color: white !important;
}
+.s-header__nav-list .fa-linkedin,
+.team-member .fa-linkedin,
+.footer-right .fa-linkedin {
+ color: #0077b5 !important;
+ font-size: 1.7em;
+}
+
+.s-header__nav-list .fa-x-twitter,
+.team-member .fa-x-twitter {
+ color: #000000 !important;
+}
+
+.footer-right .fa-x-twitter {
+ color: white !important;
+}
+
+.s-header__nav-list .fa-wikipedia-w,
+.team-member .fa-wikipedia-w,
+.footer-right .fa-wikipedia-w {
+ color: #000000 !important;
+ font-size: 1.4em;
+}
+
+[data-theme="dark"] .s-header__nav-list .fa-x-twitter,
+[data-theme="dark"] .team-member .fa-x-twitter,
+[data-theme="dark"] .footer-right .fa-x-twitter,
+[data-theme="dark"] .s-header__nav-list .fa-wikipedia-w,
+[data-theme="dark"] .team-member .fa-wikipedia-w,
+[data-theme="dark"] .footer-right .fa-wikipedia-w {
+ color: #ffffff !important;
+}
+
+/* Hover effects for social media icons */
+.s-header__nav-list i:hover,
+.team-member i:hover,
+.footer-right i:hover {
+ transform: translateY(-2px);
+ opacity: 0.9;
+}
+
+/* Ensure consistent sizing in navigation */
+.s-header__nav-list li[style="background: none;"] a {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 44px;
+ height: 44px;
+ padding: 0;
+}
+
+/* Footer social icons specific styles */
+.footer-right i {
+ font-size: 1.6em;
+}
+
+.footer-right .fa-linkedin {
+ font-size: 1.8em;
+}
+
+/* Mobile adjustments */
+@media screen and (max-width: 768px) {
+ .footer-right i {
+ font-size: 1.5em;
+ }
+
+ .footer-right .fa-linkedin {
+ font-size: 1.7em;
+ }
+
+ .s-header__nav-list i {
+ font-size: 1.4em;
+ }
+
+ .s-header__nav-list .fa-linkedin {
+ font-size: 1.6em;
+ }
+}
+
/* Theme-aware content styling */
-[data-theme="dark"] #about-content a,
-[data-theme="dark"] #news-content a,
-[data-theme="dark"] .teaching-content a,
-[data-theme="dark"] .s-teaching a {
- color: #78AAFF;
+#about-content a,
+#news-content a,
+.teaching-content a,
+.s-teaching a {
+ color: var(--color-link);
text-decoration: none;
}
-[data-theme="dark"] #about-content h1,
-[data-theme="dark"] #about-content h3,
-[data-theme="dark"] #news-content h1,
-[data-theme="dark"] #news-content h3 {
+#about-content h1,
+#about-content h3,
+#news-content h1,
+#news-content h3 {
color: var(--color-text);
}
@@ -184,7 +324,6 @@ h2 {
position: relative;
font-size: 2.2rem;
font-weight: 600;
- color: var(--color-text);
padding-bottom: 0.5rem;
margin: 1.5rem 0 1rem;
background: linear-gradient(to right, var(--h2-gradient-start), var(--h2-gradient-end));
@@ -206,16 +345,6 @@ h2::after {
background: linear-gradient(to right, var(--h2-border-color), transparent);
}
-/* Enhanced h2 styling for dark theme */
-[data-theme="dark"] h2 {
- background: linear-gradient(to right, var(--h2-gradient-start), var(--h2-gradient-end));
- -webkit-background-clip: text;
- background-clip: text;
- color: transparent;
- text-shadow: 0 1px 2px rgba(74, 125, 255, 0.5);
- filter: drop-shadow(0 0 2px rgba(120, 170, 255, 0.3));
-}
-
/* Fix h3 headings in dark mode */
[data-theme="dark"] h3 {
color: #e0e0e0 !important;
@@ -250,19 +379,10 @@ img.youtube-stats-dark {
box-sizing: border-box;
}
-@media screen and (max-width: 768px) {
- img.youtube-stats-light,
- img.youtube-stats-dark {
- max-width: 100%;
- height: auto !important;
- width: 100% !important;
- }
-}
-
/* Fix box shadows and borders in dark mode */
[data-theme="dark"] .featured-paper,
[data-theme="dark"] .s-about__grid {
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4) !important;
+ box-shadow: var(--shadow-lg) !important;
border: 1px solid rgba(255, 255, 255, 0.1) !important;
}
@@ -312,7 +432,7 @@ img.youtube-stats-dark {
align-items: center;
padding: 0 3rem;
box-shadow: 0 4px 16px var(--header-shadow);
- transition: background 0.3s ease, box-shadow 0.3s ease;
+ transition: var(--transition-medium);
}
.s-header__logo {
@@ -385,15 +505,15 @@ img.youtube-stats-dark {
}
.s-header__nav-list a {
- color: #1a1a1a;
+ color: var(--nav-item-color);
text-decoration: none;
font-size: 1.6rem;
- transition: all 0.3s ease;
+ transition: var(--transition-medium);
padding: 0.8rem 1.6rem;
border-radius: 5px;
- background: rgba(255, 255, 255, 0.25);
+ background: var(--nav-item-bg);
backdrop-filter: blur(8px);
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: var(--shadow-sm);
display: flex;
align-items: center;
height: 40px;
@@ -402,10 +522,10 @@ img.youtube-stats-dark {
.s-header__nav-list a:hover {
background: var(--nav-item-hover-bg);
transform: translateY(-2px);
- box-shadow: 0 4px 15px var(--nav-item-hover-shadow);
+ box-shadow: var(--shadow-md);
}
-/* Special styling for the Bluesky icon */
+/* Special styling for icons in navigation */
.s-header__nav-list li[style="background: none;"] a {
display: flex;
align-items: center;
@@ -419,22 +539,22 @@ img.youtube-stats-dark {
position: absolute;
top: 2rem;
right: 2rem;
- color: #000000;
+ color: var(--nav-item-color);
text-decoration: none;
font-size: 1.6rem;
- transition: all 0.3s ease;
+ transition: var(--transition-medium);
padding: 0.8rem 1.6rem;
border-radius: 5px;
- background: rgba(255, 255, 255, 0.25);
+ background: var(--nav-item-bg);
backdrop-filter: blur(8px);
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: var(--shadow-sm);
margin-left: 0.8rem;
}
.s-header__nav-close-btn:hover {
- background: rgba(255, 255, 255, 0.35);
+ background: var(--nav-item-hover-bg);
transform: translateY(-2px);
- box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
+ box-shadow: var(--shadow-md);
}
/* Theme toggle button */
@@ -447,36 +567,15 @@ img.youtube-stats-dark {
cursor: pointer;
border-radius: 50%;
background: var(--nav-item-bg);
- box-shadow: 0 2px 10px var(--nav-item-shadow);
- transition: background 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;
+ box-shadow: var(--shadow-sm);
+ transition: var(--transition-medium);
position: relative;
}
-/* Special styling for dark theme text and icons */
-[data-theme="dark"] .s-header__nav-list a,
-[data-theme="dark"] .s-header__nav-list a i,
-[data-theme="dark"] .command-k-style-btn,
-[data-theme="dark"] .command-k-style-btn span,
-[data-theme="dark"] .command-k-style-btn i,
-[data-theme="dark"] .s-header__menu-text,
-[data-theme="dark"] .s-header__menu-icon,
-[data-theme="dark"] .s-header__menu-icon::before,
-[data-theme="dark"] .s-header__menu-icon::after {
- color: #ffffff;
-}
-
-[data-theme="dark"] .fa-bluesky {
- color: #0085ff !important;
-}
-
-[data-theme="dark"] .theme-toggle-icon {
- stroke: #ffffff;
-}
-
.theme-toggle:hover {
background: var(--nav-item-hover-bg);
transform: translateY(-2px);
- box-shadow: 0 4px 15px var(--nav-item-hover-shadow);
+ box-shadow: var(--shadow-md);
}
.theme-toggle-icon {
@@ -506,18 +605,26 @@ img.youtube-stats-dark {
transform: rotate(0);
}
-/* Dark mode styling for browsers that support media queries */
-@media (prefers-color-scheme: dark) {
- /* Dark mode for the navigation close button */
- .s-header__nav-close-btn {
- background: rgba(255, 255, 255, 0.1);
- color: #000000; /* Keep text black in dark mode too to match command palette */
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
- }
-
- .s-header__nav-close-btn:hover {
- background: rgba(255, 255, 255, 0.15);
- }
+/* Ensure consistent height and alignment for all header items including icons */
+.s-header__nav-list li[style="background: none;"] {
+ display: flex;
+ align-items: center;
+ height: 100%;
+}
+
+.s-header__nav-list li[style="background: none;"] a {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 40px;
+ width: 40px;
+}
+
+/* Ensure the Bluesky icon is centered */
+.s-header__nav-list .fa-bluesky {
+ display: flex;
+ align-items: center;
+ justify-content: center;
}
/* Intro Section */
@@ -551,7 +658,6 @@ img.youtube-stats-dark {
background-image: url('../../featured/GraphicalAbstract_v7_FrontOnly-darkTheme.jpg');
opacity: 0.42;
filter: brightness(0.85) contrast(1.15);
- backdrop-filter: blur(8px);
}
.s-intro__content {
@@ -563,7 +669,7 @@ img.youtube-stats-dark {
backdrop-filter: blur(12px);
padding: 4rem;
border-radius: 10px;
- box-shadow: 0 4px 30px rgba(0, 0, 0, 0.2);
+ box-shadow: var(--shadow-lg);
}
[data-theme="dark"] .s-intro__content {
@@ -572,31 +678,6 @@ img.youtube-stats-dark {
border: 1px solid rgba(255, 255, 255, 0.1);
}
-/* Social icons styling - matching title gradient in dark mode */
-[data-theme="dark"] .ai-orcid {
- color: #ff8888 !important; /* Match left side of gradient (red) */
-}
-
-[data-theme="dark"] .fa-github {
- color: #9077ff !important; /* Match middle of gradient (purple/blue mix) */
-}
-
-[data-theme="dark"] .ai-google-scholar {
- color: #546cff !important; /* Match right side of gradient (blue) */
-}
-
-/* Make Google Scholar icon white in command palette dark theme */
-[data-theme="dark"] .cmdk-item .ai-google-scholar,
-[data-theme="dark"] [cmdk-item] .ai-google-scholar,
-[data-theme="dark"] [data-cmdk-item] .ai-google-scholar,
-[data-theme="dark"] .cmdk-list .ai-google-scholar,
-[data-theme="dark"] [role="dialog"] .ai-google-scholar,
-[data-theme="dark"] #command-modal .ai-google-scholar,
-[data-theme="dark"] .command-palette-icon .ai-google-scholar,
-[data-theme="dark"] .command-palette-command .ai-google-scholar {
- color: white !important;
-}
-
.s-intro__pretitle {
font-size: 2.4rem;
margin-bottom: 2rem;
@@ -671,14 +752,14 @@ img.youtube-stats-dark {
text-decoration: none;
border-radius: 25px;
font-size: 0.9em;
- transition: all 0.3s ease;
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
+ transition: var(--transition-medium);
+ box-shadow: var(--shadow-sm);
backdrop-filter: blur(5px);
}
.s-intro__subtitle a.smoothscroll:hover {
background-color: rgba(3, 102, 214, 1);
- box-shadow: 0 4px 8px rgba(0,0,0,0.2);
+ box-shadow: var(--shadow-md);
transform: translateY(-2px);
}
@@ -708,14 +789,6 @@ img.youtube-stats-dark {
color: #e0e0e0;
}
-[data-theme="dark"] .s-intro__caption a {
- color: #6fa1ff;
-}
-
-[data-theme="dark"] .s-intro__caption a:hover {
- color: #8bb5ff;
-}
-
.s-intro__caption p {
margin: 0;
line-height: 1.6;
@@ -733,6 +806,14 @@ img.youtube-stats-dark {
text-decoration: none;
}
+[data-theme="dark"] .s-intro__caption a {
+ color: #6fa1ff;
+}
+
+[data-theme="dark"] .s-intro__caption a:hover {
+ color: #8bb5ff;
+}
+
/* Make sure the Learn More button is visible */
.s-intro__more {
margin-top: 2rem;
@@ -747,7 +828,7 @@ img.youtube-stats-dark {
border-radius: 5px;
font-size: 1.8rem;
font-weight: 600;
- transition: all 0.3s ease;
+ transition: var(--transition-medium);
border: 1px solid rgba(255, 255, 255, 0.4);
backdrop-filter: blur(4px);
}
@@ -755,13 +836,13 @@ img.youtube-stats-dark {
.s-intro__more-btn:hover {
background: rgba(255, 255, 255, 0.4);
transform: translateY(-2px);
- box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
+ box-shadow: var(--shadow-sm);
}
/* About Section */
.s-about {
padding: 10rem 2rem;
- background: white;
+ background: var(--color-background);
min-height: 100vh;
display: flex;
align-items: flex-start;
@@ -781,18 +862,11 @@ img.youtube-stats-dark {
backdrop-filter: blur(8px);
border-radius: 15px;
justify-content: space-between;
- box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
+ box-shadow: var(--shadow-lg);
padding: 3rem;
overflow: hidden;
}
-@media (max-width: 900px) {
- .s-about__grid {
- flex-direction: column;
- gap: 3rem;
- }
-}
-
.s-about__left {
display: flex;
flex-direction: column;
@@ -800,12 +874,6 @@ img.youtube-stats-dark {
width: 60%;
}
-@media (max-width: 900px) {
- .s-about__left {
- width: 100%;
- }
-}
-
.s-about__right {
display: flex;
flex-direction: column;
@@ -813,12 +881,6 @@ img.youtube-stats-dark {
width: 42%;
}
-@media (max-width: 900px) {
- .s-about__right {
- width: 100%;
- }
-}
-
.s-about__social {
display: flex;
flex-direction: column;
@@ -843,11 +905,6 @@ img.youtube-stats-dark {
margin-bottom: 0.5rem;
}
-[data-theme="dark"] .s-about__social-header {
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
- color: #ffffff;
-}
-
.s-about__social-header img {
width: 24px;
height: 24px;
@@ -861,25 +918,16 @@ img.youtube-stats-dark {
}
.s-about__social-header a {
- color: #4c6ef5;
+ color: var(--color-link);
text-decoration: none;
transition: color 0.3s ease;
}
.s-about__social-header a:hover {
- color: #364fc7;
+ color: var(--color-link-hover);
text-decoration: none;
}
-.s-about__social bsky-embed {
- flex: 1;
- overflow-y: auto;
- overflow-x: hidden;
- padding: 2rem;
- scrollbar-width: thin;
- scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
-}
-
/* News content padding to match About section */
#news-content {
padding: 1.5rem 2rem;
@@ -896,37 +944,6 @@ img.youtube-stats-dark {
scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
}
-/* Force all content inside bsky-embed to fit */
-.s-about__social bsky-embed * {
- max-width: 100%;
- box-sizing: border-box;
- word-wrap: break-word;
-}
-
-/* Ensure images don't overflow */
-.s-about__social bsky-embed img {
- max-width: 100%;
- height: auto;
-}
-
-/* Custom scrollbar for Bluesky feed */
-.s-about__social bsky-embed::-webkit-scrollbar {
- width: 6px;
-}
-
-.s-about__social bsky-embed::-webkit-scrollbar-track {
- background: transparent;
-}
-
-.s-about__social bsky-embed::-webkit-scrollbar-thumb {
- background-color: rgba(0, 0, 0, 0.2);
- border-radius: 3px;
-}
-
-.s-about__social bsky-embed::-webkit-scrollbar-thumb:hover {
- background-color: rgba(0, 0, 0, 0.3);
-}
-
.text-pretitle {
font-size: 1.8rem;
color: var(--color-primary);
@@ -1000,13 +1017,13 @@ img.youtube-stats-dark {
}
.s-about__desc a {
- color: #4c6ef5;
+ color: var(--color-link);
text-decoration: none;
transition: color 0.3s ease;
}
.s-about__desc a:hover {
- color: #364fc7;
+ color: var(--color-link-hover);
text-decoration: none;
}
@@ -1095,7 +1112,24 @@ img.youtube-stats-dark {
}
}
-/* Responsive Design */
+/* Responsive Design - Consolidated Media Queries */
+@media screen and (max-width: 1700px) {
+ .team-grid {
+ grid-template-columns: repeat(3, 400px);
+ }
+}
+
+@media screen and (max-width: 1300px) {
+ .team-grid {
+ grid-template-columns: repeat(2, 400px);
+ }
+
+ .s-about__grid {
+ grid-template-columns: minmax(350px, 1.2fr) minmax(400px, 1fr);
+ gap: 2rem;
+ }
+}
+
@media screen and (max-width: 1200px) {
.s-about__grid {
grid-template-columns: minmax(400px, 1.2fr) minmax(450px, 1fr);
@@ -1105,12 +1139,56 @@ img.youtube-stats-dark {
.footer-right {
padding-right: 90px;
}
+
+ .footer-logo {
+ height: 45px;
+ }
+
+ .pof-logo {
+ height: 50px;
+ }
+
+ .footer-left, .footer-right {
+ gap: 1.5rem;
+ }
}
-@media screen and (max-width: 1000px) {
+@media screen and (max-width: 900px) {
+ .team-grid {
+ grid-template-columns: repeat(1, 400px);
+ }
+
.s-about__grid {
- grid-template-columns: minmax(350px, 1.2fr) minmax(400px, 1fr);
- gap: 2rem;
+ flex-direction: column;
+ gap: 3rem;
+ }
+
+ .s-about__left {
+ width: 100%;
+ }
+
+ .s-about__right {
+ width: 100%;
+ }
+
+ .footer-logo {
+ height: 35px;
+ }
+
+ .pof-logo {
+ height: 40px;
+ }
+
+ .footer-left, .footer-right {
+ gap: 1rem;
+ }
+
+ .footer-right {
+ padding-right: 80px;
+ }
+
+ .footer-right i {
+ font-size: 2em !important;
}
}
@@ -1259,17 +1337,168 @@ img.youtube-stats-dark {
.s-header__nav-list li:first-child {
margin-right: 4rem;
}
-}
-
-/* Team Section */
-.s-team {
- padding: 10rem 2rem;
- background: var(--color-background);
- min-height: 100vh;
- display: flex;
- flex-direction: column;
- align-items: center;
-}
+
+ .site-footer {
+ flex-direction: column;
+ gap: 2rem;
+ text-align: center;
+ padding: 2rem 1rem;
+ }
+
+ .footer-left, .footer-center, .footer-right {
+ justify-content: center;
+ width: 100%;
+ flex-wrap: wrap;
+ margin: 0;
+ padding-right: 0;
+ }
+
+ .footer-right a:last-child {
+ margin-right: 0;
+ }
+
+ .footer-logo {
+ height: 30px;
+ }
+
+ .pof-logo {
+ height: 35px;
+ }
+
+ .footer-center {
+ order: -1;
+ }
+
+ .footer-right {
+ gap: 1.5rem;
+ }
+
+ .footer-right i {
+ font-size: 1.75em !important;
+ }
+
+ .edit-link {
+ width: 100%;
+ justify-content: center;
+ margin-top: 1rem;
+ color: white;
+ }
+
+ .s-research {
+ padding: 10rem 0 6rem;
+ }
+
+ .research-content {
+ padding: 2rem;
+ }
+
+ .research-content h1 {
+ font-size: 3rem;
+ }
+
+ .research-content h2 {
+ font-size: 2.4rem;
+ }
+
+ .research-content h3 {
+ font-size: 1.6rem;
+ }
+
+ .research-content h4 {
+ font-size: 1.5rem;
+ }
+
+ .research-content ul li {
+ font-size: 1.4rem;
+ }
+
+ .s-join {
+ padding: 10rem 0 6rem;
+ }
+
+ .join-content {
+ padding: 2rem;
+ }
+
+ .join-content h1 {
+ font-size: 3rem;
+ }
+
+ .position-section h2 {
+ font-size: 2.2rem;
+ }
+
+ .position-section h3 {
+ font-size: 1.6rem;
+ }
+}
+
+@media screen and (max-width: 500px) {
+ .team-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .team-member,
+ .member-image {
+ width: 100%;
+ }
+
+ .member-image {
+ height: auto;
+ padding-bottom: 0;
+ }
+
+ .member-image img {
+ width: 100%;
+ max-width: 250px;
+ height: auto;
+ aspect-ratio: 1/1;
+ }
+
+ .featured-paper {
+ min-width: 400px;
+ }
+
+ .featured-papers {
+ gap: 1.5rem;
+ }
+}
+
+/* Mobile image adaptations for YouTube stats */
+@media screen and (max-width: 768px) {
+ img.youtube-stats-light,
+ img.youtube-stats-dark {
+ max-width: 100%;
+ height: auto !important;
+ width: 100% !important;
+ }
+}
+
+/* Ensure all nav links have consistent height */
+.s-header__nav-list a {
+ color: var(--nav-item-color);
+ text-decoration: none;
+ font-size: 1.6rem;
+ transition: var(--transition-medium);
+ padding: 0.8rem 1.6rem;
+ border-radius: 5px;
+ background: var(--nav-item-bg);
+ backdrop-filter: blur(8px);
+ box-shadow: var(--shadow-sm);
+ display: flex;
+ align-items: center;
+ height: 40px;
+}
+
+/* Team Section */
+.s-team {
+ padding: var(--space-xl) var(--space-md);
+ background: var(--color-background);
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
.s-team__desc {
width: 100%;
@@ -1304,6 +1533,10 @@ img.youtube-stats-dark {
transition: transform 0.3s ease;
}
+.team-member:hover {
+ transform: translateY(-5px);
+}
+
/* Center the name */
.team-member h2 {
text-align: center;
@@ -1320,6 +1553,11 @@ img.youtube-stats-dark {
.team-member img {
display: block;
margin: 0 auto 1rem;
+ width: 250px;
+ height: 250px;
+ object-fit: cover;
+ transform: translateZ(0);
+ will-change: transform;
}
/* Center "Joint with" text (it's a paragraph with a single link) */
@@ -1351,54 +1589,6 @@ img.youtube-stats-dark {
text-align: justify;
}
-/* Responsive breakpoints */
-@media screen and (max-width: 1700px) {
- .team-grid {
- grid-template-columns: repeat(3, 400px);
- }
-}
-
-@media screen and (max-width: 1300px) {
- .team-grid {
- grid-template-columns: repeat(2, 400px);
- }
-}
-
-@media screen and (max-width: 900px) {
- .team-grid {
- grid-template-columns: 400px;
- }
-}
-
-@media screen and (max-width: 500px) {
- .team-grid {
- grid-template-columns: 1fr;
- }
-
-
-
- .team-member {
- width: 100%;
- }
-
- .team-member img {
- width: 100%;
- height: auto;
- }
-}
-
-.member-image {
- width: 100%;
- display: flex;
- justify-content: center;
- margin-bottom: 1rem;
- background-color: #f8f9fa;
- min-height: 250px;
- overflow: hidden;
- content-visibility: auto;
- contain: layout paint;
-}
-
/* Dark theme text color fixes for team section */
[data-theme="dark"] .team-member p,
[data-theme="dark"] .team-member strong,
@@ -1430,14 +1620,20 @@ img.youtube-stats-dark {
[data-theme="dark"] .team-member {
background: rgba(30, 30, 38, 0.7);
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
+ box-shadow: var(--shadow-lg);
border: 1px solid rgba(255, 255, 255, 0.1);
}
-/* Make GitHub and Bluesky icons white in dark theme */
-[data-theme="dark"] .fa-github,
-[data-theme="dark"] .fa-bluesky {
- color: white !important;
+.member-image {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ margin-bottom: 1rem;
+ background-color: #f8f9fa;
+ min-height: 250px;
+ overflow: hidden;
+ content-visibility: auto;
+ contain: layout paint;
}
.member-image::before {
@@ -1469,38 +1665,6 @@ img.youtube-stats-dark {
filter: blur(0);
}
-/* Loading animation */
-.member-image::after {
- content: '';
- position: absolute;
- top: 0;
- left: -100%;
- width: 50%;
- height: 100%;
- background: linear-gradient(
- 90deg,
- transparent,
- rgba(0, 86, 179, 0.1),
- transparent
- );
- animation: loading 1.5s infinite;
- contain: paint;
-}
-
-@keyframes loading {
- 0% {
- left: -100%;
- }
- 100% {
- left: 200%;
- }
-}
-
-/* Hide loading animation when image is loaded */
-.member-image.loaded::after {
- display: none;
-}
-
.member-content {
padding: 0 2rem;
}
@@ -1517,63 +1681,9 @@ img.youtube-stats-dark {
margin: 0 0 0.8rem;
font-weight: 700;
letter-spacing: -0.02em;
- transition: color 0.3s ease;
-}
-
-/* Removed hover effect and transitions to prevent blurriness */
-.member-content h2 {
transition: none;
}
-.member-content h2:hover {
- /* Disable any hover effects */
- color: inherit;
- filter: none;
- transform: none;
-}
-
-/* Responsive breakpoints */
-@media screen and (max-width: 1700px) {
- .team-grid {
- grid-template-columns: repeat(3, 400px);
- }
-}
-
-@media screen and (max-width: 1300px) {
- .team-grid {
- grid-template-columns: repeat(2, 400px);
- }
-}
-
-@media screen and (max-width: 900px) {
- .team-grid {
- grid-template-columns: 400px;
- }
-}
-
-@media screen and (max-width: 500px) {
- .team-grid {
- grid-template-columns: 1fr;
- }
-
- .team-member,
- .member-image {
- width: 100%;
- }
-
- .member-image {
- height: auto;
- padding-bottom: 0;
- }
-
- .member-image img {
- width: 100%;
- max-width: 250px;
- height: auto;
- aspect-ratio: 1/1;
- }
-}
-
.member-content ul {
list-style: none;
padding: 0;
@@ -1595,13 +1705,13 @@ img.youtube-stats-dark {
}
.member-content a {
- color: #4c6ef5;
+ color: var(--color-link);
text-decoration: none;
transition: color 0.3s ease;
}
.member-content a:hover {
- color: #364fc7;
+ color: var(--color-link-hover);
text-decoration: none;
}
@@ -1619,7 +1729,7 @@ img.youtube-stats-dark {
font-weight: 500;
font-size: 1.2rem;
text-decoration: none !important;
- transition: all 0.3s ease;
+ transition: var(--transition-medium);
}
.cv-button:hover {
@@ -1628,1043 +1738,778 @@ img.youtube-stats-dark {
box-shadow: 0 2px 6px rgba(76, 110, 245, 0.15);
}
-/* Research Section
---------------------------------------------- */
-.s-research {
- padding: 12rem 0 8rem;
- background-color: white;
- color: var(--color-text);
+.team-section {
+ margin-bottom: 4rem;
+ width: 100%;
+ max-width: 1600px;
+ margin-left: auto;
+ margin-right: auto;
}
-.s-research .row {
- max-width: 1200px;
- margin: 0 auto;
- padding: 0 2rem;
+.team-section h1 {
+ font-size: 2.4rem;
+ margin-bottom: 2rem;
+ color: var(--color-text);
+ text-align: center;
}
-.s-research .column {
- width: 100%;
+/* Featured Section */
+.s-featured {
+ padding: 0 var(--space-md);
+ background: var(--color-background);
+ display: flex;
+ align-items: flex-start;
}
-.research-content {
- background: rgba(255, 255, 255, 0.25);
- backdrop-filter: blur(8px);
- padding: 4rem;
- border-radius: 10px;
- box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
+.s-featured__content {
+ width: 100%;
+ max-width: 1400px;
+ margin: 0 auto;
}
-.research-content h1 {
- font-size: 3.6rem;
- margin-bottom: 4rem;
- color: #2b2b2b;
- text-align: center;
+.s-featured__grid {
+ display: flex;
+ justify-content: center;
+ width: 100%;
}
-.research-content h2 {
- font-size: 2.8rem;
- margin: 4rem 0 2rem;
- color: #4c6ef5;
- border-bottom: 2px solid rgba(76, 110, 245, 0.2);
- padding-bottom: 1rem;
+.s-featured__left {
+ width: 100%;
+ max-width: 1400px;
+ margin: 0 auto;
}
-.research-content h3 {
- font-size: 1.8rem;
- margin: 2rem 0 1rem;
- color: #2b2b2b;
- font-weight: 500;
+.s-featured__header {
+ text-align: center;
+ margin-bottom: 4rem;
}
-.research-content h4 {
- font-size: 1.6rem;
- margin: 2rem 0 1rem;
- color: #4c6ef5;
- font-weight: 600;
- font-style: italic;
+.s-featured__header .text-pretitle {
+ font-size: 3.6rem;
+ color: var(--color-primary);
+ margin-bottom: 1.5rem;
+ text-transform: uppercase;
+ letter-spacing: 0.1em;
+ font-weight: 500;
}
-.research-content ul {
- list-style: none;
- margin: 0;
- padding: 0;
+.s-featured__header .text-display-title {
+ font-size: 3.6rem;
+ color: var(--color-text);
+ margin: 0;
+ font-weight: 700;
}
-.research-content ul li {
- margin-bottom: 1rem;
- font-size: 1.5rem;
- line-height: 1.6;
+.featured-papers {
+ display: flex;
+ flex-direction: row;
+ gap: 2rem;
+ overflow-x: auto;
+ padding: 1rem 0;
+ scroll-snap-type: x mandatory;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: none; /* IE and Edge */
+ scrollbar-width: none; /* Firefox */
}
-.research-content h4 + ul {
- margin-left: 2rem;
- border-left: 3px solid rgba(76, 110, 245, 0.2);
- padding-left: 1rem;
+/* Hide scrollbar but keep functionality */
+.featured-papers::-webkit-scrollbar {
+ display: none;
}
-.research-content h4 + ul li {
- color: #666;
+.featured-paper {
+ flex: 0 0 auto;
+ width: calc(50% - 1rem);
+ min-width: 600px;
+ background: rgba(255, 255, 255, 0.1);
+ backdrop-filter: blur(10px);
+ border-radius: 10px;
+ padding: 2rem;
+ transition: transform 0.3s ease;
+ box-shadow: var(--shadow-md);
+ scroll-snap-align: start;
}
-.research-content ul li p {
- margin: 0.5rem 0;
+.featured-paper:hover {
+ transform: translateY(-5px);
}
-.research-content ul li:first-child p {
- margin-top: 0;
+.featured-paper h3 {
+ font-size: 2rem;
+ margin: 0 0 1rem;
+ color: var(--color-primary);
}
-.research-content img {
- margin-right: 0.5rem;
- vertical-align: middle;
+/* Style tags */
+.featured-paper tags {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+ margin: 1rem 0;
}
-.research-content a {
- color: #4c6ef5;
- text-decoration: none;
- transition: color 0.3s ease;
+.featured-paper tags span {
+ display: inline-block;
+ padding: 0.4rem 0.8rem;
+ background: rgba(76, 110, 245, 0.15);
+ color: #4c6ef5;
+ border-radius: 4px;
+ font-size: 1.4rem;
+ cursor: pointer;
+ transition: var(--transition-medium);
+ text-decoration: none;
+ border: 1px solid rgba(76, 110, 245, 0.2);
}
-.research-content a:hover {
- color: #364fc7;
- text-decoration: none;
+[data-theme="dark"] .featured-paper tags span {
+ background: rgba(40, 44, 52, 0.8) !important;
+ color: #ffffff !important;
+ border: 1px solid rgba(111, 161, 255, 0.4) !important;
}
-/* Responsive adjustments */
-@media screen and (max-width: 768px) {
- .s-research {
- padding: 10rem 0 6rem;
- }
-
- .research-content {
- padding: 2rem;
- }
-
- .research-content h1 {
- font-size: 3rem;
- }
-
- .research-content h2 {
- font-size: 2.4rem;
- }
-
- .research-content h3 {
- font-size: 1.6rem;
- }
-
- .research-content h4 {
- font-size: 1.5rem;
- }
-
- .research-content ul li {
- font-size: 1.4rem;
- }
+.featured-paper tags span:hover {
+ background: rgba(76, 110, 245, 0.25);
+ transform: translateY(-2px);
+ border-color: rgba(76, 110, 245, 0.3);
}
-/* Markdown Content Styles */
-.markdown-content strong,
-.markdown-content b {
- font-weight: 700;
- color: #2b2b2b;
+[data-theme="dark"] .featured-paper tags span:hover {
+ background: rgba(76, 110, 245, 0.5) !important;
+ border-color: rgba(111, 161, 255, 0.6) !important;
}
-.markdown-content em,
-.markdown-content i {
- font-style: italic;
+.featured-paper iframe {
+ width: 100%;
+ border-radius: 8px;
+ margin: 1rem 0;
+ box-shadow: var(--shadow-sm);
}
-.markdown-content code {
- font-family: monospace;
- background: rgba(0, 0, 0, 0.05);
- padding: 0.2rem 0.4rem;
- border-radius: 3px;
- font-size: 0.9em;
+/* Hide year headers */
+.featured-paper h2 {
+ display: none;
}
-.markdown-content pre code {
- display: block;
- padding: 1rem;
- overflow-x: auto;
+/* Footer */
+.site-footer {
+ background-color: #333;
+ color: white;
+ padding: 2rem;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ position: relative;
+ bottom: 0;
+ width: 100%;
}
-.markdown-content blockquote {
- border-left: 4px solid #4c6ef5;
- margin: 1.5rem 0;
- padding-left: 1rem;
- color: #666;
+.footer-left, .footer-center, .footer-right {
+ display: flex;
+ align-items: center;
+ gap: 2rem;
}
-.markdown-content hr {
- border: none;
- border-top: 1px solid rgba(0, 0, 0, 0.1);
- margin: 2rem 0;
+.footer-left {
+ flex: 0 1 auto;
}
-/* Add to existing styles.css where other image rules exist */
-.team-member img {
- width: 250px;
- height: 250px;
- object-fit: cover;
- transform: translateZ(0);
- will-change: transform;
+.footer-center {
+ flex-direction: column;
+ text-align: center;
+ justify-content: center;
+ align-items: center;
+ flex: 0 1 auto;
+ margin: 0 2rem;
}
-@media screen and (max-width: 768px) {
- .team-member img {
- width: 100%;
- height: auto;
- }
+.footer-right {
+ flex: 0 1 auto;
+ justify-content: flex-end;
+ margin-right: 0;
+ gap: 2rem;
+ padding-right: 100px;
}
-.team-section {
- margin-bottom: 4rem;
- width: 100%;
- max-width: 1600px;
- margin-left: auto;
- margin-right: auto;
+.footer-right a:last-child {
+ margin-right: -15px;
}
-.team-section h1 {
- font-size: 2.4rem;
- margin-bottom: 2rem;
- color: var(--color-1);
- text-align: center;
+.copyright-text {
+ font-size: 1em;
+ margin: 0;
+ opacity: 0.9;
+ line-height: 1.5;
+ white-space: nowrap;
}
-.team-grid {
- display: grid;
- grid-template-columns: repeat(4, 400px);
- gap: 2rem;
- margin-bottom: 2rem;
- justify-content: center;
+.edit-link {
+ color: white;
+ text-decoration: none;
+ font-size: 0.9em;
+ padding: 0.5em 1em;
+ border: 1px solid rgba(255, 255, 255, 0.2);
+ border-radius: 4px;
+ transition: var(--transition-medium);
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5em;
}
-.team-member {
- width: 400px;
- background: rgba(255, 255, 255, 0.1);
- backdrop-filter: blur(10px);
- border-radius: 10px;
- padding: 2rem;
- text-align: justify;
- transition: transform 0.3s ease;
+.edit-link:hover {
+ background: rgba(255, 255, 255, 0.1);
+ border-color: rgba(255, 255, 255, 0.4);
+ transform: translateY(-1px);
}
-.team-member:hover {
- transform: translateY(-5px);
+.edit-link i {
+ font-size: 1.1em;
}
-/* Responsive breakpoints for team grid */
-@media screen and (max-width: 1700px) {
- .team-grid {
- grid-template-columns: repeat(3, 400px);
- }
+.footer-logo {
+ height: 55px;
+ width: auto;
+ filter: brightness(0) invert(1);
+ transition: opacity 0.3s ease;
}
-@media screen and (max-width: 1300px) {
- .team-grid {
- grid-template-columns: repeat(2, 400px);
- }
+.pof-logo {
+ height: 60px;
}
-@media screen and (max-width: 900px) {
- .team-grid {
- grid-template-columns: repeat(1, 400px);
- }
+.footer-logo:hover {
+ opacity: 0.8;
}
-@media screen and (max-width: 500px) {
- .team-grid {
- grid-template-columns: 1fr;
- }
-
-
-
- .team-member {
- width: 100%;
- }
+.footer-left a, .footer-right a {
+ transition: transform 0.3s ease, opacity 0.3s ease;
+ color: white;
}
-/* Badge/Shield Styles */
-.s-about__desc img[src*="img.shields.io"] {
- height: 24px;
- margin: 5px 8px;
- transform: scale(1.1);
- vertical-align: middle;
- transition: transform 0.3s ease;
-}
-
-.s-about__desc a {
- display: inline-block;
- padding: 2px;
- transition: transform 0.3s ease;
+.footer-left a:hover, .footer-right a:hover {
+ transform: translateY(-2px);
+ opacity: 0.8;
}
-.s-about__desc a:hover {
- color: #364fc7;
+/* Go to top button */
+.ss-go-top {
+ display: none;
+ position: fixed;
+ bottom: 30px;
+ right: 30px;
+ z-index: 100;
+ padding: 15px;
+ background: rgba(255, 255, 255, 0.2);
+ color: #333;
text-decoration: none;
- transform: translateY(-2px);
-}
-
-.s-about__desc a:hover img[src*="img.shields.io"] {
- transform: scale(1.15);
+ border-radius: 50%;
+ transition: var(--transition-medium);
+ cursor: pointer;
+ box-shadow: var(--shadow-sm);
+ backdrop-filter: blur(4px);
+ border: 1px solid rgba(255, 255, 255, 0.3);
}
-.s-about__desc strong,
-.s-about__desc b {
- font-weight: 700;
- color: #4c6ef5;
- padding: 0.1em 0.2em;
- background: linear-gradient(120deg, rgba(76, 110, 245, 0.1) 0%, rgba(76, 110, 245, 0.05) 100%);
- border-radius: 3px;
- transition: all 0.3s ease;
+.ss-go-top:hover {
+ background: rgba(255, 255, 255, 0.3);
+ transform: translateY(-3px);
+ box-shadow: var(--shadow-md);
}
-.s-about__desc strong:hover,
-.s-about__desc b:hover {
- background: linear-gradient(120deg, rgba(76, 110, 245, 0.15) 0%, rgba(76, 110, 245, 0.08) 100%);
+.ss-go-top i {
+ font-size: 1.5em;
+ color: #333;
+ display: block;
}
-/* Code block styling for contact info */
-.s-about__desc code.copyable {
- font-family: 'Consolas', 'Monaco', monospace;
- font-size: 0.95em;
- background: rgba(76, 110, 245, 0.05);
- padding: 0.4em 0.8em;
- border-radius: 4px;
- border: 1px solid rgba(76, 110, 245, 0.1);
- color: #4c6ef5;
- margin: 0;
- display: inline-block;
- cursor: pointer;
- transition: all 0.2s ease;
- position: relative;
- user-select: all;
- text-decoration: none;
- pointer-events: auto;
+.link-is-visible {
+ display: block;
}
-.s-about__desc code.copyable:link,
-.s-about__desc code.copyable:visited,
-.s-about__desc code.copyable:hover,
-.s-about__desc code.copyable:active {
- text-decoration: none;
- color: #4c6ef5;
+/* Research Section */
+.s-research {
+ padding: 12rem 0 8rem;
+ background-color: var(--color-background);
+ color: var(--color-text);
}
-.s-about__desc code.copyable::before {
- content: "Click to copy";
- position: absolute;
- top: -30px;
- left: 50%;
- transform: translateX(-50%) translateY(10px);
- background: rgba(0, 0, 0, 0.8);
- color: white;
- padding: 4px 8px;
- border-radius: 4px;
- font-size: 12px;
- opacity: 0;
- visibility: hidden;
- transition: all 0.2s ease;
- white-space: nowrap;
- pointer-events: none;
+.s-research .row {
+ max-width: 1200px;
+ margin: 0 auto;
+ padding: 0 2rem;
}
-.s-about__desc code.copyable::after {
- content: "";
- position: absolute;
- top: -10px;
- left: 50%;
- transform: translateX(-50%) translateY(10px);
- border: 5px solid transparent;
- border-top-color: rgba(0, 0, 0, 0.8);
- opacity: 0;
- visibility: hidden;
- transition: all 0.2s ease;
- pointer-events: none;
+.s-research .column {
+ width: 100%;
}
-.s-about__desc code.copyable:hover::before,
-.s-about__desc code.copyable:hover::after {
- opacity: 1;
- visibility: visible;
- transform: translateX(-50%) translateY(0);
+.research-content {
+ background: rgba(255, 255, 255, 0.25);
+ backdrop-filter: blur(8px);
+ padding: 4rem;
+ border-radius: 10px;
+ box-shadow: var(--shadow-lg);
}
-.s-about__desc code.copyable.copied::before {
- content: "Copied!";
- background: #4c6ef5;
+[data-theme="dark"] .research-content {
+ background: rgba(30, 30, 30, 0.4);
+ box-shadow: 0 4px 30px rgba(0, 0, 0, 0.3);
}
-.s-about__desc code.copyable.copied::after {
- border-top-color: #4c6ef5;
+.research-content h1 {
+ font-size: 3.6rem;
+ margin-bottom: 4rem;
+ color: var(--color-text);
+ text-align: center;
}
-.s-about__desc code.copyable:hover {
- background: rgba(76, 110, 245, 0.1);
- border-color: rgba(76, 110, 245, 0.2);
+.research-content h2 {
+ font-size: 2.8rem;
+ margin: 4rem 0 2rem;
+ color: var(--color-primary);
+ border-bottom: 2px solid rgba(76, 110, 245, 0.2);
+ padding-bottom: 1rem;
}
-.s-about__desc code.copyable:active {
- background: rgba(76, 110, 245, 0.15);
- transform: scale(0.98);
+.research-content h3 {
+ font-size: 1.8rem;
+ margin: 2rem 0 1rem;
+ color: var(--color-text);
+ font-weight: 500;
}
-/* Email wrapper styles */
-.email-wrapper {
- margin: 1em 0;
+.research-content h4 {
+ font-size: 1.6rem;
+ margin: 2rem 0 1rem;
+ color: var(--color-primary);
+ font-weight: 600;
+ font-style: italic;
}
-.email-wrapper pre {
+.research-content ul {
+ list-style: none;
margin: 0;
padding: 0;
- background: none;
-}
-
-.email-wrapper code.copyable {
- font-family: 'Consolas', 'Monaco', monospace;
- font-size: 0.95em;
- background: rgba(76, 110, 245, 0.05);
- padding: 0.4em 0.8em;
- border-radius: 4px;
- border: 1px solid rgba(76, 110, 245, 0.1);
- color: #4c6ef5;
- display: inline-block;
- cursor: pointer;
- transition: all 0.2s ease;
- position: relative;
- user-select: all;
-}
-
-.email-wrapper code.copyable::before {
- content: "Click to copy";
- position: absolute;
- top: -30px;
- left: 50%;
- transform: translateX(-50%) translateY(10px);
- background: rgba(0, 0, 0, 0.8);
- color: white;
- padding: 4px 8px;
- border-radius: 4px;
- font-size: 12px;
- opacity: 0;
- visibility: hidden;
- transition: all 0.2s ease;
- white-space: nowrap;
- pointer-events: none;
-}
-
-.email-wrapper code.copyable::after {
- content: "";
- position: absolute;
- top: -10px;
- left: 50%;
- transform: translateX(-50%) translateY(10px);
- border: 5px solid transparent;
- border-top-color: rgba(0, 0, 0, 0.8);
- opacity: 0;
- visibility: hidden;
- transition: all 0.2s ease;
- pointer-events: none;
-}
-
-.email-wrapper code.copyable:hover::before,
-.email-wrapper code.copyable:hover::after {
- opacity: 1;
- visibility: visible;
- transform: translateX(-50%) translateY(0);
-}
-
-.email-wrapper code.copyable.copied::before {
- content: "Copied!";
- background: #4c6ef5;
-}
-
-.email-wrapper code.copyable.copied::after {
- border-top-color: #4c6ef5;
-}
-
-.email-wrapper code.copyable:hover {
- background: rgba(76, 110, 245, 0.1);
- border-color: rgba(76, 110, 245, 0.2);
-}
-
-.email-wrapper code.copyable:active {
- background: rgba(76, 110, 245, 0.15);
- transform: scale(0.98);
-}
-
-/* Email container styles */
-.email-container {
- display: flex;
- align-items: center;
- justify-content: space-between;
- background: rgba(76, 110, 245, 0.05);
- border: 1px solid rgba(76, 110, 245, 0.1);
- border-radius: 6px;
- padding: 0.8em 1em;
- margin: 1em 0;
- transition: all 0.3s ease;
-}
-
-.email-container:hover {
- background: rgba(76, 110, 245, 0.08);
- border-color: rgba(76, 110, 245, 0.2);
-}
-
-.email-text {
- font-family: 'Consolas', 'Monaco', monospace;
- color: #4c6ef5;
- font-size: 0.95em;
- user-select: all;
-}
-
-.copy-btn {
- background: transparent;
- border: none;
- color: #4c6ef5;
- cursor: pointer;
- padding: 0.6em;
- border-radius: 4px;
- transition: all 0.2s ease;
- opacity: 0.7;
- font-size: 1.1em;
- display: flex;
- align-items: center;
- justify-content: center;
- min-width: 36px;
-}
-
-.copy-btn:hover {
- opacity: 1;
- background: rgba(76, 110, 245, 0.1);
-}
-
-.copy-btn:active {
- transform: scale(0.95);
-}
-
-.copy-btn.copied {
- background: #4c6ef5;
- color: white;
- opacity: 1;
-}
-
-.copy-btn i {
- pointer-events: none;
}
-/* Footer Styles */
-.site-footer {
- background-color: #333;
- color: white;
- padding: 2rem;
- display: flex;
- justify-content: space-between;
- align-items: center;
- position: relative;
- bottom: 0;
- width: 100%;
+.research-content ul li {
+ margin-bottom: 1rem;
+ font-size: 1.5rem;
+ line-height: 1.6;
}
-.footer-left, .footer-center, .footer-right {
- display: flex;
- align-items: center;
- gap: 2rem;
+.research-content h4 + ul {
+ margin-left: 2rem;
+ border-left: 3px solid rgba(76, 110, 245, 0.2);
+ padding-left: 1rem;
}
-.footer-left {
- flex: 0 1 auto;
+.research-content h4 + ul li {
+ color: #666;
}
-.footer-center {
- flex-direction: column;
- text-align: center;
- justify-content: center;
- align-items: center;
- flex: 0 1 auto;
- margin: 0 2rem;
+.research-content ul li p {
+ margin: 0.5rem 0;
}
-.footer-right {
- flex: 0 1 auto;
- justify-content: flex-end;
- margin-right: 0;
- gap: 2rem;
- padding-right: 100px;
+.research-content ul li:first-child p {
+ margin-top: 0;
}
-.footer-right a:last-child {
- margin-right: -15px;
+.research-content img {
+ margin-right: 0.5rem;
+ vertical-align: middle;
}
-.copyright-text {
- font-size: 1em;
- margin: 0;
- opacity: 0.9;
- line-height: 1.5;
- white-space: nowrap;
+.research-content a {
+ color: var(--color-link);
+ text-decoration: none;
+ transition: color 0.3s ease;
}
-.edit-link {
- color: white;
- text-decoration: none;
- font-size: 0.9em;
- padding: 0.5em 1em;
- border: 1px solid rgba(255, 255, 255, 0.2);
- border-radius: 4px;
- transition: all 0.3s ease;
- display: inline-flex;
- align-items: center;
- gap: 0.5em;
+.research-content a:hover {
+ color: var(--color-link-hover);
+ text-decoration: none;
}
-.edit-link:hover {
- background: rgba(255, 255, 255, 0.1);
- border-color: rgba(255, 255, 255, 0.4);
- transform: translateY(-1px);
+/* Join Us Section */
+.s-join {
+ padding: 12rem 0 8rem;
+ background-color: var(--color-background);
}
-.edit-link i {
- font-size: 1.1em;
+.join-content {
+ max-width: 1000px;
+ margin: 0 auto;
+ padding: 4rem;
+ background: rgba(255, 255, 255, 0.25);
+ backdrop-filter: blur(8px);
+ border-radius: 10px;
+ box-shadow: var(--shadow-lg);
}
-.footer-logo {
- height: 55px;
- width: auto;
- filter: brightness(0) invert(1);
- transition: opacity 0.3s ease;
+[data-theme="dark"] .join-content {
+ background: rgba(30, 30, 30, 0.4);
+ box-shadow: 0 4px 30px rgba(0, 0, 0, 0.3);
}
-.pof-logo {
- height: 60px;
+.join-content h1 {
+ font-size: 3.6rem;
+ margin-bottom: 4rem;
+ color: var(--color-text);
+ text-align: center;
}
-.footer-logo:hover {
- opacity: 0.8;
+.position-section {
+ margin-bottom: 4rem;
}
-.footer-left a, .footer-right a {
- transition: transform 0.3s ease, opacity 0.3s ease;
- color: white;
+.position-section h2 {
+ font-size: 2.4rem;
+ color: var(--color-primary);
+ margin-bottom: 1.5rem;
+ padding-bottom: 0.5rem;
+ border-bottom: 2px solid rgba(76, 110, 245, 0.2);
}
-.footer-left a:hover, .footer-right a:hover {
- transform: translateY(-2px);
- opacity: 0.8;
+[data-theme="dark"] .position-section h2 {
+ color: #6fa1ff;
+ border-bottom: 2px solid rgba(111, 161, 255, 0.3);
}
-/* Responsive footer adjustments */
-@media screen and (max-width: 1200px) {
- .footer-logo {
- height: 45px;
- }
-
- .pof-logo {
- height: 50px;
- }
-
- .footer-left, .footer-right {
- gap: 1.5rem;
- }
-
- .footer-right {
- padding-right: 90px;
- }
+.position-section h3 {
+ font-size: 1.8rem;
+ color: var(--color-text);
+ margin-bottom: 0.5rem;
}
-@media screen and (max-width: 900px) {
- .footer-logo {
- height: 35px;
- }
-
- .pof-logo {
- height: 40px;
- }
-
- .footer-left, .footer-right {
- gap: 1rem;
- }
-
- .footer-right {
- padding-right: 80px;
- }
-
- .footer-right i {
- font-size: 2em !important;
- }
+.position-section p {
+ font-size: 1.6rem;
+ line-height: 1.6;
+ margin-bottom: 1.5rem;
}
-@media screen and (max-width: 768px) {
- .site-footer {
- flex-direction: column;
- gap: 2rem;
- text-align: center;
- padding: 2rem 1rem;
- }
-
- .footer-left, .footer-center, .footer-right {
- justify-content: center;
- width: 100%;
- flex-wrap: wrap;
- margin: 0;
- padding-right: 0;
- }
-
- .footer-right a:last-child {
- margin-right: 0;
- }
-
- .footer-logo {
- height: 30px;
- }
-
- .pof-logo {
- height: 35px;
- }
-
- .footer-center {
- order: -1;
- }
-
- .footer-right {
- gap: 1.5rem;
- }
-
- .footer-right i {
- font-size: 1.75em !important;
- }
-
- .edit-link {
- width: 100%;
- justify-content: center;
- margin-top: 1rem;
- color: white;
- }
+.position-section ul {
+ list-style-type: disc;
+ margin-left: 2rem;
+ margin-bottom: 2rem;
}
-/* Featured Section */
-.s-featured {
- padding: 0 2rem;
- background: white;
- display: flex;
- align-items: flex-start;
+.position-section li {
+ font-size: 1.6rem;
+ margin-bottom: 0.8rem;
}
-.s-featured__content {
- width: 100%;
- max-width: 1400px;
- margin: 0 auto;
+.application-info {
+ background: rgba(76, 110, 245, 0.05);
+ padding: 2rem;
+ border-radius: 8px;
+ margin-top: 2rem;
}
-.s-featured__grid {
- display: flex;
- justify-content: center;
- width: 100%;
+[data-theme="dark"] .application-info {
+ background: rgba(76, 110, 245, 0.15);
}
-.s-featured__left {
- width: 100%;
- max-width: 1400px;
- margin: 0 auto;
+.external-links a {
+ color: var(--color-link);
+ text-decoration: none;
+ transition: color 0.3s ease;
}
-.s-featured__header {
- text-align: center;
- margin-bottom: 4rem;
+[data-theme="dark"] .external-links a {
+ color: #6fa1ff;
}
-.s-featured__header .text-pretitle {
- font-size: 3.6rem;
- color: #4c6ef5;
- margin-bottom: 1.5rem;
- text-transform: uppercase;
- letter-spacing: 0.1em;
- font-weight: 500;
+.external-links a:hover {
+ color: var(--color-link-hover);
+ text-decoration: none;
}
-.s-featured__header .text-display-title {
- font-size: 3.6rem;
- color: #2b2b2b;
- margin: 0;
- font-weight: 700;
+[data-theme="dark"] .external-links a:hover {
+ color: #9cbeff;
+ text-decoration: none;
}
-.featured-papers {
- display: flex;
- flex-direction: row;
- gap: 2rem;
- overflow-x: auto;
- padding: 1rem 0;
- scroll-snap-type: x mandatory;
- -webkit-overflow-scrolling: touch;
+.project-list li {
+ margin-bottom: 2rem;
}
-/* Hide scrollbar but keep functionality */
-.featured-papers::-webkit-scrollbar {
- display: none;
+.project-list h3 {
+ color: var(--color-primary);
+ margin-bottom: 0.5rem;
}
-.featured-papers {
- -ms-overflow-style: none; /* IE and Edge */
- scrollbar-width: none; /* Firefox */
+.funding-info {
+ background: rgba(76, 110, 245, 0.05);
+ padding: 2rem;
+ border-radius: 8px;
+ margin-top: 4rem;
}
-.featured-paper {
- flex: 0 0 auto;
- width: calc(50% - 1rem);
- min-width: 600px;
- background: rgba(255, 255, 255, 0.1);
- backdrop-filter: blur(10px);
- border-radius: 10px;
- padding: 2rem;
- transition: transform 0.3s ease;
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- scroll-snap-align: start;
+/* Badge/Shield Styles */
+.s-about__desc img[src*="img.shields.io"] {
+ height: 24px;
+ margin: 5px 8px;
+ transform: scale(1.1);
+ vertical-align: middle;
+ transition: transform 0.3s ease;
}
-.featured-paper:hover {
- transform: translateY(-5px);
+.s-about__desc a {
+ display: inline-block;
+ padding: 2px;
+ transition: transform 0.3s ease;
}
-.featured-paper h3 {
- font-size: 2rem;
- margin: 0 0 1rem;
- color: #4c6ef5;
+.s-about__desc a:hover {
+ color: var(--color-link-hover);
+ text-decoration: none;
+ transform: translateY(-2px);
}
-/* Style tags */
-.featured-paper tags {
- display: flex;
- flex-wrap: wrap;
- gap: 0.5rem;
- margin: 1rem 0;
+.s-about__desc a:hover img[src*="img.shields.io"] {
+ transform: scale(1.15);
}
-.featured-paper tags span {
- display: inline-block;
- padding: 0.4rem 0.8rem;
- background: rgba(76, 110, 245, 0.1);
- color: #4c6ef5;
- border-radius: 4px;
- font-size: 1.4rem;
- cursor: pointer;
- transition: all 0.3s ease;
- text-decoration: none;
+.s-about__desc strong,
+.s-about__desc b {
+ font-weight: 700;
+ color: var(--color-primary);
+ padding: 0.1em 0.2em;
+ background: linear-gradient(120deg, rgba(76, 110, 245, 0.1) 0%, rgba(76, 110, 245, 0.05) 100%);
+ border-radius: 3px;
+ transition: all 0.3s ease;
}
-.featured-paper tags span:hover {
- background: rgba(76, 110, 245, 0.2);
- transform: translateY(-2px);
+.s-about__desc strong:hover,
+.s-about__desc b:hover {
+ background: linear-gradient(120deg, rgba(76, 110, 245, 0.15) 0%, rgba(76, 110, 245, 0.08) 100%);
}
-.featured-paper iframe {
- width: 100%;
- border-radius: 8px;
- margin: 1rem 0;
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+/* Markdown Content Styles */
+.markdown-content strong,
+.markdown-content b {
+ font-weight: 700;
+ color: var(--color-text);
}
-/* Hide year headers */
-.featured-paper h2 {
- display: none;
+.markdown-content em,
+.markdown-content i {
+ font-style: italic;
}
-@media screen and (max-width: 1200px) {
- .featured-paper {
- width: calc(100% - 1rem);
- min-width: 500px;
- }
+.markdown-content code {
+ font-family: monospace;
+ background: rgba(0, 0, 0, 0.05);
+ padding: 0.2rem 0.4rem;
+ border-radius: 3px;
+ font-size: 0.9em;
}
-@media screen and (max-width: 768px) {
- .featured-paper {
- min-width: 400px;
- }
-
- .featured-papers {
- gap: 1.5rem;
- }
+.markdown-content pre code {
+ display: block;
+ padding: 1rem;
+ overflow-x: auto;
}
-/* Join Us Section Styles */
-.s-join {
- padding: 12rem 0 8rem;
- background-color: var(--color-background);
+.markdown-content blockquote {
+ border-left: 4px solid var(--color-primary);
+ margin: 1.5rem 0;
+ padding-left: 1rem;
+ color: #666;
}
-.join-content {
- max-width: 1000px;
- margin: 0 auto;
- padding: 4rem;
- background: rgba(255, 255, 255, 0.25);
- backdrop-filter: blur(8px);
- border-radius: 10px;
- box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
+.markdown-content hr {
+ border: none;
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
+ margin: 2rem 0;
}
-[data-theme="dark"] .join-content {
- background: rgba(30, 30, 30, 0.4);
- box-shadow: 0 4px 30px rgba(0, 0, 0, 0.3);
+/* Code block styling for contact info */
+.s-about__desc code.copyable {
+ font-family: 'Consolas', 'Monaco', monospace;
+ font-size: 0.95em;
+ background: rgba(76, 110, 245, 0.05);
+ padding: 0.4em 0.8em;
+ border-radius: 4px;
+ border: 1px solid rgba(76, 110, 245, 0.1);
+ color: var(--color-primary);
+ margin: 0;
+ display: inline-block;
+ cursor: pointer;
+ transition: var(--transition-fast);
+ position: relative;
+ user-select: all;
+ text-decoration: none;
+ pointer-events: auto;
}
-.join-content h1 {
- font-size: 3.6rem;
- margin-bottom: 4rem;
- color: #2b2b2b;
- text-align: center;
+.s-about__desc code.copyable:link,
+.s-about__desc code.copyable:visited,
+.s-about__desc code.copyable:hover,
+.s-about__desc code.copyable:active {
+ text-decoration: none;
+ color: var(--color-primary);
}
-[data-theme="dark"] .join-content h1 {
- color: #ffffff;
+.s-about__desc code.copyable::before {
+ content: "Click to copy";
+ position: absolute;
+ top: -30px;
+ left: 50%;
+ transform: translateX(-50%) translateY(10px);
+ background: rgba(0, 0, 0, 0.8);
+ color: white;
+ padding: 4px 8px;
+ border-radius: 4px;
+ font-size: 12px;
+ opacity: 0;
+ visibility: hidden;
+ transition: var(--transition-fast);
+ white-space: nowrap;
+ pointer-events: none;
}
-.position-section {
- margin-bottom: 4rem;
+.s-about__desc code.copyable::after {
+ content: "";
+ position: absolute;
+ top: -10px;
+ left: 50%;
+ transform: translateX(-50%) translateY(10px);
+ border: 5px solid transparent;
+ border-top-color: rgba(0, 0, 0, 0.8);
+ opacity: 0;
+ visibility: hidden;
+ transition: var(--transition-fast);
+ pointer-events: none;
}
-.position-section h2 {
- font-size: 2.4rem;
- color: #4c6ef5;
- margin-bottom: 1.5rem;
- padding-bottom: 0.5rem;
- border-bottom: 2px solid rgba(76, 110, 245, 0.2);
+.s-about__desc code.copyable:hover::before,
+.s-about__desc code.copyable:hover::after {
+ opacity: 1;
+ visibility: visible;
+ transform: translateX(-50%) translateY(0);
}
-[data-theme="dark"] .position-section h2 {
- color: #6fa1ff;
- border-bottom: 2px solid rgba(111, 161, 255, 0.3);
+.s-about__desc code.copyable.copied::before {
+ content: "Copied!";
+ background: var(--color-primary);
}
-.position-section h3 {
- font-size: 1.8rem;
- color: #2b2b2b;
- margin-bottom: 0.5rem;
+.s-about__desc code.copyable.copied::after {
+ border-top-color: var(--color-primary);
}
-[data-theme="dark"] .position-section h3 {
- color: #e0e0e0;
+.s-about__desc code.copyable:hover {
+ background: rgba(76, 110, 245, 0.1);
+ border-color: rgba(76, 110, 245, 0.2);
}
-.position-section p {
- font-size: 1.6rem;
- line-height: 1.6;
- margin-bottom: 1.5rem;
+.s-about__desc code.copyable:active {
+ background: rgba(76, 110, 245, 0.15);
+ transform: scale(0.98);
}
-.position-section ul {
- list-style-type: disc;
- margin-left: 2rem;
- margin-bottom: 2rem;
+/* Email wrapper styles */
+.email-wrapper {
+ margin: 1em 0;
}
-.position-section li {
- font-size: 1.6rem;
- margin-bottom: 0.8rem;
+.email-wrapper pre {
+ margin: 0;
+ padding: 0;
+ background: none;
}
-.application-info {
+.email-wrapper code.copyable {
+ font-family: 'Consolas', 'Monaco', monospace;
+ font-size: 0.95em;
background: rgba(76, 110, 245, 0.05);
- padding: 2rem;
- border-radius: 8px;
- margin-top: 2rem;
-}
-
-[data-theme="dark"] .application-info {
- background: rgba(76, 110, 245, 0.15);
+ padding: 0.4em 0.8em;
+ border-radius: 4px;
+ border: 1px solid rgba(76, 110, 245, 0.1);
+ color: var(--color-primary);
+ display: inline-block;
+ cursor: pointer;
+ transition: var(--transition-fast);
+ position: relative;
+ user-select: all;
}
-.external-links a {
- color: #4c6ef5;
- text-decoration: none;
- transition: color 0.3s ease;
+.email-container {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ background: rgba(76, 110, 245, 0.05);
+ border: 1px solid rgba(76, 110, 245, 0.1);
+ border-radius: 6px;
+ padding: 0.8em 1em;
+ margin: 1em 0;
+ transition: var(--transition-medium);
}
-[data-theme="dark"] .external-links a {
- color: #6fa1ff;
+.email-container:hover {
+ background: rgba(76, 110, 245, 0.08);
+ border-color: rgba(76, 110, 245, 0.2);
}
-.external-links a:hover {
- color: #364fc7;
- text-decoration: none;
+.email-text {
+ font-family: 'Consolas', 'Monaco', monospace;
+ color: var(--color-primary);
+ font-size: 0.95em;
+ user-select: all;
}
-[data-theme="dark"] .external-links a:hover {
- color: #9cbeff;
- text-decoration: none;
+.copy-btn {
+ background: transparent;
+ border: none;
+ color: var(--color-primary);
+ cursor: pointer;
+ padding: 0.6em;
+ border-radius: 4px;
+ transition: var(--transition-fast);
+ opacity: 0.7;
+ font-size: 1.1em;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-width: 36px;
}
-.project-list li {
- margin-bottom: 2rem;
+.copy-btn:hover {
+ opacity: 1;
+ background: rgba(76, 110, 245, 0.1);
}
-.project-list h3 {
- color: #4c6ef5;
- margin-bottom: 0.5rem;
+.copy-btn:active {
+ transform: scale(0.95);
}
-.funding-info {
- background: rgba(76, 110, 245, 0.05);
- padding: 2rem;
- border-radius: 8px;
- margin-top: 4rem;
+.copy-btn.copied {
+ background: var(--color-primary);
+ color: white;
+ opacity: 1;
}
-@media screen and (max-width: 768px) {
- .s-join {
- padding: 10rem 0 6rem;
- }
-
- .join-content {
- padding: 2rem;
- }
-
- .join-content h1 {
- font-size: 3rem;
- }
-
- .position-section h2 {
- font-size: 2.2rem;
- }
-
- .position-section h3 {
- font-size: 1.6rem;
- }
+.copy-btn i {
+ pointer-events: none;
}
-/* Ensure consistent height and alignment for all header items including icons */
-.s-header__nav-list li[style="background: none;"] {
- display: flex;
- align-items: center;
- height: 100%;
+/* Team member Google Scholar icon */
+.team-member .ai-google-scholar {
+ color: #e76b39 !important;
}
-.s-header__nav-list li[style="background: none;"] a {
- display: flex;
- align-items: center;
- justify-content: center;
- height: 40px;
- width: 40px;
+/* Dark theme - make Google Scholar icon white */
+[data-theme="dark"] .team-member .ai-google-scholar {
+ color: #ffffff !important;
}
-/* Ensure the Bluesky icon is centered */
-.s-header__nav-list .fa-bluesky {
- display: flex;
- align-items: center;
- justify-content: center;
+/* Newspaper icon - black in light theme, white in dark theme */
+.fa-newspaper {
+ color: #000000 !important;
}
-/* Ensure all nav links have consistent height */
-.s-header__nav-list a {
- color: #1a1a1a;
- text-decoration: none;
- font-size: 1.6rem;
- transition: all 0.3s ease;
- padding: 0.8rem 1.6rem;
- border-radius: 5px;
- background: rgba(255, 255, 255, 0.25);
- backdrop-filter: blur(8px);
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
- display: flex;
- align-items: center;
- height: 40px;
+[data-theme="dark"] .fa-newspaper {
+ color: #ffffff !important;
}
\ No newline at end of file
diff --git a/assets/css/team.css b/assets/css/team.css
index 9e95ef5b..cba9c7f7 100644
--- a/assets/css/team.css
+++ b/assets/css/team.css
@@ -7,6 +7,7 @@
--team-image-bg: #f5f5f5;
--team-member-bg: rgba(255, 255, 255, 0.7);
--team-shadow: rgba(0, 0, 0, 0.1);
+ --team-icon-color: #333333;
}
[data-theme="dark"] {
@@ -17,6 +18,7 @@
--team-image-bg: #2a2a2a;
--team-member-bg: rgba(40, 40, 40, 0.7);
--team-shadow: rgba(0, 0, 0, 0.3);
+ --team-icon-color: #ffffff;
}
/* Team page general styles with dark mode support */
@@ -210,4 +212,75 @@
.s-map .map-description .gray {
font-size: 1.3rem;
}
+}
+
+/* Style for social icons */
+.team-member .fa,
+.team-member .ai {
+ display: inline-block;
+ margin: 0 5px;
+ color: var(--team-icon-color);
+ transition: color 0.3s ease, transform 0.3s ease;
+ font-size: 1.5em;
+}
+
+/* Specific styling for social media icons */
+.team-member .fa-github,
+.team-member .fa-linkedin,
+.team-member .fa-x-twitter,
+.team-member .fa-bluesky,
+.team-member .fa-wikipedia-w {
+ color: var(--team-icon-color) !important;
+}
+
+/* Colored icons */
+.team-member .fa-bluesky {
+ color: #0085ff !important;
+}
+
+.team-member .fa-linkedin {
+ color: #0077b5 !important;
+ font-size: 1.7em;
+}
+
+.team-member .fa-x-twitter {
+ color: #000000 !important;
+}
+
+.team-member .fa-wikipedia-w {
+ color: #000000 !important;
+ font-size: 1.4em;
+}
+
+/* Dark theme overrides */
+[data-theme="dark"] .team-member .fa-github,
+[data-theme="dark"] .team-member .fa-linkedin,
+[data-theme="dark"] .team-member .fa-x-twitter,
+[data-theme="dark"] .team-member .fa-bluesky,
+[data-theme="dark"] .team-member .fa-wikipedia-w {
+ color: #ffffff !important;
+}
+
+
+
+[data-theme="dark"] .team-member .fa-x-twitter,
+[data-theme="dark"] .team-member .fa-wikipedia-w {
+ color: #ffffff !important;
+}
+
+/* Hover effects */
+.team-member .fa:hover,
+.team-member .ai:hover {
+ transform: translateY(-2px);
+ opacity: 0.9;
+}
+
+/* Center social links */
+.team-member h2 + p {
+ text-align: center !important;
+ margin: 1rem 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 10px;
}
\ No newline at end of file
diff --git a/assets/js/command-data.js b/assets/js/command-data.js
index eea75639..0ea9091e 100644
--- a/assets/js/command-data.js
+++ b/assets/js/command-data.js
@@ -109,13 +109,6 @@
},
// Help commands
- {
- id: "help",
- title: "View Keyboard Shortcuts",
- handler: () => { window.displayShortcutsHelp(); },
- section: "Help",
- icon: ' '
- },
{
id: "repository",
title: "View Website Repository",
diff --git a/assets/js/platform-utils.js b/assets/js/platform-utils.js
new file mode 100644
index 00000000..639fd793
--- /dev/null
+++ b/assets/js/platform-utils.js
@@ -0,0 +1,38 @@
+'use strict';
+
+/**
+ * Check if the user is on a Mac platform
+ * @returns {boolean} True if user is on Mac, false otherwise
+ */
+function isMacPlatform() {
+ return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
+}
+
+/**
+ * Updates UI elements to reflect the user's platform.
+ *
+ * This function determines whether the current platform is a Mac by calling `isMacPlatform()`
+ * and adjusts the visibility of UI elements accordingly:
+ * - Elements with the class `.default-theme-text` are hidden on Mac platforms.
+ * - Elements with the class `.mac-theme-text` are shown on Mac platforms.
+ * On non-Mac platforms, the visibility settings are reversed.
+ */
+function updatePlatformSpecificElements() {
+ const isMac = isMacPlatform();
+
+ // Update all platform-specific text elements
+ document.querySelectorAll('.default-theme-text').forEach(element => {
+ element.style.display = isMac ? 'none' : 'inline';
+ });
+
+ document.querySelectorAll('.mac-theme-text').forEach(element => {
+ element.style.display = isMac ? 'inline' : 'none';
+ });
+}
+
+// Initialize when DOM is loaded
+document.addEventListener('DOMContentLoaded', updatePlatformSpecificElements);
+
+// Export functions for use in other scripts
+window.isMacPlatform = isMacPlatform;
+window.updatePlatformSpecificElements = updatePlatformSpecificElements;
\ No newline at end of file