/* Globale Variablen für einfachere Wartung */ :host { --sidebar-width-expanded: 280px; --sidebar-width-collapsed: 96px; --sidebar-padding: 1rem; --sidebar-margin: 1rem; --transition-speed: 0.35s; --transition-ease: cubic-bezier(0.4, 0, 0.2, 1); } /* 1. Der Sidebar-Container */ .sidebar { position: relative; display: flex; flex-direction: column; gap: 2rem; width: var(--sidebar-width-expanded); height: calc(100vh - (var(--sidebar-margin) * 2)); margin: var(--sidebar-margin); padding: var(--sidebar-padding); background-color: #fff; border: 1px solid #e5e7eb; border-radius: 1rem; transition: width var(--transition-speed) var(--transition-ease); } /* 2. Der Header-Bereich */ .sidebar-header { display: flex; align-items: center; gap: 0.75rem; padding: 0.5rem; height: auto; } .sidebar-logo { flex-shrink: 0; width: 32px; height: 32px; color: #111827; } .sidebar-title { margin: 0; font-size: 1.25rem; font-weight: 600; white-space: nowrap; clip-path: inset(0 0% 0 0); transition: clip-path var(--transition-speed) var(--transition-ease); } /* 3. Navigation und Footer */ .sidebar-nav { flex-grow: 1; display: flex; flex-direction: column; gap: 0.5rem; } .sidebar-footer { margin-top: auto; } .nav-item { display: flex; align-items: center; padding: 0.75rem 1rem; border-radius: 0.5rem; text-decoration: none; font-weight: 500; color: #4b5563; white-space: nowrap; transition: background-color 0.2s, color 0.2s; overflow: hidden; position: relative; } .nav-item:hover { background-color: #f3f4f6; } .nav-item.active { background-color: #3b82f6; color: #fff; } .nav-item app-icon { font-size: 1.25rem; width: 32px; flex-shrink: 0; position: relative; z-index: 2; /* NEU: Fester Start-Hintergrund (Farbe der Sidebar) statt 'inherit' */ background-color: #fff; /* NEU: Fügt eine sanfte Transition für den Farbwechsel hinzu */ transition: background-color 0.2s; } .nav-item span { white-space: nowrap; clip-path: inset(0 0 0 0); margin-left: 0.75rem; transition: clip-path 0.3s var(--transition-ease), margin-left 0.3s var(--transition-ease); position: relative; z-index: 1; } /* 4. Positionierung des Toggle-Buttons */ .sidebar-toggle-btn { position: absolute; border-radius: 50%; top: calc(var(--sidebar-padding) + 4px); right: var(--sidebar-padding); transform: rotate(180deg); transition: top var(--transition-speed) var(--transition-ease), right var(--transition-speed) var(--transition-ease), transform var(--transition-speed) var(--transition-ease), box-shadow var(--transition-speed) var(--transition-ease); } /* 5. Stile für den eingeklappten Zustand (.collapsed) */ .sidebar.collapsed { width: var(--sidebar-width-collapsed); } .sidebar.collapsed .sidebar-title { clip-path: inset(0 100% 0 0); pointer-events: none; } .sidebar.collapsed .nav-item span { clip-path: inset(0 100% 0 0); margin-left: -20px; pointer-events: none; } .sidebar.collapsed .sidebar-toggle-btn { right: -18px; transform: rotate(0deg); } .nav-item:hover app-icon { background-color: #f3f4f6; /* Derselbe Hintergrund wie .nav-item:hover */ } .nav-item.active app-icon { background-color: #3b82f6; /* Derselbe Hintergrund wie .nav-item.active */ }