@charset "UTF-8";
/* ==========================================================================
   Gransoft · Administração interna — layout e componentes
   Mesmo design do GransoftWeb MVC (Content/gransoft/layout.css + componentes.css),
   aplicado SOBRE o tema Conquer (Bootstrap 3) que as páginas e os controles
   XControl (MenuLateral, DataGridView, FormDetail) já geram: o HTML não muda.
   Depende de tokens.css. Tudo escopado em body.gs-app, então as páginas
   principais do site (que não têm essa classe) não são afetadas.
   Carregar DEPOIS dos CSS do Conquer (style-conquer, style, plugins, themes, custom).
   Breakpoint do Conquer: até 991px o menu lateral vira menu recolhível.
   ========================================================================== */

@keyframes gs-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes gs-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes gs-pop { from { opacity: 0; transform: translateY(18px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes gs-spin { to { transform: rotate(360deg); } }

/* =============================== Base =============================== */

body.gs-app {
    background: var(--gs-bg) !important; /* themes/default.css usa !important */
    color: var(--gs-ink);
    font-family: var(--gs-fonte);
    font-size: var(--gs-fs-lg);
    line-height: 1.45;
    -webkit-font-smoothing: antialiased;
    transition: background var(--gs-dur-tema) var(--gs-ease), color var(--gs-dur-tema);
}
body.gs-app button, body.gs-app select, body.gs-app input, body.gs-app textarea,
body.gs-app .tooltip, body.gs-app .popover { font-family: var(--gs-fonte); }
body.gs-app a { color: var(--gs-acento); }
body.gs-app a:hover, body.gs-app a:focus { color: var(--gs-verde); text-decoration: none; }
body.gs-app h1, body.gs-app h2, body.gs-app h3, body.gs-app h4, body.gs-app h5, body.gs-app h6 { font-family: var(--gs-fonte); color: var(--gs-ink); }
body.gs-app .text-muted, body.gs-app .help-block { color: var(--gs-muted); }
body.gs-app hr { border-top-color: var(--gs-linha); }
body.gs-app ::selection { background: var(--gs-verde-a28); }

/* Loader de página (div.loader com gif): vira o spinner do design */
body.gs-app .loader {
    background: rgba(240, 240, 240, .6) !important;
    -webkit-backdrop-filter: blur(2px);
    backdrop-filter: blur(2px);
}
html[data-gs-tema="escuro"] body.gs-app .loader { background: rgba(18, 45, 62, .6) !important; }
body.gs-app .loader::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 38px;
    height: 38px;
    margin: -19px 0 0 -19px;
    border-radius: var(--gs-raio-pill);
    border: 3px solid var(--gs-verde-a22);
    border-top-color: var(--gs-verde);
    animation: gs-spin .8s linear infinite;
}

/* ============================ Cabeçalho ============================ */

body.gs-app .header {
    background: var(--gs-bg);
    border: 0;
    box-shadow: none;
    transition: background var(--gs-dur-tema);
}
body.gs-app .header .header-inner {
    display: flex;
    align-items: center;
    gap: 12px;
    height: 100%;
}
body.gs-app .header .header-inner::before,
body.gs-app .header .header-inner::after { display: none; }

/* Título da página (injetado por gs-admin.js a partir do <title>) */
.gs-cabecalho__textos { min-width: 0; flex: 1 1 auto; order: 2; }
.gs-cabecalho__trilha { font-size: var(--gs-fs-sm); font-weight: var(--gs-fw-medio); color: var(--gs-muted); white-space: nowrap; }
.gs-cabecalho__titulo {
    margin: 2px 0 0;
    font-size: var(--gs-fs-h1);
    font-weight: var(--gs-fw-semi);
    letter-spacing: var(--gs-tracking-titulo);
    line-height: 1.1;
    color: var(--gs-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Cópia do título para o celular (o cabeçalho lá é só a barra azul) */
body.gs-app .gs-titulo-movel {
    display: none;
    margin: 4px 0 14px;
    font-size: 20px;
    font-weight: var(--gs-fw-semi);
    letter-spacing: var(--gs-tracking-titulo);
    color: var(--gs-ink);
}

/* Menu do usuário (UserDropDownMenu) */
body.gs-app .header .navbar-nav.pull-right {
    order: 3;
    display: flex !important; /* style-responsive.css força display:block !important até 480px */
    align-items: center;
    gap: 8px;
    height: auto;
    margin: 0 0 0 auto;
    clear: none;
    float: none !important;
}
body.gs-app .header .navbar-nav > li { float: none; }
body.gs-app .header .navbar-nav > li.devider { display: none; }
body.gs-app .header .navbar-nav > li.dropdown.user > .dropdown-toggle {
    display: flex;
    align-items: center;
    gap: 9px;
    height: var(--gs-altura-controle);
    padding: 0 12px 0 3px;
    border-radius: var(--gs-raio-pill);
    background: var(--gs-card) !important;
    color: var(--gs-ink);
    transition: box-shadow var(--gs-dur-rapida), background var(--gs-dur-tema);
}
body.gs-app .header .navbar-nav > li.dropdown.user > .dropdown-toggle:hover,
body.gs-app .header .navbar-nav > li.dropdown.user.open > .dropdown-toggle { box-shadow: 0 0 0 3px var(--gs-verde-a28); background: var(--gs-card) !important; }
body.gs-app .header .navbar-nav > li.dropdown.user > .dropdown-toggle img {
    width: 28px;
    height: 28px;
    margin: 0;
    border-radius: var(--gs-raio-pill);
    object-fit: cover;
    background: var(--gs-verde);
}
body.gs-app .header .navbar-nav > li.dropdown.user .username {
    color: var(--gs-ink) !important;
    font-size: var(--gs-fs-md);
    font-weight: var(--gs-fw-semi);
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.gs-app .header .navbar-nav li.dropdown .dropdown-toggle i { color: var(--gs-muted) !important; }
body.gs-app .header .navbar-nav > li.dropdown > .dropdown-menu { margin-top: 8px; right: 0; left: auto; min-width: 200px; }
body.gs-app .header .navbar-nav > li.dropdown > .dropdown-menu::before,
body.gs-app .header .navbar-nav > li.dropdown > .dropdown-menu::after { display: none; }

/* Botão de tema (injetado por gs-admin.js) */
body.gs-app .gs-tema-btn {
    width: var(--gs-altura-controle);
    height: var(--gs-altura-controle);
    border: 0;
    padding: 0;
    border-radius: var(--gs-raio-pill);
    background: var(--gs-card);
    color: var(--gs-ink);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: box-shadow var(--gs-dur-rapida), color var(--gs-dur-rapida), background var(--gs-dur-tema);
}
body.gs-app .gs-tema-btn:hover, body.gs-app .gs-tema-btn:focus-visible { color: var(--gs-verde); box-shadow: 0 0 0 3px var(--gs-verde-a28); outline: none; }
.gs-tema-icone--sol { display: none; }
html[data-gs-tema="escuro"] .gs-tema-icone--sol { display: block; }
html[data-gs-tema="escuro"] .gs-tema-icone--lua { display: none; }

/* Logo: o img.logo.png horizontal do Conquer dá lugar ao ícone da marca */
body.gs-app .header .page-logo {
    order: 0;
    float: none;
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    padding: 6px !important;
    margin: 0 !important;
    border-radius: var(--gs-raio-lg);
    background: var(--gs-branco);
}
body.gs-app .header .page-logo a {
    display: block;
    width: 100%;
    height: 100%;
    background: url("../../img/brand-logo/logo-gransoft-icone.png") center / contain no-repeat;
}
body.gs-app .header .page-logo img { display: none; }

/* Botão do menu (celular) */
body.gs-app .header .navbar-toggle {
    order: 1;
    float: none;
    width: 40px;
    height: 40px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: var(--gs-raio-lg);
    background: var(--gs-branco-a08);
    align-items: center;
    justify-content: center;
}
body.gs-app .header .navbar-toggle img { display: none; }
body.gs-app .header .navbar-toggle::before {
    content: "";
    width: 18px;
    height: 14px;
    background:
        linear-gradient(currentColor, currentColor) 0 0 / 100% 2px no-repeat,
        linear-gradient(currentColor, currentColor) 0 6px / 100% 2px no-repeat,
        linear-gradient(currentColor, currentColor) 0 12px / 100% 2px no-repeat;
    color: var(--gs-branco);
    transition: transform var(--gs-dur-media) var(--gs-ease);
}
body.gs-app.gs-menu-aberto .header .navbar-toggle::before {
    height: 18px;
    background:
        linear-gradient(45deg, transparent calc(50% - 1px), currentColor calc(50% - 1px), currentColor calc(50% + 1px), transparent calc(50% + 1px)),
        linear-gradient(-45deg, transparent calc(50% - 1px), currentColor calc(50% - 1px), currentColor calc(50% + 1px), transparent calc(50% + 1px));
}

/* ======================= Menu lateral (MenuLateral) ======================= */

body.gs-app .page-sidebar,
body.gs-app .page-sidebar-wrapper { background: var(--gs-navy); }
body.gs-app ul.page-sidebar-menu { list-style: none; margin: 0; padding: 0; }
body.gs-app ul.page-sidebar-menu > li { border: 0 !important; }
body.gs-app ul.page-sidebar-menu > li.sidebar-toggler-wrapper,
body.gs-app ul.page-sidebar-menu > li.sidebar-search-wrapper,
body.gs-app ul.page-sidebar-menu .selected { display: none !important; }
body.gs-app ul.page-sidebar-menu li > a { text-decoration: none; font-family: var(--gs-fonte); }
body.gs-app ul.page-sidebar-menu li > a > i { color: inherit !important; }
body.gs-app ul.page-sidebar-menu > li > a .arrow::before { color: var(--gs-trilho-texto) !important; }

/* ---------- Desktop: trilho de ícones + flyout ---------- */
@media (min-width: 992px) {
    body.gs-app .header {
        position: fixed;
        top: 0;
        left: var(--gs-trilho-largura);
        right: 0;
        height: 72px;
        min-height: 72px;
        padding: 0 var(--gs-pad-pagina);
        z-index: calc(var(--gs-z-trilho) + 1); /* acima do trilho, para o logo (filho do cabeçalho) aparecer sobre ele */
    }
    /* O logo fica no topo do trilho: o cabeçalho começa depois do trilho, então o deslocamento é negativo */
    body.gs-app .header .page-logo {
        position: absolute;
        top: 14px;
        left: calc(12px - var(--gs-trilho-largura));
    }
    body.gs-app .header .navbar-toggle { display: none !important; }

    body.gs-app.page-header-fixed .page-container { margin-top: 72px; }
    body.gs-app .page-container { background: var(--gs-bg); }

    body.gs-app .page-sidebar,
    body.gs-app.page-sidebar-closed .page-sidebar {
        position: fixed !important;
        top: 0;
        bottom: 0;
        left: 0;
        width: var(--gs-trilho-largura) !important;
        margin: 0;
        padding: 80px 0 16px; /* abaixo do logo e do cabeçalho (72px), que fica por cima do trilho */
        float: none;
        z-index: var(--gs-z-trilho);
        overflow: visible;
    }
    body.gs-app .page-sidebar .page-sidebar-menu,
    body.gs-app.page-sidebar-closed .page-sidebar .page-sidebar-menu {
        width: var(--gs-trilho-largura) !important;
        height: 100%;
        padding: 0 10px;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 4px;
    }
    body.gs-app ul.page-sidebar-menu > li,
    body.gs-app.page-sidebar-closed ul.page-sidebar-menu > li,
    body.gs-app.page-sidebar-closed ul.page-sidebar-menu > li:hover {
        position: relative !important;
        width: var(--gs-botao-trilho) !important;
        flex: 0 0 auto;
        display: block;
        z-index: auto;
    }
    body.gs-app.page-sidebar-closed ul.page-sidebar-menu > li:hover { z-index: var(--gs-z-flyout); }
    /* "Sair" vai para o rodapé do trilho */
    body.gs-app ul.page-sidebar-menu > li.last { margin-top: auto; }

    body.gs-app ul.page-sidebar-menu > li > a,
    body.gs-app.page-sidebar-closed ul.page-sidebar-menu > li > a {
        width: var(--gs-botao-trilho);
        height: var(--gs-botao-trilho);
        padding: 0 !important;
        margin: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        border: 0 !important;
        border-radius: var(--gs-raio-lg);
        background: transparent !important;
        color: var(--gs-trilho-texto);
        font-size: 18px;
        transition: background var(--gs-dur-media) var(--gs-ease), color var(--gs-dur-media), transform var(--gs-dur-media) var(--gs-ease);
    }
    body.gs-app ul.page-sidebar-menu > li > a > i { margin: 0 !important; font-size: 18px; top: 0; }
    body.gs-app ul.page-sidebar-menu > li > a > .arrow { display: none !important; }
    body.gs-app ul.page-sidebar-menu > li:hover > a,
    body.gs-app ul.page-sidebar-menu > li:focus-within > a,
    body.gs-app ul.page-sidebar-menu > li.open > a { background: var(--gs-verde-a18) !important; color: var(--gs-branco); }
    body.gs-app ul.page-sidebar-menu > li > a:active { transform: scale(.94); }
    body.gs-app ul.page-sidebar-menu > li.active > a { background: var(--gs-verde-a22) !important; color: var(--gs-verde) !important; }
    body.gs-app ul.page-sidebar-menu > li.active > a::before {
        content: "";
        position: absolute;
        left: -10px;
        top: 12px;
        width: 3px;
        height: 20px;
        border-radius: 2px;
        background: var(--gs-verde);
    }

    /* Rótulo do item: escondido no trilho, aparece no flyout.
       A borda transparente à esquerda cobre o vão até o trilho (o hover não se perde). */
    body.gs-app ul.page-sidebar-menu > li > a > .title { display: none !important; }
    body.gs-app ul.page-sidebar-menu > li:hover > a > .title,
    body.gs-app ul.page-sidebar-menu > li:focus-within > a > .title {
        display: flex !important;
        align-items: center;
        position: absolute;
        left: var(--gs-botao-trilho);
        top: 0;
        height: var(--gs-botao-trilho);
        padding: 0 16px;
        border-left: 10px solid transparent;
        background: var(--gs-rail2);
        background-clip: padding-box;
        color: var(--gs-branco);
        font-size: var(--gs-fs-lg);
        font-weight: var(--gs-fw-medio);
        white-space: nowrap;
        border-radius: 0 var(--gs-raio-sm) var(--gs-raio-sm) 0;
        box-shadow: var(--gs-sombra-flyout);
        animation: gs-fade .18s var(--gs-ease);
    }
    /* Item com submenu: o rótulo vira o título do flyout */
    body.gs-app ul.page-sidebar-menu > li:hover > a:not(:only-child) > .title,
    body.gs-app ul.page-sidebar-menu > li:focus-within > a:not(:only-child) > .title {
        width: calc(var(--gs-flyout-largura) + 10px);
        color: var(--gs-verde);
        font-size: var(--gs-fs-xs);
        font-weight: var(--gs-fw-semi);
        letter-spacing: var(--gs-tracking-rotulo);
        text-transform: uppercase;
        border-radius: 0 var(--gs-raio-lg) 0 0;
        box-shadow: none;
    }

    /* Submenu = flyout */
    body.gs-app ul.page-sidebar-menu > li > .sub-menu,
    body.gs-app.page-sidebar-closed ul.page-sidebar-menu > li > .sub-menu { display: none !important; }
    body.gs-app ul.page-sidebar-menu > li:hover > .sub-menu,
    body.gs-app ul.page-sidebar-menu > li:focus-within > .sub-menu,
    body.gs-app.page-sidebar-closed ul.page-sidebar-menu > li:hover > .sub-menu {
        display: block !important;
        position: absolute;
        left: var(--gs-botao-trilho);
        top: var(--gs-botao-trilho);
        width: calc(var(--gs-flyout-largura) + 10px);
        margin: 0;
        padding: 2px 14px 14px;
        border-left: 10px solid transparent;
        background: var(--gs-rail2) !important;
        background-clip: padding-box !important;
        border-radius: 0 0 var(--gs-raio-lg) var(--gs-raio-lg);
        box-shadow: var(--gs-sombra-flyout);
        list-style: none;
        animation: gs-fade .22s var(--gs-ease);
    }
}

/* Itens de submenu (flyout no desktop, lista no celular) */
body.gs-app ul.page-sidebar-menu .sub-menu { list-style: none; margin: 0; padding: 0; background: transparent; }
body.gs-app ul.page-sidebar-menu .sub-menu > li { border: 0 !important; margin: 0 0 2px; }
body.gs-app ul.page-sidebar-menu .sub-menu > li > a {
    display: flex !important;
    align-items: center;
    gap: 10px;
    padding: 9px 10px !important;
    border-radius: var(--gs-raio-sm);
    background: transparent !important;
    color: var(--gs-flyout-texto) !important;
    font-size: var(--gs-fs-lg);
    font-weight: var(--gs-fw-medio);
    transition: background var(--gs-dur-rapida), color var(--gs-dur-rapida);
}
body.gs-app ul.page-sidebar-menu .sub-menu > li > a::before {
    content: "";
    width: 6px;
    height: 6px;
    flex: 0 0 6px;
    border-radius: var(--gs-raio-pill);
    background: var(--gs-branco-a30);
}
body.gs-app ul.page-sidebar-menu .sub-menu > li > a > i { display: none; }
body.gs-app ul.page-sidebar-menu .sub-menu > li > a > .arrow { margin-left: auto; }
body.gs-app ul.page-sidebar-menu .sub-menu > li > a:hover,
body.gs-app ul.page-sidebar-menu .sub-menu > li > a:focus-visible { background: var(--gs-verde-a16) !important; color: var(--gs-branco) !important; outline: none; }
body.gs-app ul.page-sidebar-menu .sub-menu > li.active > a { background: rgba(47, 191, 155, .2) !important; color: var(--gs-branco) !important; }
body.gs-app ul.page-sidebar-menu .sub-menu > li.active > a::before { background: var(--gs-verde); }

/* =========================== Área de conteúdo =========================== */

body.gs-app .page-content-wrapper { float: none; }
body.gs-app .page-content {
    background: var(--gs-bg) !important;
    border-radius: 0;
    color: var(--gs-ink);
    transition: background var(--gs-dur-tema);
}
@media (min-width: 992px) {
    body.gs-app .page-content,
    body.gs-app.page-sidebar-closed .page-content {
        margin-left: var(--gs-trilho-largura) !important;
        padding: 6px var(--gs-pad-pagina) 48px !important;
    }
}
body.gs-app .page-content > .row,
body.gs-app .page-content > .portlet,
body.gs-app .page-content > .tabbable,
/* "backwards", não "both": se o transform da animação continuar aplicado depois do fim, o card vira contexto de
   empilhamento e os modais declarados dentro dele ficam presos sob o fundo escuro do Bootstrap (tela bloqueada). */
body.gs-app .page-content .portlet { animation: gs-rise .5s var(--gs-ease) backwards; }

/* Rodapé do Conquer (só tinha o "voltar ao topo") */
body.gs-app .footer { display: none; }

/* Barra de título / trilha (page-bar, page-title) */
body.gs-app .page-bar { background: transparent; margin: 0 0 14px; padding: 0; }
body.gs-app .page-bar .page-breadcrumb { padding: 0; }
body.gs-app .page-bar .page-breadcrumb > li,
body.gs-app .page-bar .page-breadcrumb > li > a,
body.gs-app .page-bar .page-breadcrumb > li > span { font-size: var(--gs-fs-sm); font-weight: var(--gs-fw-medio); color: var(--gs-muted); }
body.gs-app .page-bar .page-breadcrumb > li > i { color: var(--gs-muted); }
body.gs-app .page-title { font-size: var(--gs-fs-h1); font-weight: var(--gs-fw-semi); letter-spacing: var(--gs-tracking-titulo); color: var(--gs-ink); margin: 0 0 14px; }
body.gs-app .page-title small { color: var(--gs-muted); font-size: var(--gs-fs-md); }

/* ============================ Componentes ============================ */

/* ---- Portlet / panel / well → card ---- */
body.gs-app .portlet,
body.gs-app .portlet.box,
body.gs-app .panel {
    background: var(--gs-card);
    border: 0 !important;
    border-radius: var(--gs-raio-card);
    box-shadow: none;
    margin-bottom: var(--gs-gap-grade);
    padding: 0;
    color: var(--gs-ink);
    transition: background var(--gs-dur-tema);
}
body.gs-app .portlet > .portlet-title,
body.gs-app .portlet.box > .portlet-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px 12px;
    height: auto;
    min-height: 0;
    margin: 0;
    padding: 16px 20px 12px;
    background: transparent !important;
    border: 0;
    border-bottom: 1px solid var(--gs-linha);
    border-radius: var(--gs-raio-card) var(--gs-raio-card) 0 0;
    color: var(--gs-ink);
}
body.gs-app .portlet > .portlet-title::before,
body.gs-app .portlet > .portlet-title::after { display: none; }
body.gs-app .portlet > .portlet-title > .caption {
    float: none;
    display: flex;
    align-items: center;
    gap: 9px;
    margin: 0;
    padding: 0;
    font-size: var(--gs-fs-titulo-card);
    font-weight: var(--gs-fw-semi);
    letter-spacing: var(--gs-tracking-card);
    line-height: 1.3;
    color: var(--gs-ink) !important;
}
body.gs-app .portlet > .portlet-title > .caption > i {
    margin: 0;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    float: none;
    display: inline-flex !important; /* style.css força inline-block !important (o glifo ficava no canto) */
    align-items: center;
    justify-content: center;
    border-radius: var(--gs-raio-sm);
    background: var(--gs-badge-verde-bg);
    color: var(--gs-badge-verde-fg) !important;
    font-size: 15px;
    line-height: 1;
}
body.gs-app .portlet > .portlet-title > .actions,
body.gs-app .portlet > .portlet-title > .tools {
    float: none;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0;
    padding: 0;
}
body.gs-app .portlet > .portlet-title > .actions .btn-group { margin: 0; }
body.gs-app .portlet > .portlet-title > .actions .btn { margin: 0 !important; }
body.gs-app .portlet > .portlet-body,
body.gs-app .portlet.box > .portlet-body {
    background: transparent !important;
    border: 0;
    padding: 16px 20px 20px;
    border-radius: 0 0 var(--gs-raio-card) var(--gs-raio-card);
    color: var(--gs-ink);
}
body.gs-app .portlet > .portlet-body.form { padding: 18px 20px 20px; }
body.gs-app .panel-heading { background: transparent; border: 0; padding: 16px 20px 8px; color: var(--gs-ink); }
body.gs-app .panel-title { font-size: var(--gs-fs-titulo-card); font-weight: var(--gs-fw-semi); }
body.gs-app .panel-body { padding: 14px 20px 18px; }
body.gs-app .panel-footer { background: transparent; border-top: 1px solid var(--gs-linha); }
body.gs-app .well { background: var(--gs-thead); border: 0; border-radius: var(--gs-raio-lg); box-shadow: none; }
body.gs-app .thumbnail { background: var(--gs-card); border-color: var(--gs-linha); border-radius: var(--gs-raio-lg); }

/* ---- Abas (tabbable / FormDetail) ---- */
body.gs-app .nav-tabs { border-bottom: 1px solid var(--gs-linha); }
body.gs-app .nav-tabs > li > a,
body.gs-app .tabbable-custom > .nav-tabs > li > a {
    border: 0;
    border-bottom: 2.5px solid transparent;
    border-radius: 0;
    background: transparent;
    color: var(--gs-muted);
    font-size: var(--gs-fs-base);
    font-weight: var(--gs-fw-semi);
    padding: 9px 12px;
    margin-right: 2px;
    transition: color var(--gs-dur-rapida), border-color var(--gs-dur-rapida);
}
body.gs-app .nav-tabs > li > a:hover,
body.gs-app .tabbable-custom > .nav-tabs > li > a:hover { background: transparent; color: var(--gs-verde); border-bottom-color: transparent; }
body.gs-app .nav-tabs > li.active > a,
body.gs-app .nav-tabs > li.active > a:hover,
body.gs-app .nav-tabs > li.active > a:focus,
body.gs-app .tabbable-custom > .nav-tabs > li.active > a,
body.gs-app .tabbable-custom > .nav-tabs > li.active > a:hover {
    border: 0;
    border-top: 0;
    border-bottom: 2.5px solid var(--gs-verde);
    background: transparent;
    color: var(--gs-ink);
}
body.gs-app .tabbable-custom > .nav-tabs > li { border-top: 0; margin-bottom: -1px; }
body.gs-app .tabbable-custom > .nav-tabs > li.active { border-top: 0; margin-top: 0; }
body.gs-app .tabbable-custom { margin-bottom: var(--gs-gap-grade); }
body.gs-app .tabbable-custom > .nav-tabs {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    background: var(--gs-thead);
    border-radius: var(--gs-raio-card) var(--gs-raio-card) 0 0;
    padding: 10px 14px 0;
    border-bottom: 1px solid var(--gs-linha);
}
body.gs-app .tabbable-custom > .nav-tabs::-webkit-scrollbar { display: none; }
body.gs-app .tabbable-custom > .nav-tabs > li > a { white-space: nowrap; }
body.gs-app .tabbable-custom > .tab-content {
    background: var(--gs-card);
    border: 0;
    border-radius: 0 0 var(--gs-raio-card) var(--gs-raio-card);
    padding: 18px 20px;
    color: var(--gs-ink);
}
/* Portlet dentro de aba não precisa de outro card */
body.gs-app .tab-content .portlet { background: transparent; margin-bottom: 0; }
body.gs-app .tab-content .portlet > .portlet-body { padding: 0; }
body.gs-app .nav-pills > li > a { border-radius: var(--gs-raio-pill); color: var(--gs-ink); font-weight: var(--gs-fw-semi); font-size: var(--gs-fs-md); }
body.gs-app .nav-pills > li.active > a, body.gs-app .nav-pills > li.active > a:hover { background: var(--gs-navy); color: var(--gs-branco); }

/* ---- Formulário ---- */
body.gs-app label,
body.gs-app .control-label { font-size: var(--gs-fs-md); font-weight: var(--gs-fw-medio); color: var(--gs-muted); }
body.gs-app .form-group { margin-bottom: 14px; }
body.gs-app .form-control,
body.gs-app select.form-control,
body.gs-app textarea.form-control,
body.gs-app .wysihtml5-sandbox {
    height: auto;
    min-height: 40px;
    border: 1.5px solid var(--gs-borda) !important;
    padding: 8px 12px;
    background-color: var(--gs-card) !important;
    color: var(--gs-ink);
    font-size: var(--gs-fs-campo);
    box-shadow: none;
    transition: box-shadow var(--gs-dur-rapida), border-color var(--gs-dur-rapida);
}
body.gs-app textarea.form-control { line-height: 1.5; resize: vertical; }
body.gs-app .form-control:focus { border-color: var(--gs-borda); box-shadow: var(--gs-sombra-foco); outline: none; }
body.gs-app .form-control::placeholder { color: var(--gs-muted); opacity: .8; }
body.gs-app .form-control[disabled],
body.gs-app .form-control[readonly],
body.gs-app fieldset[disabled] .form-control { background-color: var(--gs-bg) !important; border-color: transparent !important; color: var(--gs-ink); opacity: 1; cursor: default; }
body.gs-app select.form-control:not([multiple]) {
    -webkit-appearance: none;
    appearance: none;
    padding-right: 32px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%232FBF9B' stroke-width='3' stroke-linecap='round'><path d='M6 9l6 6 6-6'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
}
/* Valor somente leitura (form-control-static) */
body.gs-app .form-control-static {
    min-height: 40px;
    padding: 9px 12px;
    background: var(--gs-bg);
    font-size: var(--gs-fs-campo);
    color: var(--gs-ink);
    word-break: break-word;
}
body.gs-app label.form-control-static { background: none; min-height: 0; padding: 9px 0 0; font-size: var(--gs-fs-md); color: var(--gs-muted); }
body.gs-app .form-horizontal .control-label { padding-top: 10px; }
body.gs-app .input-group-addon { background: var(--gs-bg); border: 1.5px solid var(--gs-borda); color: var(--gs-muted); }
body.gs-app .input-group-btn > .btn { min-height: 40px; }
body.gs-app .input-icon > i { color: var(--gs-muted); margin-top: 13px; z-index: 3; }
body.gs-app .input-icon > .form-control { padding-left: 36px; }
body.gs-app .input-icon.right > .form-control { padding-left: 12px; padding-right: 36px; }
body.gs-app .has-error .form-control { border-color: var(--gs-vermelho) !important; }
body.gs-app .has-error .help-block, body.gs-app .has-error .control-label { color: var(--gs-perigo-texto); }
body.gs-app .has-success .form-control { border-color: var(--gs-verde) !important; }
body.gs-app input[type="checkbox"], body.gs-app input[type="radio"] { accent-color: var(--gs-verde); }
body.gs-app .form-section {
    margin: 26px 0 16px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--gs-linha);
    font-size: var(--gs-fs-titulo-card);
    font-weight: var(--gs-fw-semi);
    color: var(--gs-ink);
}
body.gs-app .form-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 18px;
    padding: 14px 0 0;
    background: transparent;
    border-top: 1px solid var(--gs-linha);
    border-radius: 0;
}
body.gs-app .form-actions::after { display: none; }
body.gs-app .form-actions.top { margin: 0 0 16px; padding: 0 0 14px; border-top: 0; border-bottom: 1px solid var(--gs-linha); }
body.gs-app .form-actions.left { justify-content: flex-start; }
body.gs-app .form-actions .btn + .btn { margin-left: 0; }
body.gs-app .form-actions .pull-right { margin-left: auto; float: none !important; }

/* Uniform (checkbox/radio do Conquer): desenho próprio no lugar do sprite */
body.gs-app div.checker,
body.gs-app div.radio { margin-right: 6px; }
body.gs-app div.checker span,
body.gs-app div.radio span {
    position: relative;
    width: 18px;
    height: 18px;
    background: var(--gs-card) !important;
    border: 1.5px solid var(--gs-borda);
    border-radius: 5px;
    transition: background var(--gs-dur-rapida), border-color var(--gs-dur-rapida), box-shadow var(--gs-dur-rapida);
}
body.gs-app div.radio span { border-radius: var(--gs-raio-pill); }
body.gs-app div.checker.focus span, body.gs-app div.checker.hover span,
body.gs-app div.radio.focus span, body.gs-app div.radio.hover span { box-shadow: var(--gs-sombra-foco); }
body.gs-app div.checker span.checked { background: var(--gs-verde) !important; border-color: var(--gs-verde); }
body.gs-app div.checker span.checked::after {
    content: "";
    position: absolute;
    left: 5px;
    top: 1px;
    width: 5px;
    height: 10px;
    border: solid var(--gs-navy);
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}
body.gs-app div.radio span.checked::after {
    content: "";
    position: absolute;
    left: 4px;
    top: 4px;
    width: 7px;
    height: 7px;
    border-radius: var(--gs-raio-pill);
    background: var(--gs-verde);
}
body.gs-app div.checker input, body.gs-app div.radio input { width: 18px; height: 18px; }
body.gs-app div.checker.disabled span, body.gs-app div.radio.disabled span { opacity: .5; }

/* ---- Botões: Bootstrap + cores do Conquer → paleta do design ----
   btn-primary/blue → confirmar (azul) · btn-success/green → primário (verde)
   btn-default/grey → neutro (cinza) · btn-danger/red → perigo
   btn-info/dark → navy · btn-warning/yellow → laranja · purple (ação da linha do grid) → ícone */
body.gs-app .btn {
    border: 0;
    font-family: var(--gs-fonte);
    font-size: var(--gs-fs-lg);
    font-weight: var(--gs-fw-semi);
    padding: 9px 16px;
    box-shadow: none;
    text-shadow: none;
    background-image: none;
    transition: transform var(--gs-dur-rapida), filter var(--gs-dur-rapida), background var(--gs-dur-rapida), box-shadow var(--gs-dur-rapida);
    /* Ícone + texto: o "gap" só separa quando há texto ao lado (os botões do XControl saem como <i></i>Texto,
       e ":only-child" não enxerga o texto, por isso margem no <i> não funcionava) */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}
body.gs-app .btn-block { display: flex; }
body.gs-app .btn > i { margin: 0; }
body.gs-app .btn:active, body.gs-app .btn.active { transform: scale(.97); box-shadow: none; }
body.gs-app .btn:focus, body.gs-app .btn.focus { outline: none; box-shadow: var(--gs-sombra-foco); }
body.gs-app .btn-sm, body.gs-app .btn-group-sm > .btn { padding: 6px 12px; font-size: var(--gs-fs-md); }
body.gs-app .btn-xs, body.gs-app .btn-group-xs > .btn { padding: 3px 9px; font-size: var(--gs-fs-xs); }
body.gs-app .btn-lg { padding: 12px 22px; font-size: var(--gs-fs-xl); }
body.gs-app .btn-primary, body.gs-app .btn.blue,
body.gs-app .btn-primary:focus, body.gs-app .btn.blue:focus { background: var(--gs-azul); color: var(--gs-branco); }
body.gs-app .btn-primary:hover, body.gs-app .btn.blue:hover,
body.gs-app .btn-primary:active, body.gs-app .btn-primary.active,
body.gs-app .open > .dropdown-toggle.btn-primary { background: var(--gs-azul-hover); color: var(--gs-branco); }
body.gs-app .btn-success, body.gs-app .btn.green,
body.gs-app .btn-success:focus, body.gs-app .btn.green:focus { background: var(--gs-verde); color: var(--gs-branco); }
body.gs-app .btn-success:hover, body.gs-app .btn.green:hover,
body.gs-app .btn-success:active, body.gs-app .btn-success.active,
body.gs-app .open > .dropdown-toggle.btn-success { background: var(--gs-verde-hover); color: var(--gs-branco); }
body.gs-app .btn-default, body.gs-app .btn.default, body.gs-app .btn.grey,
body.gs-app .btn-default:focus { background: var(--gs-cinza); color: var(--gs-branco); }
body.gs-app .btn-default:hover, body.gs-app .btn.default:hover, body.gs-app .btn.grey:hover,
body.gs-app .btn-default:active, body.gs-app .btn-default.active,
body.gs-app .open > .dropdown-toggle.btn-default { background: var(--gs-cinza-hover); color: var(--gs-branco); }
body.gs-app .btn-danger, body.gs-app .btn.red,
body.gs-app .btn-danger:focus { background: var(--gs-vermelho); color: var(--gs-branco); }
body.gs-app .btn-danger:hover, body.gs-app .btn.red:hover, body.gs-app .btn-danger:active { background: var(--gs-vermelho-hover); color: var(--gs-branco); }
body.gs-app .btn-info, body.gs-app .btn.dark,
body.gs-app .btn-info:focus { background: var(--gs-navy); color: var(--gs-branco); }
body.gs-app .btn-info:hover, body.gs-app .btn.dark:hover, body.gs-app .btn-info:active { filter: brightness(1.25); background: var(--gs-navy); color: var(--gs-branco); }
html[data-gs-tema="escuro"] body.gs-app .btn-info,
html[data-gs-tema="escuro"] body.gs-app .btn.dark { background: var(--gs-azul); }
body.gs-app .btn-warning, body.gs-app .btn.yellow,
body.gs-app .btn-warning:focus { background: var(--gs-laranja); color: var(--gs-navy); }
body.gs-app .btn-warning:hover, body.gs-app .btn.yellow:hover { filter: brightness(1.06); color: var(--gs-navy); }
body.gs-app .btn.purple,
body.gs-app .btn.purple:focus { background: var(--gs-bg); color: var(--gs-ink); }
body.gs-app .btn.purple:hover { background: var(--gs-verde-a22); color: var(--gs-ink); }
body.gs-app .btn-link { color: var(--gs-acento); font-weight: var(--gs-fw-semi); }
body.gs-app .btn[disabled], body.gs-app .btn.disabled { opacity: .55; }
body.gs-app .btn-file { overflow: hidden; position: relative; }

/* ---- Tabelas / DataTables ---- */
body.gs-app .table { font-size: var(--gs-fs-base); color: var(--gs-ink); background: transparent; margin-bottom: 0; }
body.gs-app .table > thead > tr > th,
body.gs-app table.dataTable thead th,
body.gs-app table.dataTable thead td {
    color: var(--gs-muted);
    font-size: var(--gs-fs-xs);
    font-weight: var(--gs-fw-semi);
    letter-spacing: var(--gs-tracking-caps);
    text-transform: uppercase;
    background-color: var(--gs-thead) !important;
    border-bottom: 0 !important;
    border-top: 0 !important;
    padding: 9px 14px;
    white-space: nowrap;
}
body.gs-app .table > tbody > tr > td,
body.gs-app .table > tbody > tr > th,
body.gs-app .table > tfoot > tr > td,
body.gs-app table.dataTable tbody td {
    padding: var(--gs-pad-linha) 14px;
    border-top: 1px solid var(--gs-linha);
    vertical-align: middle;
    font-variant-numeric: tabular-nums;
}
body.gs-app .table-bordered,
body.gs-app .table-bordered > thead > tr > th,
body.gs-app .table-bordered > tbody > tr > td { border-color: var(--gs-linha); }
body.gs-app .table-striped > tbody > tr:nth-child(odd) > td,
body.gs-app .table-striped > tbody > tr:nth-child(odd) > th,
body.gs-app table.dataTable tbody tr,
body.gs-app table.dataTable tbody tr.odd,
body.gs-app table.dataTable tbody tr.even { background-color: transparent; }
body.gs-app .table-hover > tbody > tr:hover > td,
body.gs-app .table > tbody > tr:hover > td,
body.gs-app table.dataTable tbody tr:hover > td { background-color: var(--gs-hover); }
body.gs-app .table > tbody > tr.active > td,
body.gs-app table.dataTable tbody tr.selected > td,
body.gs-app table.dataTable tbody tr.active > td { background-color: var(--gs-hover) !important; color: var(--gs-ink); }
body.gs-app table.dataTable.no-footer { border-bottom: 0; }
body.gs-app table.dataTable { margin-top: 0 !important; margin-bottom: 0 !important; }
body.gs-app table.dataTable thead .sorting_asc,
body.gs-app table.dataTable thead .sorting_desc { color: var(--gs-verde); }
body.gs-app .table-scrollable,
body.gs-app .table-responsive { border: 0; margin: 0 !important; overflow-x: auto; -webkit-overflow-scrolling: touch; }
body.gs-app .dataTables_wrapper { font-size: var(--gs-fs-md); color: var(--gs-muted); }
body.gs-app .dataTables_wrapper .row { margin-left: 0; margin-right: 0; }
body.gs-app .dataTables_wrapper .dataTables_filter label,
body.gs-app .dataTables_wrapper .dataTables_length label { font-size: var(--gs-fs-md); color: var(--gs-muted); }
body.gs-app .dataTables_wrapper .dataTables_filter input,
body.gs-app .dataTables_wrapper .dataTables_length select {
    min-height: var(--gs-altura-controle) !important;
    height: var(--gs-altura-controle);
    border: 0 !important;
    background-color: var(--gs-bg) !important;
    padding: 0 12px;
    color: var(--gs-ink);
    font-size: var(--gs-fs-base);
}
body.gs-app .dataTables_wrapper .dataTables_filter input:focus { box-shadow: var(--gs-sombra-foco); outline: none; }
body.gs-app .dataTables_scrollHead, body.gs-app .dataTables_scrollBody { border: 0 !important; }
body.gs-app .dataTables_scrollHeadInner > table,
body.gs-app .dataTables_scrollBody > table { border: 0; }
body.gs-app .dataTables_wrapper .dataTables_info { color: var(--gs-muted); padding-top: 12px; }
body.gs-app .dataTables_processing,
body.gs-app .DTS_Loading {
    background: var(--gs-card) !important;
    color: var(--gs-ink);
    border-radius: var(--gs-raio-lg);
    box-shadow: var(--gs-sombra-toast);
    border: 0;
}

/* Paginação */
body.gs-app .pagination > li > a,
body.gs-app .pagination > li > span {
    border: 0;
    border-radius: var(--gs-raio-sm) !important;
    margin: 0 2px;
    background: transparent;
    color: var(--gs-ink);
    font-weight: var(--gs-fw-semi);
    font-size: var(--gs-fs-md);
    min-width: 32px;
    text-align: center;
}
body.gs-app .pagination > li > a:hover { background: var(--gs-verde-a18); color: var(--gs-ink); }
body.gs-app .pagination > .active > a, body.gs-app .pagination > .active > a:hover,
body.gs-app .pagination > .active > span { background: var(--gs-navy); color: var(--gs-branco); }
body.gs-app .pagination > .disabled > a, body.gs-app .pagination > .disabled > span { opacity: .4; background: transparent; }

/* ---- Labels / badges ---- */
body.gs-app .label, body.gs-app .badge {
    display: inline-block;
    padding: 2px 9px;
    border-radius: var(--gs-raio-pill);
    font-size: var(--gs-fs-xs);
    font-weight: var(--gs-fw-semi);
    line-height: 1.6;
    text-shadow: none;
    background: var(--gs-badge-cinza-bg);
    color: var(--gs-badge-cinza-fg);
}
body.gs-app .label-success, body.gs-app .badge-success { background: var(--gs-badge-verde-bg); color: var(--gs-badge-verde-fg); }
body.gs-app .label-primary, body.gs-app .label-info, body.gs-app .badge-primary, body.gs-app .badge-info { background: var(--gs-badge-azul-bg); color: var(--gs-badge-azul-fg); }
body.gs-app .label-warning, body.gs-app .badge-warning { background: var(--gs-badge-amarelo-bg); color: var(--gs-badge-amarelo-fg); }
body.gs-app .label-danger, body.gs-app .badge-danger { background: var(--gs-badge-vermelho-bg); color: var(--gs-badge-vermelho-fg); }

/* ---- Alertas ---- */
body.gs-app .alert { border: 0; border-radius: var(--gs-raio-xl); font-size: var(--gs-fs-lg); padding: 12px 16px; }
body.gs-app .alert-info { background: var(--gs-badge-azul-bg); color: var(--gs-badge-azul-fg); }
body.gs-app .alert-success { background: var(--gs-badge-verde-bg); color: var(--gs-badge-verde-fg); }
body.gs-app .alert-warning { background: var(--gs-badge-amarelo-bg); color: var(--gs-badge-amarelo-fg); }
body.gs-app .alert-danger { background: var(--gs-badge-vermelho-bg); color: var(--gs-badge-vermelho-fg); }

/* Botão fechar do Conquer (era um png com text-indent): vira "×" */
body.gs-app .close {
    width: auto;
    height: auto;
    background-image: none !important;
    text-indent: 0;
    font-size: 0;
    line-height: 1;
    opacity: .6;
    text-shadow: none;
    color: inherit;
}
body.gs-app .close::before { content: "\00d7"; font-size: 20px; font-weight: var(--gs-fw-normal); }
body.gs-app .close:hover { opacity: 1; }

/* ---- Modal / bootbox ---- */
body.gs-app .modal-backdrop.in { background: var(--gs-navy); opacity: .55; }
body.gs-app .modal-content {
    background: var(--gs-card);
    color: var(--gs-ink);
    border: 0;
    border-radius: var(--gs-raio-modal);
    box-shadow: var(--gs-sombra-modal);
    overflow: hidden;
}
body.gs-app .modal.in .modal-dialog { animation: gs-pop .32s var(--gs-ease); }
body.gs-app .modal-header {
    display: flex;
    align-items: center;
    flex-direction: row-reverse;
    justify-content: space-between;
    gap: 12px;
    background: var(--gs-navy) !important;
    color: var(--gs-branco) !important;
    border-bottom: 0;
    padding: 16px 22px;
}
body.gs-app .modal-header .modal-title { font-size: var(--gs-fs-modal); font-weight: var(--gs-fw-semi); letter-spacing: var(--gs-tracking-card); color: var(--gs-branco); }
body.gs-app .modal-header .close {
    margin: 0;
    width: 32px;
    height: 32px;
    flex: 0 0 32px;
    border-radius: var(--gs-raio-sm);
    background: var(--gs-branco-a08) !important;
    color: var(--gs-branco);
    opacity: 1;
}
body.gs-app .modal-header .close:hover { background: var(--gs-branco-a18) !important; }
body.gs-app .modal-body { padding: 22px; }
body.gs-app .bootbox .modal-body .close { display: none; } /* bootbox.alert sem cabeçalho repete o "×" no corpo */
body.gs-app .modal-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
    border-top: 1px solid var(--gs-linha);
    padding: 14px 22px;
    margin-top: 0;
}
body.gs-app .modal-footer .btn + .btn { margin-left: 0; }
body.gs-app .bootbox .modal-dialog { max-width: 460px; }

/* ---- Dropdown ---- */
body.gs-app .dropdown-menu {
    background: var(--gs-card);
    border: 0;
    border-radius: var(--gs-raio-lg);
    box-shadow: var(--gs-sombra-toast);
    padding: 6px;
    font-size: var(--gs-fs-lg);
}
body.gs-app .dropdown-menu::before, body.gs-app .dropdown-menu::after { display: none; }
body.gs-app .dropdown-menu > li > a { color: var(--gs-ink); border-radius: var(--gs-raio-xs); padding: 8px 12px; }
body.gs-app .dropdown-menu > li > a > i { width: 18px; color: var(--gs-acento) !important; }
body.gs-app .dropdown-menu > li > a:hover, body.gs-app .dropdown-menu > li > a:focus { background: var(--gs-hover); color: var(--gs-ink); }
body.gs-app .dropdown-menu > .active > a, body.gs-app .dropdown-menu > .active > a:hover { background: var(--gs-verde-a22); color: var(--gs-ink); }
body.gs-app .dropdown-menu .divider { background: var(--gs-linha); }
/* Colunas do grid (dropdown-checkboxes) */
body.gs-app .dropdown-checkboxes { padding: 8px 12px; }
body.gs-app .dropdown-checkboxes label { display: flex; align-items: center; gap: 6px; margin: 4px 0; color: var(--gs-ink); }

/* ---- select2 3.4 ---- */
body.gs-app .select2-container.form-control { padding: 0; border: 0 !important; background: transparent !important; min-height: 0; box-shadow: none; }
body.gs-app .select2-container .select2-choice,
body.gs-app .select2-container-multi .select2-choices {
    min-height: 40px;
    border: 1.5px solid var(--gs-borda);
    background: var(--gs-card);
    background-image: none;
    box-shadow: none;
    color: var(--gs-ink);
}
body.gs-app .select2-container .select2-choice { height: 40px; line-height: 37px; padding-left: 12px; font-size: var(--gs-fs-campo); }
body.gs-app .select2-container .select2-choice .select2-arrow { background: transparent; border: 0; width: 30px; }
body.gs-app .select2-container .select2-choice .select2-arrow b {
    background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%232FBF9B' stroke-width='3' stroke-linecap='round'><path d='M6 9l6 6 6-6'/></svg>") center no-repeat !important;
}
body.gs-app .select2-container .select2-choice abbr { top: 12px; }
body.gs-app .select2-container-active .select2-choice,
body.gs-app .select2-container-active .select2-choices,
body.gs-app .select2-dropdown-open .select2-choice { box-shadow: var(--gs-sombra-foco); border-color: var(--gs-borda); }
body.gs-app .select2-drop,
body.gs-app .select2-drop.select2-drop-above {
    background: var(--gs-card);
    color: var(--gs-ink);
    border: 0;
    border-radius: var(--gs-raio-campo);
    box-shadow: var(--gs-sombra-toast);
    margin-top: 4px;
}
body.gs-app .select2-search input {
    border: 1.5px solid var(--gs-borda);
    background-color: var(--gs-card);
    color: var(--gs-ink);
    min-height: 34px;
}
body.gs-app .select2-results { padding: 0 4px 4px; margin: 4px 0 0; }
body.gs-app .select2-results li { border-radius: var(--gs-raio-xs); }
body.gs-app .select2-results .select2-highlighted { background: var(--gs-verde); color: var(--gs-navy); }
body.gs-app .select2-results .select2-no-results,
body.gs-app .select2-results .select2-searching { background: transparent; color: var(--gs-muted); }
body.gs-app .select2-container-multi .select2-choices .select2-search-choice {
    background: var(--gs-badge-verde-bg);
    color: var(--gs-badge-verde-fg);
    border: 0;
    border-radius: var(--gs-raio-pill);
    box-shadow: none;
    background-image: none;
}

/* ---- Notificações (gritter) → toast ---- */
body.gs-app #gritter-notice-wrapper { top: 18px; right: 18px; width: 320px; max-width: calc(100vw - 36px); }
body.gs-app .gritter-item-wrapper { margin-bottom: 10px; background: none; }
body.gs-app .gritter-top, body.gs-app .gritter-bottom { display: none; }
body.gs-app .gritter-item {
    background: var(--gs-navy);
    color: var(--gs-branco);
    border-radius: var(--gs-raio-lg);
    box-shadow: var(--gs-sombra-toast);
    padding: 12px 16px;
    font-family: var(--gs-fonte);
    font-size: var(--gs-fs-lg);
    animation: gs-pop .3s var(--gs-ease);
}
body.gs-app .gritter-title { font-weight: var(--gs-fw-semi); color: var(--gs-verde); text-shadow: none; }
body.gs-app .gritter-close { left: auto; right: 6px; top: 6px; }

/* ---- Barra de progresso / upload ---- */
body.gs-app .progress { background: var(--gs-bg); border-radius: var(--gs-raio-pill); box-shadow: none; height: 10px; }
body.gs-app .progress-bar { background: var(--gs-azul); box-shadow: none; }
body.gs-app .progress-bar-success { background: var(--gs-verde); }
body.gs-app .fileupload-buttonbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
body.gs-app .fileinput .thumbnail { border-radius: var(--gs-raio-lg); }

/* ---- Popover / x-editable / tooltip ---- */
body.gs-app .popover { background: var(--gs-card); color: var(--gs-ink); border: 0; border-radius: var(--gs-raio-lg); box-shadow: var(--gs-sombra-toast); }
body.gs-app .popover-title { background: var(--gs-thead); border-bottom-color: var(--gs-linha); border-radius: var(--gs-raio-lg) var(--gs-raio-lg) 0 0; font-weight: var(--gs-fw-semi); }
body.gs-app .editable-click, body.gs-app a.editable-click { color: var(--gs-acento); border-bottom-color: var(--gs-acento); }
body.gs-app .tooltip-inner { background: var(--gs-navy); border-radius: var(--gs-raio-xs); font-size: var(--gs-fs-sm); }

/* ---- Tema escuro: superfícies que o Conquer pinta sem variável ---- */
html[data-gs-tema="escuro"] body.gs-app .list-group-item { background: var(--gs-card); border-color: var(--gs-linha); color: var(--gs-ink); }
html[data-gs-tema="escuro"] body.gs-app .ui-widget-content,
html[data-gs-tema="escuro"] body.gs-app .datepicker.dropdown-menu { background: var(--gs-card); color: var(--gs-ink); border-color: var(--gs-linha); }
html[data-gs-tema="escuro"] body.gs-app .datepicker table tr td.day:hover,
html[data-gs-tema="escuro"] body.gs-app .datepicker table tr td span:hover { background: var(--gs-hover); }
html[data-gs-tema="escuro"] body.gs-app .popover.top .arrow::after { border-top-color: var(--gs-card); }
html[data-gs-tema="escuro"] body.gs-app .popover.bottom .arrow::after { border-bottom-color: var(--gs-card); }
html[data-gs-tema="escuro"] body.gs-app .wysihtml5-toolbar .btn-default { background: var(--gs-thead); color: var(--gs-ink); }
body.gs-app .datepicker table tr td.active,
body.gs-app .datepicker table tr td.active:hover,
body.gs-app .datepicker table tr td span.active { background: var(--gs-navy) !important; background-image: none !important; color: var(--gs-branco) !important; text-shadow: none; }
body.gs-app .datepicker table tr td.today { background: var(--gs-verde-a22) !important; background-image: none !important; color: var(--gs-ink) !important; }

/* ============================== Celular / tablet ============================== */
@media (max-width: 991px) {
    body.gs-app .header {
        position: sticky !important;
        top: 0;
        height: 60px;
        min-height: 60px;
        padding: 0 12px;
        background: var(--gs-navy);
        z-index: var(--gs-z-trilho);
    }
    body.gs-app.page-header-fixed .page-container,
    body.gs-app .page-container { margin-top: 0 !important; }
    body.gs-app .header .page-logo { width: 38px; height: 38px; }
    body.gs-app .header .navbar-toggle { display: inline-flex !important; }
    body.gs-app .gs-cabecalho__textos { display: none; }
    body.gs-app .header .gs-tema-btn,
    body.gs-app .header .navbar-nav > li.dropdown.user > .dropdown-toggle { background: var(--gs-branco-a08) !important; color: var(--gs-branco); }
    body.gs-app .header .navbar-nav > li.dropdown.user .username { color: var(--gs-flyout-texto) !important; max-width: 120px; }
    body.gs-app .header .navbar-nav li.dropdown .dropdown-toggle i { color: var(--gs-trilho-texto) !important; }
    body.gs-app .header .navbar-nav .open .dropdown-menu { position: absolute; right: 0; left: auto; background: var(--gs-card); }

    /* Título da página volta para o topo do conteúdo */
    body.gs-app .gs-titulo-movel { display: block; }

    /* Menu: painel deslizante abaixo do cabeçalho */
    body.gs-app .page-sidebar.navbar-collapse,
    body.gs-app .page-sidebar.navbar-collapse.in {
        position: fixed !important;
        top: 60px;
        left: 0;
        right: 0;
        margin: 0 !important;
        max-height: calc(100vh - 60px) !important;
        max-height: calc(100dvh - 60px) !important;
        overflow-y: auto !important;
        padding: 10px 14px 24px;
        background-color: var(--gs-navy) !important; /* themes/default.css: #1d1d1f !important até 991px */
        border-radius: 0 !important;
        box-shadow: 0 24px 40px rgba(22, 35, 63, .35);
        z-index: var(--gs-z-flyout);
        -webkit-overflow-scrolling: touch;
    }
    body.gs-app .page-sidebar.navbar-collapse.collapse:not(.in) { display: none !important; }
    body.gs-app .page-sidebar .page-sidebar-menu { background-color: transparent !important; border-radius: 0 !important; }
    body.gs-app .page-sidebar.navbar-collapse.collapsing { display: block !important; overflow: hidden !important; padding-top: 0; padding-bottom: 0; }
    body.gs-app ul.page-sidebar-menu > li { margin-bottom: 2px; }
    body.gs-app ul.page-sidebar-menu > li > a {
        display: flex;
        align-items: center;
        gap: 12px;
        min-height: 46px;
        padding: 10px 12px !important;
        border: 0 !important;
        border-radius: var(--gs-raio-lg);
        background: transparent !important;
        color: var(--gs-flyout-texto) !important;
        font-size: var(--gs-fs-xl);
        font-weight: var(--gs-fw-medio);
    }
    body.gs-app ul.page-sidebar-menu > li > a > i { width: 22px; font-size: 17px; text-align: center; color: var(--gs-trilho-texto) !important; margin: 0 !important; }
    body.gs-app ul.page-sidebar-menu > li > a > .title { display: inline !important; flex: 1; }
    body.gs-app ul.page-sidebar-menu > li > a > .arrow { float: none; margin-left: auto; }
    body.gs-app ul.page-sidebar-menu > li > a:hover,
    body.gs-app ul.page-sidebar-menu > li.open > a { background: var(--gs-verde-a16) !important; color: var(--gs-branco) !important; }
    body.gs-app ul.page-sidebar-menu > li.active > a { background: var(--gs-verde-a22) !important; color: var(--gs-branco) !important; }
    body.gs-app ul.page-sidebar-menu > li.active > a > i { color: var(--gs-verde) !important; }
    body.gs-app ul.page-sidebar-menu > li.last { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--gs-branco-a08) !important; }
    body.gs-app ul.page-sidebar-menu > li > .sub-menu {
        width: auto; /* style-responsive.css: ul { width: 100% } somado à margem estourava o painel */
        margin: 4px 0 6px 22px;
        padding: 4px 0 4px 12px;
        border-left: 1px solid var(--gs-branco-a18);
    }

    body.gs-app .page-content { padding: 16px 16px 32px !important; }
    body.gs-app .portlet > .portlet-title { padding: 14px 16px 10px; }
    body.gs-app .portlet > .portlet-body { padding: 14px 16px 16px; }
    body.gs-app .tabbable-custom > .tab-content { padding: 16px; }
    body.gs-app.gs-menu-aberto { overflow: hidden; }
}

@media (max-width: 767px) {
    /* Grids e formulários de duas colunas viram uma coluna; tabelas rolam na horizontal */
    body.gs-app .portlet > .portlet-body { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    body.gs-app .portlet > .portlet-title > .actions { width: 100%; }
    body.gs-app .portlet > .portlet-title > .actions > .btn,
    body.gs-app .portlet > .portlet-title > .actions > .btn-group { flex: 1 1 auto; }
    body.gs-app .portlet > .portlet-title > .actions > .btn-group > .btn { width: 100%; }
    body.gs-app .form-horizontal .control-label { text-align: left; padding-top: 0; margin-bottom: 5px; }
    body.gs-app .form-actions > .btn { flex: 1 1 auto; }
    body.gs-app .dataTables_wrapper .dataTables_filter,
    body.gs-app .dataTables_wrapper .dataTables_length,
    body.gs-app .dataTables_wrapper .dataTables_info,
    body.gs-app .dataTables_wrapper .dataTables_paginate { float: none; text-align: left; }
    body.gs-app .dataTables_wrapper .dataTables_filter input { width: 100% !important; margin-left: 0 !important; }
    body.gs-app .dataTables_wrapper .dataTables_filter label { display: block; }
    body.gs-app .modal-dialog { margin: 10px; }
    body.gs-app .modal-body { padding: 16px; }
    body.gs-app .modal-footer { padding: 12px 16px; }
    body.gs-app .modal-footer > .btn { flex: 1 1 auto; }
    body.gs-app .header .navbar-nav > li.dropdown.user .username { display: none; }
    body.gs-app .header .navbar-nav > li.dropdown.user > .dropdown-toggle { padding: 0 8px 0 3px; }
    body.gs-app .table > thead > tr > th, body.gs-app .table > tbody > tr > td { padding-left: 10px; padding-right: 10px; }
}

/* ============================ Login / Bloqueio ============================ */

body.gs-app.login,
body.gs-app.gs-lock {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 32px 16px !important;
    background:
        radial-gradient(900px 520px at 12% -10%, var(--gs-verde-a22), transparent 60%),
        radial-gradient(700px 480px at 110% 110%, rgba(13, 110, 253, .18), transparent 60%),
        var(--gs-navy) !important;
}
html[data-gs-tema="escuro"] body.gs-app.login,
html[data-gs-tema="escuro"] body.gs-app.gs-lock {
    background:
        radial-gradient(900px 520px at 12% -10%, var(--gs-verde-a16), transparent 60%),
        radial-gradient(700px 480px at 110% 110%, rgba(13, 110, 253, .12), transparent 60%),
        #0B1E2B !important;
}
body.gs-app.login .logo {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    width: auto;
    margin: 0 0 22px;
    padding: 0;
    color: var(--gs-branco);
    font-size: 26px;
    letter-spacing: var(--gs-tracking-titulo);
}
body.gs-app.login .logo::before {
    content: "";
    width: 46px;
    height: 46px;
    border-radius: var(--gs-raio-lg);
    background: var(--gs-branco) url("../../img/brand-logo/logo-gransoft-icone.png") center / 32px no-repeat;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .25);
}
body.gs-app.login .logo::after { content: "Gransoft"; font-weight: var(--gs-fw-bold); }
body.gs-app.login .content,
body.gs-app.gs-lock .page-lock {
    width: 100%;
    max-width: 400px;
    margin: 0 auto;
    padding: 30px 30px 26px;
    background: var(--gs-card);
    color: var(--gs-ink);
    border-radius: var(--gs-raio-modal);
    box-shadow: var(--gs-sombra-modal);
    animation: gs-pop .45s var(--gs-ease);
}
body.gs-app.login .content h3,
body.gs-app.login .content .form-title {
    margin: 0 0 4px;
    font-size: var(--gs-fs-h1);
    font-weight: var(--gs-fw-semi);
    letter-spacing: var(--gs-tracking-titulo);
    color: var(--gs-ink);
}
body.gs-app.login .content h3::after {
    content: "";
    display: block;
    width: 36px;
    height: 3px;
    margin: 10px 0 22px;
    border-radius: var(--gs-raio-pill);
    background: var(--gs-verde);
}
body.gs-app.login .content p { color: var(--gs-muted); }
body.gs-app.login .content .form-control { min-height: 44px; }
body.gs-app.login .content .form-actions {
    justify-content: space-between;
    margin: 6px 0 0;
    padding: 0;
    border: 0;
}
body.gs-app.login .content .form-actions .checkbox { margin: 0; padding: 0; display: inline-flex; align-items: center; gap: 6px; color: var(--gs-muted); font-size: var(--gs-fs-lg); }
body.gs-app.login .content .form-actions .btn { min-height: 44px; padding-left: 26px; padding-right: 26px; }
body.gs-app.login .content .form-actions .btn-info { background: var(--gs-verde); color: var(--gs-branco); }
body.gs-app.login .content .form-actions .btn-info:hover { background: var(--gs-verde-hover); filter: none; color: var(--gs-branco); }
body.gs-app.login .content .forget-password {
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid var(--gs-linha);
}
body.gs-app.login .content .forget-password h4 { margin: 0 0 4px; font-size: var(--gs-fs-xl); font-weight: var(--gs-fw-semi); }
body.gs-app.login .content .forget-password p { margin: 0; font-size: var(--gs-fs-lg); }
body.gs-app.login .copyright { color: var(--gs-trilho-texto); font-size: var(--gs-fs-sm); margin-top: 18px; }
/* Autocompletar do navegador (fundo amarelo do Chrome) */
body.gs-app.login input:-webkit-autofill,
body.gs-app.login input:-webkit-autofill:hover,
body.gs-app.login input:-webkit-autofill:focus {
    -webkit-box-shadow: 0 0 0 40px var(--gs-card) inset;
    -webkit-text-fill-color: var(--gs-ink);
    transition: background-color 9999s;
}

/* Tela de bloqueio (Locked.aspx) */
body.gs-app.gs-lock .page-lock { text-align: center; position: static; top: auto; }
body.gs-app.gs-lock .page-logo { margin: 0 0 18px; }
body.gs-app.gs-lock .page-logo img { display: none; }
body.gs-app.gs-lock .page-logo .brand {
    display: inline-block;
    width: 46px;
    height: 46px;
    border-radius: var(--gs-raio-lg);
    background: var(--gs-branco) url("../../img/brand-logo/logo-gransoft-icone.png") center / 32px no-repeat;
    box-shadow: 0 0 0 1px var(--gs-linha);
}
body.gs-app.gs-lock .page-body { background: transparent; padding: 0; margin: 0; width: auto; border: 0; }
body.gs-app.gs-lock .page-lock-img { float: none; width: 84px; height: 84px; border-radius: var(--gs-raio-pill); object-fit: cover; margin: 0 auto 12px; display: block; }
body.gs-app.gs-lock .page-lock-info { float: none; padding: 0; }
body.gs-app.gs-lock .page-lock-info h1 { font-size: var(--gs-fs-h1); font-weight: var(--gs-fw-semi); color: var(--gs-ink); margin: 0 0 4px; }
body.gs-app.gs-lock .page-lock-info .email { display: block; color: var(--gs-muted); margin-bottom: 8px; }
body.gs-app.gs-lock .page-lock-info .input-group { width: 100% !important; margin: 16px 0 10px; }
body.gs-app.gs-lock .page-lock-info .btn-info { background: var(--gs-verde); color: var(--gs-branco); }
body.gs-app.gs-lock .relogin a { color: var(--gs-acento); }
body.gs-app.gs-lock .page-footer { position: static; margin-top: 18px; color: var(--gs-muted); font-size: var(--gs-fs-sm); }

/* Botão de tema nas telas sem cabeçalho */
body.gs-app > .gs-tema-btn--flutuante {
    position: fixed;
    top: 16px;
    right: 16px;
    background: var(--gs-branco-a08);
    color: var(--gs-flyout-texto);
    z-index: 10;
}

@media (max-width: 480px) {
    body.gs-app.login, body.gs-app.gs-lock { justify-content: flex-start; padding-top: 56px !important; }
    body.gs-app.login .content, body.gs-app.gs-lock .page-lock { padding: 24px 20px 22px; border-radius: var(--gs-raio-card); }
    body.gs-app.login .logo { font-size: 22px; }
}

@media (prefers-reduced-motion: reduce) {
    body.gs-app *, body.gs-app *::before, body.gs-app *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* Impressão (o grid tem "Imprimir"): só o conteúdo */
@media print {
    body.gs-app .header, body.gs-app .page-sidebar, body.gs-app .portlet-title .actions, body.gs-app .gs-tema-btn { display: none !important; }
    body.gs-app .page-content { margin: 0 !important; padding: 0 !important; }
    body.gs-app, body.gs-app .page-content, body.gs-app .portlet { background: #FFF !important; color: #000; }
}
