/* Card styling */ .card { border-radius: 0.5rem; border: none; box-shadow: 0 2px 6px rgba(0,0,0,0.08); } /* Scrollable table wrapper */ .scrollable-table { max-height: 450px; /* adjustable */ overflow-y: auto; border-radius: 0.5rem; } /* Table styles */ .permission-table { min-width: 100%; border-radius: 0.5rem; } .permission-table thead th { background-color: #f3f4f6; color: #1f2937; font-weight: 600; border-bottom: 2px solid #e5e7eb; } .permission-table tbody tr:hover { background-color: #eef2ff; } .permission-table td:last-child { text-align: center; } /* Expand / collapse icon */ .expand-icon { cursor: pointer; color: #3b82f6; transition: transform 0.2s; } .expand-icon:hover { transform: scale(1.2); } /* Recursive permission cells */ .permission-cell { position: relative; padding-left: calc(var(--level) * 22px + 14px); font-weight: 500; background-color: rgba(59, 130, 246, calc(var(--level) * 0.08)); color: #111827; font-size: calc(14px - var(--level) * 0.5px); transition: background-color 0.2s; } .permission-cell::before { content: ''; position: absolute; left: calc(var(--level) * 22px); top: 0; bottom: 0; width: 2px; background-color: #9ca3af; } /* Scrollable ng-select dropdown */ ::ng-deep ng-dropdown-panel { max-height: 250px; overflow-y: auto; box-shadow: 0 4px 12px rgba(0,0,0,0.1); border-radius: 0.5rem; z-index: 1055; } /* Button styling */ .btn-primary { background-color: #3b82f6; border-color: #3b82f6; font-weight: 500; transition: background-color 0.2s; } .btn-primary:hover { background-color: #2563eb; border-color: #2563eb; } /* Responsive adjustments */ @media (max-width: 768px) { .col-md-6 { width: 100%; } .permission-table td, .permission-table th { font-size: 13px; } }