/** * Mercedes-Benz MYP Platform - Professional Theme * Professionelle Light/Dark Mode Implementierung */ /* Globale CSS-Variablen für konsistente Theming */ :root { /* Mercedes-Benz Markenfarben */ --mb-primary: #3b82f6; --mb-primary-dark: #1d4ed8; --mb-secondary: #64748b; --mb-accent: #0ea5e9; /* Light Mode Farbpalette */ --light-bg-primary: #ffffff; --light-bg-secondary: #f8fafc; --light-bg-tertiary: #f1f5f9; --light-surface: #ffffff; --light-surface-hover: #f8fafc; --light-text-primary: #0f172a; --light-text-secondary: #475569; --light-text-muted: #64748b; --light-border: #e2e8f0; --light-border-strong: #cbd5e1; --light-shadow: rgba(0, 0, 0, 0.1); --light-shadow-strong: rgba(0, 0, 0, 0.15); /* Dark Mode Farbpalette */ --dark-bg-primary: #0f172a; --dark-bg-secondary: #1e293b; --dark-bg-tertiary: #334155; --dark-surface: #1e293b; --dark-surface-hover: #334155; --dark-text-primary: #f8fafc; --dark-text-secondary: #e2e8f0; --dark-text-muted: #94a3b8; --dark-border: #334155; --dark-border-strong: #475569; --dark-shadow: rgba(0, 0, 0, 0.3); --dark-shadow-strong: rgba(0, 0, 0, 0.5); } /* Professionelle Hero-Header Stile */ .professional-hero { position: relative; overflow: hidden; border-radius: 2rem; margin: 1.5rem; margin-bottom: 2rem; background: linear-gradient(135deg, var(--light-bg-secondary) 0%, var(--light-bg-tertiary) 100%); border: 1px solid var(--light-border); box-shadow: 0 20px 40px var(--light-shadow); } .dark .professional-hero { background: linear-gradient(135deg, var(--dark-bg-primary) 0%, var(--dark-bg-secondary) 100%); border: 1px solid var(--dark-border); box-shadow: 0 20px 40px var(--dark-shadow-strong); } .professional-hero::before { content: ''; position: absolute; inset: 0; background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.1) 50%, transparent 70%); opacity: 0.5; } .dark .professional-hero::before { background: linear-gradient(45deg, transparent 30%, rgba(255, 255, 255, 0.05) 50%, transparent 70%); opacity: 0.3; } /* Hero Pattern Overlay */ .hero-pattern { background-image: radial-gradient(circle at 20% 20%, var(--light-border) 1px, transparent 1px), radial-gradient(circle at 80% 80%, var(--light-border) 1px, transparent 1px); background-size: 50px 50px; background-position: 0 0, 25px 25px; } .dark .hero-pattern { background-image: radial-gradient(circle at 20% 20%, var(--dark-border) 1px, transparent 1px), radial-gradient(circle at 80% 80%, var(--dark-border) 1px, transparent 1px); } /* Professionelle Container */ .professional-container { background: var(--light-surface); border: 1px solid var(--light-border); border-radius: 1.5rem; box-shadow: 0 10px 30px var(--light-shadow); backdrop-filter: blur(20px); transition: all 0.3s ease; } .dark .professional-container { background: var(--dark-surface); border: 1px solid var(--dark-border); box-shadow: 0 10px 30px var(--dark-shadow); } .professional-container:hover { transform: translateY(-4px); box-shadow: 0 20px 40px var(--light-shadow-strong); } .dark .professional-container:hover { box-shadow: 0 20px 40px var(--dark-shadow-strong); } /* Mercedes-Benz Glassmorphism Effekt */ .mb-glass { background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.2); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); transition: all 0.3s ease; } .dark .mb-glass { background: rgba(15, 23, 42, 0.9); border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); } .mb-glass:hover { background: rgba(255, 255, 255, 0.95); transform: translateY(-2px); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15); } .dark .mb-glass:hover { background: rgba(15, 23, 42, 0.95); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4); } /* Professional Buttons */ .btn-professional { background: linear-gradient(135deg, var(--mb-primary) 0%, var(--mb-primary-dark) 100%); color: white; border: none; border-radius: 1rem; padding: 0.75rem 2rem; font-weight: 600; font-size: 0.875rem; letter-spacing: 0.025em; text-transform: uppercase; transition: all 0.3s ease; position: relative; overflow: hidden; box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3); } .btn-professional::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s; } .btn-professional:hover::before { left: 100%; } .btn-professional:hover { background: linear-gradient(135deg, var(--mb-primary-dark) 0%, #1e40af 100%); transform: translateY(-2px); box-shadow: 0 8px 25px rgba(59, 130, 246, 0.4); } .btn-professional:active { transform: translateY(0); } /* Secondary Button Style */ .btn-secondary-professional { background: var(--light-surface); color: var(--light-text-primary); border: 2px solid var(--light-border-strong); border-radius: 1rem; padding: 0.75rem 2rem; font-weight: 600; font-size: 0.875rem; transition: all 0.3s ease; box-shadow: 0 4px 15px var(--light-shadow); } .dark .btn-secondary-professional { background: var(--dark-surface); color: var(--dark-text-primary); border-color: var(--dark-border-strong); box-shadow: 0 4px 15px var(--dark-shadow); } .btn-secondary-professional:hover { background: var(--light-surface-hover); border-color: var(--mb-primary); transform: translateY(-2px); box-shadow: 0 8px 25px var(--light-shadow-strong); } .dark .btn-secondary-professional:hover { background: var(--dark-surface-hover); box-shadow: 0 8px 25px var(--dark-shadow); } /* Professional Input Fields */ .input-professional { background: var(--light-surface); border: 2px solid var(--light-border); border-radius: 0.75rem; padding: 0.875rem 1rem; color: var(--light-text-primary); font-size: 0.875rem; transition: all 0.3s ease; box-shadow: 0 2px 8px var(--light-shadow); } .dark .input-professional { background: var(--dark-surface); border-color: var(--dark-border); color: var(--dark-text-primary); box-shadow: 0 2px 8px var(--dark-shadow); } .input-professional:focus { border-color: var(--mb-primary); box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1); transform: translateY(-1px); } .input-professional::placeholder { color: var(--light-text-muted); } .dark .input-professional::placeholder { color: var(--dark-text-muted); } /* Professional Cards */ .card-professional { background: var(--light-surface); border: 1px solid var(--light-border); border-radius: 1.25rem; padding: 1.5rem; box-shadow: 0 4px 20px var(--light-shadow); transition: all 0.3s ease; position: relative; overflow: hidden; } .dark .card-professional { background: var(--dark-surface); border-color: var(--dark-border); box-shadow: 0 4px 20px var(--dark-shadow); } .card-professional::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: linear-gradient(90deg, var(--mb-primary), var(--mb-accent)); transform: scaleX(0); transition: transform 0.3s ease; } .card-professional:hover::before { transform: scaleX(1); } .card-professional:hover { transform: translateY(-4px); box-shadow: 0 12px 40px var(--light-shadow-strong); } .dark .card-professional:hover { box-shadow: 0 12px 40px var(--dark-shadow-strong); } /* Professional Statistics Cards */ .stat-card { background: var(--light-surface); border: 1px solid var(--light-border); border-radius: 1rem; padding: 1.5rem; text-align: center; transition: all 0.3s ease; box-shadow: 0 4px 15px var(--light-shadow); position: relative; overflow: hidden; } .dark .stat-card { background: var(--dark-surface); border-color: var(--dark-border); box-shadow: 0 4px 15px var(--dark-shadow); } .stat-card:hover { transform: translateY(-2px) scale(1.02); box-shadow: 0 8px 30px var(--light-shadow-strong); } .dark .stat-card:hover { box-shadow: 0 8px 30px var(--dark-shadow-strong); } .stat-number { font-size: 2.5rem; font-weight: 700; color: var(--light-text-primary); line-height: 1; margin-bottom: 0.5rem; } .dark .stat-number { color: var(--dark-text-primary); } .stat-label { font-size: 0.875rem; font-weight: 500; color: var(--light-text-muted); text-transform: uppercase; letter-spacing: 0.05em; } .dark .stat-label { color: var(--dark-text-muted); } /* Professional Status Badges */ .status-professional { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; transition: all 0.2s ease; border: 1px solid transparent; } .status-professional:hover { transform: scale(1.05); } /* Status-spezifische Farben */ .status-pending { background: rgba(251, 191, 36, 0.1); color: #92400e; border-color: rgba(251, 191, 36, 0.3); } .dark .status-pending { background: rgba(251, 191, 36, 0.2); color: #fbbf24; } .status-approved { background: rgba(16, 185, 129, 0.1); color: #065f46; border-color: rgba(16, 185, 129, 0.3); } .dark .status-approved { background: rgba(16, 185, 129, 0.2); color: #10b981; } .status-denied { background: rgba(239, 68, 68, 0.1); color: #991b1b; border-color: rgba(239, 68, 68, 0.3); } .dark .status-denied { background: rgba(239, 68, 68, 0.2); color: #ef4444; } /* Professional Typography */ .title-professional { background: linear-gradient(135deg, var(--light-text-primary) 0%, var(--light-text-secondary) 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-weight: 700; letter-spacing: -0.025em; line-height: 1.1; } .dark .title-professional { background: linear-gradient(135deg, var(--dark-text-primary) 0%, var(--dark-text-secondary) 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .subtitle-professional { color: var(--light-text-muted); font-size: 1.125rem; line-height: 1.6; font-weight: 400; } .dark .subtitle-professional { color: var(--dark-text-muted); } /* Professional Navigation */ .nav-professional { background: var(--light-surface); border: 1px solid var(--light-border); border-radius: 1rem; padding: 0.5rem; box-shadow: 0 4px 15px var(--light-shadow); backdrop-filter: blur(20px); } .dark .nav-professional { background: var(--dark-surface); border-color: var(--dark-border); box-shadow: 0 4px 15px var(--dark-shadow); } .nav-item-professional { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; border-radius: 0.5rem; color: var(--light-text-secondary); text-decoration: none; font-weight: 500; transition: all 0.2s ease; position: relative; } .dark .nav-item-professional { color: var(--dark-text-secondary); } .nav-item-professional:hover { background: var(--light-surface-hover); color: var(--light-text-primary); transform: translateX(4px); } .dark .nav-item-professional:hover { background: var(--dark-surface-hover); color: var(--dark-text-primary); } .nav-item-professional.active { background: rgba(59, 130, 246, 0.1); color: var(--mb-primary); font-weight: 600; } .dark .nav-item-professional.active { background: rgba(59, 130, 246, 0.2); } /* Professional Tables */ .table-professional { width: 100%; border-collapse: collapse; background: var(--light-surface); border-radius: 1rem; overflow: hidden; box-shadow: 0 4px 20px var(--light-shadow); } .dark .table-professional { background: var(--dark-surface); box-shadow: 0 4px 20px var(--dark-shadow); } .table-professional th { background: var(--light-bg-secondary); color: var(--light-text-primary); font-weight: 600; text-align: left; padding: 1rem 1.5rem; border-bottom: 1px solid var(--light-border); } .dark .table-professional th { background: var(--dark-bg-secondary); color: var(--dark-text-primary); border-bottom-color: var(--dark-border); } .table-professional td { padding: 1rem 1.5rem; border-bottom: 1px solid var(--light-border); color: var(--light-text-secondary); } .dark .table-professional td { border-bottom-color: var(--dark-border); color: var(--dark-text-secondary); } .table-professional tbody tr:hover { background: var(--light-surface-hover); } .dark .table-professional tbody tr:hover { background: var(--dark-surface-hover); } /* Professional Alerts */ .alert-professional { border-radius: 1rem; padding: 1.5rem; border: 1px solid transparent; display: flex; align-items: flex-start; gap: 1rem; margin-bottom: 1rem; box-shadow: 0 4px 15px var(--light-shadow); } .alert-info { background: rgba(59, 130, 246, 0.1); border-color: rgba(59, 130, 246, 0.3); color: #1e40af; } .dark .alert-info { background: rgba(59, 130, 246, 0.2); color: #60a5fa; } .alert-success { background: rgba(16, 185, 129, 0.1); border-color: rgba(16, 185, 129, 0.3); color: #065f46; } .dark .alert-success { background: rgba(16, 185, 129, 0.2); color: #10b981; } .alert-warning { background: rgba(251, 191, 36, 0.1); border-color: rgba(251, 191, 36, 0.3); color: #92400e; } .dark .alert-warning { background: rgba(251, 191, 36, 0.2); color: #fbbf24; } .alert-error { background: rgba(239, 68, 68, 0.1); border-color: rgba(239, 68, 68, 0.3); color: #991b1b; } .dark .alert-error { background: rgba(239, 68, 68, 0.2); color: #ef4444; } /* Background Gradients für verschiedene Seiten */ .bg-professional { background: linear-gradient(135deg, var(--light-bg-primary) 0%, var(--light-bg-secondary) 50%, var(--light-bg-tertiary) 100%); min-height: 100vh; } .dark .bg-professional { background: linear-gradient(135deg, var(--dark-bg-primary) 0%, var(--dark-bg-secondary) 50%, var(--dark-bg-tertiary) 100%); } /* Utilities */ .text-professional-primary { color: var(--light-text-primary); } .dark .text-professional-primary { color: var(--dark-text-primary); } .text-professional-secondary { color: var(--light-text-secondary); } .dark .text-professional-secondary { color: var(--dark-text-secondary); } .text-professional-muted { color: var(--light-text-muted); } .dark .text-professional-muted { color: var(--dark-text-muted); } /* Censored Text for Privacy Protection */ .censored-text { font-family: monospace; background: linear-gradient(45deg, var(--light-text-secondary), var(--light-text-muted)); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; font-weight: 500; } .dark .censored-text { background: linear-gradient(45deg, var(--dark-text-secondary), var(--dark-text-muted)); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } /* Smooth transitions für alle professionellen Komponenten */ .professional-hero, .professional-container, .mb-glass, .btn-professional, .btn-secondary-professional, .input-professional, .card-professional, .stat-card, .status-professional, .nav-professional, .nav-item-professional, .table-professional, .alert-professional { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Responsive Design */ @media (max-width: 768px) { .professional-hero { margin: 1rem; border-radius: 1.5rem; } .card-professional { padding: 1rem; } .stat-number { font-size: 2rem; } .btn-professional, .btn-secondary-professional { padding: 0.625rem 1.5rem; font-size: 0.8rem; } } /* Animation-Klassen */ .animate-fade-in { animation: fadeInProfessional 0.6s ease-out; } .animate-slide-up { animation: slideUpProfessional 0.6s ease-out; } .animate-scale-in { animation: scaleInProfessional 0.4s ease-out; } @keyframes fadeInProfessional { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUpProfessional { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes scaleInProfessional { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } } /* Professional Mini Button Styles */ .btn-professional-mini { background: rgba(59, 130, 246, 0.1); color: var(--mb-primary); border: 1px solid rgba(59, 130, 246, 0.2); border-radius: 0.75rem; padding: 0.5rem 1rem; font-weight: 500; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.025em; transition: all 0.3s ease; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; } .dark .btn-professional-mini { background: rgba(59, 130, 246, 0.2); border-color: rgba(59, 130, 246, 0.3); } .btn-professional-mini:hover { background: rgba(59, 130, 246, 0.2); border-color: var(--mb-primary); transform: translateY(-1px); } .dark .btn-professional-mini:hover { background: rgba(59, 130, 246, 0.3); } /* Danger Mini Button */ .btn-danger-professional-mini { background: rgba(239, 68, 68, 0.1); color: #dc2626; border: 1px solid rgba(239, 68, 68, 0.2); border-radius: 0.5rem; padding: 0.5rem; font-weight: 500; font-size: 0.75rem; transition: all 0.3s ease; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; } .dark .btn-danger-professional-mini { background: rgba(239, 68, 68, 0.2); color: #ef4444; border-color: rgba(239, 68, 68, 0.3); } .btn-danger-professional-mini:hover { background: rgba(239, 68, 68, 0.2); border-color: #dc2626; transform: translateY(-1px) scale(1.05); } .dark .btn-danger-professional-mini:hover { background: rgba(239, 68, 68, 0.3); border-color: #ef4444; } /* Success Button */ .btn-success-professional { background: linear-gradient(135deg, #10b981 0%, #059669 100%); color: white; border: none; border-radius: 1rem; padding: 0.75rem 2rem; font-weight: 600; font-size: 0.875rem; letter-spacing: 0.025em; text-transform: uppercase; transition: all 0.3s ease; position: relative; overflow: hidden; box-shadow: 0 4px 15px rgba(16, 185, 129, 0.3); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; } .btn-success-professional::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s; } .btn-success-professional:hover::before { left: 100%; } .btn-success-professional:hover { background: linear-gradient(135deg, #059669 0%, #047857 100%); transform: translateY(-2px); box-shadow: 0 8px 25px rgba(16, 185, 129, 0.4); } .btn-success-professional:active { transform: translateY(0); } /* Danger Button */ .btn-danger-professional { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); color: white; border: none; border-radius: 1rem; padding: 0.75rem 2rem; font-weight: 600; font-size: 0.875rem; letter-spacing: 0.025em; text-transform: uppercase; transition: all 0.3s ease; position: relative; overflow: hidden; box-shadow: 0 4px 15px rgba(239, 68, 68, 0.3); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; } .btn-danger-professional::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s; } .btn-danger-professional:hover::before { left: 100%; } .btn-danger-professional:hover { background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%); transform: translateY(-2px); box-shadow: 0 8px 25px rgba(239, 68, 68, 0.4); } .btn-danger-professional:active { transform: translateY(0); } /* Filter Button Mercedes */ .filter-btn-mercedes { background: transparent; color: var(--light-text-muted); border: none; border-radius: 0.75rem; padding: 0.5rem 1rem; font-weight: 500; font-size: 0.875rem; transition: all 0.3s ease; cursor: pointer; position: relative; } .dark .filter-btn-mercedes { color: var(--dark-text-muted); } .filter-btn-mercedes:hover { color: var(--light-text-primary); background: rgba(255, 255, 255, 0.1); } .dark .filter-btn-mercedes:hover { color: var(--dark-text-primary); background: rgba(255, 255, 255, 0.05); } .filter-btn-mercedes.active { background: var(--mb-primary); color: white; box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3); } /* Status Dots */ .status-dot { width: 0.75rem; height: 0.75rem; border-radius: 50%; display: inline-block; position: relative; } .status-dot.status-online { background: #10b981; box-shadow: 0 0 10px rgba(16, 185, 129, 0.5); } .status-dot.status-offline { background: #ef4444; box-shadow: 0 0 10px rgba(239, 68, 68, 0.5); } .status-dot.status-online::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; border-radius: 50%; background: inherit; animation: pulse-professional 2s infinite; } /* Professional Shadow */ .professional-shadow { box-shadow: 0 8px 32px rgba(59, 130, 246, 0.2); } .dark .professional-shadow { box-shadow: 0 8px 32px rgba(59, 130, 246, 0.4); } /* Professional Accent Colors */ .text-professional-accent { color: var(--mb-accent); } .bg-professional-accent { background-color: var(--mb-accent); } /* Animate Spin Slow */ .animate-spin-slow { animation: spin 3s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes pulse-professional { 0%, 100% { opacity: 1; transform: translate(-50%, -50%) scale(1); } 50% { opacity: 0.5; transform: translate(-50%, -50%) scale(1.2); } }