@tailwind base; @tailwind components; @tailwind utilities; /* Custom Styles für Light und Dark Mode - Raspberry Pi Optimiert */ @layer base { :root { /* Light Mode Farben - Mercedes-Benz Professional - VERBESSERT für optimale Lesbarkeit */ --color-bg-primary: #ffffff; --color-bg-secondary: #fafbfc; --color-bg-tertiary: #f3f5f7; --color-bg-accent: #fbfcfd; --color-text-primary: #111827; --color-text-secondary: #374151; --color-text-muted: #6b7280; --color-text-accent: #0073ce; --color-border-primary: #e5e7eb; --color-border-secondary: #d1d5db; --color-accent: #0073ce; --color-accent-hover: #005a9f; --color-accent-light: #eff6ff; --color-accent-text: #ffffff; --color-shadow: rgba(0, 0, 0, 0.06); --color-shadow-strong: rgba(0, 0, 0, 0.1); --color-shadow-accent: rgba(0, 115, 206, 0.12); --card-radius: 1rem; /* Light Mode Gradients - VEREINFACHT für Performance */ --gradient-primary: #fafbfc; --gradient-card: #ffffff; --gradient-hero: #f3f5f7; --gradient-accent: linear-gradient(135deg, #0073ce 0%, #005a9f 100%); --gradient-surface: #fbfcfd; /* Optimierte Light Mode Glassmorphism-Variablen */ --glass-bg: rgba(255, 255, 255, 0.92); --glass-border: rgba(255, 255, 255, 0.3); --glass-shadow: 0 4px 16px rgba(0, 0, 0, 0.04); --glass-blur: blur(10px); } .dark { /* Dark Mode Farben - Noch dunkler und eleganter - UNVERÄNDERT */ --color-bg-primary: #000000; --color-bg-secondary: #0a0a0a; --color-bg-tertiary: #1a1a1a; --color-text-primary: #ffffff; --color-text-secondary: #e2e8f0; --color-text-muted: #94a3b8; --color-border-primary: #1a1a1a; --color-border-secondary: #2a2a2a; --color-accent: #ffffff; --color-accent-hover: #f0f0f0; --color-accent-light: #1e3a8a; --color-accent-text: #000000; --color-shadow: rgba(0, 0, 0, 0.8); --color-shadow-strong: rgba(0, 0, 0, 0.9); --mb-black: #000000; } body { @apply bg-white dark:bg-black text-slate-900 dark:text-white transition-colors duration-300; position: relative; min-height: 100vh; background: var(--gradient-primary); font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11'; line-height: 1.65; font-size: 15px; } .dark body { background: #000000; } /* Vereinfachte Body Background - PERFORMANCE OPTIMIERT */ body::before { content: ''; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient(circle at 50% 50%, rgba(0, 115, 206, 0.01) 0%, transparent 50%); pointer-events: none; z-index: -1; } .dark body::before { background: radial-gradient(circle at 50% 50%, rgba(59, 130, 246, 0.02) 0%, transparent 50%); } /* Navbar Styles - Premium Glassmorphism - UNVERÄNDERT WIE GEWÜNSCHT */ nav { @apply backdrop-blur-xl border-b transition-all duration-300; background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(250, 251, 252, 0.92) 30%, rgba(248, 250, 252, 0.9) 70%, rgba(255, 255, 255, 0.95) 100%); border-bottom: 1px solid rgba(229, 231, 235, 0.7); backdrop-filter: blur(28px) saturate(200%) brightness(110%); -webkit-backdrop-filter: blur(28px) saturate(200%) brightness(110%); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04), 0 2px 8px rgba(0, 115, 206, 0.02), inset 0 1px 0 rgba(255, 255, 255, 0.9); } .dark nav { background: rgba(0, 0, 0, 0.85); border-bottom-color: rgba(255, 255, 255, 0.1); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.05); } /* Vereinfachte Card Styles - PERFORMANCE OPTIMIERT */ .card-enhanced { background: var(--gradient-card); border: 1px solid var(--color-border-primary); border-radius: var(--card-radius); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03); transition: transform 0.2s ease, box-shadow 0.2s ease; position: relative; overflow: hidden; } .card-enhanced:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); } .dark .card-enhanced { background: rgba(10, 10, 10, 0.8); border-color: var(--color-border-primary); box-shadow: 0 4px 20px var(--color-shadow); } /* Vereinfachte Button Styles - PERFORMANCE OPTIMIERT */ .btn-enhanced { background: var(--gradient-accent); color: var(--color-accent-text); border: none; border-radius: 0.5rem; padding: 0.75rem 1.75rem; font-weight: 600; font-size: 0.875rem; text-transform: uppercase; letter-spacing: 0.05em; box-shadow: 0 2px 8px rgba(0, 115, 206, 0.2); transition: transform 0.2s ease, box-shadow 0.2s ease; position: relative; overflow: hidden; } .btn-enhanced:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 115, 206, 0.3); } .btn-enhanced:active { transform: translateY(0); } .btn-secondary { background: var(--gradient-surface); color: var(--color-text-primary); border: 1px solid var(--color-border-primary); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.03); } .btn-secondary:hover { background: var(--color-bg-secondary); border-color: var(--color-accent); color: var(--color-accent); box-shadow: 0 2px 8px rgba(0, 115, 206, 0.08); } /* Vereinfachte Form Elements - PERFORMANCE OPTIMIERT */ .input-enhanced { background: rgba(255, 255, 255, 0.95); border: 1px solid var(--color-border-primary); border-radius: 0.5rem; padding: 0.75rem 1rem; color: var(--color-text-primary); font-size: 0.9rem; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.02); transition: border-color 0.2s ease, box-shadow 0.2s ease; } .input-enhanced:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px rgba(0, 115, 206, 0.05); background: rgba(255, 255, 255, 0.98); } .input-enhanced::placeholder { color: var(--color-text-muted); opacity: 0.8; } .dark .input-enhanced { background: rgba(10, 10, 10, 0.8); border-color: var(--color-border-primary); color: var(--color-text-primary); box-shadow: 0 2px 8px var(--color-shadow); } .dark .input-enhanced:focus { border-color: #60a5fa; box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.1); } /* Vereinfachte Alert Styles */ .alert-enhanced { border-radius: 1rem; padding: 1.25rem; border: 1px solid transparent; position: relative; overflow: hidden; } .alert-enhanced::before { content: ''; position: absolute; top: 0; left: 0; bottom: 0; width: 4px; } .alert-info-enhanced { background: rgba(239, 246, 255, 0.95); border-color: rgba(59, 130, 246, 0.2); color: #1e40af; } .alert-info-enhanced::before { background: var(--gradient-accent); } .alert-success-enhanced { background: rgba(236, 253, 245, 0.95); border-color: rgba(16, 185, 129, 0.2); color: #065f46; } .alert-success-enhanced::before { background: linear-gradient(180deg, #10b981 0%, #059669 100%); } .alert-warning-enhanced { background: rgba(255, 251, 235, 0.95); border-color: rgba(251, 191, 36, 0.2); color: #92400e; } .alert-warning-enhanced::before { background: linear-gradient(180deg, #fbbf24 0%, #f59e0b 100%); } .alert-error-enhanced { background: rgba(254, 242, 242, 0.95); border-color: rgba(239, 68, 68, 0.2); color: #991b1b; } .alert-error-enhanced::before { background: linear-gradient(180deg, #ef4444 0%, #dc2626 100%); } /* Vereinfachte Flash Messages */ .flash-message-light { background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border: 1px solid rgba(226, 232, 240, 0.6); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1); color: var(--color-text-primary); } .flash-message-light.success { border-left: 4px solid #10b981; background: rgba(236, 253, 245, 0.95); } .flash-message-light.error { border-left: 4px solid #ef4444; background: rgba(254, 242, 242, 0.95); } .flash-message-light.warning { border-left: 4px solid #fbbf24; background: rgba(255, 251, 235, 0.95); } .flash-message-light.info { border-left: 4px solid #3b82f6; background: rgba(239, 246, 255, 0.95); } /* Vereinfachte Table Styles */ .table-enhanced { background: var(--gradient-card); border: 1px solid var(--color-border-primary); border-radius: var(--card-radius); overflow: hidden; box-shadow: 0 2px 8px var(--color-shadow); } .table-enhanced th { background: var(--color-bg-secondary); color: var(--color-text-primary); font-weight: 600; padding: 1rem 1.5rem; border-bottom: 1px solid var(--color-border-primary); } .table-enhanced td { padding: 1rem 1.5rem; border-bottom: 1px solid var(--color-border-primary); color: var(--color-text-secondary); transition: background-color 0.2s ease; } .table-enhanced tbody tr:hover { background: var(--color-bg-secondary); } .dark .table-enhanced { background: rgba(10, 10, 10, 0.8); border-color: var(--color-border-primary); } .dark .table-enhanced th { background: rgba(26, 26, 26, 0.8); color: var(--color-text-primary); } .dark .table-enhanced tbody tr:hover { background: rgba(26, 26, 26, 0.6); } /* Vereinfachte Modal Styles */ .modal-enhanced { background: rgba(255, 255, 255, 0.98); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border: 1px solid rgba(226, 232, 240, 0.7); border-radius: 1.5rem; box-shadow: 0 25px 50px rgba(0, 0, 0, 0.15); position: relative; overflow: hidden; } .dark .modal-enhanced { background: rgba(0, 0, 0, 0.95); border-color: rgba(42, 42, 42, 0.7); box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5); } /* Vereinfachte Status Badges */ .status-badge-enhanced { display: inline-flex; align-items: center; padding: 0.5rem 1rem; font-size: 0.75rem; font-weight: 700; border-radius: 9999px; text-transform: uppercase; letter-spacing: 0.05em; border: 1px solid transparent; transition: transform 0.2s ease; } .status-online-enhanced { background: linear-gradient(135deg, #ecfdf5 0%, #a7f3d0 100%); color: #065f46; border-color: rgba(16, 185, 129, 0.3); } .status-offline-enhanced { background: linear-gradient(135deg, #fef2f2 0%, #fca5a5 100%); color: #991b1b; border-color: rgba(239, 68, 68, 0.3); } .status-printing-enhanced { background: linear-gradient(135deg, #eff6ff 0%, #bfdbfe 100%); color: #1e40af; border-color: rgba(59, 130, 246, 0.3); } /* Dark Mode Toggle - Vereinfacht aber funktional */ .dark-mode-toggle-new { position: relative; display: flex; cursor: pointer; align-items: center; justify-content: center; border-radius: 9999px; padding: 0.625rem; transition: transform 0.2s ease; background: rgba(248, 250, 252, 0.9); border: 1px solid rgba(226, 232, 240, 0.7); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); color: var(--color-text-secondary); z-index: 100; } .dark-mode-toggle-new:hover { transform: translateY(-2px) scale(1.05); background: rgba(248, 250, 252, 0.95); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } .dark-mode-toggle-new:active { transform: translateY(-1px) scale(0.98); } .dark .dark-mode-toggle-new { background: rgba(10, 10, 10, 0.8); border: 1px solid rgba(42, 42, 42, 0.6); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); color: var(--color-text-secondary); } .dark .dark-mode-toggle-new:hover { background: rgba(10, 10, 10, 0.9); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); } /* Icon-Animation für Dark Mode Toggle */ .dark-mode-toggle-new .sun-icon, .dark-mode-toggle-new .moon-icon { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); transition: opacity 0.2s ease, transform 0.2s ease; } .dark .sun-icon { display: none; } .dark .moon-icon { display: block; } .sun-icon { display: block; } .moon-icon { display: none; } /* User Menu Button - Vereinfacht */ .user-menu-button-new { display: flex; align-items: center; gap: 0.5rem; border-radius: 0.75rem; padding: 0.5rem; transition: transform 0.2s ease; background: rgba(248, 250, 252, 0.8); border: 1px solid rgba(226, 232, 240, 0.6); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); } .user-menu-button-new:hover { transform: translateY(-1px); background: rgba(248, 250, 252, 0.9); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); } .dark .user-menu-button-new { background: rgba(10, 10, 10, 0.7); border-color: rgba(42, 42, 42, 0.6); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } .dark .user-menu-button-new:hover { background: rgba(10, 10, 10, 0.8); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } /* Vereinfachte Hover Effects */ .hover-lift-enhanced { transition: transform 0.2s ease, box-shadow 0.2s ease; } .hover-lift-enhanced:hover { transform: translateY(-3px); box-shadow: 0 8px 20px var(--color-shadow-strong); } .dark .hover-lift-enhanced:hover { box-shadow: 0 8px 20px var(--color-shadow); } /* Smooth Scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--color-bg-secondary); border-radius: 4px; } ::-webkit-scrollbar-thumb { background: var(--color-border-secondary); border-radius: 4px; transition: background 0.2s ease; } ::-webkit-scrollbar-thumb:hover { background: var(--color-accent); } .dark ::-webkit-scrollbar-track { background: var(--color-bg-secondary); } .dark ::-webkit-scrollbar-thumb { background: var(--color-border-primary); } .dark ::-webkit-scrollbar-thumb:hover { background: #60a5fa; } /* Vereinfachte Loading States */ .loading-enhanced { position: relative; overflow: hidden; } .loading-enhanced::after { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(0, 115, 206, 0.1), transparent); animation: loading-shimmer 2s infinite; } @keyframes loading-shimmer { 0% { left: -100%; } 100% { left: 100%; } } /* Focus States for Accessibility */ .focus-enhanced:focus { outline: 2px solid var(--color-accent); outline-offset: 2px; box-shadow: 0 0 0 4px rgba(0, 115, 206, 0.15); } .dark .focus-enhanced:focus { outline-color: #60a5fa; box-shadow: 0 0 0 4px rgba(96, 165, 250, 0.15); } /* Responsive Design Enhancements */ @media (max-width: 768px) { .card-enhanced { padding: 1rem; border-radius: 0.75rem; } .btn-enhanced { padding: 0.75rem 1.5rem; font-size: 0.8rem; } .modal-enhanced { border-radius: 1rem; margin: 1rem; } .dark-mode-toggle-new { padding: 0.5rem; } } /* Reduced Motion Support */ @media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } } /* High Contrast Mode Support */ @media (prefers-contrast: high) { :root { --color-shadow: rgba(0, 0, 0, 0.2); --color-shadow-strong: rgba(0, 0, 0, 0.3); --color-border-primary: #000000; } .dark { --color-border-primary: #ffffff; } } }