/* =====================================================================
   Elite do DTF — Polimento visual (transições e animações leves)
   Carregado DEPOIS do adminlte.min.css, então essas regras têm prioridade
   sem precisar de !important em quase nada. Não redefine cores nem
   estrutura — só suaviza interações que já existem.
   ===================================================================== */

/* Fade-in suave ao carregar cada página, pra tirar o "seco" da troca de tela */
.content-wrapper {
    animation: dtf-fade-in .28s ease-out;
}
@keyframes dtf-fade-in {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Cards: leve elevação ao passar o mouse — dá sensação de "clicável" */
.card {
    transition: box-shadow .2s ease, transform .2s ease;
}
.card:hover {
    box-shadow: 0 .5rem 1.2rem rgba(0,0,0,.08);
}

/* Cards clicáveis dentro de tabelas (linhas de listagem) */
.table-hover tbody tr {
    transition: background-color .15s ease;
}

/* Botões: transição suave em vez de troca seca de cor, leve "press" ao clicar */
.btn {
    transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .08s ease;
}
.btn:hover {
    box-shadow: 0 .25rem .5rem rgba(0,0,0,.1);
}
.btn:active {
    transform: scale(.97);
}

/* Botões primários ganham um leve brilho ao passar o mouse */
.btn-primary:hover, .btn-success:hover {
    filter: brightness(1.06);
}

/* Itens do menu lateral: destaque suave ao passar o mouse, antes de virar ativo */
.nav-sidebar .nav-link {
    transition: background-color .15s ease, padding-left .15s ease;
}
.nav-sidebar .nav-link:hover {
    padding-left: 1.1rem;
}

/* Badges de contagem (filas, chat) "pulsam" discretamente quando aparecem,
   chamando atenção sem ser irritante */
.badge.right, #chat-badge-total {
    animation: dtf-pulse 1.6s ease-in-out infinite;
}
@keyframes dtf-pulse {
    0%, 100% { transform: scale(1); }
    50%      { transform: scale(1.12); }
}

/* Alertas (flash messages) entram deslizando de cima, não simplesmente "aparecem" */
.alert {
    animation: dtf-slide-down .25s ease-out;
}
@keyframes dtf-slide-down {
    from { opacity: 0; transform: translateY(-8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Inputs: contorno suave ao focar, mais perceptível que o padrão do Bootstrap */
.form-control, .custom-select {
    transition: border-color .15s ease, box-shadow .15s ease;
}
.form-control:focus, .custom-select:focus {
    box-shadow: 0 0 0 .15rem rgba(0,0,0,.08);
}

/* Dropdowns (menu do usuário, seletor de idioma) com um leve fade+scale */
.dropdown-menu {
    animation: dtf-pop .15s ease-out;
    transform-origin: top right;
}
@keyframes dtf-pop {
    from { opacity: 0; transform: scale(.96) translateY(-4px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}

/* Botão de trocar idioma, no navbar */
.dtf-seletor-idioma .nav-link {
    display: flex;
    align-items: center;
    gap: 6px;
}
.dtf-seletor-idioma .dropdown-item.ativo {
    font-weight: 600;
    background-color: rgba(0,0,0,.04);
}
.dtf-seletor-idioma .dropdown-item i {
    width: 18px;
    text-align: center;
}

/* Bolha do chat: leve "respiração" pra chamar atenção sem ser exagerado */
#chat-bolha {
    transition: transform .2s ease, box-shadow .2s ease;
}
#chat-bolha:hover {
    transform: scale(1.08);
    box-shadow: 0 4px 14px rgba(0,0,0,.35);
}

/* Barra de progresso (uso mensal de chave PIX): preenchimento animado */
.progress-bar {
    transition: width .4s ease;
}

/* Spinner leve reutilizável, caso algum fetch precise de feedback visual */
.dtf-spin {
    animation: dtf-spin 0.8s linear infinite;
}
@keyframes dtf-spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

/* Respeita quem pediu menos animação no sistema operacional */
@media (prefers-reduced-motion: reduce) {
    .content-wrapper, .alert, .dropdown-menu, .badge.right, #chat-badge-total {
        animation: none !important;
    }
    .btn, .card, .nav-sidebar .nav-link, #chat-bolha {
        transition: none !important;
    }
}
