Files
cv-site/static/css/01-foundation/_themes.css
T

370 lines
13 KiB
CSS
Raw Normal View History

/* ==============================================================================
COLOR THEME SYSTEM
============================================================================== */
/*
IMPORTANT: This is the COLOR theme system (light/dark/auto)
This is SEPARATE from the LAYOUT theme (.theme-clean)
- COLOR theme: Controls backgrounds, text colors, shadows
- LAYOUT theme (.theme-clean): Controls sidebars, layout structure
Both systems work independently and can be combined.
*/
/* ==============================================================================
LIGHT THEME (DEFAULT)
============================================================================== */
:root {
/* Page Background - Light gray for concentric squares pattern */
--page-bg: #d6d6d6;
/* Concentric Squares Pattern - Light */
--page-bg-pattern: repeating-linear-gradient(0deg, transparent, transparent 5px, rgba(75, 85, 99, 0.06) 5px, rgba(75, 85, 99, 0.06) 6px, transparent 6px, transparent 15px),
repeating-linear-gradient(90deg, transparent, transparent 5px, rgba(75, 85, 99, 0.06) 5px, rgba(75, 85, 99, 0.06) 6px, transparent 6px, transparent 15px),
repeating-linear-gradient(0deg, transparent, transparent 10px, rgba(107, 114, 128, 0.04) 10px, rgba(107, 114, 128, 0.04) 11px, transparent 11px, transparent 30px),
repeating-linear-gradient(90deg, transparent, transparent 10px, rgba(107, 114, 128, 0.04) 10px, rgba(107, 114, 128, 0.04) 11px, transparent 11px, transparent 30px);
/* Paper/Card Backgrounds */
--paper-bg: #ffffff;
--paper-secondary-bg: #f5f5f5;
/* Text Colors */
--text-primary: #1a1a1a;
--text-secondary: #333333;
--text-muted: #666666;
--text-light: #999999;
/* Action Bar & Navigation */
--action-bar-bg: #2b2b2b;
--action-bar-text: #ffffff;
--action-bar-text-muted: rgba(255, 255, 255, 0.85);
/* Borders & Dividers */
--border-color: #333333;
--border-light: #e0e0e0;
--icon-border: #ddd; /* Light visible border for icons */
--item-separator: rgba(0, 0, 0, 0.1); /* Light separator between items */
/* Shadows */
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
--shadow-md: 0 2px 8px rgba(0, 0, 0, 0.15);
--shadow-lg: 2px 2px 9px rgba(0, 0, 0, 0.5);
/* Interactive Elements */
--button-bg: transparent;
--button-bg-hover: rgba(0, 0, 0, 0.05);
--button-bg-active: rgba(0, 0, 0, 0.1);
/* Accent Colors (unchanged in dark mode) */
--accent-blue: #0066cc;
--accent-green: #27ae60;
/* Sidebar (for non-clean theme) */
--sidebar-bg: #d1d4d2;
/* Background photo tint — controls how much of the photo shows through */
--page-bg-tint: rgba(214, 214, 214, 0.85);
/* Legacy CV content variables - theme-aware overrides */
--text-dark: #1a1a1a; /* Dark text for light background */
--text-gray: #333333; /* Secondary text for light background */
}
/* ==============================================================================
DARK THEME
============================================================================== */
[data-color-theme="dark"] {
/* Page Background - Medium gray for dark pattern visibility */
--page-bg: #3a3a3a;
/* Diagonal Grid with Green Glow - Dark */
--page-bg-pattern: repeating-linear-gradient(45deg, rgba(0, 255, 128, 0.15) 0, rgba(0, 255, 128, 0.15) 1px, transparent 1px, transparent 20px),
repeating-linear-gradient(-45deg, rgba(0, 255, 128, 0.15) 0, rgba(0, 255, 128, 0.15) 1px, transparent 1px, transparent 20px);
/* Paper/Card Backgrounds */
--paper-bg: #1a1a1a;
--paper-secondary-bg: #2a2a2a;
/* Text Colors */
--text-primary: #e0e0e0;
--text-secondary: #d0d0d0;
--text-muted: #b0b0b0;
--text-light: #808080;
/* Action Bar & Navigation */
--action-bar-bg: #1a1a1a;
--action-bar-text: #e0e0e0;
--action-bar-text-muted: rgba(224, 224, 224, 0.85);
/* Borders & Dividers */
--border-color: #404040;
--border-light: #333333;
--icon-border: #5e5e5e; /* Medium gray border for icons in dark theme */
--item-separator: rgba(255, 255, 255, 0.05); /* Very subtle separator in dark theme */
/* Shadows */
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
--shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4);
--shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.6);
/* Interactive Elements */
--button-bg: transparent;
--button-bg-hover: rgba(255, 255, 255, 0.05);
--button-bg-active: rgba(255, 255, 255, 0.1);
/* Accent Colors - slightly brighter in dark mode */
--accent-blue: #3399ff;
--accent-green: #2ecc71;
/* Sidebar (for non-clean theme) - darker than light theme but lighter than main content */
--sidebar-bg: #3a3d3e;
/* Background photo tint — darker overlay for dark theme */
--page-bg-tint: rgba(58, 58, 58, 0.85);
/* Legacy CV content variables - theme-aware overrides */
--text-dark: #e0e0e0; /* Light text for dark background */
--text-gray: #d0d0d0; /* Secondary text for dark background */
}
/* ==============================================================================
AUTO THEME - Follows System Preference
============================================================================== */
@media (prefers-color-scheme: dark) {
[data-color-theme="auto"] {
/* Page Background - Medium gray for dark pattern visibility */
--page-bg: #3a3a3a;
/* Diagonal Grid with Green Glow - Dark */
--page-bg-pattern: repeating-linear-gradient(45deg, rgba(0, 255, 128, 0.15) 0, rgba(0, 255, 128, 0.15) 1px, transparent 1px, transparent 20px),
repeating-linear-gradient(-45deg, rgba(0, 255, 128, 0.15) 0, rgba(0, 255, 128, 0.15) 1px, transparent 1px, transparent 20px);
/* Paper/Card Backgrounds */
--paper-bg: #1a1a1a;
--paper-secondary-bg: #2a2a2a;
/* Text Colors */
--text-primary: #e0e0e0;
--text-secondary: #d0d0d0;
--text-muted: #b0b0b0;
--text-light: #808080;
/* Action Bar & Navigation */
--action-bar-bg: #1a1a1a;
--action-bar-text: #e0e0e0;
--action-bar-text-muted: rgba(224, 224, 224, 0.85);
/* Borders & Dividers */
--border-color: #404040;
--border-light: #333333;
--icon-border: #5e5e5e; /* Medium gray border for icons in dark theme */
--item-separator: rgba(255, 255, 255, 0.05); /* Very subtle separator in dark theme */
/* Shadows */
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
--shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4);
--shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.6);
/* Interactive Elements */
--button-bg: transparent;
--button-bg-hover: rgba(255, 255, 255, 0.05);
--button-bg-active: rgba(255, 255, 255, 0.1);
/* Accent Colors - slightly brighter in dark mode */
--accent-blue: #3399ff;
--accent-green: #2ecc71;
/* Sidebar (for non-clean theme) - matches explicit dark theme */
--sidebar-bg: #3a3d3e;
/* Background photo tint — darker overlay for dark theme */
--page-bg-tint: rgba(58, 58, 58, 0.85);
/* Legacy CV content variables - theme-aware overrides */
--text-dark: #e0e0e0; /* Light text for dark background */
--text-gray: #d0d0d0; /* Secondary text for dark background */
}
}
/* ==============================================================================
THEME SWITCHER BUTTON STYLES - Dynamic colors based on theme mode
============================================================================== */
.color-theme-switcher {
position: fixed !important; /* Override .has-tooltip position: relative */
bottom: 14rem; /* Middle position - between print (18rem) and shortcuts (10rem) */
left: 2rem;
width: 50px;
height: 50px;
background: var(--black-bar, #2b2b2b);
color: white;
border: none;
border-radius: 50%;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
transition: all 0.3s ease;
z-index: 999;
opacity: 0.6;
}
/* Dynamic colors ONLY on hover based on active theme mode */
.color-theme-switcher:hover[data-theme-mode="light"] {
background: #d4b200 !important; /* Bright sun yellow (gold) for light mode */
}
.color-theme-switcher:hover[data-theme-mode="dark"] {
background: #013c77 !important; /* Dark nighty blue for dark mode */
}
.color-theme-switcher:hover[data-theme-mode="auto"] {
background: #9b59b6 !important; /* Purple for auto mode (mix of both) */
}
.color-theme-switcher:hover {
opacity: 1 !important;
transform: translateY(-3px);
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);
}
/* At-bottom state - dynamic colors based on theme mode (matches hover) */
.color-theme-switcher.at-bottom[data-theme-mode="light"] {
opacity: 1;
background: #d4b200 !important; /* Bright sun yellow (gold) for light mode */
}
.color-theme-switcher.at-bottom[data-theme-mode="dark"] {
opacity: 1;
background: #013c77 !important; /* Dark nighty blue for dark mode */
}
.color-theme-switcher.at-bottom[data-theme-mode="auto"] {
opacity: 1;
background: #9b59b6 !important; /* Purple for auto mode */
}
.color-theme-switcher iconify-icon {
color: white !important;
transition: color 0.3s ease;
}
.color-theme-switcher:hover iconify-icon {
color: white !important;
}
/* Hide the internal theme buttons - we'll cycle through on click */
.theme-option-btn {
display: none;
}
/* ==============================================================================
ICON COLOR PRESERVATION
============================================================================== */
/* Ensure all iconify icons keep their intended colors across themes */
/* Section icons - keep their brand colors */
.section-icon iconify-icon,
.project-icon iconify-icon,
.course-icon iconify-icon,
.default-project-icon iconify-icon {
color: inherit !important;
}
/* Toggle switch icons - keep their state-specific colors */
/* Note: Already defined in main.css with !important - just ensure they're not overridden */
/* Hamburger menu and site icons */
.site-icon iconify-icon,
.site-icon-mobile iconify-icon {
color: white !important;
}
/* CV content icons */
.cv-paper iconify-icon {
color: inherit !important;
}
/* Error toast icon */
.error-icon iconify-icon {
color: #dc3545 !important;
}
/* Mobile adjustments */
@media (max-width: 900px) {
.color-theme-switcher {
position: fixed !important;
bottom: 1.5rem !important;
left: auto !important;
right: auto !important;
/* Fluid button size: scales from 36px at 380px to 50px at 900px */
width: clamp(36px, calc(36px + (50 - 36) * ((100vw - 380px) / (900 - 380))), 50px) !important;
height: clamp(36px, calc(36px + (50 - 36) * ((100vw - 380px) / (900 - 380))), 50px) !important;
opacity: 1 !important; /* Full opacity on mobile (no transparency with blur bar) */
transform: none !important;
/* Position in 7-button layout: Download, Print, Contact, Shortcuts, Theme, Info, Back-to-top */
/* Fifth button: +33px at 900px, +22px at 380px */
left: calc(50% + clamp(22px, calc(22px + (33 - 22) * ((100vw - 380px) / (900 - 380))), 33px)) !important;
}
/* Scale theme switcher icon */
.color-theme-switcher iconify-icon {
width: clamp(18px, calc(18px + (24 - 18) * ((100vw - 380px) / (900 - 380))), 24px) !important;
height: clamp(18px, calc(18px + (24 - 18) * ((100vw - 380px) / (900 - 380))), 24px) !important;
font-size: clamp(18px, calc(18px + (24 - 18) * ((100vw - 380px) / (900 - 380))), 24px) !important;
}
/* Show theme colors at FULL opacity on mobile (no transparency with blur bar) */
.color-theme-switcher[data-theme-mode="light"] {
background: rgba(212, 178, 0, 1) !important; /* Gold - full opacity */
}
.color-theme-switcher[data-theme-mode="dark"] {
background: rgba(1, 60, 119, 1) !important; /* Blue - full opacity */
}
.color-theme-switcher[data-theme-mode="auto"] {
background: rgba(155, 89, 182, 1) !important; /* Purple - full opacity */
}
/* Full color opacity on hover (already at full opacity, just add transform) */
.color-theme-switcher:hover[data-theme-mode="light"] {
transform: translateY(-3px) !important;
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4) !important;
}
.color-theme-switcher:hover[data-theme-mode="dark"] {
transform: translateY(-3px) !important;
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4) !important;
}
.color-theme-switcher:hover[data-theme-mode="auto"] {
transform: translateY(-3px) !important;
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4) !important;
}
/* REAL MOBILE DEVICES: 6 buttons without shortcuts */
/* Fourth position: +4px at 900px, +2px at 380px */
.is-mobile-device .color-theme-switcher {
left: calc(50% + clamp(2px, calc(2px + (4 - 2) * ((100vw - 380px) / (900 - 380))), 4px)) !important;
}
}
/* ==============================================================================
SPECIFIC LOGO FIXES FOR DARK THEME
============================================================================== */
/* LIV Golf logo is black - invert it in dark themes for visibility */
[data-color-theme="dark"] img[src*="livgolf"],
[data-color-theme="auto"] img[src*="livgolf"] {
filter: invert(1);
border-color: #a1a1a1 !important; /* Inverted #5e5e5e - becomes #5e5e5e after invert */
}
/* Only apply invert to auto theme when system is in dark mode */
@media (prefers-color-scheme: light) {
[data-color-theme="auto"] img[src*="livgolf"] {
filter: none;
border-color: var(--icon-border, #ddd) !important; /* Reset to normal border */
}
}