/*
 * Tema do módulo Implantação — ativo quando <html> tem a classe
 * `implantacao-mode` (aplicada por Scripts/eam/implantacao/shared/services/
 * implantacao-context.run.js sincronizado com window.location.pathname).
 *
 * Aproxima visualmente o SmartAdmin Dark do antigo Treetech.Implantacao.WebUI:
 *   - Aside fixo à esquerda (fundo quase-preto #333) com user-info e menu
 *     aninhado (Administrativo + Implantação, Relatórios em sub-grupo).
 *   - Header próprio escuro (#31343C) substituindo o #aam-menu do EAM.
 *   - Ribbon com breadcrumb.
 *   - Conteúdo em fundo claro cinza.
 *   - Tipografia Open Sans (mesma fonte Google usada pelo SmartAdmin original).
 *
 * Fora do modo implantacao, os componentes eam.implantacao.* ficam
 * escondidos — comportamento padrão via `html:not(.implantacao-mode)`.
 */

/* ------------------------------------------------------------------ */
/* 1. Esconder UI do EAM dentro do modo implantacao                    */
/* ------------------------------------------------------------------ */

/* O navbar principal do EAM (#aam-menu) é completamente substituído
   pelo header próprio da Implantação. Isto remove logo AAM, search,
   notificações, user dropdown e logout do EAM. */
html.implantacao-mode #aam-menu {
    display: none !important;
}

/* Faixa roxa de título do EAM — sumir pro header próprio ser o único
   anúncio do contexto. */
html.implantacao-mode .sistema-interna {
    display: none !important;
}

/* Footer do EAM (_NavBottom — "EAM - Enterprise Asset Management vN.N.N"). */
html.implantacao-mode .navbar-fixed-bottom {
    display: none !important;
}

/* Reset de padding do body (bootstrap aplica pra acomodar a navbar
   fixa) + pinta o fundo com a mesma cor do conteúdo da Implantação pra
   que nenhum branco residual apareça à direita ou abaixo do
   .implantacao-content, independente do tamanho da viewport e do
   estado (minified ou não) do aside. */
html.implantacao-mode,
html.implantacao-mode body {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    margin: 0;
    background: #f4f5f9;
    font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    overflow: hidden;
    height: 100vh;
}

/* Cadeia inteira de wrappers pintada — qualquer gap de flow fica
   invisível (mesma cor do conteúdo). #aam-main em si mantém seu
   padding (pra dar espaço ao header/aside fixos), mas os wrappers
   internos (.container + divs aninhados) zeram qualquer margem/
   padding/width injetados pelo Bootstrap. */
html.implantacao-mode #aam-main {
    background: #f4f5f9 !important;
}

html.implantacao-mode #aam-main > .container,
html.implantacao-mode #aam-main > .container > div,
html.implantacao-mode #aam-main > .container > div > div {
    background: #f4f5f9 !important;
    width: auto !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* Imagens não podem empurrar o conteúdo além do viewport — isto
   elimina o scroll horizontal quando o logo da home (936px) entra
   em viewport mais estreito. */
html.implantacao-mode .implantacao-content img {
    max-width: 100%;
    height: auto;
}

/* BS2 do EAM (Treetech.SAM.WebUI/Content/bootstrap.min.css carregado
   globalmente) tem `ul, ol { padding: 0; margin: 0 0 10px 25px }`. Em
   implantacao-mode isso quebra o layout porque o SmartAdmin original
   espera o padding-left de 15px nas árvores. Resetamos o margin/padding
   pra deixar as regras do scoped-smartadmin/site.css aplicarem. */
html.implantacao-mode ul,
html.implantacao-mode ol {
    margin: 0;
}

/* O UI Bootstrap (versão BS2 era) usa template com
   `class="modal hide fade"` e abre o modal via `ng-style="display:block"`.
   BS3 scopado tem `.hide { display: none !important }` que sobrescreve o
   inline display: block, mantendo o modal invisível.
   Fix: rule `!important` específica pra modal aberto. */
html.implantacao-mode .modal[style*="display: block"],
html.implantacao-mode .modal[style*="display:block"] {
    display: block !important;
}

/* Backdrop do modal — UI Bootstrap renderiza como filho de body. */
html.implantacao-mode .modal-backdrop {
    z-index: 1040 !important;
}
html.implantacao-mode .modal {
    z-index: 1050 !important;
}

/* BS2 (carregado globalmente) tem `.modal { width: 560px; margin: -250px 0 0 -280px }`
   que combinado com BS3 scoped (que define `top/right/bottom/left: 0` mas
   não toca width/margin) deixa o modal num retângulo de 560px no canto
   superior esquerdo. Reset pra BS3 trabalhar sozinho. */
html.implantacao-mode .modal {
    width: auto !important;
    margin: 0 !important;
}

/* Modal-dialog encolhe pra largura do conteúdo (não fica caixa branca
   gigante com conteúdo no meio) e centraliza horizontalmente. */
html.implantacao-mode .modal-dialog,
html.implantacao-mode .modal-dialog.modal-lg {
    width: fit-content !important;
    width: -moz-fit-content !important;
    max-width: 90vw !important;
    min-width: 320px !important;
    margin: 0px auto !important;
}

/* .modal-content e seus filhos com paddings reduzidos pra encaixar
   apenas o conteúdo, sem espaço em branco extra nas laterais/topo. */
html.implantacao-mode .modal-content {
    text-align: left;
    padding: 0 !important;
}

html.implantacao-mode .modal-header {
    padding: 8px 12px !important;
}

html.implantacao-mode .modal-body {
    padding: 10px 12px !important;
}

html.implantacao-mode .modal-footer {
    padding: 8px 12px !important;
}

/* `footer { text-align: right }` ainda existe sem prefixo no scoped-bootstrap
   (a regex do prefixador não pegou o bare element selector). Força esquerda
   pra qualquer <footer.panel-footer> dentro do shell de Implantação. */
html.implantacao-mode footer.panel-footer {
    text-align: left !important;
}

/* ------------------------------------------------------------------ */
/* 2. Componentes IMP só aparecem em implantacao-mode                  */
/* ------------------------------------------------------------------ */
html:not(.implantacao-mode) eam\.implantacao\.aside,
html:not(.implantacao-mode) eam\.implantacao\.header,
html:not(.implantacao-mode) eam\.implantacao\.ribbon {
    display: none !important;
}

html.implantacao-mode eam\.implantacao\.aside,
html.implantacao-mode eam\.implantacao\.header,
html.implantacao-mode eam\.implantacao\.ribbon {
    display: block;
}

/* ------------------------------------------------------------------ */
/* 3. Header próprio (substitui #aam-menu) — réplica do #header do     */
/*    SmartAdmin antigo. Mesma estrutura (header > #logo-group +       */
/*    #top-right > .btn-header), mesmas cores, mesmas proporções.      */
/* ------------------------------------------------------------------ */
html.implantacao-mode #header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 49px;
    background: #f3f3f3;
    border-bottom: 1px solid #dcdcdc;
    z-index: 1030;
    font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

html.implantacao-mode #header:after {
    /* Limpa os floats dos filhos (#logo-group à esquerda, #top-right à
       direita) sem precisar de wrapper extra — mesma técnica do SmartAdmin. */
    content: '';
    display: block;
    clear: both;
}

html.implantacao-mode #logo-group {
    float: left;
    width: 220px;
    height: 49px;
    padding: 0 0 0 11px;
    background: #f3f3f3;
    white-space: nowrap;
    display: flex;
    align-items: center;
}

html.implantacao-mode #logo {
    display: flex !important;
    align-items: center;
    gap: 6px;
    height: auto !important;
    line-height: normal !important;
    width: auto !important;
    color: #3a3633;
    font-size: 14px;
    font-weight: 400;
    text-decoration: none;
}

html.implantacao-mode #logo > img {
    width: 32px !important;
    height: 32px !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
    object-fit: contain;
    flex-shrink: 0;
}

html.implantacao-mode #top-right {
    display: block;
    float: right;
    height: 49px;
}

/* Container .pull-right dentro de #top-right — segura os botões na
   direita e nivela a altura. */
html.implantacao-mode #top-right > .pull-right {
    height: 49px;
}

/* Botões da direita (hide-menu + logout) — .btn-header é o nome
   usado pelo SmartAdmin em <div id="hide-menu" class="btn-header">. */
html.implantacao-mode .btn-header {
    float: right;
    height: 49px;
    position: relative;
}

html.implantacao-mode .btn-header > span {
    display: block;
    height: 49px;
    width: 49px;
}

html.implantacao-mode .btn-header > span > a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 49px;
    height: 49px;
    color: #5a5a5a;
    background: transparent;
    border-left: 1px solid #dcdcdc;
    font-size: 18px;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}

html.implantacao-mode .btn-header > span > a:hover,
html.implantacao-mode .btn-header > span > a:focus {
    background: #e6e6e6;
    color: #222;
    text-decoration: none;
}

/* .btn-header.transparent (logout) — no SmartAdmin, essa variante
   remove o fundo extra pra ficar mais sóbria. */
html.implantacao-mode .btn-header.transparent > span > a {
    background: transparent;
}

html.implantacao-mode #logout > span > a:hover {
    background: #a90329;
    color: #ffffff;
}

/* ------------------------------------------------------------------ */
/* 4. Aside fixo à esquerda — valores copiados do SmartAdmin original   */
/*    (smartadmin-production.min.css do antigo IMP).                    */
/* ------------------------------------------------------------------ */
html.implantacao-mode #left-panel {
    position: fixed;
    top: 49px; /* altura do #header próprio */
    left: 0;
    bottom: 0;
    width: 220px;
    background: #3a3633;
    overflow-y: auto;
    overflow-x: hidden;
    z-index: 1020;
    padding: 0;
    font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

html.implantacao-mode #left-panel::-webkit-scrollbar {
    width: 6px;
}

html.implantacao-mode #left-panel::-webkit-scrollbar-thumb {
    background: #555;
    border-radius: 3px;
}

/* .login-info — replica do <div class="login-info"> do SmartAdmin. */
html.implantacao-mode #left-panel .login-info {
    display: block;
    position: relative;
    font-size: 12px;
    height: 39px;
    color: #fff;
    width: 100%;
    margin: 0;
    border-bottom: 1px solid #525151;
    padding: 0 4px;
}

html.implantacao-mode #left-panel .login-info a {
    text-decoration: none;
    color: #c0bbb7;
    display: inline-block;
    margin-top: 6px;
}

html.implantacao-mode #left-panel .login-info a:hover {
    color: #fff;
    text-decoration: none;
}

html.implantacao-mode #left-panel .login-info a span {
    text-transform: capitalize;
    font-size: 14px;
    display: inline-block;
    vertical-align: middle;
    max-width: 150px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    background: transparent;
    padding: 0;
}

html.implantacao-mode #left-panel .login-info a i.fa-user {
    vertical-align: middle;
    margin-right: 4px;
}

/* nav ul — lista principal. */
html.implantacao-mode #left-panel nav {
    display: block;
}

html.implantacao-mode #left-panel nav ul {
    width: 100%;
    padding: 0;
    margin: 0;
    font-size: 13px;
    list-style: none;
    position: relative;
}

html.implantacao-mode #left-panel nav ul li {
    position: relative;
    list-style: none;
    margin: 0;
    padding: 0;
}

html.implantacao-mode #left-panel nav ul li a {
    line-height: normal;
    font-size: 14px;
    padding: 10px 10px 10px 11px;
    color: #c0bbb7;
    display: block;
    font-weight: 400;
    text-decoration: none;
    position: relative;
    background: transparent;
    cursor: pointer;
}

html.implantacao-mode #left-panel nav ul li a:hover,
html.implantacao-mode #left-panel nav ul li a:focus {
    color: #fff;
    text-decoration: none;
}

html.implantacao-mode #left-panel nav ul li a:active {
    background: #616161;
}

html.implantacao-mode #left-panel nav ul li.open > a,
html.implantacao-mode #left-panel nav ul li.open > a b {
    color: #fff;
}

/* Indicador do item ativo — caret laranja apontando pra direita
   (igual ao SmartAdmin original: nav ul li.active > a:before). */
html.implantacao-mode #left-panel nav ul .active > a {
    color: #fff !important;
    position: relative;
}

html.implantacao-mode #left-panel nav ul li.active > a:before {
    content: "\f0d9";
    font-family: FontAwesome;
    display: block;
    height: 27px;
    line-height: normal;
    width: 27px;
    position: absolute;
    right: -21px;
    font-size: 20px;
    color: #eee;
    top: 50%;
    margin-top: -13px;
}

html.implantacao-mode #left-panel nav ul li.active.open > a:before {
    content: "";
}

/* <b class="collapse-sign"> — seta +/- no canto direito. */
html.implantacao-mode #left-panel nav ul b {
    float: right;
    font-size: 11px;
    margin-top: 2px;
    background: transparent;
    color: inherit;
    padding: 0;
}

html.implantacao-mode #left-panel nav > ul > li > a b {
    position: absolute;
    right: 10px;
    top: 10px;
}

/* Ícone à esquerda do label — gap entre ícone e texto via margin-right. */
html.implantacao-mode #left-panel nav > ul > li > a > i {
    margin-right: 10px;
    width: 15px;
    display: inline-block;
    text-align: center;
    position: relative;
}

html.implantacao-mode #left-panel nav ul span.menu-item-parent {
    display: inline-block;
    margin: 0;
    padding: 0;
    background: transparent;
    color: inherit;
    font-size: 14px;
}

/* Submenu (nível 2 — itens dentro de Administrativo/Implantação). */
html.implantacao-mode #left-panel nav ul ul {
    margin: 0;
    background: rgba(69, 69, 69, 0.6);
    padding: 7px 0;
}

/* SmartAdmin tem `nav ul ul { display: none }` por default + dependia do
   smart-menu JS pra adicionar a classe `.open` via slideDown. Como nosso
   aside usa Angular (ng-class adiciona a classe `open` quando expandido),
   precisamos da regra CSS que mostra o submenu quando `.open` está no <li>. */
html.implantacao-mode #left-panel nav ul li.open > ul {
    display: block !important;
}
html.implantacao-mode #left-panel nav ul li:not(.open) > ul {
    display: none !important;
}

html.implantacao-mode #left-panel nav ul ul li > a {
    padding: 7px 10px 7px 42px;
    font-size: 14px;
    font-weight: 400;
    color: #c0bbb7;
}

html.implantacao-mode #left-panel nav ul ul li > a:hover {
    background-color: rgba(69, 69, 69, 0.8);
    color: #fff;
}

html.implantacao-mode #left-panel nav ul ul li.active > a {
    background-color: rgba(69, 69, 69, 0.9);
    color: #fff;
}

/* Sub-submenu (nível 3 — itens dentro de Relatórios). */
html.implantacao-mode #left-panel nav ul ul ul {
    background: transparent;
    padding: 0;
}

html.implantacao-mode #left-panel nav ul ul ul li a {
    color: #bfbfbf;
    padding: 8px 10px 8px 60px;
    font-size: 14px;
}

html.implantacao-mode #left-panel nav ul ul ul li a:hover {
    color: #fff;
}

html.implantacao-mode #left-panel nav ul ul ul li.active > a {
    color: #fff;
}

/* Linha vertical conectora no submenu (::before do SmartAdmin). */
html.implantacao-mode #left-panel nav > ul > li > ul {
    position: relative;
}

html.implantacao-mode #left-panel nav > ul > li > ul::before {
    content: "";
    display: block;
    position: absolute;
    z-index: 1;
    left: 23px;
    top: 0;
    bottom: 0;
    border-left: 1px solid #7a7a7a;
}

/* Botão minifyme — <span class="minifyme"> do SmartAdmin. */
html.implantacao-mode #left-panel .minifyme {
    border-bottom: 1px solid #302f2f;
    background: #454545;
    color: #a8a8a8;
    text-align: center;
    padding: 0;
    width: 36px;
    height: 28px;
    display: block;
    position: absolute;
    right: 0;
    border-radius: 5px 0 0 5px;
    cursor: pointer;
    margin-top: 7px;
    font-size: 19px;
    line-height: 28px;
    transition: all 0.1s linear 0s;
    text-decoration: none;
}

html.implantacao-mode #left-panel .minifyme:hover {
    background: #646464;
    color: #E4E4E4;
    width: 40px;
    padding-right: 5px;
}

/* ------------------------------------------------------------------ */
/* 5. Ribbon (breadcrumb) e conteúdo principal                          */
/* ------------------------------------------------------------------ */
/* Estilos do #ribbon vêm do scoped-smartadmin-production.min.css.
   Aqui só ajustamos o que SmartAdmin não cobre (alinhamento dentro
   do shell flex). */

/* Shell e conteúdo preenchem EXATAMENTE a altura disponível da viewport
   sem gerar scroll global no body/html. Scroll vertical, se
   necessário, acontece dentro do .implantacao-content. */
.implantacao-shell {
    height: calc(100vh - 49px); /* viewport menos header fixo */
    background: #f4f5f9;
    display: flex;
    flex-direction: column;
}

.implantacao-main {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0; /* permite flex child scroll internamente */
    background: #f4f5f9;
}

.implantacao-content {
    flex: 1;
    min-height: 0;
    padding: 0;
    background: #f4f5f9;
    overflow-y: auto;
    font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

/* Shift o layout principal do SAM.WebUI pra acomodar o aside fixo
   (à esquerda) e o header fixo (no topo). */
html.implantacao-mode #aam-main {
    padding-left: 220px;
    padding-top: 49px;
}

/* Regra duplicada da sessão anterior — as regras com !important acima
   (logo após o reset do body) já cobrem .container e seus filhos. */

/* ------------------------------------------------------------------ */
/* 6. Estados minified e hidden (SmartAdmin toggleMenu / minifyMenu)    */
/* ------------------------------------------------------------------ */

/* Minified: aside encolhe pra 45px de largura, ícones visíveis, texto
   some. Equivale ao body.minified do SmartAdmin. */
html.implantacao-minified #left-panel {
    width: 45px;
}

html.implantacao-minified.implantacao-mode #aam-main {
    padding-left: 45px;
}

/* Esconde labels, collapse-sign e submenus inteiros. */
html.implantacao-minified #left-panel .login-info a span,
html.implantacao-minified #left-panel nav > ul > li > a > .menu-item-parent,
html.implantacao-minified #left-panel nav > ul > li > a > b,
html.implantacao-minified #left-panel nav > ul > li > ul {
    display: none;
}

html.implantacao-minified #left-panel .login-info {
    padding: 0;
    text-align: center;
}

html.implantacao-minified #left-panel .login-info a {
    margin-top: 6px;
    display: inline-block;
}

html.implantacao-minified #left-panel .login-info a i.fa-user {
    margin-right: 0;
}

html.implantacao-minified #left-panel nav > ul {
    text-align: center;
}

html.implantacao-minified #left-panel nav > ul > li > a {
    padding: 10px 0;
    text-align: center;
    display: block;
}

/* Ícone vira inline-block (em vez do width:15 do SmartAdmin base)
   pra que o text-align: center do <a> realmente o centralize na
   barra de 45 px. */
html.implantacao-minified #left-panel nav > ul > li > a > i {
    margin: 0;
    display: inline-block;
    width: auto;
    text-align: center;
    float: none;
}

html.implantacao-minified #left-panel .minifyme {
    position: relative;
    width: 100%;
    border-radius: 0;
    margin: 0;
    height: 34px;
    font-size: 23px;
    line-height: 34px;
    color: #a8a8a8;
    background: #454545;
}

/* Header NÃO muda quando o aside está minified — fica constante
   (mesma largura do logo-group, mesmo título "Módulo de Implantação")
   independente do estado do aside. */

/* Em viewports pequenos, colapsa o aside pra não sobrepor conteúdo. */
@media (max-width: 768px) {
    html.implantacao-mode #left-panel {
        position: static;
        width: 100%;
        top: auto;
        height: auto;
        border-right: none;
        border-bottom: 1px solid #1c1f25;
    }
    html.implantacao-mode #aam-main {
        padding-left: 0;
    }
    html.implantacao-mode #logo-group {
        width: auto;
    }
}

/* ------------------------------------------------------------------ */
/* 7. Tela de Configurações de Cadastros — replica do SmartAdmin       */
/*    (Configuration.cshtml + site.css do antigo IMP).                 */
/*    Tudo escopado em .implantacao-content pra não afetar outras      */
/*    áreas do EAM.                                                    */
/* ------------------------------------------------------------------ */

/* sortable-grid sem padding extra — o widget já tem margin-bottom e
   o #scrollableContainer interno gerencia o seu próprio padding. */

/* Estilos do .jarviswidget (header escuro com h2 + widget-icon + ctrls)
   vêm 100% do scoped-smartadmin-production-plugins.min.css. Não duplicar
   aqui — quando duplicado o source order faz nosso CSS perder/ganhar de
   forma imprevisível. */

.implantacao-content .widget-body-scrolleable {
    padding: 0;
}

.implantacao-content .widget-body .alert {
    margin: 5px 15px;
}

.implantacao-content .widget-body .alert ul {
    margin: 2px 0 0 18px;
    padding: 0;
}

/* Header compacto pros widgets de grid (config-vision, deploy-vision,
   deploy-logs, ca-config). O default do scoped SmartAdmin é 34px; esses
   grids ficam mais densos e o usuário pediu pra encurtar e colar no body. */
.implantacao-content .jarviswidget > header {
    height: 26px;
    line-height: 26px;
}

.implantacao-content .jarviswidget > header h2 {
    line-height: 26px;
    font-size: 13px;
}

.implantacao-content .jarviswidget > header > .widget-icon {
    height: 26px;
    line-height: 26px;
}

.implantacao-content .jarviswidget > header > .widget-toolbar {
    height: 26px;
    line-height: 26px;
}

/* widget-body cola direto no header — sem padding-top/min-height pra evitar
   gap visível entre o header e o grid. min-height padrão é 100px (faz o widget
   ocupar espaço quando vazio); aqui não interessa, o conteúdo já dimensiona. */
.implantacao-content .jarviswidget > .widget-body {
    min-height: 0;
    padding-bottom: 0;
}

/* tt-datepicker renderiza <div class="input-append"><input><button/></div>
   (Bootstrap 2). O scoped SmartAdmin força .smart-form .input input
   { display: block; width: 100% } e o Bootstrap scopado é v3 (sem .input-append),
   resultado: input vira bloco 100% e empurra o botão pra linha de baixo.
   Aqui restauramos o layout inline com flex. */
.implantacao-content .smart-form .input .input-append {
    display: flex;
    align-items: stretch;
}

.implantacao-content .smart-form .input .input-append > input {
    flex: 1 1 auto;
    width: auto;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.implantacao-content .smart-form .input .input-append > .btn {
    flex: 0 0 auto;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    border-left: 0;
    height: 32px;
    line-height: 32px;
    padding: 0 10px;
}

/* Variante responsiva pro padding-top usado entre as duas datas do filtro
   "Intervalo" do deploy-logs. Em mobile, 15px (vem de padding-top-15).
   Em sm+ (≥ 768px) sobe pra 35px pra a data final alinhar verticalmente
   com o select Status Posterior da coluna esquerda quando o layout tá
   em duas colunas. Especificidade 020 garante override sobre a regra
   .padding-top-15 (010) sem depender da ordem de carga. */
@media (min-width: 768px) {
    .implantacao-content .padding-top-sm-35 {
        padding-top: 35px !important;
    }
}

/* --- Filtros --- */
.implantacao-content #levelFilter {
    border-bottom: 1px solid lightgray;
    padding: 10px 5px;
    margin: 0;
}

.implantacao-content #levelFilter .col {
    padding: 4px 8px;
}

.implantacao-content #levelFilter label {
    display: block;
    font-size: 11px;
    color: #666;
    margin-bottom: 2px;
}

.implantacao-content #levelFilter label.select {
    margin: 0;
    position: relative;
    display: block;
}

.implantacao-content #levelFilter select {
    width: 100%;
    height: 28px;
    border: 1px solid #cfcfcf;
    border-radius: 3px;
    padding: 2px 6px;
    background: #fff;
    font-size: 13px;
}

/* Seta do label.select é só visual — não pode interceptar cliques no <select>. */
.implantacao-content #levelFilter label.select > i {
    pointer-events: none;
}

.implantacao-content #levelFilter .push-bottom {
    align-self: flex-end;
}

/* Botão Pesquisar precisa estar acima da black-layer quando filtro
   estiver ativo + não pode ter pointer-events bloqueado. */
.implantacao-content #levelFilter a.btn,
.implantacao-content #levelFilter button {
    cursor: pointer;
    pointer-events: auto;
}

.implantacao-content #levelFilter .btn-primary.padding-5 {
    padding: 5px 10px;
    margin-top: 16px;
}

/* --- Black-layer overlay (bloqueio quando step != DataConfiguration) --- */
.implantacao-content .black-layer-container {
    position: relative;
}

.implantacao-content .black-layer-container > .black-layer {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0, 0, 0, 0.05);
    pointer-events: auto;
    z-index: 5;
}

/* --- Estrutura sortable (4 níveis encadeados) — valores 1:1 com
   site.css do antigo IMP. */
.implantacao-content #scrollableContainer {
    overflow: auto;
    min-height: 350px;
}

/* scoped-site.css força `overflow: scroll !important` no #scrollableContainer,
   que faz aparecer os DOIS scrollbars sempre, mesmo sem conteúdo overflow.
   Override pra `auto` no eixo X (esconde a barra horizontal quando não precisa)
   e mantém vertical conforme necessário. */
html.implantacao-mode .widget-body-scrolleable > #scrollableContainer {
    overflow-x: auto !important;
    overflow-y: auto !important;
}

/* Estrutura sortable (level-ol-etapas, level-item, padding/margin/counter-reset)
   vem 100% do scoped-site.css. Não duplicar aqui — quando estavam em
   ambos arquivos o source order podia gerar resultados imprevisíveis. */

.implantacao-content .sortable li {
    list-style: none;
}

.implantacao-content .sortable li .level-title:before {
    content: counters(item, ".") " - ";
    counter-increment: item;
}

.implantacao-content .level-item {
    min-height: 20px;
    display: block;
}

.implantacao-content .level-header {
    min-height: 22px;
    display: block;
    border: 1px solid #cfcfcf;
    background: #fff;
    font-size: 12px;
    font-weight: bold;
    margin-top: 5px;
    overflow: hidden;
}

.implantacao-content .level-handle {
    border: 1px solid #aaa;
    background: linear-gradient(top, #ddd 0, #bbb 100%);
    background: -webkit-linear-gradient(top, #ddd 0, #bbb 100%);
    background-color: #bfbfbf;
    padding: 0 8px;
    margin: -1px 0 -1px -1px;
    cursor: move;
    min-height: 23px;
    line-height: 23px;
    color: #555;
}
.implantacao-content .level-handle:hover {
    background: #FDDFB3 !important;
    border-color: #FAA937;
    color: #333;
}

.implantacao-content .level-title {
    padding: 3px 3px 0 3px;
    min-height: 21px;
    word-wrap: break-word;
    cursor: text;
}

.implantacao-content .level-title-input {
    width: 70%;
    border: 2px outset lightblue;
    padding: 1px 3px;
    font-size: 12px;
    font-weight: bold;
}

.implantacao-content .level-buttons {
    margin: -1px;
    position: relative;
}
.implantacao-content .level-buttons > .btn {
    margin-left: 3px;
    height: 23px;
    padding: 0 6px;
    line-height: 21px;
    font-size: 11px;
}

/* Replica do site.css legado (#DeploymentContent .level-item .progress):
   barra compacta de 50px com texto sobreposto. O margin-bottom: 18px do
   Bootstrap inflava o header (que tem overflow:hidden formando BFC e
   contendo o float). Aqui forçamos width/margin/text-align iguais ao MVC. */
.implantacao-content .level-item .progress {
    width: 50px;
    margin: 4px;
    text-align: center;
}

/* O .progress-bar é float:left dentro do .progress; o .progress-text vem
   depois (já fora do espaço ocupado pelo bar). position:relative mantém o
   texto visível flutuando POR CIMA da barra (sem isso o texto desaparece
   atrás do bar quando a porcentagem é alta). */
.implantacao-content .level-item .progress .progress-text {
    position: relative;
}

.implantacao-content .level-item .progress .progress-bar {
    background-color: darkturquoise;
}

/* Cores por status de importação — replica das regras do site.css legado.
   level-header colorido + progress-bar verde quando concluído. */
.implantacao-content .level-item.import-status-ImportedDone .progress .progress-bar {
    background-color: lightgreen;
}

.implantacao-content .level-item.import-status-Blocked > .level-header {
    background: #f1f1f1;
    border-color: gray;
}

.implantacao-content .level-item.import-status-ReadyToImport > .level-header {
    background: white;
}

.implantacao-content .level-item.import-status-ImportedDone > .level-header {
    background: rgb(235, 255, 235);
    border-color: green;
}

.implantacao-content .level-item.import-status-ImportedError > .level-header {
    background: rgb(255, 235, 235);
    border-color: brown;
}

/* Visibilidade dos action buttons por nível — replica .sortable .level-buttons rules do antigo. */
.implantacao-content .sortable .level-buttons > .btn,
.implantacao-content .action-expand,
.implantacao-content .action-retract {
    display: none;
}

.implantacao-content .level-collapsed:not(.level-item-importacao) > .level-header > .level-buttons > .action-expand,
.implantacao-content .level-expanded:not(.level-item-importacao) > .level-header > .level-buttons > .action-retract,
.implantacao-content .level-ol-etapas > .level-item:last-of-type > .level-header > .level-buttons .action-addstep,
.implantacao-content .level-ol-subetapas > .level-item > .level-header > .level-buttons .action-addarea,
.implantacao-content .level-ol-areas > .level-item > .level-header > .level-buttons .action-additem,
.implantacao-content .level-ol-etapas > .level-item:not(:first-of-type) > .level-header > .level-buttons .action-excludeestep,
.implantacao-content .level-ol-subetapas .level-item > .level-header > .level-buttons .action-excludelevel,
.implantacao-content .sortable .level-item-importacao .action-clone,
.implantacao-content .sortable .level-item-importacao .action-configureimport,
.implantacao-content .sortable .level-item-importacao .action-excludelevel {
    display: inline-block;
}

.implantacao-content .btn.action-excludelevel,
.implantacao-content .btn.action-excludeestep {
    color: darkred;
}
.implantacao-content .level-ol-subetapas .level-item-subetapa > .level-header > .level-buttons .action-excludelevel {
    display: none;
}

/* Cores 1:1 com site.css do antigo IMP — etapa/subetapa/área brancas;
   itens de importação ganham bg colorido conforme validação. */
.implantacao-content .level-item .level-header { background: #fff; }

.implantacao-content .level-ol-itens .level-item-error > .level-header {
    background: rgb(255, 235, 235);
    border-color: brown;
}
.implantacao-content .level-ol-itens .level-item-success > .level-header {
    background: rgb(235, 255, 235);
    border-color: green;
}
.implantacao-content .level-ol-itens .level-item-warning > .level-header {
    background: khaki;
    border-color: #c9a200;
}

/* Collapsed esconde os filhos */
.implantacao-content .level-collapsed > ol {
    display: none;
}

/* Filtro should-hide → escondido com fade */
.implantacao-content .level-item.should-hide {
    display: none;
}

/* Nestable placeholders */
.implantacao-content .sortable .ui-sortable-placeholder {
    background-color: whitesmoke;
    border: 2px dotted powderblue;
    visibility: visible !important;
    margin-top: 5px;
}
.implantacao-content .sortable .ui-sortable-placeholder.placeholder-error {
    background-color: rgb(253, 196, 196);
    border-color: coral;
}

/* Ações no rodapé (Salvar) */
.implantacao-content .form-actions {
    padding: 10px 15px;
    border-top: 1px solid #e3e6ea;
    background: #fafafa;
}

/* Smart-form bootstrap-2 layout helpers */
.implantacao-content .smart-form-inline {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
}
.implantacao-content .padding-5 { padding: 5px 10px; }
.implantacao-content .padding-top-10 { padding: 10px 0 0; }
