/** * MandateNavigation Styles * * Hierarchische Navigation: * System → Mandant → Feature → Instanz → Views */ .navigation { display: flex; flex-direction: column; gap: 0.25rem; padding: 0 0.5rem; } /* Separator */ .separator { height: 1px; background: var(--border-color, #e0e0e0); margin: 0.75rem 0.5rem; } /* Section (System, Admin) */ .section { margin-bottom: 0.5rem; } .sectionHeader { padding: 0.5rem 0.75rem; } .sectionTitle { font-size: 0.65rem; font-weight: 600; letter-spacing: 0.1em; color: var(--text-tertiary, #888); text-transform: uppercase; } .sectionContent { display: flex; flex-direction: column; gap: 2px; } /* Nav Item (Links) */ .navItem { display: flex; align-items: center; gap: 0.75rem; padding: 0.625rem 0.75rem; border-radius: 6px; color: var(--text-secondary, #666); text-decoration: none; font-size: 0.875rem; transition: all 0.15s ease; } .navItem:hover { background: var(--hover-bg, rgba(0, 0, 0, 0.04)); color: var(--text-primary, #1a1a1a); } .navItem.active { background: var(--primary-light, #e0e7ff); color: var(--primary-color, #2563eb); font-weight: 500; } .navIcon { font-size: 1rem; flex-shrink: 0; } /* Mandate Group */ .mandateGroup { margin-bottom: 0.25rem; } .mandateHeader { display: flex; align-items: center; gap: 0.5rem; width: 100%; padding: 0.625rem 0.75rem; border: none; border-radius: 6px; background: transparent; cursor: pointer; font-size: 0.875rem; font-weight: 600; color: var(--text-primary, #1a1a1a); transition: background 0.15s ease; } .mandateHeader:hover { background: var(--hover-bg, rgba(0, 0, 0, 0.04)); } .mandateLabel { flex: 1; text-align: left; } .mandateContent { margin-left: 0.25rem; padding-left: 0.75rem; border-left: 2px solid var(--border-color, #e0e0e0); } .activeMandate > .mandateContent { border-left-color: var(--primary-color, #2563eb); } /* Feature Group */ .featureGroup { margin-bottom: 0.25rem; } .featureHeader { display: flex; align-items: center; gap: 0.5rem; width: 100%; padding: 0.5rem 0.75rem; border: none; border-radius: 6px; background: transparent; cursor: pointer; font-size: 0.8125rem; color: var(--text-secondary, #666); transition: background 0.15s ease; } .featureHeader:hover { background: var(--hover-bg, rgba(0, 0, 0, 0.04)); } .featureIcon { display: flex; align-items: center; font-size: 0.875rem; } .featureLabel { flex: 1; text-align: left; font-weight: 500; } .instanceCount { font-size: 0.6875rem; padding: 0.125rem 0.375rem; background: var(--surface-color, #f0f0f0); border-radius: 9999px; color: var(--text-tertiary, #888); } .featureContent { margin-left: 0.25rem; padding-left: 0.75rem; } .activeFeature > .featureHeader { color: var(--primary-color, #2563eb); } /* Instance Group */ .instanceGroup { margin-bottom: 0.125rem; } .instanceHeader { display: flex; align-items: center; gap: 0.375rem; width: 100%; padding: 0.375rem 0.5rem; border: none; border-radius: 6px; background: transparent; cursor: pointer; font-size: 0.75rem; color: var(--text-secondary, #666); transition: background 0.15s ease; } .instanceHeader:hover { background: var(--hover-bg, rgba(0, 0, 0, 0.04)); } .instanceLabel { flex: 1; text-align: left; font-weight: 500; } .roleBadge { font-size: 0.625rem; padding: 0.0625rem 0.375rem; background: var(--surface-color, #f0f0f0); border-radius: 9999px; color: var(--text-tertiary, #888); text-transform: uppercase; letter-spacing: 0.025em; } .instanceViews { margin-left: 0.25rem; padding-left: 1rem; } .activeInstance > .instanceHeader { color: var(--primary-color, #2563eb); background: var(--primary-light, #e0e7ff); } .activeInstance .roleBadge { background: var(--primary-color, #2563eb); color: white; } /* View Item */ .viewItem { display: block; padding: 0.375rem 0.5rem; border-radius: 4px; color: var(--text-secondary, #666); text-decoration: none; font-size: 0.75rem; transition: all 0.15s ease; } .viewItem:hover { background: var(--hover-bg, rgba(0, 0, 0, 0.04)); color: var(--text-primary, #1a1a1a); } .viewItem.active { background: var(--primary-light, #e0e7ff); color: var(--primary-color, #2563eb); font-weight: 500; } /* Chevron */ .chevron { font-size: 0.625rem; color: var(--text-tertiary, #888); flex-shrink: 0; } /* Loading State */ .loadingState { display: flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 2rem 1rem; color: var(--text-tertiary, #888); font-size: 0.8125rem; } .spinner { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* Empty State */ .emptyState { padding: 1.5rem 1rem; text-align: center; color: var(--text-secondary, #666); font-size: 0.875rem; } .emptyHint { font-size: 0.75rem; color: var(--text-tertiary, #888); margin-top: 0.5rem; } /* Rename button (inline, hover-visible via TreeNavigation nodeActions) */ .renameButton { display: flex; align-items: center; justify-content: center; width: 1.25rem; height: 1.25rem; padding: 0; border: none; border-radius: 3px; background: transparent; color: var(--text-tertiary, #888); cursor: pointer; transition: color 0.15s ease, background 0.15s ease; } .renameButton:hover { color: var(--primary-color, #2563eb); background: var(--hover-bg, rgba(0, 0, 0, 0.06)); } /* Dark Theme */ :global(.dark-theme) .separator { background: var(--border-dark, #333); } :global(.dark-theme) .sectionTitle { color: var(--text-tertiary-dark, #666); } :global(.dark-theme) .navItem { color: var(--text-secondary-dark, #aaa); } :global(.dark-theme) .navItem:hover { background: var(--hover-bg-dark, rgba(255, 255, 255, 0.06)); color: var(--text-primary-dark, #fff); } :global(.dark-theme) .navItem.active { background: var(--primary-dark-bg, #1e3a5f); color: var(--primary-light, #93c5fd); } :global(.dark-theme) .mandateHeader { color: var(--text-primary-dark, #fff); } :global(.dark-theme) .mandateHeader:hover { background: var(--hover-bg-dark, rgba(255, 255, 255, 0.06)); } :global(.dark-theme) .mandateContent { border-left-color: var(--border-dark, #444); } :global(.dark-theme) .activeMandate > .mandateContent { border-left-color: var(--primary-light, #93c5fd); } :global(.dark-theme) .featureHeader { color: var(--text-secondary-dark, #aaa); } :global(.dark-theme) .featureHeader:hover { background: var(--hover-bg-dark, rgba(255, 255, 255, 0.06)); } :global(.dark-theme) .activeFeature > .featureHeader { color: var(--primary-light, #93c5fd); } :global(.dark-theme) .instanceCount, :global(.dark-theme) .roleBadge { background: var(--surface-dark, #2a2a2a); color: var(--text-tertiary-dark, #888); } :global(.dark-theme) .instanceHeader { color: var(--text-secondary-dark, #aaa); } :global(.dark-theme) .instanceHeader:hover { background: var(--hover-bg-dark, rgba(255, 255, 255, 0.06)); } :global(.dark-theme) .activeInstance > .instanceHeader { color: var(--primary-light, #93c5fd); background: var(--primary-dark-bg, #1e3a5f); } :global(.dark-theme) .activeInstance .roleBadge { background: var(--primary-color, #2563eb); color: white; } :global(.dark-theme) .viewItem { color: var(--text-secondary-dark, #aaa); } :global(.dark-theme) .viewItem:hover { background: var(--hover-bg-dark, rgba(255, 255, 255, 0.06)); color: var(--text-primary-dark, #fff); } :global(.dark-theme) .viewItem.active { background: var(--primary-dark-bg, #1e3a5f); color: var(--primary-light, #93c5fd); }