﻿body {
    font-size: small !important;
}

.brand-link .brand-image {
    max-height: 48px;
    float: none;
}


.logo {
    background-color: #f4f6f9 !important;
    padding: 5px;
    border-bottom: 2px solid #dee2e6 !important;
    text-align: center;
}

    .logo img {
        max-height: 45px;
        float: none;
    }

.logo-grupo {
    background-color: #f4f6f9 !important;
    border-top: 2px solid #dee2e6 !important;
    text-align: center;
}

    .logo-grupo img {
        max-height: 45px;
        float: none;
    }

/* Modo Noturno */
body.dark-mode .logo,
body.dark-mode .logo-grupo {
    background-color: transparent !important;
    background: transparent !important;
    border-color: #4b545c !important;
}

.dark-mode input:-webkit-autofill,
.dark-mode input:-webkit-autofill:focus,
.dark-mode input:-webkit-autofill:hover,
.dark-mode select:-webkit-autofill,
.dark-mode select:-webkit-autofill:focus,
.dark-mode select:-webkit-autofill:hover,
.dark-mode textarea:-webkit-autofill,
.dark-mode textarea:-webkit-autofill:focus,
.dark-mode textarea:-webkit-autofill:hover {
    -webkit-text-fill-color: #343a40 !important;
}

/* 🔴 Modo Noturno — campo bloqueado precisa PARECER bloqueado.

   No tema claro o Bootstrap pinta `readonly`/`disabled` de #e9ecef, e o campo se lê como inerte. No
   escuro isso se perde: `.dark-mode .form-control` do AdminLTE carrega DEPOIS do bootstrap.css, com a
   mesma especificidade, e devolve o fundo normal.

   Medido em 2026-08-13 na tela de Roteiro de Manobras: `Ano` (readonly) e `Data de Elaboração` (editável)
   tinham background, cor E borda IDÊNTICOS — rgb(52,58,64) nos dois. Não era distinção fraca; era
   distinção nenhuma.

   ⚠️ O #454d55 não foi escolhido no olho: é a cor que o PRÓPRIO tema já usa para bloqueado, medida no
   `.select2-container--disabled` desta mesma tela. Assim os campos e os combos bloqueados do formulário
   passam a falar a mesma língua, em vez de cada controle ter o seu cinza.

   🔴 OS DOIS `:not()` NÃO SÃO DECORAÇÃO — SÃO ESPECIFICIDADE.

   A regra do AdminLTE é `.dark-mode .form-control:not(.form-control-navbar):not(.form-control-sidebar)`,
   e o argumento de cada `:not()` CONTA: são 0,4,0. Escrito do jeito óbvio,
   `.dark-mode .form-control[readonly]` dá 0,3,0 e PERDE por um ponto — ficou carregado, depois do
   AdminLTE na ordem, casando com o elemento, e mesmo assim sem efeito nenhum. Custou uma investigação
   até achar qual dos 6 seletores daquela regra casava.

   Repetir a cadeia (0,5,0) em vez de apelar para `!important`: assim a regra continua legível e continua
   perdendo de quem tiver motivo real para ganhar. */
.dark-mode .form-control:not(.form-control-navbar):not(.form-control-sidebar)[readonly],
.dark-mode .form-control:not(.form-control-navbar):not(.form-control-sidebar):disabled,
.dark-mode .custom-select:disabled {
    background-color: #454d55;
    border-color: #6c757d;
}

.dark-mode .form-control:disabled,
.dark-mode .custom-select:disabled {
    cursor: not-allowed;
}

/* O mesmo defeito no select2 "readonly" simulado logo abaixo: o #e9ecef de lá é cinza-claro, que no
   escuro vira uma caixa acesa no meio do formulário. */
.dark-mode .select2-container--readonly .select2-selection--single {
    background-color: #454d55;
}


/*.logo {
    background-color: #f4f6f9 !important;
    padding: 5px;
    border-bottom: 1px solid #dee2e6 !important;
}

.logo-grupo {
    border-bottom: 1px solid #4f5962;
    background: #ffffff;
    width: 250px;
    margin-left: -8px;
}

    .logo-grupo .image {
        display: inline-block;
        padding-left: 0.8rem;
    }

    .logo-grupo img {
        max-height: 48px;
        margin-top: 10px;
    }*/

.sem-label {
    margin-top: 28px;
}

.multilinhas {
    resize: vertical;
    min-height: 100px;
}

.material-switch {
    /*margin: 5px 0 0px 15px;*/
}

    .material-switch > label {
        cursor: pointer;
        height: 0px;
        position: relative;
        width: 40px;
    }


    .material-switch > input[type="checkbox"] {
        display: none;
    }

    .material-switch > label::before {
        /* background-color: #dc3545; */
        /* border-color: #921925; */
        box-shadow: inset 0px 0px 10px rgb(0 0 0 / 50%);
        border-radius: 8px;
        content: '';
        height: 16px;
        margin-top: -8px;
        position: absolute;
        transition: all 0.4s ease-in-out;
        width: 30px;
    }

    .material-switch > label::after {
        /* background: #7c151f; */
        border-radius: 16px;
        box-shadow: 0px 0px 5px rgb(0 0 0 / 65%);
        content: '';
        height: 12px;
        left: 3px;
        margin-top: -2px;
        position: absolute;
        top: -4px;
        transition: all 0.3s ease-in-out;
        width: 12px;
    }

    .material-switch > input[type="checkbox"]:checked + label::before {
        /*background: inherit;*/
        background-color: #28a745;
        border-color: #145523;
        /*opacity: 0.5;*/
    }

    .material-switch > input[type="checkbox"]:checked + label::after {
        /*background: inherit;*/
        background-color: #86e29b;
        left: 16px;
    }

/*.label-success {
    background-color: #5cb85c;
}*/

.logo-login {
    max-width: 250px;
}

ul {
    list-style: none;
    margin-bottom: 0;
}

.dx-treelist-table > tbody > .dx-header-row, .dx-header-row {
    color: #fff;
    background-color: #212529;
    border-color: #383f45;
}

.dx-state-hover {
    background-color: #cfcfcf;
}

.dx-selection {
    background-color: transparent;
}

table{
    width:100% !important;
}

.select2 {
    width: 100% !important;
}

/* Aplica estilo para simular um campo readonly */
.select2-container--readonly .select2-selection--single {
    background-color: #e9ecef;
    cursor: not-allowed;
    pointer-events: none;
}

.notyf {
    padding-top: 60px !important;
    padding-bottom: 60px !important;
}

.tui-image-editor-header-logo,
#tui-image-editor-diagrama-unifilar .tui-image-editor-header-buttons,
/*#tui-image-editor-diagrama-unifilar .tui-image-editor-help-menu,*/
#tui-image-editor-diagrama-unifilar .tie-btn-zoomIn,
#tui-image-editor-diagrama-unifilar .tie-btn-zoomOut {
    display: none;
}

.tui-image-editor-size-wrap {
    height: 70% !important;
}

.badge-custom {
    transform: translate(-10%, -40%);
    position: absolute !important;
}

.modal-dialog {
        overflow-y: initial !important;
    }

    .modal-content {
        overflow-x: hidden;
    }

    /* O fundo opaco e o que faz o Chrome tratar esta rolagem como camada propria. Transparente, o
       conteudo e pintado na camada do pai e repintado a cada movimento, enquanto a grade DevExtreme e
       o botao "Adicionar" ganham camada so deles e rolam sozinhos -- na maquina de um cliente a
       repintura nao vinha e a grade passava por cima dos campos (docs/specs/0018-modal-rolagem-composta).
       `inherit` nao serve: o pai e o <form>, transparente. As cores sao as do .modal-content. */
    .modal-body {
        max-height: calc(100vh - 200px);
        overflow-y: auto;
        overflow-x: hidden;
        word-wrap: break-word;
        word-break: break-word;
        background-color: #fff;
    }

    .dark-mode .modal-body {
        background-color: #343a40;
    }

    .modal-body img {
        max-width: 100%;
        height: auto;
    }

    .modal-body table {
        width: 100% !important;
        table-layout: fixed;
        word-break: break-word;
    }

.btn-group-vertical-spacing {
    display: flex;
    flex-wrap: wrap;
    gap: 4px; /* espaçamento entre linhas e colunas */
}

    .btn-group-vertical-spacing .btn {
        margin: 2px 0; /* espaçamento vertical mínimo */
    }

.dx-state-hover {
    background-color: transparent !important;
}

.td-ordem {
    width: 100px;
    text-align: center;
    vertical-align: middle !important;
    font-weight: bold;
}

    .td-ordem .ordem-controls {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: .35rem; /* espaço entre itens (setas / número) */
    }

    .td-ordem strong {
        display: inline-flex;
        justify-content: center;
        align-items: center;
        width: 6ch; /* 6 caracteres de largura (ex.: 1.1.1.1) */
        font-weight: 700;
        line-height: 1;
    }

.badge-status {
    font-size: 12px !important;
}

/* ─────────────────────────────────────────────────────────────────────────────
   Nome do usuario na barra lateral.

   O AdminLTE colore o texto da sidebar por SELETOR DE ELEMENTO:
       [class*="sidebar-dark-"] .sidebar a { color: #c2c7d0; }
   Nao ha regra para .sidebar, para .user-panel nem para .info — a cor chegava
   ali so porque o nome estava dentro de um <a>.

   Em 2026-09-01 aquele <a href="#"> virou <span> (commit 14bab561), para tirar
   foco de teclado de um link que nao levava a lugar nenhum. Correto por
   acessibilidade, e custou a cor: sem a tag <a>, o <span> passou a herdar do
   body — #212529 sobre o fundo da sidebar, contraste 1,3:1 no tema claro, que
   e o padrao. Antes eram 6,8:1.

   🔴 O rig de paridade NAO pega isso: o HTML mudou exatamente como a ficha de
   diferencas previa. A consequencia e de cascata, nao de marcacao.

   Uma cor so serve para os dois temas porque o <aside> e sempre
   "sidebar-dark-secondary", fixo no _Sidebar.cshtml — o dark-mode nao o troca.
   ───────────────────────────────────────────────────────────────────────────── */
[class*="sidebar-dark-"] .user-panel .info > span {
    color: #c2c7d0;
}

/* Celula de grade que mostra um item por linha: o servidor junta os itens com
   quebra de linha e o texto continua texto (sem HTML montado), so a quebra e respeitada. */
.dx-datagrid .celula-um-por-linha {
    white-space: pre-line;
}

/* Na grade de usuarios a coluna Perfis deixa linhas altas; o resto da linha
   acompanha o meio da celula em vez de ficar colado no topo. */
#grid-usuarios .dx-datagrid-rowsview .dx-data-row > td {
    vertical-align: middle;
}
.user-status{display:inline-block;font-size:11px;border-radius:20px;padding:3px 10px;white-space:nowrap}.user-status.active{background:#63d5b1;color:#153c32}.user-status.inactive{background:#67434a;color:#ffd4da}
