/* MYP Platform - Kiosk Optimierte CSS Bundle */ /* Generiert am: 2025-06-01 23:40:48 */ /** * MYP Platform - Kiosk-Optimierte CSS * Maximale Performance für Offline-Kiosk-Umgebung * Keine Touch-Events, minimale Animationen, optimierte Rendering-Performance */ /* ===== CRITICAL INLINE STYLES (sollten im HTML-Head stehen) ===== */ :root { /* Reduzierte Farbvariablen für bessere Performance */ --primary: #0073ce; --primary-dark: #005a9f; --bg: #fafbfc; --surface: #ffffff; --text: #111827; --text-muted: #6b7280; --border: #e5e7eb; --shadow: 0 2px 4px rgba(0,0,0,0.05); } /* CSS Containment für bessere Performance */ * { contain: layout style; } /* Basis-Reset ohne aufwendige Normalisierung */ * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: system-ui, -apple-system, sans-serif; background: var(--bg); color: var(--text); line-height: 1.5; contain: layout style paint; /* Optimiert für Kiosk-Rendering */ text-rendering: optimizeSpeed; -webkit-font-smoothing: antialiased; } /* ===== LAYOUT OPTIMIERUNGEN ===== */ .header { background: var(--surface); border-bottom: 1px solid var(--border); padding: 1rem; contain: layout style; } .nav { display: flex; gap: 1rem; contain: layout; } .nav-item { padding: 0.5rem 1rem; border-radius: 6px; text-decoration: none; color: var(--text-muted); transition: background-color 0.1s ease; /* Minimale Transition */ } .nav-item:hover { background: var(--bg); color: var(--text); } .nav-item.active { background: var(--primary); color: white; } /* ===== OPTIMIERTE KARTEN ===== */ .card { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 1rem; box-shadow: var(--shadow); contain: layout style paint; } .card:hover { transform: translateY(-1px); /* Minimaler Hover-Effekt */ } /* ===== BUTTONS OHNE KOMPLEXE ANIMATIONEN ===== */ .btn { background: var(--primary); color: white; border: none; border-radius: 6px; padding: 0.75rem 1.5rem; font-weight: 600; cursor: pointer; transition: background-color 0.1s ease; contain: layout style; } .btn:hover { background: var(--primary-dark); } .btn-secondary { background: var(--surface); color: var(--text); border: 1px solid var(--border); } .btn-secondary:hover { background: var(--bg); } /* ===== INPUTS OPTIMIERT ===== */ .input { background: var(--surface); border: 1px solid var(--border); border-radius: 6px; padding: 0.75rem; width: 100%; transition: border-color 0.1s ease; contain: layout style; } .input:focus { outline: none; border-color: var(--primary); } /* ===== TABELLEN OHNE KOMPLEXE EFFEKTE ===== */ .table { width: 100%; border-collapse: collapse; background: var(--surface); border-radius: 8px; overflow: hidden; contain: layout; } .table th { background: var(--bg); padding: 1rem; text-align: left; font-weight: 600; border-bottom: 1px solid var(--border); } .table td { padding: 1rem; border-bottom: 1px solid var(--border); } .table tr:hover { background: var(--bg); } /* ===== STATUS BADGES VEREINFACHT ===== */ .status { display: inline-block; padding: 0.25rem 0.75rem; border-radius: 999px; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; } .status-online { background: #d1fae5; color: #065f46; } .status-offline { background: #fee2e2; color: #991b1b; } .status-printing { background: #dbeafe; color: #1e40af; } /* ===== GRID LAYOUTS OPTIMIERT ===== */ .grid { display: grid; gap: 1rem; contain: layout; } .grid-2 { grid-template-columns: repeat(2, 1fr); } .grid-3 { grid-template-columns: repeat(3, 1fr); } .grid-4 { grid-template-columns: repeat(4, 1fr); } /* ===== UTILITIES MINIMAL ===== */ .flex { display: flex; contain: layout; } .flex-col { flex-direction: column; } .items-center { align-items: center; } .justify-between { justify-content: space-between; } .gap-1 { gap: 0.25rem; } .gap-2 { gap: 0.5rem; } .gap-4 { gap: 1rem; } .p-1 { padding: 0.25rem; } .p-2 { padding: 0.5rem; } .p-4 { padding: 1rem; } .p-6 { padding: 1.5rem; } .m-1 { margin: 0.25rem; } .m-2 { margin: 0.5rem; } .m-4 { margin: 1rem; } .mb-2 { margin-bottom: 0.5rem; } .mb-4 { margin-bottom: 1rem; } .mb-6 { margin-bottom: 1.5rem; } .text-sm { font-size: 0.875rem; } .text-lg { font-size: 1.125rem; } .text-xl { font-size: 1.25rem; } .text-2xl { font-size: 1.5rem; } .font-semibold { font-weight: 600; } .font-bold { font-weight: 700; } .text-center { text-align: center; } .text-right { text-align: right; } .w-full { width: 100%; } .h-full { height: 100%; } .rounded { border-radius: 6px; } .rounded-lg { border-radius: 8px; } .border { border: 1px solid var(--border); } .border-t { border-top: 1px solid var(--border); } .border-b { border-bottom: 1px solid var(--border); } .bg-white { background: var(--surface); } .bg-gray-50 { background: var(--bg); } .text-gray-600 { color: var(--text-muted); } .text-blue-600 { color: var(--primary); } /* ===== DARK MODE MINIMAL ===== */ @media (prefers-color-scheme: dark) { :root { --bg: #1e293b; --surface: #334155; --text: #f8fafc; --text-muted: #94a3b8; --border: #475569; --shadow: 0 2px 4px rgba(0,0,0,0.3); } } /* ===== RESPONSIVE FÜR KIOSK-DISPLAYS ===== */ @media (max-width: 1024px) { .grid-4 { grid-template-columns: repeat(2, 1fr); } .grid-3 { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 768px) { .grid-4, .grid-3, .grid-2 { grid-template-columns: 1fr; } .nav { flex-direction: column; gap: 0.5rem; } } /* ===== PERFORMANCE OPTIMIERUNGEN ===== */ /* Deaktivierung nicht benötigter Features für Kiosk */ * { /* Keine Touch-Events */ touch-action: none; -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; } /* Nur notwendige Elemente selektierbar */ input, textarea { -webkit-user-select: text; user-select: text; touch-action: manipulation; } /* Optimierte Scrolling-Performance */ * { -webkit-overflow-scrolling: touch; scroll-behavior: smooth; } /* GPU-Acceleration nur wo nötig */ .card:hover, .btn:hover { will-change: transform; } /* Minimale Animationen für bessere Performance */ @media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } } /* Print-Optimierung (falls Kiosk drucken kann) */ @media print { .nav, .btn { display: none; } .card { box-shadow: none; border: 1px solid #000; } } /* ===== LAYOUT SHIFT PREVENTION ===== */ img { height: auto; max-width: 100%; vertical-align: middle; } /* Container für stabile Layouts */ .container { max-width: 1200px; margin: 0 auto; padding: 0 1rem; contain: layout; } /* ===== KIOSK-SPEZIFISCHE OPTIMIERUNGEN ===== */ /* Vollbildmodus-Unterstützung */ html, body { height: 100%; overflow-x: hidden; } /* Fokus-Management für Keyboard-Navigation */ :focus { outline: 2px solid var(--primary); outline-offset: 2px; } /* Kein Selection-Highlighting */ ::selection { background: transparent; } /* Optimierte Font-Loading */ @font-face { font-family: 'system-ui'; font-display: swap; } /** * Minimales Icon-Set für Kiosk-Modus * SVG-basierte Icons als CSS-Pseudo-Elemente für beste Performance */ /* Icon-Basis-Klasse */ .icon { display: inline-block; width: 1rem; height: 1rem; background-size: contain; background-repeat: no-repeat; background-position: center; vertical-align: middle; } .icon-lg { width: 1.5rem; height: 1.5rem; } .icon-xl { width: 2rem; height: 2rem; } /* ===== DRUCKER ICONS ===== */ .icon-printer { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z'/%3E%3C/svg%3E"); } .icon-print { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z'/%3E%3C/svg%3E"); } /* ===== STATUS ICONS ===== */ .icon-check { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2310b981'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E"); } .icon-warning { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23f59e0b'%3E%3Cpath d='M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z'/%3E%3C/svg%3E"); } .icon-error { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ef4444'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z'/%3E%3C/svg%3E"); } .icon-offline { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%236b7280'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z'/%3E%3C/svg%3E"); } /* ===== NAVIGATION ICONS ===== */ .icon-home { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z'/%3E%3C/svg%3E"); } .icon-settings { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61 l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41 h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87 C2.62,9.08,2.66,9.34,2.86,9.48l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12s0.02,0.64,0.07,0.94l-2.03,1.58 c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54 c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96 c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6 s1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6S13.98,15.6,12,15.6z'/%3E%3C/svg%3E"); } .icon-users { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M16 4c0-1.11.89-2 2-2s2 .89 2 2-.89 2-2 2-2-.89-2-2zm4 18v-6h2.5l-2.54-7.63A3.012 3.012 0 0 0 16.43 6c-.68 0-1.3.27-1.77.72L12 8.5l-2.66-1.78C8.87 6.27 8.25 6 7.57 6c-1.31 0-2.42.83-2.83 2L2.5 16H5v6h2v-6h2v6h2zm-6.5-10.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5S12 9.17 12 10s.67 1.5 1.5 1.5z'/%3E%3C/svg%3E"); } .icon-dashboard { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z'/%3E%3C/svg%3E"); } /* ===== ACTION ICONS ===== */ .icon-plus { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z'/%3E%3C/svg%3E"); } .icon-edit { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z'/%3E%3C/svg%3E"); } .icon-delete { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ef4444'%3E%3Cpath d='M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z'/%3E%3C/svg%3E"); } .icon-refresh { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z'/%3E%3C/svg%3E"); } /* ===== POWER/CONNECTION ICONS ===== */ .icon-power { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2310b981'%3E%3Cpath d='M13 3h-2v10h2V3zm4.83 2.17l-1.42 1.42C17.99 7.86 19 9.81 19 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.19 1.01-4.14 2.58-5.42L6.17 5.17C4.23 6.82 3 9.26 3 12c0 4.97 4.03 9 9 9s9-4.03 9-9c0-2.74-1.23-5.18-3.17-6.83z'/%3E%3C/svg%3E"); } .icon-wifi { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2310b981'%3E%3Cpath d='M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.07 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z'/%3E%3C/svg%3E"); } /* ===== DOKUMENT ICONS ===== */ .icon-file { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M18,20H6V4H13V9H18V20Z'/%3E%3C/svg%3E"); } .icon-queue { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-1 9H9V9h10v2zm-4 4H9v-2h6v2zm4-8H9V5h10v2z'/%3E%3C/svg%3E"); } /* ===== INFO ICONS ===== */ .icon-info { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%233b82f6'%3E%3Cpath d='M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2M13,17H11V11H13M13,9H11V7H13'/%3E%3C/svg%3E"); } .icon-time { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.2,16.2L11,13V7H12.5V12.2L17,14.7L16.2,16.2Z'/%3E%3C/svg%3E"); } /* ===== ARROW ICONS ===== */ .icon-arrow-right { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z'/%3E%3C/svg%3E"); } .icon-arrow-down { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23374151'%3E%3Cpath d='M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z'/%3E%3C/svg%3E"); } /* ===== HOVER-STATES ===== */ .btn:hover .icon, .nav-item:hover .icon { opacity: 0.8; } /* ===== DARK MODE ===== */ @media (prefers-color-scheme: dark) { .icon-printer, .icon-print, .icon-home, .icon-settings, .icon-users, .icon-dashboard, .icon-plus, .icon-edit, .icon-refresh, .icon-file, .icon-queue, .icon-time, .icon-arrow-right, .icon-arrow-down { filter: brightness(2); } } /* ===== RESPONSIVE ICON-SIZES ===== */ @media (max-width: 768px) { .icon { width: 1.25rem; height: 1.25rem; } .icon-lg { width: 1.75rem; height: 1.75rem; } .icon-xl { width: 2.25rem; height: 2.25rem; } }