/* PLAN CUSTOM */
.authentication .authentication-cover {
    background-image: url(/assets/images/authentication/signup-bg.png) !important;
}

.bolinha-copy button { margin-right: 20px; }
.bolinha-copy .dropdown-menu {
    z-index: 50002;
}

.disabled-select {
    background-color: #d5d5d5;
    opacity: 0.5;
    border-radius: 3px;
    cursor: not-allowed;
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;
    opacity: 0.5;
}

a.disabled {
    pointer-events: none;
    cursor: default;
    opacity: 0.7;
}

.bg-outline-gray {
    border: 2px solid #4b4949;
    color: #4b4949;
}

.btn-fluxo {
    height: 100px;
    border: 1px dashed #ccc;
    padding: 15px;
    border-radius: 20px;
}

    .btn-fluxo a i {
        font-size: 30px;
    }

.dropdown-filiais.show {
    width: 240px;
}

.dropdown-filiais a {
    font-weight: 100;
}

optgroup {
    color: var(--default-text-color);
    background: var(--form-control-bg);
    font-weight: 100;
}

.select2-container--default .select2-results__group {
    color: var(--default-text-color);
    background: var(--form-control-bg);
}

.dataTables_info {
    display: none;
}

.border-error {
    border: 1px solid #bf4836;
}

.select2-container {
    z-index: 10;
}

.select2-close-mask {
    z-index: 11;
}

.modal .select2-container {
    z-index: 50001;
}

.modal .select2-close-mask {
    z-index: 50000;
}

.select2-dropdown {
    z-index: 3051;
}

.form-floating-select2 {
    border: 1px solid;
    border-color: var(--input-border);
    border-radius: 8px;
    padding-left: 5px;
    padding-right: 5px;   
    background-color: var(--form-control-bg);
}

    .form-floating-select2 label {
        display: inline-block;
        color: var(--text-muted) !important;
        font-weight: 600;
        transform: scale(.85) translateY(0.1rem) translateX(.15rem);
    }

.select2-container--default .select2-selection--multiple {
    border: 0px !important;
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
    border: 0px !important;
}

.select2-selection--multiple .select2-selection__choice__display {
    font-size: 0.65rem !important;
}

.select2-hidden-accessible {
    height: 50px !important;
}

.w-10p {
    width: 10%;
}

.w-20p {
    width: 20%;
}

.w-30p {
    width: 30%;
}

.w-40p {
    width: 40%;
}

.w-50p {
    width: 50%;
}

.w-60p {
    width: 60%;
}

.w-70p {
    width: 70%;
}

.w-80p {
    width: 80%;
}

.w-90p {
    width: 90%;
}

.w-100p {
    width: 100%;
}

.card.custom-card .card-header .card-title:before {
    display: none !important;
}

.app-sidebar .slide-menu.child1 li, .app-sidebar .slide-menu.child2 li, .app-sidebar .slide-menu.child3 li {
    padding: 0;
    padding-inline-start: 0.8rem;
    position: relative;
}

.app-sidebar .slide-menu.child1, .app-sidebar .slide-menu.child2, .app-sidebar .slide-menu.child3 {
    min-width: 240px;
}

.app-sidebar .slide-menu.child1 .side-menu__item, .app-sidebar .slide-menu.child2 .side-menu__item, .app-sidebar .slide-menu.child3 .side-menu__item {
    white-space: nowrap;
}

/* Faixa "Salvos recentemente" — esconde a barra de rolagem (navegação por setas) */
#salvos-recentes-container {
    scrollbar-width: none;
    -ms-overflow-style: none;
}

#salvos-recentes-container::-webkit-scrollbar {
    display: none;
}

/* Relatórios — seção colapsável dentro do menu 3 pontos */
.relatorios-wrapper .relatorios-lista {
    display: none;
}

.relatorios-wrapper.rel-open .relatorios-lista {
    display: block;
}

.relatorios-wrapper .relatorios-chevron {
    transition: transform .15s ease;
}

.relatorios-wrapper.rel-open .relatorios-chevron {
    transform: rotate(180deg);
}

/* Permite que nomes longos de relatório quebrem em 2 linhas (em vez de estourar/cortar).
   overflow-wrap: anywhere é necessário porque os itens são d-flex (o texto não encolheria sozinho). */
.relatorios-wrapper .relatorios-lista .dropdown-item {
    white-space: normal;
    overflow-wrap: anywhere;
}

/* Itens de menu (dropdown) vêm com font-weight 500 do template Ynex, dando aparência de negrito.
   Deixamos os ITENS em peso normal; os TÍTULOS/agrupadores (.dropdown-header) mantêm o destaque. */
.dropdown-menu .dropdown-item {
    font-weight: 400;
}

/* Listagens — sticky escalonado do cabeçalho: o TÍTULO fica fixo no topo; o grupo (recents + filtros +
   cabeçalho de colunas, quando houver) rola até encostar no título e para ali; a lista continua rolando.
   Offsets e detecção de "fixo" em ~/js/lista-sticky.js.
   Uso na view: classe .lst-sticky-titulo no <div> do col do título e o grupo envolto em
   <div class="col-12 lst-sticky-grupo"><div class="row"> ...recents/filtros/colunas... </div></div>. */
.lst-sticky-titulo {
    position: sticky;
    top: calc(var(--lst-sticky-top, 60px) - 1.5rem); /* -1.5rem compensa o mt-4 do card do título */
    z-index: 99;
    background: var(--body-bg);
    display: flow-root; /* contém o mt-4 do card (evita margin-collapse onde o título não está num col flex, ex.: Ticket) */
}

.lst-sticky-grupo {
    position: sticky;
    top: calc(var(--lst-sticky-top, 60px) + var(--lst-titulo-h, 70px)); /* encosta logo abaixo do título fixo */
    z-index: 98;
    background: var(--body-bg);
}

/* Os cards do grupo só ficam encostados (sem espaço vertical) QUANDO o grupo está fixo/empilhado no
   título (classe .is-stuck via JS). Antes de rolar, mantêm o espaçamento normal. */
.lst-sticky-grupo.is-stuck #salvos-recentes-wrapper,
.lst-sticky-grupo.is-stuck #tickets-recentes-wrapper {
    margin-top: 0 !important;
}

.lst-sticky-grupo.is-stuck .card,
.lst-sticky-grupo.is-stuck .filter-summary-listing {
    margin-bottom: 0 !important;
}

/* Menu 3-pontos das linhas de listagem: o container .contact-hover-dropdown (Ynex) tem
   z-index: 2, o que cria um contexto de empilhamento e prende o dropdown ABAIXO do título
   fixo (z-index 99) — por isso o menu some atrás do título, principalmente no dropup em
   resoluções baixas. Quando o menu está aberto, elevamos só esse container.
   .contact-hover-dropdown é usado APENAS em linhas de listagem (não em modais/config/menu),
   então este ajuste é cirúrgico e não afeta outras telas. */
.contact-action .contact-hover-dropdown:has(.dropdown-menu.show) {
    z-index: 200;
}

/* Filtro avançado (offcanvas): aumenta a altura da lista dos selects (select2) para
   caber mais opções sem cortar (ex.: campo Motivo em Saída de Estoque). O padrão da
   lib é ~200px. Usa vh para caber o máximo na tela e mantém rolagem quando extrapola.
   Escopo restrito ao offcanvas do filtro. */
#offcanvasRight .select2-results__options {
    max-height: 60vh;
    overflow-y: auto;
}

/* Não limitar a altura das listas aninhadas (optgroup pai/filho) — o select2 já as trata como
   'max-height: none'. Sem isso, o max-height acima transborda e encavala os itens agrupados. */
#offcanvasRight .select2-results__options--nested {
    max-height: none;
}


.div-resumo-fluxo {
    float: right;
    border: 1px dashed #ccc;
    width: 300px;
    margin-bottom: 20px;
    padding: 10px;
    border-radius: 10px;
}

.generated-report-span {
    position: absolute;
    right: 55px;
    top: 23px;
    font-size: 11px;
}

.hr-margin-reduzida {
    margin-top: 5px;
    margin-bottom: 5px;
}

.ofx-selecionado {
    border: 3px solid #4EAC4C !important;
}

/* Configurações especificas para impressão */
@media print {
    /*@page {
        size: landscape
    }*/

    .app-header {
        display: none;
    }

    .app-sidebar {
        display: none;
    }

    .app-content {
        margin: 10px;
    }

    [data-vertical-style=overlay][data-toggled=icon-overlay-close] .app-content {
        margin-inline-start: 5px;
    }

    html, body {
        font-size: 11px !important;
    }

    .container {
        width: 100% !important;
        max-width: inherit;
    }

    .generated-report-span {
        position: absolute;
        right: 15px;
        top: 13px;
        font-size: 11px !important;
    }

    .btn-opcoes {
        display: none !important;
    }

    .card,
    .card.custom-card,
    .card-body,
    .row,
    [class*="col-"] {
        overflow: visible !important;
        page-break-inside: auto;
        break-inside: auto;
    }

    table {
        width: 100% !important;
        page-break-inside: auto;
        break-inside: auto;
    }

    thead {
        display: table-header-group;
    }

    tfoot {
        display: table-footer-group;
    }

    tr,
    td,
    th {
        page-break-inside: avoid;
        break-inside: avoid;
    }

    .table.text-nowrap,
    .table.text-nowrap th,
    .table.text-nowrap td {
        white-space: normal !important;
    }
}

.conta-selecionada {
    border: 3px solid #4EAC4C !important;
}

.table tr td.fs-11 {
    font-size: 11px !important;
    font-weight: 100 !important;
}

.bloqueia-clicks {
    pointer-events: none;
    opacity: 0.6;
    font-style: italic;
    background: var(--form-control-bg);
}

.custom-border-dashed {
    border: 1px dashed #ccc !important;
    margin-bottom: 25px;
}

.btn-formulario-inline {
    width: 100%;
    height: 58px;
    line-height: 35px;
}

.no-sort::after {
    display: none !important;
}

.no-sort::before {
    display: none !important;
}

.no-sort {
    pointer-events: none !important;
    cursor: default !important;
}

.add-filtro-avancado {
    border: 3px dashed #f1f1f1;
    margin-top: 20px;
    border-radius: 10px;
}

    .add-filtro-avancado label {
        width: 100%;
    }

.introjs-tooltip {
    min-width: 400px !important;
    max-width: 400px !important;
}

.avatar-card {
    width: 70px;
    height: 70px;
    border-radius: 10px;
}

.introjs-tooltiptext {
    padding: 20px !important;
    color: #000 !important;
}

.introjs-tooltip-title {
    color: #000 !important;
}

.contas-rolagem-header {
    position: fixed;
    z-index: 100;
    margin-top: -25px;
}

    .contas-rolagem-header .custom-card {
        border: 1px solid #9b9b9b;
    }

.card-conta .card-body {
    padding: 0.50rem !important;
}

.card-conta .dropdown-menu.show {
    margin-left: -170px !important;
    z-index: 9999999;
}

input[type="date"],
input[type="time"],
input[type="month"] {
    font-size: 12px !important;
}

@media (min-width: 992px) {
    .footer {
        padding-inline-start: 5rem;
        font-size: 11px;
    }
}

[data-theme-mode=dark] .apexcharts-tooltip * {
    color: #fff !important;
}

.scrollToBottom {
    background-color: var(--primary-color);
    color: #fff;
    position: fixed;
    bottom: 20px;
    inset-inline-end: 20px;
    display: none;
    align-items: center;
    justify-content: center;
    text-align: center;
    display: none;
    z-index: 10000;
    height: 2.5rem;
    width: 2.5rem;
    background-repeat: no-repeat;
    background-position: center;
    transition: background-color 0.1s linear;
    border-radius: 0.5rem;
    box-shadow: rgba(100, 100, 110, 0.2) 0 0.438rem 1.813rem 0;
    margin-right: 50px;
}

@media (min-width: 768px) {
    .input-busca-web {
        width: 400px !important;
    }
}
}

.dropdown-menu {
    min-width: 15rem;
}

.filter-summary-listing {
    border: 1px solid var(--default-border);
    background: var(--custom-white);
    border-radius: 0.5rem;
    padding: 0.55rem 0.75rem;
    margin: 0 0 0.75rem 0;
    font-size: 0.72rem;
}

.filter-summary-title {
    color: var(--text-muted);
    font-weight: 600;
}

.filter-summary-clear {
    color: var(--primary-color);
    font-weight: 700;
    text-decoration: none;
}

.filter-summary-clear:hover {
    text-decoration: underline;
}

/* Barra unificada da listagem (filtros + recente) — texto azul, sem badges */
.listagem-infobar {
    --infobar-blue: #3b7ddd;
}

[data-theme-mode=dark] .listagem-infobar {
    --infobar-blue: #6ea8fe;
}

.listagem-infobar .card-body {
    padding: 0.4rem 0.75rem;
}

/* Permite que o bloco de filtros encolha e quebre os chips pra linha de baixo
   (flex item tem min-width:auto por padrão, o que impede a quebra e gera overflow). */
.listagem-infobar #infobar-filtros {
    min-width: 0;
}

.listagem-infobar .infobar-label {
    color: var(--text-muted);
    font-weight: 600;
    font-size: 0.72rem;
    white-space: nowrap;
}

.listagem-infobar .infobar-item {
    color: var(--default-text-color);
    font-size: 0.78rem;
    white-space: normal;
    overflow-wrap: anywhere;
    min-width: 0;
}

.listagem-infobar .infobar-val {
    color: var(--infobar-blue);
    font-weight: 600;
}

.listagem-infobar .infobar-clear {
    color: var(--text-muted);
    font-size: 0.72rem;
    text-decoration: none;
    white-space: nowrap;
}

.listagem-infobar .infobar-clear:hover {
    color: #dc3545;
    text-decoration: underline;
}

.listagem-infobar .infobar-divider {
    width: 1px;
    height: 18px;
    background: var(--default-border);
    display: inline-block;
    flex-shrink: 0;
}

/* Recente: render do recentes.js sai como .badge — aqui vira texto azul clicável */
.listagem-infobar #salvos-recentes-container .badge {
    background: transparent !important;
    color: var(--infobar-blue) !important;
    padding: 0 !important;
    font-size: 0.78rem !important;
    font-weight: 600;
}

.listagem-infobar #salvos-recentes-container .badge:hover {
    text-decoration: underline;
}

.offcanvas-filtro-avancado {
    --bs-offcanvas-width: min(920px, 100vw);
}

.filtro-avancado-footer {
    background: var(--custom-white);
}

[data-theme-mode=dark] .add-filtro-avancado {
    border-color: var(--default-border);
}

/* Ticket: checkbox "Reservado" em âmbar, igual à badge Reservado */
input.form-check-input[id^="chk-reservado-"]:checked {
    background-color: rgb(var(--warning-rgb)) !important;
    border-color: rgb(var(--warning-rgb)) !important;
}
