diff --git a/backend/database/myp.db b/backend/database/myp.db index 9ec45777e..917484a61 100644 Binary files a/backend/database/myp.db and b/backend/database/myp.db differ diff --git a/backend/static/css/dark-light-unified.css b/backend/static/css/dark-light-unified.css index 75c78a591..ba5489bc3 100644 --- a/backend/static/css/dark-light-unified.css +++ b/backend/static/css/dark-light-unified.css @@ -7,6 +7,7 @@ * * Author: Till Tomczak - MYP Team * Zweck: Behebung aller UI Dark/Light Mode Inkonsistenzen + * Version: 2.0 - Enhanced for Perfect Light/Dark Balance */ /* ===== UNIFIED CSS VARIABLES SYSTEM ===== */ @@ -21,7 +22,7 @@ --mb-silver: #c4c4c4; --mb-gray: #666666; - /* === LIGHT MODE FOUNDATION === */ + /* === LIGHT MODE FOUNDATION (Optimiert für maximale Klarheit) === */ --bg-primary: #ffffff; --bg-secondary: #f8fafc; --bg-tertiary: #f1f5f9; @@ -31,8 +32,11 @@ --bg-modal: rgba(255, 255, 255, 0.98); --bg-input: #ffffff; --bg-input-focus: #ffffff; + --bg-sidebar: #f9fafb; + --bg-navbar: rgba(255, 255, 255, 0.95); + --bg-dropdown: #ffffff; - /* === TEXT COLORS LIGHT === */ + /* === TEXT COLORS LIGHT (Optimiert für perfekte Lesbarkeit) === */ --text-primary: #111827; --text-secondary: #374151; --text-tertiary: #6b7280; @@ -42,93 +46,114 @@ --text-success: #059669; --text-warning: #d97706; --text-error: #dc2626; + --text-link: var(--mb-primary); + --text-link-hover: var(--mb-primary-dark); - /* === BORDER COLORS LIGHT === */ + /* === BORDER COLORS LIGHT (Subtile aber sichtbare Grenzen) === */ --border-primary: #e5e7eb; --border-secondary: #d1d5db; --border-focus: var(--mb-primary); --border-error: #f87171; --border-success: #34d399; + --border-warning: #fbbf24; + --border-hover: #c2c7d0; - /* === SHADOWS LIGHT === */ + /* === SHADOWS LIGHT (Sanfte, professionelle Schatten) === */ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1); --shadow-modal: 0 25px 50px -12px rgba(0, 0, 0, 0.25); + --shadow-card: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + --shadow-card-hover: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - /* === GLASSMORPHISM LIGHT === */ + /* === GLASSMORPHISM LIGHT (Subtil und elegant) === */ --glass-bg: rgba(255, 255, 255, 0.8); --glass-border: rgba(255, 255, 255, 0.2); --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.08); --glass-blur: blur(16px); - /* === INTERACTIVE STATES LIGHT === */ + /* === INTERACTIVE STATES LIGHT (Klare Rückmeldung) === */ --hover-bg: rgba(0, 115, 206, 0.04); --active-bg: rgba(0, 115, 206, 0.08); --focus-ring: 0 0 0 3px rgba(0, 115, 206, 0.1); + --hover-card: rgba(0, 0, 0, 0.02); + --active-card: rgba(0, 0, 0, 0.04); - /* === GRADIENTS LIGHT === */ + /* === GRADIENTS LIGHT (Dezente Verläufe) === */ --gradient-primary: linear-gradient(135deg, #ffffff 0%, #fafbfc 100%); --gradient-card: linear-gradient(135deg, #ffffff 0%, #fcfcfd 100%); --gradient-modal: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); --gradient-button: linear-gradient(135deg, var(--mb-primary) 0%, var(--mb-primary-dark) 100%); + --gradient-navbar: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 0.95) 100%); } -/* ===== DARK MODE OVERRIDES ===== */ +/* ===== DARK MODE OVERRIDES (Optimiert für Augenkomfort und Kontrast) ===== */ .dark { - /* === DARK MODE FOUNDATION === */ + /* === DARK MODE FOUNDATION (Mercedes-Schwarz mit warmen Akzenten) === */ --bg-primary: #000000; - --bg-secondary: #0f0f0f; - --bg-tertiary: #1f1f1f; - --bg-card: #1a1a1a; - --bg-surface: #151515; + --bg-secondary: #0a0a0a; + --bg-tertiary: #121212; + --bg-card: #0f0f0f; + --bg-surface: #080808; --bg-overlay: rgba(0, 0, 0, 0.95); - --bg-modal: rgba(26, 26, 26, 0.98); - --bg-input: #1a1a1a; - --bg-input-focus: #222222; + --bg-modal: rgba(15, 15, 15, 0.98); + --bg-input: #121212; + --bg-input-focus: #1a1a1a; + --bg-sidebar: #050505; + --bg-navbar: rgba(0, 0, 0, 0.95); + --bg-dropdown: #0f0f0f; - /* === TEXT COLORS DARK === */ + /* === TEXT COLORS DARK (Hoher Kontrast für Lesbarkeit) === */ --text-primary: #ffffff; - --text-secondary: #f1f5f9; + --text-secondary: #f8fafc; --text-tertiary: #e2e8f0; - --text-muted: #cbd5e1; + --text-muted: #94a3b8; --text-accent: #ffffff; --text-on-primary: #000000; - --text-success: #22c55e; - --text-warning: #fbbf24; - --text-error: #f87171; + --text-success: #10b981; + --text-warning: #f59e0b; + --text-error: #ef4444; + --text-link: #ffffff; + --text-link-hover: #f3f4f6; - /* === BORDER COLORS DARK === */ - --border-primary: #2d2d2d; - --border-secondary: #404040; + /* === BORDER COLORS DARK (Subtile aber sichtbare Abgrenzungen) === */ + --border-primary: #1f1f1f; + --border-secondary: #2a2a2a; --border-focus: #ffffff; - --border-error: #f87171; - --border-success: #22c55e; + --border-error: #ef4444; + --border-success: #10b981; + --border-warning: #f59e0b; + --border-hover: #333333; - /* === SHADOWS DARK === */ - --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3); - --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4); - --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5); - --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.6); - --shadow-modal: 0 25px 50px -12px rgba(0, 0, 0, 0.7); + /* === SHADOWS DARK (Tiefere Schatten für Depth) === */ + --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.4); + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.5); + --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.6); + --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.7); + --shadow-modal: 0 25px 50px -12px rgba(0, 0, 0, 0.8); + --shadow-card: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -1px rgba(0, 0, 0, 0.1); + --shadow-card-hover: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 10px 10px -5px rgba(0, 0, 0, 0.2); - /* === GLASSMORPHISM DARK === */ - --glass-bg: rgba(26, 26, 26, 0.85); - --glass-border: rgba(255, 255, 255, 0.15); - --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.5); + /* === GLASSMORPHISM DARK (Elegante Transparenz) === */ + --glass-bg: rgba(15, 15, 15, 0.9); + --glass-border: rgba(255, 255, 255, 0.1); + --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.6); --glass-blur: blur(16px); - /* === INTERACTIVE STATES DARK === */ - --hover-bg: rgba(255, 255, 255, 0.08); - --active-bg: rgba(255, 255, 255, 0.12); + /* === INTERACTIVE STATES DARK (Klare visuelle Rückmeldung) === */ + --hover-bg: rgba(255, 255, 255, 0.05); + --active-bg: rgba(255, 255, 255, 0.1); --focus-ring: 0 0 0 3px rgba(255, 255, 255, 0.2); + --hover-card: rgba(255, 255, 255, 0.03); + --active-card: rgba(255, 255, 255, 0.06); - /* === GRADIENTS DARK === */ - --gradient-primary: linear-gradient(135deg, #000000 0%, #0f0f0f 100%); - --gradient-card: linear-gradient(135deg, #1a1a1a 0%, #151515 100%); - --gradient-modal: linear-gradient(135deg, #1f1f1f 0%, #1a1a1a 100%); + /* === GRADIENTS DARK (Subtile Verläufe in Schwarz) === */ + --gradient-primary: linear-gradient(135deg, #000000 0%, #0a0a0a 100%); + --gradient-card: linear-gradient(135deg, #0f0f0f 0%, #0a0a0a 100%); + --gradient-modal: linear-gradient(135deg, #121212 0%, #0f0f0f 100%); --gradient-button: linear-gradient(135deg, #ffffff 0%, #f5f5f5 100%); + --gradient-navbar: linear-gradient(135deg, rgba(0, 0, 0, 0.95) 0%, rgba(10, 10, 10, 0.95) 100%); } /* ===== UNIFIED COMPONENT STYLES ===== */ @@ -155,26 +180,28 @@ .spacing-sm { margin: 0.5rem; padding: 0.5rem; } .spacing-md { margin: 1rem; padding: 1rem; } -/* === BUTTONS === */ +/* === BUTTONS (Optimiert für beide Modi) === */ .btn, button { @apply inline-flex items-center justify-center text-sm font-medium; background: var(--bg-card); color: var(--text-primary); - border: 2px solid var(--border-primary); - box-shadow: var(--shadow-sm); - transition: all 0.15s ease; - padding: 0.875rem 1.5rem; - border-radius: 14px; - margin: 0.375rem; + border: 1px solid var(--border-primary); + box-shadow: var(--shadow-card); + transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); + padding: 0.75rem 1.5rem; + border-radius: 12px; + margin: 0.25rem; cursor: pointer; - font-weight: 600; + font-weight: 500; + position: relative; + overflow: hidden; } .btn:hover, button:hover { - background: var(--hover-bg); - box-shadow: var(--shadow-md); + background: var(--hover-card); + box-shadow: var(--shadow-card-hover); transform: translateY(-1px); - border-color: var(--border-secondary); + border-color: var(--border-hover); } .btn:focus { @@ -182,60 +209,208 @@ box-shadow: var(--focus-ring); } +.btn:active { + transform: translateY(0); + background: var(--active-card); +} + +/* Primary Button - Mercedes Brand */ .btn-primary { background: var(--gradient-button); color: var(--text-on-primary); - border: 2px solid transparent; - box-shadow: 0 4px 12px rgba(0, 115, 206, 0.3); + border: 1px solid transparent; + box-shadow: 0 4px 12px rgba(0, 115, 206, 0.25); + font-weight: 600; } .btn-primary:hover { background: var(--mb-primary-dark); transform: translateY(-2px); - box-shadow: 0 6px 20px rgba(0, 115, 206, 0.4); + box-shadow: 0 6px 20px rgba(0, 115, 206, 0.35); +} + +.btn-primary:focus { + box-shadow: var(--focus-ring), 0 4px 12px rgba(0, 115, 206, 0.25); +} + +/* Dark Mode Button Adaptations */ +.dark .btn { + border-color: var(--border-primary); + box-shadow: var(--shadow-card); +} + +.dark .btn:hover { + box-shadow: var(--shadow-card-hover); + border-color: var(--border-hover); } .dark .btn-primary { background: var(--gradient-button); color: var(--text-on-primary); + box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1); } .dark .btn-primary:hover { - background: #f0f0f0; + background: #f3f4f6; + box-shadow: 0 6px 20px rgba(255, 255, 255, 0.15); } -/* === CARDS === */ -.card { +/* Secondary Button */ +.btn-secondary { + background: transparent; + color: var(--text-secondary); + border: 1px solid var(--border-secondary); +} + +.btn-secondary:hover { + background: var(--hover-bg); + color: var(--text-primary); + border-color: var(--border-primary); +} + +/* Danger Button */ +.btn-danger { + background: var(--text-error); + color: white; + border: 1px solid var(--border-error); +} + +.btn-danger:hover { + background: #dc2626; + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(220, 38, 38, 0.3); +} + +/* Success Button */ +.btn-success { + background: var(--text-success); + color: white; + border: 1px solid var(--border-success); +} + +.btn-success:hover { + background: #047857; + transform: translateY(-1px); + box-shadow: 0 4px 12px rgba(5, 150, 105, 0.3); +} + +/* === CARDS (Perfekte Darstellung in beiden Modi) === */ +.card, .dashboard-card { background: var(--gradient-card); border: 1px solid var(--border-primary); - box-shadow: var(--shadow-lg); - backdrop-filter: var(--glass-blur); - transition: all 0.2s ease; - padding: 2rem; - margin: 1rem; - border-radius: 24px; + box-shadow: var(--shadow-card); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + padding: 1.5rem; + margin: 0.75rem; + border-radius: 16px; + position: relative; + overflow: hidden; } -.card:hover { - box-shadow: var(--shadow-xl); +.card:hover, .dashboard-card:hover { + box-shadow: var(--shadow-card-hover); transform: translateY(-2px); - border-color: var(--border-secondary); + border-color: var(--border-hover); } +.card:focus-within { + border-color: var(--border-focus); + box-shadow: var(--focus-ring); +} + +/* Glass Cards für spezielle Anwendungen */ .glass-card { background: var(--glass-bg); border: 1px solid var(--glass-border); box-shadow: var(--glass-shadow); backdrop-filter: var(--glass-blur); - padding: 2rem; - margin: 1rem; - border-radius: 24px; - transition: all 0.2s ease; + -webkit-backdrop-filter: var(--glass-blur); + padding: 1.5rem; + margin: 0.75rem; + border-radius: 20px; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .glass-card:hover { - transform: translateY(-1px); + transform: translateY(-2px); box-shadow: var(--shadow-xl); + border-color: var(--glass-border); +} + +/* Dark Mode Spezifische Card-Styles */ +.dark .card, .dark .dashboard-card { + background: var(--gradient-card); + border-color: var(--border-primary); + box-shadow: var(--shadow-card); +} + +.dark .card:hover, .dark .dashboard-card:hover { + box-shadow: var(--shadow-card-hover); + border-color: var(--border-hover); +} + +.dark .glass-card { + background: var(--glass-bg); + border-color: var(--glass-border); + box-shadow: var(--glass-shadow); +} + +/* Spezielle Card-Varianten */ +.card-compact { + padding: 1rem; + border-radius: 12px; +} + +.card-large { + padding: 2.5rem; + border-radius: 20px; +} + +.card-bordered { + border-width: 2px; +} + +.card-elevated { + box-shadow: var(--shadow-xl); +} + +.card-flat { + box-shadow: none; + border: 1px solid var(--border-secondary); +} + +/* Card Headers und Content */ +.card-header { + border-bottom: 1px solid var(--border-primary); + padding-bottom: 1rem; + margin-bottom: 1rem; +} + +.card-title { + color: var(--text-primary); + font-size: 1.25rem; + font-weight: 600; + margin: 0; +} + +.card-subtitle { + color: var(--text-secondary); + font-size: 0.875rem; + margin: 0.25rem 0 0 0; +} + +.card-content { + color: var(--text-secondary); + line-height: 1.6; +} + +.card-footer { + border-top: 1px solid var(--border-primary); + padding-top: 1rem; + margin-top: 1rem; + display: flex; + justify-content: flex-end; + gap: 0.5rem; } /* === MODALS === */ @@ -371,66 +546,279 @@ cursor: default; } -/* === FORM ELEMENTS === */ -.form-input, input, textarea, select { +/* === FORM ELEMENTS (Optimiert für beide Modi) === */ +.form-input, input:not([type="checkbox"]):not([type="radio"]), textarea, select { @apply w-full; background: var(--bg-input); - border: 2px solid var(--border-primary); + border: 1px solid var(--border-primary); color: var(--text-primary); - padding: 1rem 1.25rem; - border-radius: 16px; - margin: 0.5rem 0; - transition: all 0.15s ease; - font-size: 0.95rem; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); + padding: 0.875rem 1rem; + border-radius: 12px; + margin: 0.375rem 0; + transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); + font-size: 0.9rem; + box-shadow: var(--shadow-sm); + font-family: inherit; } -.form-input:focus, input:focus, textarea:focus, select:focus { +.form-input:hover, input:not([type="checkbox"]):not([type="radio"]):hover, textarea:hover, select:hover { + border-color: var(--border-hover); + box-shadow: var(--shadow-md); +} + +.form-input:focus, input:not([type="checkbox"]):not([type="radio"]):focus, textarea:focus, select:focus { outline: none; border-color: var(--border-focus); background: var(--bg-input-focus); - box-shadow: var(--focus-ring), 0 4px 12px rgba(0, 0, 0, 0.1); + box-shadow: var(--focus-ring); transform: translateY(-1px); } .form-input::placeholder, input::placeholder, textarea::placeholder { color: var(--text-muted); - font-style: italic; + opacity: 0.7; } -/* Dark Mode Input Spezifika */ -.dark .form-input, .dark input, .dark textarea, .dark select { - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); +/* Dark Mode Input Optimierungen */ +.dark .form-input, .dark input:not([type="checkbox"]):not([type="radio"]), .dark textarea, .dark select { + background: var(--bg-input); border-color: var(--border-primary); + color: var(--text-primary); + box-shadow: var(--shadow-sm); } -.dark .form-input:focus, .dark input:focus, .dark textarea:focus, .dark select:focus { - box-shadow: var(--focus-ring), 0 4px 16px rgba(0, 0, 0, 0.4); +.dark .form-input:hover, .dark input:not([type="checkbox"]):not([type="radio"]):hover, .dark textarea:hover, .dark select:hover { + border-color: var(--border-hover); + box-shadow: var(--shadow-md); +} + +.dark .form-input:focus, .dark input:not([type="checkbox"]):not([type="radio"]):focus, .dark textarea:focus, .dark select:focus { border-color: var(--border-focus); + background: var(--bg-input-focus); + box-shadow: var(--focus-ring); } +.dark .form-input::placeholder, .dark input::placeholder, .dark textarea::placeholder { + color: var(--text-muted); + opacity: 0.8; +} + +/* Form Labels */ .form-label, label { - @apply block text-sm font-semibold; + @apply block text-sm font-medium; color: var(--text-secondary); - margin-bottom: 0.75rem; - margin-top: 1.25rem; + margin-bottom: 0.5rem; + margin-top: 1rem; + line-height: 1.4; +} + +.form-label.required::after, label.required::after { + content: "*"; + color: var(--text-error); + margin-left: 0.25rem; +} + +/* Form Groups */ +.form-group { + margin-bottom: 1.5rem; +} + +.form-group:last-child { + margin-bottom: 0; +} + +/* Form Errors */ +.form-error { + color: var(--text-error); + font-size: 0.875rem; + margin-top: 0.25rem; + display: block; +} + +.form-input.error, input.error, textarea.error, select.error { + border-color: var(--border-error); + background: rgba(239, 68, 68, 0.05); +} + +.dark .form-input.error, .dark input.error, .dark textarea.error, .dark select.error { + border-color: var(--border-error); + background: rgba(239, 68, 68, 0.1); +} + +/* Form Success */ +.form-input.success, input.success, textarea.success, select.success { + border-color: var(--border-success); + background: rgba(16, 185, 129, 0.05); +} + +.dark .form-input.success, .dark input.success, .dark textarea.success, .dark select.success { + border-color: var(--border-success); + background: rgba(16, 185, 129, 0.1); +} + +/* Checkbox und Radio Buttons */ +input[type="checkbox"], input[type="radio"] { + width: 1.125rem; + height: 1.125rem; + margin: 0 0.5rem 0 0; + accent-color: var(--mb-primary); + cursor: pointer; +} + +.dark input[type="checkbox"], .dark input[type="radio"] { + accent-color: var(--text-accent); +} + +/* File Inputs */ +input[type="file"] { + padding: 0.5rem; + border: 2px dashed var(--border-secondary); + background: var(--bg-tertiary); + cursor: pointer; +} + +input[type="file"]:hover { + border-color: var(--border-primary); + background: var(--bg-secondary); +} + +.dark input[type="file"] { + background: var(--bg-tertiary); + border-color: var(--border-secondary); +} + +.dark input[type="file"]:hover { + border-color: var(--border-primary); + background: var(--bg-secondary); +} + +/* Textareas */ +textarea { + min-height: 120px; + resize: vertical; + line-height: 1.5; +} + +/* Select Dropdowns */ +select { + cursor: pointer; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e"); + background-position: right 0.5rem center; + background-repeat: no-repeat; + background-size: 1.5em 1.5em; + padding-right: 2.5rem; +} + +.dark select { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%94a3b8' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e"); +} + +/* === NAVIGATION (Optimiert für beide Modi) === */ +.navbar-sticky { + background: var(--gradient-navbar); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border-bottom: 1px solid var(--border-primary); + box-shadow: var(--shadow-sm); +} + +.dark .navbar-sticky { + background: var(--gradient-navbar); + border-bottom: 1px solid var(--border-primary); + box-shadow: var(--shadow-md); } -/* === NAVIGATION === */ .nav-item { - @apply px-4 py-2; + @apply px-3 py-2; color: var(--text-secondary); - transition: background-color 0.15s ease, color 0.15s ease; + transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); + border-radius: 8px; + font-weight: 500; + text-decoration: none; + display: flex; + align-items: center; + gap: 0.5rem; } .nav-item:hover { background: var(--hover-bg); color: var(--text-primary); + transform: translateY(-1px); } -.nav-item.active { +.nav-item.active, .nav-active { background: var(--active-bg); color: var(--text-accent); + font-weight: 600; + box-shadow: var(--shadow-sm); +} + +.dark .nav-item { + color: var(--text-secondary); +} + +.dark .nav-item:hover { + background: var(--hover-bg); + color: var(--text-primary); +} + +.dark .nav-item.active, .dark .nav-active { + background: var(--active-bg); + color: var(--text-accent); +} + +/* Mobile Navigation */ +.mobile-menu { + background: var(--bg-modal); + border-right: 1px solid var(--border-primary); + box-shadow: var(--shadow-xl); +} + +.dark .mobile-menu { + background: var(--bg-modal); + border-right: 1px solid var(--border-primary); +} + +/* User Dropdown */ +#user-dropdown, #notificationDropdown { + background: var(--bg-dropdown); + border: 1px solid var(--border-primary); + box-shadow: var(--shadow-xl); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); +} + +.dark #user-dropdown, .dark #notificationDropdown { + background: var(--bg-dropdown); + border: 1px solid var(--border-primary); + box-shadow: var(--shadow-xl); +} + +/* Breadcrumbs */ +.breadcrumb { + display: flex; + align-items: center; + gap: 0.5rem; + color: var(--text-tertiary); + font-size: 0.875rem; +} + +.breadcrumb-item { + color: var(--text-tertiary); + text-decoration: none; +} + +.breadcrumb-item:hover { + color: var(--text-secondary); +} + +.breadcrumb-item.active { + color: var(--text-primary); + font-weight: 500; +} + +.breadcrumb-separator { + color: var(--text-muted); } /* === ALERTS === */