portal_publico/static/css/perfis-acesso.css

684 lines
12 KiB
CSS

.pa-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: var(--space-5);
gap: var(--space-4);
flex-wrap: wrap;
}
.pa-header h2 {
font-size: 1.15rem;
font-weight: 700;
}
.pa-toolbar {
display: flex;
align-items: center;
gap: var(--space-3);
}
.pa-search {
position: relative;
width: 260px;
}
.pa-search input {
width: 100%;
padding: var(--space-2) var(--space-3);
padding-right: var(--space-6);
border-radius: var(--radius-sm);
border: 1px solid var(--border-subtle);
background: var(--bg-surface);
color: var(--text-primary);
font-size: 0.85rem;
outline: none;
}
.pa-search input:focus {
border-color: var(--accent);
}
.pa-search svg {
position: absolute;
right: var(--space-3);
top: 50%;
transform: translateY(-50%);
color: var(--text-muted);
}
/* Tabela de perfis */
.pa-table-wrap {
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
overflow: hidden;
}
.pa-table {
width: 100%;
border-collapse: collapse;
}
.pa-table th {
text-align: left;
font-size: 0.72rem;
text-transform: uppercase;
letter-spacing: 0.04em;
color: var(--text-muted);
padding: var(--space-3) var(--space-4);
background: var(--bg-surface-raised);
border-bottom: 1px solid var(--border-subtle);
}
.pa-table td {
padding: var(--space-3) var(--space-4);
border-bottom: 1px solid var(--border-subtle);
font-size: 0.88rem;
color: var(--text-primary);
transition: background var(--transition-fast);
}
.pa-table tr:last-child td {
border-bottom: none;
}
.pa-table tr:hover td {
background: var(--card-bg-hover);
}
.pa-name-link {
color: var(--accent);
font-weight: 600;
}
.pa-name-link:hover {
text-decoration: underline;
}
.status-pill {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 2px 10px;
border-radius: var(--radius-pill);
font-size: 0.72rem;
font-weight: 700;
}
.status-pill--ativo {
color: #2f9e6e;
background: rgba(47, 158, 110, 0.14);
}
.status-pill--inativo {
color: var(--text-muted);
background: var(--bg-surface-raised);
}
.badge-total-access {
font-size: 0.62rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.03em;
color: var(--gold);
border: 1px solid var(--gold);
border-radius: var(--radius-pill);
padding: 1px 6px;
margin-left: var(--space-2);
}
.pa-row-actions {
display: flex;
gap: var(--space-1);
justify-content: flex-end;
}
.pa-table td:last-child {
text-align: right;
}
.pa-empty-row td {
text-align: center;
color: var(--text-muted);
padding: var(--space-6);
}
.pa-footer {
padding: var(--space-3) var(--space-4);
font-size: 0.78rem;
color: var(--text-muted);
border-top: 1px solid var(--border-subtle);
}
/* Modal "Nova Aplicação" — busca de aplicação/ferramenta + gerenciamento de
acesso por perfil (ver CLAUDE.md). Reaproveita .checklist-box (busca de
aplicação) e .pa-table (gerenciamento por perfil), só com estilos próprios
pra caber os dois estados dentro do mesmo .modal-card. */
.pa-app-modal-card {
max-width: 640px;
}
.pa-app-result-item {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 2px;
width: 100%;
padding: var(--space-2) var(--space-3);
border: none;
border-radius: var(--radius-sm);
background: transparent;
color: var(--text-primary);
text-align: left;
cursor: pointer;
transition: background var(--transition-fast);
}
.pa-app-result-item:hover {
background: var(--card-bg-hover);
}
.pa-app-result-item__label {
font-size: 0.9rem;
font-weight: 600;
}
.pa-app-result-item__module {
font-size: 0.76rem;
color: var(--text-muted);
}
.pa-app-manage-title {
font-size: 1rem;
font-weight: 700;
margin: var(--space-3) 0 var(--space-2);
}
.pa-app-manage-table-wrap {
max-height: 360px;
overflow-y: auto;
}
.pa-app-manage-table-wrap .pa-table th:not(:first-child),
.pa-app-manage-table-wrap .pa-table td:not(:first-child) {
text-align: center;
}
.pa-app-manage-table-wrap .pa-table td input[type="checkbox"] {
width: 16px;
height: 16px;
accent-color: var(--accent);
}
/* Tela de edição */
.pa-edit-card {
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
padding: var(--space-5);
margin-bottom: var(--space-5);
}
.pa-edit-card h2 {
margin-bottom: var(--space-4);
}
.ua-edit-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: var(--space-4);
flex-wrap: wrap;
padding-bottom: var(--space-4);
margin-bottom: var(--space-5);
border-bottom: 1px solid var(--border-subtle);
}
.ua-edit-header h2 {
margin-bottom: 0;
}
.ua-section + .ua-section {
margin-top: var(--space-5);
}
.ua-section-title {
font-size: 0.78rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
color: var(--text-muted);
margin-bottom: var(--space-3);
}
.pa-field-row.ua-permissions-row {
grid-template-columns: 1.6fr 1fr;
}
@media (max-width: 900px) {
.ua-permissions-row {
grid-template-columns: 1fr;
}
}
.pa-back {
display: inline-flex;
align-items: center;
gap: var(--space-2);
color: var(--text-secondary);
font-size: 0.85rem;
font-weight: 600;
margin-bottom: var(--space-4);
}
.pa-back:hover {
color: var(--accent);
}
.pa-field-row {
display: grid;
grid-template-columns: 140px 1fr;
gap: var(--space-4);
}
.pa-field-row--auto {
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.pa-field label {
display: block;
font-size: 0.78rem;
font-weight: 600;
color: var(--text-secondary);
margin-bottom: var(--space-2);
}
.pa-field .required {
color: var(--danger);
}
.pa-field-error {
min-height: 1em;
margin-top: var(--space-2);
font-size: 0.78rem;
color: var(--danger);
}
.pa-field input:not([type="checkbox"]):not([type="radio"]):not([type="file"]) {
width: 100%;
padding: var(--space-3);
border-radius: var(--radius-sm);
border: 1px solid var(--border-subtle);
background: var(--bg-canvas);
color: var(--text-primary);
font-size: 0.9rem;
outline: none;
}
.pa-field input:focus {
border-color: var(--accent);
}
.pa-field input[readonly] {
opacity: 0.65;
}
.pa-field select {
width: 100%;
padding: var(--space-3);
border-radius: var(--radius-sm);
border: 1px solid var(--border-subtle);
background: var(--bg-canvas);
color: var(--text-primary);
font-size: 0.9rem;
outline: none;
}
.pa-field select:focus {
border-color: var(--accent);
}
.ua-active-toggle {
flex-shrink: 0;
max-width: 360px;
}
.ua-inline-add {
display: flex;
gap: var(--space-2);
margin-top: var(--space-2);
}
.ua-inline-add input {
flex: 1;
}
.ua-liderados-field {
margin-top: var(--space-3);
max-width: 480px;
}
.ua-departamento-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-2);
}
.ua-departamento-item__actions {
display: flex;
gap: var(--space-1);
flex-shrink: 0;
}
.ua-departamento-action {
width: 22px;
height: 22px;
display: flex;
align-items: center;
justify-content: center;
border-radius: var(--radius-sm);
color: var(--text-muted);
transition: color var(--transition-fast), background var(--transition-fast);
}
.ua-departamento-action:hover {
color: var(--text-primary);
background: var(--bg-surface-raised);
}
.ua-departamento-action[data-dep-delete]:hover {
color: var(--danger);
}
/* Tabs */
.pa-tabs {
display: flex;
gap: var(--space-5);
border-bottom: 1px solid var(--border-subtle);
margin-bottom: var(--space-5);
}
.pa-tab {
padding: var(--space-3) 0;
font-size: 0.9rem;
font-weight: 600;
color: var(--text-muted);
border-bottom: 2px solid transparent;
margin-bottom: -1px;
}
.pa-tab.is-active {
color: var(--accent);
border-color: var(--accent);
}
.pa-tab-panel[hidden] {
display: none;
}
/* Permissões */
.pa-permissions {
display: grid;
grid-template-columns: 240px 1fr;
gap: var(--space-5);
align-items: start;
}
.pa-module-list {
display: flex;
flex-direction: column;
gap: var(--space-1);
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
padding: var(--space-2);
max-height: 480px;
overflow-y: auto;
}
.pa-module-item {
display: flex;
align-items: center;
gap: var(--space-3);
padding: var(--space-2) var(--space-3);
border-radius: var(--radius-sm);
font-size: 0.85rem;
font-weight: 600;
color: var(--text-secondary);
width: 100%;
text-align: left;
}
.pa-module-item:hover {
background: var(--bg-surface-raised);
color: var(--text-primary);
}
.pa-module-item.is-active {
background: var(--accent);
color: var(--accent-contrast);
}
.pa-module-item__index {
width: 22px;
height: 22px;
border-radius: var(--radius-sm);
background: var(--bg-surface-raised);
color: var(--text-secondary);
display: flex;
align-items: center;
justify-content: center;
font-size: 0.75rem;
flex-shrink: 0;
}
.pa-module-item.is-active .pa-module-item__index {
background: rgba(255, 255, 255, 0.25);
color: var(--accent-contrast);
}
.pa-module-item__label {
flex: 1;
}
.pa-module-item__check {
margin-left: auto;
color: var(--gold);
}
.pa-module-item__check[hidden] {
display: none;
}
.pa-tree-panel {
background: var(--bg-surface);
border: 1px solid var(--border-subtle);
border-radius: var(--radius-md);
padding: var(--space-4);
}
.pa-tree-search {
position: relative;
margin-bottom: var(--space-4);
}
.pa-tree-search input {
width: 100%;
padding: var(--space-2) var(--space-3);
padding-right: var(--space-6);
border-radius: var(--radius-sm);
border: 1px solid var(--border-subtle);
background: var(--bg-canvas);
color: var(--text-primary);
font-size: 0.85rem;
outline: none;
}
.pa-tree-search svg {
position: absolute;
right: var(--space-3);
top: 50%;
transform: translateY(-50%);
color: var(--text-muted);
}
.perm-node {
display: flex;
align-items: center;
gap: var(--space-2);
padding: var(--space-2) 0;
font-size: 0.88rem;
cursor: pointer;
}
.perm-node--root {
font-weight: 700;
color: var(--text-primary);
}
.perm-node--module {
padding-left: var(--space-5);
font-weight: 600;
color: var(--accent);
}
.perm-node--module label {
display: flex;
align-items: center;
gap: var(--space-2);
flex: 1;
}
.perm-node--group {
padding-left: var(--space-7);
font-weight: 600;
color: var(--text-primary);
}
.perm-node--group label {
display: flex;
align-items: center;
gap: var(--space-2);
flex: 1;
}
.perm-node--group.is-hidden {
display: none;
}
.perm-children--nested {
padding-left: calc(var(--space-7) + var(--space-4));
}
.perm-expand {
color: var(--text-muted);
transition: transform var(--transition-fast);
display: flex;
}
.perm-expand.is-open {
transform: rotate(90deg);
}
.perm-children {
padding-left: var(--space-7);
display: flex;
flex-direction: column;
}
.perm-children[hidden] {
display: none;
}
.perm-node--leaf {
color: var(--text-secondary);
}
.perm-node--leaf.is-hidden {
display: none;
}
.perm-node input[type="checkbox"] {
width: 16px;
height: 16px;
accent-color: var(--accent);
}
/* Usuários do escritório */
.pa-users-add {
display: flex;
gap: var(--space-2);
margin-bottom: var(--space-4);
max-width: 420px;
}
.pa-users-add select {
flex: 1;
padding: var(--space-2) var(--space-3);
border-radius: var(--radius-sm);
border: 1px solid var(--border-subtle);
background: var(--bg-canvas);
color: var(--text-primary);
font-size: 0.88rem;
outline: none;
}
.pa-users-add select:focus {
border-color: var(--accent);
}
.pa-user-login {
color: var(--text-muted);
font-weight: 400;
}
.pa-users-empty {
color: var(--text-muted);
font-size: 0.85rem;
}
.pa-user-list {
display: flex;
flex-direction: column;
gap: var(--space-2);
max-width: 420px;
}
.pa-user-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: var(--space-2) var(--space-3);
border-radius: var(--radius-sm);
background: var(--bg-surface-raised);
font-size: 0.88rem;
}
.pa-user-remove {
color: var(--text-muted);
}
.pa-user-remove:hover {
color: var(--danger);
}
.pa-edit-actions {
display: flex;
gap: var(--space-3);
justify-content: flex-end;
margin-top: var(--space-5);
}
@media (max-width: 900px) {
.pa-field-row {
grid-template-columns: 1fr;
}
.pa-permissions {
grid-template-columns: 1fr;
}
}