/* ---------------------------------------------------------------------------
   Gestao de acessos — handoff `ACESSOS_PORTAL.md`.

   Veste `layouts/erp/gestao_acessos.py` e o que o `callbacks_gestao_acessos.py` monta.
   Todas as classes nascem naquela tela, entao, como o `tema_simulador_v2.css`, este
   arquivo nao precisa do ancoradouro `:root:has(#sidebar.sidebar_v2)`.

   Os cartoes de permissao reaproveitam o `cartoes_modo_v2` do simulador — sao o mesmo
   componente (radio com titulo e descricao). O que muda aqui vai num seletor de **duas
   classes**, e nao por ordem de arquivo: `tema_acessos_v2.css` carrega antes do
   `tema_simulador_v2.css` na ordem alfabetica, entao empate de especificidade iria para
   o outro lado.

   Tons destrutivos: os `--v-erro-*` do `tema_conteudo_v2.css` sao mais claros (fundo de
   aviso). Aqui o vermelho tambem preenche botao, entao ele tem um token proprio.
   --------------------------------------------------------------------------- */

:root {
    --v-destrutivo: #C4553F;
    --v-destrutivo-hover: #A94734;
    --v-destrutivo-tint: #FDF6F4;
    --v-destrutivo-borda: #F0D5D0;
}

/* ============================================================ ESQUELETO */

/* Largura cheia, como o resto do portal. O handoff previa uma coluna de 960px
   centralizada — funciona no mock, que nao tem a barra de abas nem a sidebar por perto,
   mas no portal ela desalinha o titulo de tudo que esta acima. */
.coluna_acessos_v2 {
    font-family: Manrope, sans-serif;
}

.cabecalho_acessos_v2 {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 6px;
}

.titulo_acessos_v2 {
    font: 800 20px Manrope, sans-serif;
    color: var(--v-tab-texto);
    letter-spacing: -.3px;
}

.btn_novo_acesso_v2 {
    height: 44px;
    border-radius: 12px;
    font: 800 13.5px Manrope, sans-serif;
}

.linha_empresa_v2 {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 18px;
}

.rotulo_empresa_v2 {
    font: 500 13.5px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
}

.select_empresa_v2 {
    min-width: 320px;
}

.select_empresa_v2 input {
    height: 42px;
    border-radius: 10px;
    border: 1px solid var(--v-borda-clara);
    font: 800 13px Manrope, sans-serif;
    color: var(--v-verde-escuro);
}

/* ============================================================ TABELA

   Grid e nao `DataTable`: a linha tem avatar, pill e botao, e uma tabela do Dash so
   entrega texto. `.6fr` na ultima coluna e o suficiente para o quadrado de 34px. */

.tabela_acessos_v2 {
    background: #fff;
    border: 1px solid var(--v-borda-clara);
    border-radius: 10px;
    overflow: hidden;
}

.linha_acesso_v2 {
    display: grid;
    grid-template-columns: 2fr 1.8fr 1fr .6fr;
    align-items: center;
    border-bottom: 1px solid var(--v-tab-divisoria);
}

.linha_acesso_v2:last-child {
    border-bottom: none;
}

.cabecalho_acessos_tabela_v2 {
    background: var(--v-tab-cabecalho);
    border-bottom: 1px solid var(--v-borda-clara);
}

.cabecalho_acessos_tabela_v2 .celula_acesso_v2 {
    padding: 13px 16px;
    font: 800 13px Manrope, sans-serif;
    color: var(--v-verde-escuro);
}

.celula_acesso_v2 {
    padding: 14px 16px;
    min-width: 0;
    font: 500 13px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
}

.celula_email_v2 {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.celula_usuario_v2 {
    display: flex;
    align-items: center;
    gap: 12px;
}

.celula_acoes_v2 {
    display: flex;
    justify-content: flex-end;
}

.avatar_acesso_v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    flex: none;
    border-radius: 50%;
    background: var(--v-tint);
    font: 800 13px Manrope, sans-serif;
    color: var(--v-verde-escuro);
}

.avatar_grande_v2 {
    width: 52px;
    height: 52px;
    font-size: 17px;
}

.nome_acesso_v2 {
    font: 700 13.5px Manrope, sans-serif;
    color: var(--v-tab-texto);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Convite pendente esfria a linha inteira, e nao so um rotulo: o acesso ainda nao subiu a
   elevacao de quem ja entra. */
.linha_convidado_v2 {
    background: var(--v-tab-hover);
}

.status_acesso_v2 {
    margin-top: 2px;
    font: 600 11px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
    letter-spacing: .3px;
    text-transform: uppercase;
}

/* A pill cheia e a de nivel completo. Estado (convidado) nao vira pill: estado nao e
   poder, e duas pills lado a lado competiriam pela mesma leitura. */
.pill_permissao_v2 {
    display: inline-block;
    padding: 4px 10px;
    border: 1px solid var(--v-verde-escuro);
    border-radius: 20px;
    background: var(--v-verde-escuro);
    color: #fff;
    font: 700 10.5px Manrope, sans-serif;
    letter-spacing: .4px;
    white-space: nowrap;
}

.pill_consulta_v2 {
    background: transparent;
    color: var(--v-verde-escuro);
}

.btn_engrenagem_v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: var(--v-tab-cabecalho);
    color: var(--v-texto-inativo);
    cursor: pointer;
    transition: background-color .15s;
}

.btn_engrenagem_v2:hover {
    background: var(--v-tint);
}

/* ============================================================ ESTADO VAZIO */

.vazio_acessos_v2 {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 64px 24px;
    border: 1px solid var(--v-borda-clara);
    border-radius: 10px;
}

.icone_vazio_acessos_v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 96px;
    height: 96px;
    border-radius: 50%;
    background: var(--v-tint);
    color: var(--v-verde-escuro);
}

.titulo_vazio_acessos_v2 {
    margin-top: 20px;
    font: 800 18px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.apoio_vazio_acessos_v2 {
    max-width: 340px;
    margin-top: 8px;
    font: 500 13.5px/1.6 Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
}

/* ============================================================ MODAIS */

.painel_modal_acesso_v2 {
    border: 0;
    border-radius: 14px;
    box-shadow: 0 24px 64px rgba(10, 30, 24, .25);
}

.painel_modal_acesso_v2 .modal-body {
    padding: 26px 28px;
    font-family: Manrope, sans-serif;
}

.titulo_modal_acesso_v2 {
    font: 800 18px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.apoio_modal_acesso_v2 {
    margin-top: 6px;
    font: 500 13px/1.55 Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
}

.campos_acesso_v2 {
    display: flex;
    flex-direction: column;
    gap: 14px;
    margin-top: 20px;
}

.rotulo_campo_acesso_v2 {
    margin-bottom: 7px;
    font: 700 12px Manrope, sans-serif;
    color: var(--v-verde-escuro);
    letter-spacing: .6px;
    text-transform: uppercase;
}

.campo_acesso_v2.form-control {
    height: 46px;
    border-radius: 10px;
    border: 1px solid var(--v-borda-input);
    font: 600 13.5px Manrope, sans-serif;
    color: var(--v-tab-texto);
}

.campo_acesso_v2.form-control:focus {
    border-color: var(--v-verde-escuro);
    box-shadow: none;
}

/* Duas classes de proposito — ver o comentario do topo. */
.cartoes_modo_v2.cartoes_permissao_v2 {
    flex-direction: column;
    gap: 8px;
}

.cartoes_modo_v2.cartoes_permissao_v2 .form-check {
    flex: none;
    align-items: center;
    border-radius: 10px;
    padding: 12px 14px;
}

.cartoes_modo_v2.cartoes_permissao_v2 .form-check:has(.form-check-input:checked) {
    padding: 11.5px 13.5px;
}

.rodape_modal_acesso_v2 {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    margin-top: 22px;
}

.btn_cancelar_acesso_v2,
.btn_acao_acesso_v2,
.btn_remover_acesso_v2 {
    height: 44px;
    border-radius: 10px;
    font: 800 13.5px Manrope, sans-serif;
}

.btn_cancelar_acesso_v2 {
    border-width: 1.5px;
    font-weight: 700;
    font-size: 13px;
}

.topo_config_acesso_v2 {
    display: flex;
    gap: 14px;
    align-items: center;
    margin-bottom: 20px;
}

.email_modal_acesso_v2 {
    margin-top: 2px;
    font: 500 12.5px Manrope, sans-serif;
    color: var(--v-tab-texto-sub);
}

/* ---- remocao ---- */

.cartao_remover_v2 {
    display: flex;
    gap: 11px;
    align-items: center;
    margin-top: 16px;
    padding: 12px 14px;
    border: 1px solid var(--v-destrutivo-borda);
    border-radius: 10px;
    background: var(--v-destrutivo-tint);
    color: var(--v-destrutivo);
    font: 700 13px Manrope, sans-serif;
    cursor: pointer;
}

.topo_confirmacao_v2 {
    display: flex;
    gap: 14px;
    align-items: flex-start;
}

.icone_confirmacao_v2 {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    flex: none;
    border-radius: 12px;
    background: var(--v-destrutivo-tint);
    color: var(--v-destrutivo);
}

.destaque_confirmacao_v2 {
    color: var(--v-tab-texto);
}

/* O `dmc.Button` nao tem variante destrutiva no tema; a cor entra aqui. */
.btn_remover_acesso_v2 {
    background: var(--v-destrutivo);
    color: #fff;
    border: 0;
}

.btn_remover_acesso_v2:hover {
    background: var(--v-destrutivo-hover);
}

/* ============================================================ ESTREITO */

@media (max-width: 767.98px) {
    /* Quatro colunas nao cabem: a linha vira bloco, com o botao no canto. */
    .linha_acesso_v2 {
        grid-template-columns: 1fr auto;
        gap: 4px 12px;
        padding: 12px 4px;
    }

    .cabecalho_acessos_tabela_v2 {
        display: none;
    }

    .celula_acesso_v2 {
        padding: 2px 12px;
    }

    .celula_usuario_v2,
    .celula_acoes_v2 {
        padding-top: 10px;
    }

    .celula_acoes_v2 {
        grid-row: 1 / span 3;
        align-items: flex-start;
    }

    .select_empresa_v2 {
        min-width: 0;
        width: 100%;
    }
}
