/* Compat DaisyUI 4 -> 5: a classe .form-control foi removida no DaisyUI 5,
   mas o padrão de formulário adotado (modais, filtros) usa esse wrapper
   assumindo empilhamento vertical (label acima do input/select).
   Sem essa regra, .form-control vira uma div genérica (display:block) e os
   filhos (.label e input/select, que o DaisyUI estiliza como inline-flex)
   só quebram linha quando não cabem lado a lado. */
.form-control {
    display: flex;
    flex-direction: column;
}

/* Tooltip explicativo (ver public/js/help-tooltip.js). Gatilho: elemento com
   class="js-tooltip-help" + data-tip="texto". Popup fixo no <body>, fora de
   qualquer ancestral com overflow:hidden que cortaria o tooltip nativo do daisyUI. */
.js-tooltip-help {
    cursor: help;
}
#js-tooltip-popup {
    position: fixed;
    z-index: 9999;
    max-width: 18rem;
    background: var(--color-neutral);
    color: var(--color-neutral-content);
    font-size: 0.75rem;
    line-height: 1.35;
    font-weight: 400;
    text-align: left;
    white-space: pre-wrap;
    padding: 0.5rem 0.75rem;
    border-radius: var(--radius-field, 0.5rem);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
    pointer-events: none;
    display: none;
}
#js-tooltip-popup.show {
    display: block;
}

/* Tema Winter — cores derivadas da paleta atual do Metronic
   (KTAppSettings.colors.theme.base em App/Views/base/base.html), para manter a
   identidade visual do Transcrify na migração. primary/secondary/accent/success/
   warning/error são mantidas idênticas entre os temas winter e dark — só o fundo
   (base-100/200/300) e o texto (base-content) mudam entre claro e escuro. */
[data-theme="winter"] {
    --color-base-100: oklch(98% 0 0);
    --color-base-200: oklch(97% 0 0);
    --color-base-300: oklch(92% 0 0);
    --color-base-content: oklch(20% 0 0);
    --color-primary: #000000;
    --color-primary-content: #ffffff;
    --color-secondary: #8950FC;
    --color-secondary-content: #ffffff;
    --color-accent: #1BC5BD;
    --color-accent-content: #ffffff;
    --color-neutral: oklch(26% 0 0);
    --color-neutral-content: oklch(98% 0 0);
    --color-info: #8950FC;
    --color-info-content: #ffffff;
    --color-success: #1BC5BD;
    --color-success-content: #ffffff;
    --color-warning: #FFA800;
    --color-warning-content: oklch(26% 0.079 36.259);
    --color-error: #F64E60;
    --color-error-content: #ffffff;
    --radius-selector: 1rem;
    --radius-field: 0.5rem;
    --radius-box: 1rem;
    --size-selector: 0.25rem;
    --size-field: 0.25rem;
    --border: 1px;
    --depth: 1;
    --noise: 0;

    /* Variáveis DaisyUI equivalentes (compat) */
    --b1: var(--color-base-100);
    --b2: var(--color-base-200);
    --b3: var(--color-base-300);
    --bc: var(--color-base-content);
    --p: var(--color-primary);
    --pc: var(--color-primary-content);
    --s: var(--color-secondary);
    --sc: var(--color-secondary-content);
    --a: var(--color-accent);
    --ac: var(--color-accent-content);
    --n: var(--color-neutral);
    --nc: var(--color-neutral-content);
    --in: var(--color-info);
    --inc: var(--color-info-content);
    --su: var(--color-success);
    --suc: var(--color-success-content);
    --wa: var(--color-warning);
    --wac: var(--color-warning-content);
    --er: var(--color-error);
    --erc: var(--color-error-content);
    --rounded-box: var(--radius-box);
    --rounded-btn: var(--radius-field);
    --rounded-badge: var(--radius-selector);
}

/* Tema Dark — mesma paleta de marca, fundo/texto invertidos */
[data-theme="dark"] {
    default: false;
    prefersdark: true;
    color-scheme: "dark";
    --color-base-100: oklch(15% 0.02 264);
    --color-base-200: oklch(20% 0.02 264);
    --color-base-300: oklch(27% 0.02 264);
    --color-base-content: oklch(96% 0.007 247.896);
    --color-primary: #ffffff;
    --color-primary-content: #000000;
    --color-secondary: #8950FC;
    --color-secondary-content: #ffffff;
    --color-accent: #1BC5BD;
    --color-accent-content: #ffffff;
    --color-neutral: oklch(37% 0.044 257.287);
    --color-neutral-content: oklch(98% 0.003 247.858);
    --color-info: #8950FC;
    --color-info-content: #ffffff;
    --color-success: #1BC5BD;
    --color-success-content: #ffffff;
    --color-warning: #FFA800;
    --color-warning-content: oklch(26% 0.079 36.259);
    --color-error: #F64E60;
    --color-error-content: #ffffff;
    --radius-selector: 1rem;
    --radius-field: 0.5rem;
    --radius-box: 1rem;
    --size-selector: 0.25rem;
    --size-field: 0.25rem;
    --border: 1px;
    --depth: 1;
    --noise: 0;
}

.glass-effect {
    backdrop-filter: blur(10px);
    background: color-mix(in oklch, var(--color-base-100) 80%, transparent);
}

/* Sidebar sempre escura, independente do tema ativo (mesmo padrão do projeto de
   referência): evita que o menu "pisque" claro quando o tema geral é winter. */
.drawer-side {
    --sidebar-bg-200: oklch(20% 0.02 264);
    --sidebar-bg-300: oklch(27% 0.02 264);
    --sidebar-text: oklch(96% 0.007 247.896);
    --sidebar-text-muted: oklch(70% 0.007 247.896);
    --sidebar-border: oklch(37% 0.044 257.287);
}

.drawer-side aside {
    background-color: var(--sidebar-bg-200) !important;
    border-color: var(--sidebar-border) !important;
}

.drawer-side .p-4.border-b {
    border-color: var(--sidebar-border) !important;
    background-color: var(--sidebar-bg-200) !important;
}

.drawer-side nav {
    background-color: var(--sidebar-bg-200) !important;
}

.drawer-side h3 {
    color: var(--sidebar-text-muted) !important;
}

.drawer-side a:hover {
    background-color: var(--sidebar-bg-300) !important;
}

.drawer-side .font-medium {
    color: var(--sidebar-text) !important;
}

.drawer-side .text-xs:not(.text-white) {
    color: var(--sidebar-text-muted) !important;
}

.drawer-side .text-error\/60 {
    color: color-mix(in oklch, var(--color-error) 60%, transparent) !important;
}

.drawer-side .btn-close-menu {
    color: var(--sidebar-text) !important;
    border-color: var(--sidebar-border) !important;
}

.drawer-side .btn-close-menu:hover {
    background-color: var(--sidebar-bg-300) !important;
}

/* Scrollbar personalizada para a sidebar escura */
.drawer-side nav::-webkit-scrollbar {
    width: 6px;
}
.drawer-side nav::-webkit-scrollbar-track {
    background: var(--sidebar-bg-200) !important;
}
.drawer-side nav::-webkit-scrollbar-thumb {
    background: var(--sidebar-text-muted) !important;
    border-radius: 3px;
}
.drawer-side nav::-webkit-scrollbar-thumb:hover {
    background: var(--sidebar-text) !important;
}
.drawer-side nav {
    scrollbar-width: thin;
    scrollbar-color: var(--sidebar-text-muted) var(--sidebar-bg-200);
}

.drawer-overlay {
    background-color: rgba(0, 0, 0, 0.5) !important;
}

/* SweetAlert2 atrás de <dialog class="modal"> (daisyUI).
   O showModal() coloca o dialog na top layer do browser, acima de qualquer
   z-index do .swal2-container no body. O JS em public/js/modals.js anexa o
   container dentro do dialog aberto; estas regras fazem o overlay cobrir o
   modal-box (display:grid do .modal) em vez de empilhar como mais uma célula. */
.swal2-container {
    z-index: 20000 !important;
}
dialog.modal .swal2-container {
    position: absolute !important;
    inset: 0 !important;
    grid-column: 1 / -1;
    grid-row: 1 / -1;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    z-index: 50 !important;
    overflow: auto !important;
}
dialog.modal #page-block-overlay {
    position: absolute !important;
    inset: 0 !important;
    z-index: 40 !important;
}

/* Dropzone (upload de áudio/vídeo em Transcriptions) revestido com o padrão
   visual do daisyUI, no lugar do CSS embutido no style.bundle.css do Metronic. */
.dropzone {
    min-height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.2s ease, background-color 0.2s ease;
    /* O CSS padrão do dropzone.min.css (CDN) fixa fundo branco — sobrescrito aqui
       para acompanhar o tema, senão fica um retângulo branco fixo no modo dark. */
    background-color: var(--color-base-100) !important;
}
.dropzone:hover,
.dropzone.dz-drag-hover {
    border-color: var(--color-primary) !important;
    background-color: color-mix(in oklch, var(--color-primary) 6%, transparent) !important;
}
.dropzone .dz-message {
    font-size: 0.95rem;
    color: var(--color-base-content);
    opacity: 1;
}
.dropzone .dz-url-btn:hover {
    border-color: var(--color-success);
    color: var(--color-base-content);
}
/* O CDN do dropzone estiliza o <button class="dz-button"> com cor de texto própria
   (cinza claro), que fica ilegível sobre fundo escuro — força herdar do tema. */
.dropzone .dz-button {
    color: var(--color-base-content) !important;
    background: transparent !important;
}
.dropzone .dz-preview {
    margin: 0.5rem;
}
.dropzone .dz-preview .dz-details {
    color: var(--color-base-content);
}

/* Player de áudio (cspd-player.js mantido intocado — só o HTML/CSS ao redor foi
   reconstruído com DaisyUI/Tailwind; o CSS legado embutido em
   public/metronic/dist/assets/js/pages/custom/player/cspd-player.css não é mais
   carregado, tinha border cinza de 5px e margens fixas que quebravam em containers
   estreitos). Uma variante por tema (claro/escuro) — o próprio cspd-player.js
   alterna a cor do ícone de volume via `style.color` inline (branco "#fff" ou
   laranja quando mutado); o `!important` abaixo em #cs_audio_sound sobrescreve
   esse inline e faz o ícone sempre seguir a cor de texto do player em ambos os
   temas, sem precisar tocar no JS.
   Atenção: a barra .cs_volBar precisa continuar com exatamente 65px de largura —
   cspd-player.js calcula o volume clicado como `cliqueEmPx / 65`, hardcoded. */
.cs-player {
    border-radius: var(--radius-box, 1rem);
    padding: 1rem;
}
[data-theme="winter"] .cs-player {
    background: oklch(93% 0.005 264);
    color: oklch(25% 0.02 264);
}
[data-theme="dark"] .cs-player {
    background: oklch(20% 0.02 264);
    color: oklch(96% 0.007 247.896);
}
.cs-player .cs_audio_bar,
.cs-player .cs_volBar {
    background: color-mix(in oklch, currentColor 15%, transparent);
}
.cs-player .cs_audio_bar_loaded {
    background: color-mix(in oklch, currentColor 30%, transparent);
}
.cs-player .cs_volume {
    background: currentColor;
}
.cs-player #cs_audio_sound {
    color: currentColor !important;
}

/* Destaque do trecho da transcrição sendo reproduzido no player de áudio/vídeo
   (aplicado via JS em public/js/transcriptions/subtitle.js e no player custom
   public/metronic/dist/assets/js/pages/custom/player/cspd-player.js). */
.border-playing {
    border-color: var(--color-primary) !important;
    background-color: color-mix(in oklch, var(--color-primary) 8%, transparent);
}

/* Hover na linha da transcrição: mesmo efeito visual do trecho tocando (border-playing),
   só que disparado pelo mouse em vez do player — dá o mesmo feedback de "isso é clicável". */
#text_transcript > div:hover {
    border-color: var(--color-primary) !important;
    background-color: color-mix(in oklch, var(--color-primary) 8%, transparent);
}

/* Utilitário de impressão */
.view-print {
    display: none !important;
}
@media print {
    .remove-print {
        display: none !important;
    }
    .view-print {
        display: contents !important;
    }
}
