605 lines
18 KiB
CSS

/**
* 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;
}
}
}