/* ===========================
   CARDS
=========================== */

.comissoes-cards{

    display:grid;

    grid-template-columns:repeat(4,1fr);

    gap:18px;

    margin-bottom:22px;

}
.comissoes-cards .card{

    padding:18px;

    min-height:120px;

}
.comissoes-cards .card h2{

    font-size:28px;

    margin-bottom:8px;

}
/* ===========================
   CARDS RESUMO (Próxima Folha / Carteira /
   Saldo de Comissão / Crédito Comercializado)
=========================== */

.comissoes-cards{
    grid-template-columns:repeat(4, 1fr);
    align-items:stretch;
}

.card-resumo{
    display:flex;
    flex-direction:column;

    /* .card (css/cards.css) tem overflow:hidden — pensado pra recortar
       a barra colorida do ::before nos cantos arredondados. Isso também
       cortava o tooltip "ⓘ" (.card-tooltip-texto, position:absolute)
       sempre que o texto era alto o suficiente pra passar da borda do
       card (bug reportado pelo usuário, 2026-07-18: "mensagem está
       cortada"). Reabrimos o overflow só nestes 4 cards-resumo e
       damos o cantos arredondados ao ::before diretamente (abaixo),
       em vez de depender do corte do pai. */
    overflow:visible;
}

.card-resumo::before{
    border-radius:18px 18px 0 0; /* mesmo raio de .card (cards.css) — mantém a barra colorida arredondada nos cantos de cima sem depender de overflow:hidden no pai */
}

.card-resumo-header{
    display:flex;
    align-items:center;
    gap:10px;
    margin-bottom:16px;
}

.card-resumo .card-icon{
    width:38px;
    height:38px;
    border-radius:10px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
    color:#fff;
}

.card-resumo .card-icon i{
    width:18px;
    height:18px;
}

.card-resumo-titulo{
    font-size:12.5px;
    font-weight:700;
    letter-spacing:.03em;
    text-transform:uppercase;
    color:#888;
}

.card-resumo .card-content{
    display:flex;
    flex-direction:column;
    flex:1;
}

.card-resumo-mes{
    font-size:15px;
    font-weight:700;
    color:#222;
    margin-bottom:2px;
}

.card-resumo .card-content h2{
    font-size:26px;
    margin-bottom:4px;
}

.card-resumo .card-content small{
    color:#888;
    font-size:12.5px;
}

.card-chip{
    margin-top:14px;
    padding:8px 12px;
    border-radius:9px;
    font-size:12.5px;
    font-weight:600;
    line-height:1.4;
}

/* Variante: Próxima Folha (verde) */
.card-resumo--folha::before{ background:#16a34a; }
.card-resumo--folha .card-icon{ background:#16a34a; }
.card-resumo--folha .card-content h2{ color:#16a34a; }
.card-resumo--folha .card-chip{ background:#dcfce7; color:#15803d; }

/* Variante: Carteira (laranja) */
.card-resumo--carteira::before{ background:#ea580c; }
.card-resumo--carteira .card-icon{ background:#ea580c; }
.card-resumo--carteira .card-content h2{ color:#ea580c; }

/* Variante: Saldo de Comissão (azul) */
.card-resumo--saldo::before{ background:#2563eb; }
.card-resumo--saldo .card-icon{ background:#2563eb; }
.card-resumo--saldo .card-content h2{ color:#2563eb; }
.card-resumo--saldo .card-chip{ background:#dbeafe; color:#1d4ed8; }

/* Variante: Crédito Comercializado (roxo) */
.card-resumo--credito::before{ background:#7c3aed; }
.card-resumo--credito .card-icon{ background:#7c3aed; }
.card-resumo--credito .card-content h2{ color:#7c3aed; }
.card-resumo--credito .card-chip{ background:#ede9fe; color:#6d28d9; }

/* ---- Lista da Carteira ---- */

.carteira-lista{
    list-style:none;
    margin-top:10px;
    display:flex;
    flex-direction:column;
    gap:7px;
}

.carteira-lista li{
    display:flex;
    align-items:center;
    gap:8px;
    font-size:13px;
    color:#555;
}

.carteira-lista li strong{
    margin-left:auto;
    color:#333;
    font-size:13px;
}

.carteira-dot{
    width:9px;
    height:9px;
    border-radius:50%;
    flex-shrink:0;
}

.carteira-dot--ativo{ background:#0b7d38; }
.carteira-dot--inadimplente{ background:#bb7a00; }
.carteira-dot--cancelado{ background:#c62828; }
.carteira-dot--finalizado{ background:#888; }

/* ---- Tooltip "ⓘ" ---- */

.card-tooltip{
    position:relative;
    margin-left:auto;
    display:flex;
    align-items:center;
    color:#bbb;
    cursor:help;
    outline:none;
}

.card-tooltip i{
    width:16px;
    height:16px;
}

.card-tooltip-texto{
    display:none;
    position:absolute;
    top:24px;
    right:0;
    width:230px;
    background:#242424;
    color:#f2f2f2;
    font-size:12.5px;
    line-height:1.5;
    padding:12px 14px;
    border-radius:10px;
    box-shadow:0 14px 30px rgba(0,0,0,.3);
    z-index:30;
    font-weight:400;
    text-transform:none;
    letter-spacing:normal;
}

.card-tooltip-texto ul{
    margin:4px 0 0 16px;
}

.card-tooltip:hover .card-tooltip-texto,
.card-tooltip:focus .card-tooltip-texto,
.card-tooltip:focus-within .card-tooltip-texto{
    display:block;
}

/* ---- Coluna "Parcelas": barra fina + botões -/+ ao lado ----
   Substituiu a barra de progresso somente-leitura. Ver
   criarControleParcelas() em js/comissoes.js. Ajuste estético v23:
   barra bem mais fina e com pontas totalmente arredondadas (pill),
   botões -/+ redondos e soltos (não mais fundidos à barra). v24:
   barra levemente mais grossa; título da coluna centralizado sobre a
   barra (não sobre a célula inteira, que é mais larga por causa da
   bolinha da 15ª — ver .th-parcelas logo abaixo). */

.th-parcelas{
    display:inline-block;
    width:150px;
    text-align:center;
}

/* ---- Barra +/- e bolinha da 15ª parcela (layout restaurado v34.1.3
   a pedido do usuário — visual idêntico ao de antes da v34.1; só a
   lógica por trás mudou, ver criarControleParcelas(), js/comissoes.js) ---- */

.parcelas-controle{
    width:150px;
}

.parcelas-linha{
    display:flex;
    align-items:center;
    gap:8px;
}

.parcelas-btn{
    width:22px;
    height:22px;
    flex-shrink:0;
    border:1px solid #d9d9d9;
    border-radius:50%;
    background:#fff;
    color:#666;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:0;
    cursor:pointer;
    transition:background .15s,border-color .15s;
}

.parcelas-btn:not(:disabled):hover{
    background:#f2f2f2;
    border-color:#c8c8c8;
}

.parcelas-btn:disabled{
    color:#ddd;
    border-color:#ececec;
    cursor:not-allowed;
}

.parcelas-btn i{
    width:11px;
    height:11px;
}

.parcelas-bar{
    flex:1;
    min-width:40px;
    height:8px;
    border-radius:20px;
    background:#e8e8e8;
    overflow:hidden;
}

.parcelas-bar-fill{
    height:100%;
    border-radius:20px;
    background:#8B0000;
}

.parcelas-fracao{
    display:block;
    margin-top:6px;
    text-align:center;
    color:#888;
    font-size:12px;
}

/* ---- Barra de progresso especial do Plano 50% ----
   A bolinha da 15ª parcela (comissão-bônus) fica ao lado do
   componente de Parcelas, centralizada na altura da linha (não
   alinhada só com a barra) — fica visualmente "entre" a coluna
   Parcelas e a coluna Comissão Líquida. Clicável — ver
   criarControleParcelas() e abrirModalPagamento(), js/comissoes.js. */

.progress-linha{
    display:flex;
    align-items:center;
    gap:18px;
}

.progress-bolinha{
    width:24px;
    height:24px;
    border-radius:50%;
    border:2px solid #d9d9d9;
    color:#999;
    font-size:9.5px;
    font-weight:700;
    display:flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
    background:#fff;
    cursor:pointer;
    transition:background .15s,border-color .15s,color .15s;
}

.progress-bolinha:hover{
    border-color:#bbb;
}

.progress-bolinha:focus-visible{
    outline:2px solid #8B1E3F;
    outline-offset:2px;
}

.progress-bolinha.preenchida{
    background:#0b7d38;
    border-color:#0b7d38;
    color:#fff;
}

.progress-bolinha.preenchida:hover{
    border-color:#0a6b30;
}

/* ---- Histórico de parcelas (painel expandido, v34.1) ----
   Uma linha por parcela: quando o cliente pagou (real) e quando a
   comissão cai (previsto pelo sistema), mais a classificação
   automática. Ver criarTabelaHistoricoParcelas(), js/comissoes.js. */

.tabela-historico-parcelas{
    width:100%;
    border-collapse:collapse;
    font-size:13px;
}

.tabela-historico-parcelas th{
    text-align:left;
    padding:6px 10px;
    color:#888;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.03em;
    border-bottom:1px solid #eee;
}

.tabela-historico-parcelas td{
    padding:6px 10px;
    border-bottom:1px solid #f5f5f5;
    color:#333;
}

.badge-classificacao{
    display:inline-block;
    padding:2px 9px;
    border-radius:20px;
    font-size:11px;
    font-weight:600;
}

.badge-classificacao--recebido{
    background:#e6f4ea;
    color:#0b7d38;
}

/* v34.1.4: "recebido após o corte" deixou de ser vermelho/alarmante a
   pedido do usuário — o cliente PAGOU, só não bateu o corte; não é
   um problema, é só uma informação. Verde mais suave que "Recebido",
   pra ainda dar pra distinguir os dois num relance. */
.badge-classificacao--apos-corte{
    background:#eef6ee;
    color:#4a7a52;
}

/* "Recebimento adiado" (v34.1.8, substitui o antigo "Em atraso") é
   diferente das classificações acima: é um AVISO de calendário sobre
   uma parcela AINDA NÃO paga cuja previsão precisou ser empurrada pelo
   piso do corte (a próxima folha já ficou impossível de alcançar) —
   não é uma classificação de um pagamento já concluído, e não afirma
   nada sobre o cliente estar em dia ou não. Cor âmbar, não vermelha,
   pra não confundir com as classificações de pagamento acima. */
.badge-classificacao--adiado{
    background:#fdf3e1;
    color:#a15c00;
}


/* ===========================
   TOOLBAR
=========================== */

.comissoes-toolbar{

    display:flex;
    justify-content:space-between;
    align-items:center;

    gap:20px;

    margin-bottom:22px;

    flex-wrap:wrap;

}

.status-buttons{

    display:flex;
    gap:10px;
    flex-wrap:wrap;

}

.status-btn{

    border:none;

    background:white;

    border:1px solid #e3e3e3;

    padding:10px 18px;

    border-radius:10px;

    cursor:pointer;

    font-size:14px;

    font-weight:600;

    transition:.25s;

}

.status-btn:hover{

    background:#f6f6f6;

}

.status-btn.active{

    background:#8B0000;

    color:white;

    border-color:#8B0000;

}

.toolbar-actions{

    display:flex;
    align-items:center;
    gap:15px;

}

/* Filtro por período (data da venda) — mesmo visual do .search-box ao
   lado, só com dois <input type="date"> em vez de um campo de texto. */
.periodo-filtro{

    display:flex;
    align-items:center;

    gap:8px;

    background:white;

    border:1px solid #ddd;

    border-radius:10px;

    padding:9px 14px;

}

.periodo-filtro i{
    width:16px;
    height:16px;
    color:#8B0000;
    flex-shrink:0;
}

.periodo-filtro input[type="date"]{

    border:none;
    outline:none;
    background:transparent;

    font-size:13px;
    color:#333;

    width:126px;

}

.periodo-filtro-separador{

    font-size:12px;
    color:#999;

}

.periodo-filtro-limpar{

    display:flex;
    align-items:center;
    justify-content:center;

    width:20px;
    height:20px;

    border:none;
    border-radius:50%;
    background:transparent;

    color:#999;
    cursor:pointer;

    flex-shrink:0;

}

.periodo-filtro-limpar i{
    width:13px;
    height:13px;
    color:inherit;
}

.periodo-filtro-limpar:hover{
    background:#f2f2f2;
    color:#8B0000;
}

.search-box{

    display:flex;
    align-items:center;

    gap:10px;

    width:320px;

    background:white;

    border:1px solid #ddd;

    border-radius:10px;

    padding:10px 15px;

}

.search-box input{

    border:none;

    outline:none;

    width:100%;

    background:transparent;

}

.btn-primary{

    background:#8B0000;

    color:white;

    border:none;

    padding:12px 20px;

    border-radius:10px;

    cursor:pointer;

    display:flex;

    align-items:center;

    gap:8px;

    font-weight:600;

    transition:.25s;

}

.btn-primary:hover{

    background:#730000;

}


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

.table-card{

    background:white;

    border-radius:16px;

    overflow:hidden;

    box-shadow:0 2px 10px rgba(0,0,0,.05);

    margin-bottom:25px;

}

/* Rolagem exclusiva da tabela — a paginação, logo abaixo, fica de fora
   deste container e permanece sempre visível. */
.table-scroll{

    max-height:560px;

    overflow-y:auto;

}

.table-scroll thead th{

    position:sticky;
    top:0;
    z-index:1;

}

.comissoes-table{

    width:100%;

    border-collapse:collapse;

}

.comissoes-table th{

    background:#fafafa;

    text-align:left;

    padding:16px;

    font-size:14px;

    color:#555;

    border-bottom:1px solid #eee;

}

.comissoes-table td{

    padding:16px;

    border-bottom:1px solid #f2f2f2;

    vertical-align:middle;

}

.comissoes-table tbody tr{

    transition:background-color .2s ease;

}

.comissoes-table tbody tr.linha-venda:hover{

    background:#fbeeee;
    box-shadow:inset 3px 0 0 #8B0000;

}

.comissoes-table small{

    display:block;

    margin-top:4px;

    color:#888;

}


/* ===========================
   PROGRESSO
=========================== */

.progress-bar{

    width:130px;

    height:8px;

    border-radius:20px;

    background:#ececec;

    overflow:hidden;

    margin-bottom:6px;

}


/* ===========================
   BADGES
=========================== */

.badge{

    display:inline-flex;

    align-items:center;

    justify-content:center;

    padding:6px 12px;

    border-radius:20px;

    font-size:13px;

    font-weight:600;

}

.ativo{

    background:#dff5e5;

    color:#0b7d38;

}

.inadimplente{

    background:#fff3d6;

    color:#bb7a00;

}

.cancelado{

    background:#fde3e3;

    color:#c62828;

}

.finalizado{

    background:#ececec;

    color:#666;

}


/* ===========================
   AÇÕES
=========================== */

.icon-btn{

    border:none;

    background:none;

    cursor:pointer;

    padding:5px;

}

.icon-btn svg{

    width:18px;

    height:18px;

}

.icon-btn.danger{

    color:#c62828;

}


/* ===========================
   RESPONSIVO
=========================== */

@media(max-width:1200px){

    .comissoes-toolbar{

        flex-direction:column;
        align-items:flex-start;

    }

    .toolbar-actions{

        width:100%;
        flex-wrap:wrap;

    }

    .search-box{

        width:100%;

    }

    .periodo-filtro{

        width:100%;

    }

    .comissoes-cards{
        grid-template-columns:repeat(2, 1fr);
    }

}

@media(max-width:620px){

    .comissoes-cards{
        grid-template-columns:1fr;
    }

    .card-tooltip-texto{
        right:auto;
        left:0;
        width:200px;
    }

}

/*=====================================================
  MODAL - NOVA VENDA
=====================================================*/

.modal-overlay{
    position:fixed;
    inset:0;
    background:rgba(0,0,0,.45);

    display: none;
    align-items:center;
    justify-content:center;

    z-index:9999;
}

.modal-overlay.active{
    display:flex;
}

.modal{

    width:900px;
    max-width:95%;

    max-height:90vh;

    background:#fff;

    border-radius:18px;

    overflow:hidden;

    box-shadow:0 20px 60px rgba(0,0,0,.25);

    animation:modalFade .18s ease;

    display:flex;
    flex-direction:column;
}

@keyframes modalFade{

    from{
        opacity:0;
        transform:translateY(-15px);
    }

    to{
        opacity:1;
        transform:translateY(0);
    }

}

.modal-header{

    display:flex;
    justify-content:space-between;
    align-items:center;

    padding:24px 30px;

    border-bottom:1px solid #ececec;
}

.modal-header h2{

    margin:0;
    font-size:24px;
}

.modal-header p{

    margin-top:5px;
    color:#777;
}

.modal-close{

    width:42px;
    height:42px;

    border:none;

    background:#f5f5f5;

    border-radius:10px;

    cursor:pointer;

    transition:.2s;
}

.modal-close:hover{

    background:#e8e8e8;
}

.modal-body{

    padding:30px;

    overflow-y:auto;
}

.form-grid{

    display:grid;

    grid-template-columns:repeat(2,1fr);

    gap:22px;
}

.form-group{

    display:flex;
    flex-direction:column;
}

/* Sem isso, um .form-group com o atributo HTML "hidden" (ex.:
   #blocoMetaEquipe em Configurações — ver js/configuracoes.js) continua
   visível: regra de autor (mesmo sem !important) tem prioridade sobre o
   display:none padrão do navegador para [hidden], e ".form-group" acima
   já define display:flex. */
.form-group[hidden]{

    display:none;

}

.form-group label{

    font-size:14px;

    font-weight:600;

    margin-bottom:8px;
}

.form-group input,
.form-group select{

    height:46px;

    border:1px solid #d9d9d9;

    border-radius:10px;

    padding:0 14px;

    font-size:15px;

    outline:none;

    transition:.2s;
}

.form-group input:focus,
.form-group select:focus{

    border-color:#8B1E3F;
}

/* Gestores responsáveis por equipe (v33, administrador.js) — a altura
   fixa de 46px acima é pra <select> de opção única; um <select
   multiple size="5"> precisa de altura própria pra mostrar as 5 linhas
   (a régua de tamanho do próprio atributo size), senão o navegador
   corta a lista dentro de 46px com scroll interno. */
.form-group select[multiple]{

    height:auto;
    padding:6px;

}

/* Campo informativo, não editável (ex.: Perfil de acesso em
   Configurações — protótipo de Consultor/Equipe/Gestor, js/perfil.js:
   quem define isso não é a própria pessoa). */
.form-group input:disabled{

    background:#f5f5f5;
    color:#888;
    cursor:not-allowed;

}

.modal-footer{

    display:flex;

    justify-content:flex-end;

    gap:12px;

    padding:22px 30px;

    border-top:1px solid #ececec;
}

/* ===========================
   MODAL - CAMPOS OBRIGATÓRIOS E DICAS
=========================== */

.obrigatorio{
    color:#c62828;
}


/* ===========================
   MODAL - CONFIRMAÇÃO DE RECEBIMENTO
   (versão compacta do .modal padrão — só uma
   mensagem + 2 campos, não precisa de 900px)
=========================== */

.modal--pequeno{

    width:440px;

}

.recebimento-mensagem{

    font-size:15.5px;

    color:#333;

    line-height:1.5;

    margin-bottom:22px;

}

.form-hint{

    margin-top:6px;

    font-size:12.5px;

    color:#888;
}

/* ===========================
   MODAL - CARD DE OBSERVAÇÃO (INFO)
=========================== */

.info-card{

    display:flex;

    align-items:flex-start;

    gap:12px;

    margin-top:26px;

    padding:16px 18px;

    background:#eaf3fc;

    border:1px solid #cfe4f7;

    border-radius:12px;
}

.info-card i{

    width:20px;
    height:20px;
    flex-shrink:0;
    margin-top:2px;

    color:#1a73c7;
}

.info-card p{

    font-size:14px;
    line-height:1.5;
    color:#2c4a63;
}

.info-card p strong{

    color:#14324a;
}

/* Variante de aviso (vermelho) do .info-card acima — mesmo componente
   (ícone + parágrafo numa caixa colorida), só trocando as cores para
   o padrão de aviso já usado no sistema (mesma dupla fundo/texto de
   .comparativo-negativo em css/dashboard.css, aproximada do vermelho
   de marca #c62828 usado em .toast-erro e .carteira-dot--cancelado).
   Pedido do usuário (2026-07-18): destacar com uma "faixa" colorida
   certas frases de aviso na tela de Configurações — ver
   views/configuracoes.html. */
.info-card--alerta{

    background:#fdecea;

    border-color:#f3c2c2;
}

.info-card--alerta i{

    color:#c62828;
}

.info-card--alerta p{

    color:#7a2020;
}

.info-card--alerta p strong{

    color:#5c1717;
}

/* ===========================
   MODAL - COMPOSIÇÃO DA COMISSÃO (EXEMPLO)
=========================== */

.composicao-card{

    margin-top:20px;

    padding:22px 24px;

    background:#fafafa;

    border:1px solid #ececec;

    border-radius:12px;
}

.composicao-header h3{

    font-size:16px;
}

.composicao-header p{

    margin-top:4px;

    font-size:13.5px;

    color:#777;
}

.composicao-grid{

    display:grid;

    grid-template-columns:1fr 1fr;

    gap:24px;

    margin-top:18px;
}

.composicao-col{

    display:flex;
    flex-direction:column;

    gap:14px;
}

.composicao-item{

    display:flex;

    justify-content:space-between;

    align-items:center;

    gap:12px;

    font-size:14px;

    color:#444;
}

.composicao-item strong{

    font-size:14px;

    color:#222;
}

.composicao-negativo{

    color:#c62828 !important;
}

.composicao-positivo{

    color:#0b7d38 !important;
}

.composicao-rodape{

    margin-top:16px;

    font-size:12.5px;

    line-height:1.5;

    color:#999;
}
/* ===========================
   BADGES (alias das classes usadas
   pela renderização: badge-<status>)
=========================== */

.badge-ativo{
    background:#dff5e5;
    color:#0b7d38;
}

.badge-inadimplente{
    background:#fff3d6;
    color:#bb7a00;
}

.badge-cancelado{
    background:#fde3e3;
    color:#c62828;
}

.badge-finalizado{
    background:#ececec;
    color:#666;
}


/* ===========================
   LINHA EXPANSÍVEL (▶)
=========================== */

.expandir{
    cursor:pointer;
    text-align:center;
    color:#8B0000;
    font-size:12px;
    transition:transform .2s;
    user-select:none;
}

.expandir.aberto{
    transform:rotate(90deg);
}

.linha-detalhe td{
    background:#fafafa;
    padding:0;
}

.detalhe-venda{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:20px;
    padding:22px 30px;
    animation:expandirDetalhe .28s ease;
}

.detalhe-card{
    background:white;
    border-radius:14px;
    padding:20px 22px;
    box-shadow:0 2px 10px rgba(0,0,0,.05);
}

.detalhe-card h4{
    font-size:14px;
    color:#8B0000;
    text-transform:uppercase;
    letter-spacing:.5px;
    margin-bottom:16px;
}

/* Histórico de Parcelas (v34.1) ocupa as duas colunas do grid — a
   tabela precisa de mais largura do que os cards de "Dados da Venda"/
   "Comissão", que continuam lado a lado normalmente. */
.detalhe-card--historico{
    grid-column:1 / -1;
}

.detalhe-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:16px;
}

@keyframes expandirDetalhe{

    from{
        opacity:0;
        transform:translateY(-10px);
    }

    to{
        opacity:1;
        transform:translateY(0);
    }

}

.detalhe-item span{
    display:block;
    font-size:12px;
    color:#888;
    margin-bottom:4px;
}

.detalhe-item strong{
    font-size:15px;
    color:#222;
}

@media(max-width:1100px){
    .detalhe-venda{
        grid-template-columns:1fr;
    }
}

/* ===========================
   RESPONSIVO - MODAL NOVA VENDA
=========================== */

@media(max-width:720px){

    .modal{
        max-width:98%;
        max-height:92vh;
    }

    .modal-body{
        padding:20px;
    }

    .form-grid{
        grid-template-columns:1fr;
        gap:16px;
    }

    .composicao-grid{
        grid-template-columns:1fr;
        gap:16px;
    }

    .modal-header{
        padding:20px;
    }

    .modal-footer{
        padding:16px 20px;
    }
}


/* ===========================
   PAGINAÇÃO
=========================== */

.pagination-bar{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:20px;
    padding:18px;
    border-top:1px solid #f2f2f2;
}

.pagination-btn{
    border:1px solid #e3e3e3;
    background:white;
    padding:9px 16px;
    border-radius:10px;
    cursor:pointer;
    font-size:14px;
    font-weight:600;
    color:#333;
    transition:.2s;
}

.pagination-btn:hover:not(:disabled){
    background:#f6f6f6;
    border-color:#8B0000;
    color:#8B0000;
}

.pagination-btn:disabled{
    opacity:.4;
    cursor:not-allowed;
}

.pagination-info{
    font-size:14px;
    color:#666;
    font-weight:600;
}


/* ===========================
   TOAST
=========================== */

.toast-container{
    position:fixed;
    top:24px;
    right:24px;
    display:flex;
    flex-direction:column;
    gap:10px;
    z-index:10000;
}

.toast{
    display:flex;
    align-items:center;
    gap:10px;
    background:#fff;
    padding:14px 20px;
    border-radius:12px;
    box-shadow:0 10px 30px rgba(0,0,0,.15);
    font-size:14px;
    font-weight:600;
    color:#222;
    border-left:5px solid #0b7d38;
    animation:toastIn .25s ease;
    min-width:260px;
}

.toast.toast-erro{
    border-left-color:#c62828;
}

.toast.toast-saindo{
    animation:toastOut .25s ease forwards;
}

@keyframes toastIn{
    from{ opacity:0; transform:translateX(30px); }
    to{ opacity:1; transform:translateX(0); }
}

@keyframes toastOut{
    from{ opacity:1; transform:translateX(0); }
    to{ opacity:0; transform:translateX(30px); }
}


/* ===========================
   VAZIO (sem resultados)
=========================== */

.tabela-vazio td{
    text-align:center;
    padding:40px 20px;
    color:#999;
    font-size:14px;
}
