Files
Projektarbeit-MYP/backend/app/static/css/input.css

752 lines
17 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
/* ===== MERCEDES-BENZ MYP PLATFORM - ENHANCED BASE STYLES ===== */
@layer base {
:root {
/* Enhanced Light Mode Farben */
--color-bg-primary: #ffffff;
--color-bg-secondary: #f8fafc;
--color-bg-tertiary: #f1f5f9;
--color-text-primary: #0f172a;
--color-text-secondary: #334155;
--color-text-muted: #64748b;
--color-border-primary: #e2e8f0;
--color-border-secondary: #cbd5e1;
--color-accent: #000000; /* Mercedes-Benz Schwarz */
--color-accent-hover: #1f2937;
--color-accent-text: #ffffff;
--color-success: #059669;
--color-warning: #d97706;
--color-error: #dc2626;
--color-info: #2563eb;
--color-shadow: rgba(0, 0, 0, 0.1);
--color-shadow-dark: rgba(0, 0, 0, 0.25);
--card-radius: 1rem;
--border-radius-sm: 0.5rem;
--border-radius-md: 0.75rem;
--border-radius-lg: 1rem;
--border-radius-xl: 1.5rem;
/* Enhanced Animation Variables */
--ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);
--ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);
--duration-fast: 0.15s;
--duration-normal: 0.3s;
--duration-slow: 0.5s;
/* Mercedes-Benz Brand Colors */
--mb-black: #000000;
--mb-silver: #c0c0c0;
--mb-platinum: #e5e4e2;
--mb-charcoal: #36454f;
--mb-steel: #71797e;
}
.dark {
/* Enhanced Dark Mode - Deeper and more elegant */
--color-bg-primary: #000000;
--color-bg-secondary: #0a0a0a;
--color-bg-tertiary: #111111;
--color-text-primary: #ffffff;
--color-text-secondary: #e2e8f0;
--color-text-muted: #94a3b8;
--color-border-primary: #1a1a1a;
--color-border-secondary: #262626;
--color-accent: #ffffff;
--color-accent-hover: #f3f4f6;
--color-accent-text: #000000;
--color-success: #10b981;
--color-warning: #f59e0b;
--color-error: #ef4444;
--color-info: #3b82f6;
--color-shadow: rgba(0, 0, 0, 0.8);
--color-shadow-dark: rgba(0, 0, 0, 0.9);
}
/* Enhanced Body Styling with Premium Background */
body {
@apply text-slate-900 dark:text-white transition-colors duration-500;
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
min-height: 100vh;
position: relative;
overflow-x: hidden;
}
.dark body {
background: linear-gradient(135deg, #000000 0%, #0a0a0a 50%, #111111 100%);
position: relative;
}
/* Premium Background Pattern for Dark Mode */
.dark body::before {
content: '';
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background:
radial-gradient(circle at 20% 80%, rgba(255, 255, 255, 0.03) 0%, transparent 50%),
radial-gradient(circle at 80% 20%, rgba(255, 255, 255, 0.02) 0%, transparent 50%),
radial-gradient(circle at 40% 40%, rgba(255, 255, 255, 0.01) 0%, transparent 50%);
pointer-events: none;
z-index: -1;
}
/* Enhanced Typography */
h1, h2, h3, h4, h5, h6 {
@apply font-semibold tracking-tight;
font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
}
h1 { @apply text-4xl lg:text-5xl leading-tight; }
h2 { @apply text-3xl lg:text-4xl leading-tight; }
h3 { @apply text-2xl lg:text-3xl leading-snug; }
h4 { @apply text-xl lg:text-2xl leading-snug; }
h5 { @apply text-lg lg:text-xl leading-relaxed; }
h6 { @apply text-base lg:text-lg leading-relaxed; }
/* Enhanced Selection Styling */
::selection {
background: rgba(0, 0, 0, 0.1);
color: inherit;
}
.dark ::selection {
background: rgba(255, 255, 255, 0.1);
color: inherit;
}
/* Enhanced Scrollbar Styling */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.2);
border-radius: 4px;
transition: background 0.3s ease;
}
::-webkit-scrollbar-thumb:hover {
background: rgba(0, 0, 0, 0.4);
}
.dark ::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.2);
}
.dark ::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.4);
}
}
@layer components {
/* ===== ENHANCED NAVIGATION ===== */
nav {
@apply backdrop-blur-xl border-b transition-all duration-500;
background: rgba(255, 255, 255, 0.8);
border-color: rgba(226, 232, 240, 0.8);
backdrop-filter: blur(20px) saturate(180%) brightness(120%);
-webkit-backdrop-filter: blur(20px) saturate(180%) brightness(120%);
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.08),
0 1px 0 rgba(255, 255, 255, 0.5) inset;
position: relative;
z-index: 50;
}
.dark nav {
background: rgba(0, 0, 0, 0.8);
border-color: rgba(26, 26, 26, 0.8);
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.5),
0 1px 0 rgba(255, 255, 255, 0.1) inset;
}
/* Enhanced Navigation Items */
.nav-link {
@apply relative px-4 py-2 rounded-lg font-medium transition-all duration-300;
position: relative;
overflow: hidden;
}
.nav-link::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.05), transparent);
transition: left var(--duration-normal) var(--ease-out-cubic);
}
.nav-link:hover::before {
left: 100%;
}
.dark .nav-link::before {
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.05), transparent);
}
/* ===== ENHANCED BUTTONS WITH PREMIUM STYLING ===== */
.btn-mercedes {
@apply inline-flex items-center justify-center px-6 py-3 text-sm font-semibold rounded-xl transition-all duration-300;
background: linear-gradient(135deg, #000000 0%, #1f2937 100%);
color: white;
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow:
0 4px 14px 0 rgba(0, 0, 0, 0.2),
0 1px 0 rgba(255, 255, 255, 0.1) inset;
position: relative;
overflow: hidden;
transform: translateZ(0);
}
.btn-mercedes::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 var(--duration-normal);
}
.btn-mercedes:hover::before {
left: 100%;
}
.btn-mercedes:hover {
transform: translateY(-1px);
box-shadow:
0 8px 25px 0 rgba(0, 0, 0, 0.3),
0 1px 0 rgba(255, 255, 255, 0.2) inset;
}
.btn-mercedes:active {
transform: translateY(0);
}
.dark .btn-mercedes {
background: linear-gradient(135deg, #ffffff 0%, #f3f4f6 100%);
color: black;
border-color: rgba(0, 0, 0, 0.1);
box-shadow:
0 4px 14px 0 rgba(255, 255, 255, 0.2),
0 1px 0 rgba(0, 0, 0, 0.1) inset;
}
/* ===== ENHANCED CARDS WITH GLASSMORPHISM ===== */
.glass-card {
@apply rounded-2xl border transition-all duration-500;
background: rgba(255, 255, 255, 0.7);
border-color: rgba(255, 255, 255, 0.3);
backdrop-filter: blur(20px) saturate(180%) brightness(120%);
-webkit-backdrop-filter: blur(20px) saturate(180%) brightness(120%);
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.08),
0 1px 0 rgba(255, 255, 255, 0.5) inset;
position: relative;
overflow: hidden;
}
.glass-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.8), transparent);
}
.glass-card:hover {
transform: translateY(-2px);
box-shadow:
0 20px 40px rgba(0, 0, 0, 0.12),
0 1px 0 rgba(255, 255, 255, 0.6) inset;
}
.dark .glass-card {
background: rgba(0, 0, 0, 0.7);
border-color: rgba(255, 255, 255, 0.1);
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.3),
0 1px 0 rgba(255, 255, 255, 0.1) inset;
}
.dark .glass-card::before {
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
}
.dark .glass-card:hover {
box-shadow:
0 20px 40px rgba(0, 0, 0, 0.5),
0 1px 0 rgba(255, 255, 255, 0.2) inset;
}
/* ===== PREMIUM STATUS INDICATORS ===== */
.status-indicator {
@apply inline-flex items-center px-3 py-1 rounded-full text-xs font-medium;
position: relative;
animation: fadeInScale 0.4s var(--ease-out-cubic);
}
.status-indicator::before {
content: '';
position: absolute;
left: 8px;
top: 50%;
transform: translateY(-50%);
width: 6px;
height: 6px;
border-radius: 50%;
animation: statusPulse 2s ease-in-out infinite;
}
.status-online {
@apply bg-emerald-50 text-emerald-700 border border-emerald-200;
}
.status-online::before {
background: #10b981;
box-shadow: 0 0 8px rgba(16, 185, 129, 0.6);
}
.status-offline {
@apply bg-slate-50 text-slate-600 border border-slate-200;
}
.status-offline::before {
background: #64748b;
}
.status-printing {
@apply bg-blue-50 text-blue-700 border border-blue-200;
}
.status-printing::before {
background: #3b82f6;
animation: statusPulse 1s ease-in-out infinite;
}
.dark .status-online {
@apply bg-emerald-900/30 text-emerald-300 border-emerald-800/50;
}
.dark .status-offline {
@apply bg-slate-800/30 text-slate-400 border-slate-700/50;
}
.dark .status-printing {
@apply bg-blue-900/30 text-blue-300 border-blue-800/50;
}
/* ===== ENHANCED FORMS ===== */
.mercedes-form-input {
@apply w-full px-4 py-3 border border-gray-300 rounded-xl bg-white text-gray-900 placeholder-gray-500 transition-all duration-300;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
font-feature-settings: 'tnum';
}
.mercedes-form-input:focus {
@apply border-black ring-2 ring-black ring-opacity-20 outline-none;
transform: translateY(-1px);
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.15);
}
.dark .mercedes-form-input {
@apply border-gray-600 bg-gray-800 text-white placeholder-gray-400;
}
.dark .mercedes-form-input:focus {
@apply border-white ring-white ring-opacity-20;
}
/* ===== ENHANCED TABLES ===== */
.premium-table {
@apply w-full overflow-hidden rounded-xl;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
border: 1px solid rgba(226, 232, 240, 0.8);
}
.premium-table thead {
background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
}
.premium-table thead th {
@apply px-6 py-4 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider;
border-bottom: 1px solid rgba(226, 232, 240, 0.8);
position: sticky;
top: 0;
backdrop-filter: blur(10px);
}
.premium-table tbody tr {
@apply bg-white hover:bg-gray-50 transition-all duration-200;
border-bottom: 1px solid rgba(226, 232, 240, 0.4);
}
.premium-table tbody tr:hover {
transform: translateX(2px);
box-shadow: inset 3px 0 0 0 #000000;
}
.premium-table tbody td {
@apply px-6 py-4 text-sm text-gray-900;
}
.dark .premium-table {
border-color: rgba(55, 65, 81, 0.8);
}
.dark .premium-table thead {
background: linear-gradient(135deg, #1f2937 0%, #111827 100%);
}
.dark .premium-table thead th {
@apply text-gray-300;
border-color: rgba(55, 65, 81, 0.8);
}
.dark .premium-table tbody tr {
@apply bg-gray-900 hover:bg-gray-800;
border-color: rgba(55, 65, 81, 0.4);
}
.dark .premium-table tbody tr:hover {
box-shadow: inset 3px 0 0 0 #ffffff;
}
.dark .premium-table tbody td {
@apply text-gray-100;
}
/* ===== ENHANCED ALERTS ===== */
.alert {
@apply p-4 rounded-xl border transition-all duration-300;
position: relative;
overflow: hidden;
backdrop-filter: blur(10px);
}
.alert::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 4px;
height: 100%;
animation: alertPulse 2s ease-in-out infinite;
}
.alert-success {
@apply bg-emerald-50 border-emerald-200 text-emerald-800;
}
.alert-success::before {
background: #10b981;
}
.alert-error {
@apply bg-red-50 border-red-200 text-red-800;
}
.alert-error::before {
background: #ef4444;
}
.alert-warning {
@apply bg-amber-50 border-amber-200 text-amber-800;
}
.alert-warning::before {
background: #f59e0b;
}
.alert-info {
@apply bg-blue-50 border-blue-200 text-blue-800;
}
.alert-info::before {
background: #3b82f6;
}
.dark .alert-success {
@apply bg-emerald-900/30 border-emerald-800/50 text-emerald-200;
}
.dark .alert-error {
@apply bg-red-900/30 border-red-800/50 text-red-200;
}
.dark .alert-warning {
@apply bg-amber-900/30 border-amber-800/50 text-amber-200;
}
.dark .alert-info {
@apply bg-blue-900/30 border-blue-800/50 text-blue-200;
}
}
/* ===== PREMIUM FLASH MESSAGES ===== */
.flash-message {
@apply fixed top-4 right-4 px-6 py-4 rounded-xl text-sm font-medium shadow-2xl transform transition-all duration-500 z-50;
backdrop-filter: blur(20px) saturate(180%) brightness(120%);
-webkit-backdrop-filter: blur(20px) saturate(180%) brightness(120%);
border: 1px solid rgba(255, 255, 255, 0.2);
box-shadow:
0 25px 50px rgba(0, 0, 0, 0.15),
0 1px 0 rgba(255, 255, 255, 0.1) inset;
animation: slideDownBounce 0.6s var(--ease-out-cubic);
max-width: 400px;
}
.flash-message.success {
background: rgba(16, 185, 129, 0.9);
color: white;
border-color: rgba(16, 185, 129, 0.3);
}
.flash-message.error {
background: rgba(239, 68, 68, 0.9);
color: white;
border-color: rgba(239, 68, 68, 0.3);
}
.flash-message.warning {
background: rgba(245, 158, 11, 0.9);
color: white;
border-color: rgba(245, 158, 11, 0.3);
}
.flash-message.info {
background: rgba(59, 130, 246, 0.9);
color: white;
border-color: rgba(59, 130, 246, 0.3);
}
/* ===== ENHANCED ANIMATIONS ===== */
@keyframes slideDownBounce {
0% {
opacity: 0;
transform: translateY(-30px) scale(0.8);
}
60% {
opacity: 1;
transform: translateY(5px) scale(1.05);
}
100% {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@keyframes fadeInScale {
0% {
opacity: 0;
transform: scale(0.8);
}
100% {
opacity: 1;
transform: scale(1);
}
}
@keyframes statusPulse {
0%, 100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.7;
transform: scale(1.2);
}
}
@keyframes alertPulse {
0%, 100% {
opacity: 0.8;
}
50% {
opacity: 1;
}
}
@keyframes float {
0%, 100% {
transform: translateY(0px);
}
50% {
transform: translateY(-10px);
}
}
@keyframes glow {
0%, 100% {
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
}
50% {
box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
}
}
/* ===== MERCEDES DESIGN PATTERNS ===== */
.mercedes-pattern {
position: relative;
overflow: hidden;
}
.mercedes-pattern::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: conic-gradient(
from 0deg at 50% 50%,
transparent 0deg,
rgba(0, 0, 0, 0.02) 60deg,
transparent 120deg
);
animation: rotate 20s linear infinite;
pointer-events: none;
}
.dark .mercedes-pattern::before {
background: conic-gradient(
from 0deg at 50% 50%,
transparent 0deg,
rgba(255, 255, 255, 0.02) 60deg,
transparent 120deg
);
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
/* ===== MICRO-INTERACTIONS ===== */
.hover-lift {
transition: transform var(--duration-normal) var(--ease-out-cubic);
}
.hover-lift:hover {
transform: translateY(-2px);
}
.hover-scale {
transition: transform var(--duration-normal) var(--ease-out-cubic);
}
.hover-scale:hover {
transform: scale(1.02);
}
.click-feedback {
transition: transform var(--duration-fast) var(--ease-in-out-cubic);
}
.click-feedback:active {
transform: scale(0.98);
}
/* ===== RESPONSIVE ENHANCEMENTS ===== */
@media (max-width: 640px) {
.glass-card {
@apply mx-4 rounded-xl;
backdrop-filter: blur(15px);
}
.flash-message {
@apply mx-4 right-4 left-4;
max-width: none;
}
.premium-table {
@apply rounded-lg;
}
.premium-table thead th {
@apply px-4 py-3 text-xs;
}
.premium-table tbody td {
@apply px-4 py-3 text-xs;
}
}
/* ===== ACCESSIBILITY IMPROVEMENTS ===== */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
.focus-visible {
@apply outline-none ring-2 ring-offset-2 ring-black dark:ring-white;
border-radius: var(--border-radius-md);
}
/* ===== HIGH CONTRAST MODE ===== */
@media (prefers-contrast: high) {
.glass-card {
border-width: 2px;
backdrop-filter: none;
background: white;
}
.dark .glass-card {
background: black;
border-color: white;
}
}
/* ===== PRINT OPTIMIZATIONS ===== */
@media print {
.glass-card {
background: white !important;
border: 1px solid #000 !important;
box-shadow: none !important;
backdrop-filter: none !important;
}
.btn-mercedes {
background: #000 !important;
color: white !important;
box-shadow: none !important;
}
}