/** * MYP Platform Komponenten-Bibliothek * Erweiterte UI-Komponenten basierend auf Tailwind CSS * RESPONSIVE DESIGN OPTIMIERT FÜR ALLE BILDSCHIRMGROSSEN */ @layer components { /* ===== RESPONSIVE FOUNDATION STYLES ===== */ /* Base responsive container */ .responsive-container { @apply w-full max-w-none mx-auto px-3 sm:px-4 md:px-6 lg:px-8 xl:px-12; } /* Responsive grid system */ .responsive-grid { @apply grid gap-3 sm:gap-4 md:gap-6 lg:gap-8; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); } .responsive-grid-2 { @apply grid gap-3 sm:gap-4 md:gap-6 grid-cols-1 sm:grid-cols-2; } .responsive-grid-3 { @apply grid gap-3 sm:gap-4 md:gap-6 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3; } .responsive-grid-4 { @apply grid gap-3 sm:gap-4 md:gap-6 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4; } /* ===== PROFESSIONELLE MERCEDES-BENZ KARTEN - RESPONSIVE ===== */ .card { @apply bg-white dark:bg-slate-900 rounded-lg sm:rounded-xl shadow-mobile sm:shadow-tablet lg:shadow-desktop border border-slate-200 dark:border-slate-700 p-3 sm:p-4 md:p-6 m-2 sm:m-3 md:m-4 transition-all duration-300; } .card-hover { @apply hover:shadow-xl hover:shadow-slate-300/50 dark:hover:shadow-slate-900/50 hover:bg-slate-50 dark:hover:bg-slate-800 transform hover:-translate-y-1 transition-all duration-300; } /* Responsive dashboard card */ .dashboard-card { @apply bg-white dark:bg-slate-900 rounded-lg sm:rounded-xl md:rounded-2xl shadow-mobile sm:shadow-tablet lg:shadow-desktop border border-slate-200 dark:border-slate-700 p-3 sm:p-4 md:p-6 lg:p-8 transition-all duration-300; } .container-panel { @apply bg-slate-50 dark:bg-slate-800 rounded-lg sm:rounded-xl p-3 sm:p-4 md:p-6 m-2 sm:m-3 md:m-4 border border-slate-200 dark:border-slate-700 shadow-sm; } /* ===== RESPONSIVE NAVIGATION ===== */ /* Professional Navigation Bar */ .navbar { @apply bg-white/90 dark:bg-slate-900/90 backdrop-blur-md border-b border-slate-200 dark:border-slate-700 sticky top-0 z-50 transition-all duration-300; } /* Desktop navigation menu */ .navbar-menu-new { @apply flex items-center space-x-1 lg:space-x-2 xl:space-x-3; } /* Navigation items responsive */ .nav-item { @apply flex items-center gap-2 lg:gap-3 px-3 lg:px-4 py-2 lg:py-3 rounded-lg text-sm lg:text-base font-medium text-slate-700 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800 hover:text-slate-900 dark:hover:text-white transition-all duration-300 relative; } .nav-item.active { @apply bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 font-semibold shadow-sm; } /* Mobile menu */ .mobile-menu-new { @apply bg-white dark:bg-slate-900 border-b border-slate-200 dark:border-slate-700 backdrop-blur-md; } .mobile-nav-item { @apply flex items-center gap-3 px-4 py-3 text-base font-medium text-slate-700 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800 hover:text-slate-900 dark:hover:text-white transition-all duration-300 rounded-lg mx-2; } .mobile-nav-item.active { @apply bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 font-semibold; } /* Brand section responsive */ .navbar-brand { @apply flex items-center no-underline transition-all duration-300 hover:opacity-80; } /* ===== RESPONSIVE FORMS ===== */ .form-input { @apply w-full rounded-lg sm:rounded-xl border-2 border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-800 px-3 sm:px-4 py-2 sm:py-3 text-sm sm:text-base text-slate-900 dark:text-white placeholder-slate-500 dark:placeholder-slate-400 focus:border-blue-500 dark:focus:border-blue-400 focus:ring-4 focus:ring-blue-500/20 dark:focus:ring-blue-400/20 transition-all duration-300 touch-target; } .form-label { @apply block text-xs sm:text-sm font-semibold text-slate-700 dark:text-slate-300 mb-1 sm:mb-2 transition-colors duration-300; } .form-group { @apply mb-4 sm:mb-6; } .form-help { @apply mt-1 text-xs text-slate-500 dark:text-slate-400 transition-colors duration-300; } .form-error { @apply mt-1 text-xs text-red-600 dark:text-red-400 font-medium transition-colors duration-300; } /* ===== RESPONSIVE BUTTONS ===== */ .btn-icon { @apply inline-flex items-center justify-center rounded-lg sm:rounded-xl p-2 sm:p-3 transition-all duration-300 shadow-mobile sm:shadow-tablet hover:shadow-lg touch-target; } .btn-text { @apply inline-flex items-center justify-center gap-2 rounded-lg sm:rounded-xl px-4 sm:px-6 py-2 sm:py-3 text-xs sm:text-sm font-semibold transition-all duration-300 shadow-mobile sm:shadow-tablet hover:shadow-lg touch-target; } .btn-rounded { @apply rounded-full; } .btn-sm { @apply px-3 sm:px-4 py-1.5 sm:py-2 text-xs; } .btn-lg { @apply px-6 sm:px-8 py-3 sm:py-4 text-sm sm:text-base; } /* ===== RESPONSIVE BADGES ===== */ .badge { @apply inline-flex items-center rounded-full px-2 sm:px-3 py-1 sm:py-1.5 text-xs font-semibold transition-all duration-300 shadow-sm; } .badge-blue { @apply bg-blue-100 text-blue-800 border border-blue-200 dark:bg-blue-900/30 dark:text-blue-300 dark:border-blue-700; } .badge-green { @apply bg-green-100 text-green-800 border border-green-200 dark:bg-green-900/30 dark:text-green-300 dark:border-green-700; } .badge-red { @apply bg-red-100 text-red-800 border border-red-200 dark:bg-red-900/30 dark:text-red-300 dark:border-red-700; } .badge-yellow { @apply bg-yellow-100 text-yellow-800 border border-yellow-200 dark:bg-yellow-900/30 dark:text-yellow-300 dark:border-yellow-700; } .badge-purple { @apply bg-purple-100 text-purple-800 border border-purple-200 dark:bg-purple-900/30 dark:text-purple-300 dark:border-purple-700; } /* ===== RESPONSIVE STATUS INDICATORS ===== */ .status-dot { @apply relative flex h-2 w-2 sm:h-3 sm:w-3 rounded-full shadow-sm; } .status-dot::after { @apply absolute top-0 left-0 h-full w-full rounded-full content-[''] animate-ping opacity-75; } .status-online { @apply bg-green-500 dark:bg-green-400; } .status-online::after { @apply bg-green-500 dark:bg-green-400; } .status-offline { @apply bg-red-500 dark:bg-red-400; } .status-warning { @apply bg-yellow-500 dark:bg-yellow-400; } .status-warning::after { @apply bg-yellow-500 dark:bg-yellow-400; } /* ===== RESPONSIVE TABLES ===== */ .table-container { @apply w-full overflow-x-auto rounded-lg sm:rounded-xl border border-slate-200 dark:border-slate-700 shadow-mobile sm:shadow-tablet lg:shadow-desktop bg-white dark:bg-slate-900; } .table-styled { @apply w-full whitespace-nowrap text-left text-xs sm:text-sm text-slate-700 dark:text-slate-300; } .table-styled thead { @apply bg-slate-100 dark:bg-slate-800 transition-colors duration-300; } .table-styled th { @apply px-3 sm:px-6 py-2 sm:py-4 font-semibold text-slate-900 dark:text-white transition-colors duration-300 text-xs sm:text-sm; } .table-styled tbody tr { @apply border-t border-slate-200 dark:border-slate-700 transition-colors duration-300; } .table-styled tbody tr:hover { @apply bg-slate-50 dark:bg-slate-800/50 transition-colors duration-300; } .table-styled td { @apply px-3 sm:px-6 py-2 sm:py-4 transition-colors duration-300 text-xs sm:text-sm; } /* ===== RESPONSIVE ALERTS ===== */ .alert { @apply rounded-lg sm:rounded-xl border-2 p-3 sm:p-4 md:p-6 mb-3 sm:mb-4 transition-all duration-300 shadow-mobile sm:shadow-tablet; } .alert-info { @apply bg-blue-50 dark:bg-blue-900/20 border-blue-300 dark:border-blue-600 text-blue-900 dark:text-blue-200; } .alert-success { @apply bg-green-50 dark:bg-green-900/20 border-green-300 dark:border-green-600 text-green-900 dark:text-green-200; } .alert-warning { @apply bg-yellow-50 dark:bg-yellow-900/20 border-yellow-300 dark:border-yellow-600 text-yellow-900 dark:text-yellow-200; } .alert-error { @apply bg-red-50 dark:bg-red-900/20 border-red-300 dark:border-red-600 text-red-900 dark:text-red-200; } /* ===== RESPONSIVE NAVIGATION TABS ===== */ .nav-tab { @apply inline-flex items-center gap-1 sm:gap-2 px-3 sm:px-6 py-2 sm:py-3 border-b-2 text-xs sm:text-sm font-semibold transition-all duration-300; } .nav-tab-active { @apply border-blue-600 dark:border-blue-400 text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20 rounded-t-lg; } .nav-tab-inactive { @apply border-transparent text-slate-600 dark:text-slate-400 hover:text-slate-900 dark:hover:text-slate-200 hover:border-slate-300 dark:hover:border-slate-600 hover:bg-slate-50 dark:hover:bg-slate-800 rounded-t-lg; } /* ===== RESPONSIVE PRINTER STATUS ===== */ .printer-status { @apply inline-flex items-center gap-1 sm:gap-2 px-2 sm:px-4 py-1 sm:py-2 rounded-full text-xs font-semibold shadow-sm border; } .printer-ready { @apply bg-green-100 dark:bg-green-900/30 text-green-800 dark:text-green-300 border-green-200 dark:border-green-700; } .printer-busy { @apply bg-orange-100 dark:bg-orange-900/30 text-orange-800 dark:text-orange-300 border-orange-200 dark:border-orange-700; } .printer-error { @apply bg-red-100 dark:bg-red-900/30 text-red-800 dark:text-red-300 border-red-200 dark:border-red-700; } .printer-offline { @apply bg-slate-100 dark:bg-slate-800 text-slate-700 dark:text-slate-300 border-slate-200 dark:border-slate-600; } .printer-maintenance { @apply bg-purple-100 dark:bg-purple-900/30 text-purple-800 dark:text-purple-300 border-purple-200 dark:border-purple-700; } /* ===== RESPONSIVE JOB STATUS ===== */ .job-status { @apply inline-flex items-center gap-1 sm:gap-2 px-2 sm:px-4 py-1 sm:py-2 rounded-full text-xs font-semibold shadow-sm border; } .job-queued { @apply bg-slate-100 dark:bg-slate-800 text-slate-700 dark:text-slate-300 border-slate-200 dark:border-slate-600; } .job-printing { @apply bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-300 border-blue-200 dark:border-blue-700; } .job-completed { @apply bg-green-100 dark:bg-green-900/30 text-green-800 dark:text-green-300 border-green-200 dark:border-green-700; } .job-failed { @apply bg-red-100 dark:bg-red-900/30 text-red-800 dark:text-red-300 border-red-200 dark:border-red-700; } .job-cancelled { @apply bg-yellow-100 dark:bg-yellow-900/30 text-yellow-800 dark:text-yellow-300 border-yellow-200 dark:border-yellow-700; } .job-paused { @apply bg-purple-100 dark:bg-purple-900/30 text-purple-800 dark:text-purple-300 border-purple-200 dark:border-purple-700; } /* ===== RESPONSIVE BUTTONS - ENHANCED ===== */ .btn { @apply px-4 sm:px-6 py-2 sm:py-3 rounded-lg sm:rounded-xl transition-all duration-300 focus:outline-none focus:ring-4 shadow-mobile sm:shadow-tablet hover:shadow-lg font-semibold text-sm sm:text-base touch-target; } .btn-primary { @apply btn bg-blue-600 hover:bg-blue-700 text-white focus:ring-blue-500/50 shadow-blue-500/25; } .btn-secondary { @apply btn bg-slate-200 hover:bg-slate-300 text-slate-800 dark:bg-slate-700 dark:hover:bg-slate-600 dark:text-white focus:ring-slate-500/50; } .btn-danger { @apply btn bg-red-600 hover:bg-red-700 text-white focus:ring-red-500/50 shadow-red-500/25; } .btn-success { @apply btn bg-green-600 hover:bg-green-700 text-white focus:ring-green-500/50 shadow-green-500/25; } /* ===== RESPONSIVE DARK MODE TOGGLE ===== */ .dark-mode-toggle-premium { @apply relative inline-flex items-center justify-center w-10 h-10 sm:w-11 sm:h-11 rounded-full transition-all duration-300 focus:outline-none focus:ring-4 focus:ring-blue-500/50 touch-target; } /* ===== RESPONSIVE MERCEDES-BENZ DESIGN COMPONENTS ===== */ /* Glassmorphism - Responsive */ .mercedes-glass { background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(15px) saturate(180%); border: 1px solid rgba(255, 255, 255, 0.2); transition: all 0.3s ease; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); @apply rounded-lg sm:rounded-xl; } .dark .mercedes-glass { background: rgba(15, 23, 42, 0.9); border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); } /* Responsive Gradients */ .professional-gradient { background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 25%, #cbd5e1 50%, #94a3b8 75%, #64748b 100%); @apply rounded-lg sm:rounded-xl; } .dark .professional-gradient { background: linear-gradient(135deg, #0f172a 0%, #1e293b 25%, #334155 50%, #475569 75%, #64748b 100%); } /* Responsive Mercedes Pattern */ .mercedes-pattern { background-image: radial-gradient(circle at 25% 25%, rgba(255,255,255,0.1) 1px, transparent 1px), radial-gradient(circle at 75% 75%, rgba(255,255,255,0.1) 1px, transparent 1px); background-size: 40px 40px; } @media (min-width: 640px) { .mercedes-pattern { background-size: 60px 60px; background-image: radial-gradient(circle at 25% 25%, rgba(255,255,255,0.1) 2px, transparent 2px), radial-gradient(circle at 75% 75%, rgba(255,255,255,0.1) 2px, transparent 2px); } } .dark .mercedes-pattern { background-image: radial-gradient(circle at 25% 25%, rgba(255,255,255,0.05) 1px, transparent 1px), radial-gradient(circle at 75% 75%, rgba(255,255,255,0.05) 1px, transparent 1px); } /* Responsive Professional Shadows */ .professional-shadow { box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(255, 255, 255, 0.05); } @media (min-width: 768px) { .professional-shadow { box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15), 0 8px 16px rgba(0, 0, 0, 0.1), 0 0 0 1px rgba(255, 255, 255, 0.05); } } .dark .professional-shadow { box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.3), 0 4px 8px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(255, 255, 255, 0.1); } @media (min-width: 768px) { .dark .professional-shadow { box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 8px 16px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1); } } /* ===== RESPONSIVE LOADING AND SHIMMER ===== */ .loading-shimmer { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: shimmer 1.5s infinite; @apply rounded-lg sm:rounded-xl; } .dark .loading-shimmer { background: linear-gradient(90deg, #374151 25%, #4b5563 50%, #374151 75%); background-size: 200% 100%; } @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } /* ===== RESPONSIVE FOCUS RINGS ===== */ .focus-ring:focus { @apply outline-none ring-4 ring-blue-500/50 dark:ring-blue-400/50; } .dark .focus-ring:focus { @apply ring-blue-400/50; } /* ===== RESPONSIVE TITLES ===== */ .professional-title { @apply text-lg sm:text-xl md:text-2xl lg:text-3xl xl:text-4xl font-bold text-slate-900 dark:text-white tracking-tight; background: linear-gradient(135deg, #1e293b 0%, #475569 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } .dark .professional-title { background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } /* ===== RESPONSIVE UTILITIES ===== */ /* Touch-friendly interactive elements */ .touch-friendly { @apply min-h-[44px] min-w-[44px] touch-target; } /* Responsive text sizes */ .text-responsive { font-size: clamp(0.875rem, 2.5vw, 1.125rem); line-height: 1.5; } .text-responsive-lg { font-size: clamp(1.125rem, 3vw, 1.5rem); line-height: 1.4; } .text-responsive-xl { font-size: clamp(1.5rem, 4vw, 2.25rem); line-height: 1.3; } /* ===== MOBILE-SPECIFIC OPTIMIZATIONS ===== */ @media (max-width: 768px) { .professional-shadow { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .professional-card { @apply rounded-lg; } .mercedes-glass { backdrop-filter: blur(10px); } /* Optimize spacing for mobile */ .card { @apply m-1 p-3; } .dashboard-card { @apply p-4; } } /* ===== ANIMATION CLASSES - RESPONSIVE ===== */ .fade-in { animation: fadeIn 0.5s ease-in-out; } .slide-up { animation: slideUp 0.5s ease-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { transform: translateY(30px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } /* ===== CSS CUSTOM PROPERTIES - RESPONSIVE ===== */ :root { --border-radius-mobile: 0.5rem; --border-radius-tablet: 0.75rem; --border-radius-desktop: 1rem; --shadow-mobile: 0 1px 3px 0 rgba(0, 0, 0, 0.1); --shadow-tablet: 0 4px 6px -1px rgba(0, 0, 0, 0.1); --shadow-desktop: 0 10px 15px -3px rgba(0, 0, 0, 0.1); } .dark { --shadow-mobile: 0 1px 3px 0 rgba(0, 0, 0, 0.3); --shadow-tablet: 0 4px 6px -1px rgba(0, 0, 0, 0.3); --shadow-desktop: 0 10px 15px -3px rgba(0, 0, 0, 0.3); } /* ===== RESPONSIVE SCROLLBAR IMPROVEMENTS ===== */ /* Webkit-Browser - Responsive scrollbars */ ::-webkit-scrollbar { width: 4px; height: 4px; } @media (min-width: 768px) { ::-webkit-scrollbar { width: 6px; height: 6px; } } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: transparent; border-radius: 3px; transition: all 0.3s ease; } /* Nur bei Hover über scrollbaren Container sichtbar */ *:hover::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.05); } *:hover::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.1); } /* Dark Mode - noch dezenter */ .dark *:hover::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.03); } .dark *:hover::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.08); } /* ===== PRINT STYLES ===== */ @media print { .card, .dashboard-card { @apply shadow-none border border-gray-300; } .btn, .nav-item { @apply shadow-none; } .dark-mode-toggle-premium { @apply hidden; } } }