:root {
    --primary-color: #6366f1;
    --primary-hover: #4f46e5;
    --secondary-color: #64748b;
    --success-color: #22c55e;
    --danger-color: #ef4444;
    --warning-color: #f59e0b;
    --info-color: #3b82f6;
    
    --body-bg: #f1f5f9;
    --card-bg: #ffffff;
    --sidebar-bg: #1e293b;
    --header-bg: #ffffff;
    
    --text-primary: #1e293b;
    --text-secondary: #64748b;
    --text-muted: #94a3b8;
    --text-light: #ffffff;
    
    --border-color: #e2e8f0;
    --border-radius: 0.5rem;
    
    --sidebar-width: 250px;
    --header-height: 70px;
}

/* Tema Escuro */
.dark {
    --body-bg: #0f172a;
    --card-bg: #1e293b;
    --sidebar-bg: #0f172a;
    --header-bg: #1e293b;
    
    --text-primary: #ffffff;
    --text-secondary: #cbd5e1;
    --text-muted: #94a3b8;
    
    --border-color: #334155;
}

/* Estilos Gerais */
body {
    font-family: 'Inter', sans-serif;
    background-color: var(--body-bg);
    color: var(--text-primary);
    line-height: 1.5;
    margin: 0;
    min-height: 100vh;
}

a {
    color: var(--primary-color);
    text-decoration: none;
}

a:hover {
    color: var(--primary-hover);
}

/* Sidebar */
.sidebar {
    position: fixed;
    top: 0;
    left: 0;
    width: var(--sidebar-width);
    height: 100vh;
    background-color: var(--sidebar-bg);
    z-index: 1000;
    transition: transform 0.3s ease;
}

.sidebar-closed .sidebar {
    transform: translateX(-100%);
}

.sidebar-header {
    height: var(--header-height);
    padding: 0 1.5rem;
    display: flex;
    align-items: center;
    border-bottom: 1px solid var(--border-color);
}

.app-brand {
    display: flex;
    align-items: center;
}

.brand-text {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--text-light);
}

.sidebar-user {
    padding: 1.5rem;
    display: flex;
    align-items: center;
    gap: 1rem;
    border-bottom: 1px solid var(--border-color);
}

.user-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: var(--primary-color);
    display: flex;
    align-items: center;
    justify-content: center;
}

.avatar-text {
    color: var(--text-light);
    font-weight: 600;
    font-size: 1.2rem;
}

.user-info {
    display: flex;
    flex-direction: column;
}

.user-name {
    color: var(--text-light);
    font-weight: 600;
}

.user-role {
    color: var(--text-secondary);
    font-size: 0.875rem;
}

.sidebar-menu {
    padding: 1.5rem 0;
}

.menu {
    list-style: none;
    padding: 0;
    margin: 0;
}

.menu-item {
    margin-bottom: 0.5rem;
}

.menu-link {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1.5rem;
    color: var(--text-secondary);
    transition: all 0.3s ease;
}

.menu-link:hover,
.menu-item.active .menu-link {
    color: var(--text-light);
    background-color: rgba(255, 255, 255, 0.1);
}

.menu-link i {
    font-size: 1.25rem;
}

/* Header */
.header {
    position: fixed;
    top: 0;
    right: 0;
    left: var(--sidebar-width);
    height: var(--header-height);
    background-color: var(--header-bg);
    border-bottom: 1px solid var(--border-color);
    padding: 0 1.5rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    z-index: 900;
    transition: left 0.3s ease;
}

.sidebar-closed .header {
    left: 0;
}

.header-left {
    display: flex;
    align-items: center;
    gap: 1.5rem;
}

.sidebar-toggle {
    background: none;
    border: none;
    color: var(--text-primary);
    font-size: 1.5rem;
    cursor: pointer;
    padding: 0;
}

.page-title h4 {
    margin: 0;
    font-weight: 600;
}

.breadcrumb {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    gap: 0.5rem;
    font-size: 0.875rem;
}

.breadcrumb-item.active {
    color: var(--text-muted);
}

.breadcrumb-item + .breadcrumb-item::before {
    content: "/";
    color: var(--text-muted);
    margin-right: 0.5rem;
}

/* Conteúdo Principal */
.main-content {
    margin-left: var(--sidebar-width);
    transition: margin-left 0.3s ease;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.sidebar-closed .main-content {
    margin-left: 0;
}

.content {
    padding: calc(var(--header-height) + 1.5rem) 1.5rem 1.5rem;
    flex: 1;
}

/* Cards */
.card {
    background-color: var(--card-bg);
    border-radius: var(--border-radius);
    border: 1px solid var(--border-color);
    margin-bottom: 1.5rem;
}

.card-header {
    padding: 1rem 1.5rem;
    border-bottom: 1px solid var(--border-color);
}

.card-body {
    padding: 1.5rem;
}

/* Tabelas */
.table {
    color: var(--text-primary);
}

.table th {
    font-weight: 600;
    background-color: rgba(0, 0, 0, 0.02);
}

.table td {
    vertical-align: middle;
}

/* Botões */
.btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 500;
    padding: 0.5rem 1rem;
    border-radius: var(--border-radius);
    transition: all 0.3s ease;
}

.btn-primary {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
    color: var(--text-light);
}

.btn-primary:hover {
    background-color: var(--primary-hover);
    border-color: var(--primary-hover);
    color: var(--text-light);
}

.btn-secondary {
    background-color: var(--secondary-color);
    border-color: var(--secondary-color);
    color: var(--text-light);
}

.btn-info {
    background-color: var(--info-color);
    border-color: var(--info-color);
    color: var(--text-light);
}

.btn-danger {
    background-color: var(--danger-color);
    border-color: var(--danger-color);
    color: var(--text-light);
}

.btn-sm {
    padding: 0.25rem 0.5rem;
    font-size: 0.875rem;
}

/* Formulários */
.form-label {
    font-weight: 500;
    margin-bottom: 0.5rem;
}

.form-control,
.form-select {
    background-color: var(--card-bg);
    border-color: var(--border-color);
    color: var(--text-primary);
}

.form-control:focus,
.form-select:focus {
    background-color: var(--card-bg);
    border-color: var(--primary-color);
    color: var(--text-primary);
    box-shadow: 0 0 0 0.25rem rgba(99, 102, 241, 0.25);
}

/* Footer */
.footer {
    padding: 1.5rem;
    border-top: 1px solid var(--border-color);
    color: var(--text-muted);
}

/* Responsividade */
@media (max-width: 768px) {
    :root {
        --sidebar-width: 100%;
    }
    
    .sidebar {
        box-shadow: 0 0 15px rgba(0, 0, 0, 0.1);
    }
    
    .content {
        padding: calc(var(--header-height) + 1rem) 1rem 1rem;
    }
}

/* Ajustes específicos para o tema escuro */
.dark .text-muted {
    color: #94a3b8 !important;
}

.dark .dropdown-menu {
    background-color: var(--card-bg);
    border-color: var(--border-color);
}

.dark .dropdown-item {
    color: var(--text-primary);
}

.dark .dropdown-item:hover {
    background-color: rgba(255, 255, 255, 0.1);
    color: var(--text-primary);
}

.dark .list-group-item {
    background-color: var(--card-bg);
    border-color: var(--border-color);
}

.dark .card {
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.dark .table {
    --bs-table-striped-color: var(--text-primary);
    --bs-table-striped-bg: rgba(255, 255, 255, 0.05);
}

.dark .form-control,
.dark .form-select {
    background-color: var(--card-bg);
    border-color: var(--border-color);
    color: var(--text-primary);
}

.dark .form-control:focus,
.dark .form-select:focus {
    background-color: var(--card-bg);
    border-color: var(--primary-color);
    color: var(--text-primary);
}

/* Ajustes para DataTables no tema escuro */
.dark .dataTables_wrapper .dataTables_length,
.dark .dataTables_wrapper .dataTables_filter,
.dark .dataTables_wrapper .dataTables_info,
.dark .dataTables_wrapper .dataTables_processing,
.dark .dataTables_wrapper .dataTables_paginate {
    color: var(--text-primary) !important;
}

.dark .dataTables_wrapper .dataTables_paginate .paginate_button {
    color: var(--text-secondary) !important;
}

.dark .dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dark .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
    color: var(--text-light) !important;
    background: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
}

.dark .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
    color: var(--text-light) !important;
    background: var(--primary-hover) !important;
    border-color: var(--primary-hover) !important;
}

.dark .dataTables_wrapper .dataTables_paginate .paginate_button.disabled {
    color: var(--text-muted) !important;
}

/* Ajustes adicionais de contraste */
.dark small {
    color: var(--text-secondary) !important;
}

.dark .modal-content {
    background-color: var(--card-bg);
    color: var(--text-primary);
}

.dark .modal-header,
.dark .modal-footer {
    border-color: var(--border-color);
}

.dark .close {
    color: var(--text-primary);
}

.dark hr {
    border-color: var(--border-color);
}

.dark .badge {
    color: var(--text-light);
}

/* Ajustes para gráficos e estatísticas */
.dark .chart-container {
    color: var(--text-primary);
}

.dark canvas {
    filter: brightness(1.1);
}

.dark .chart-js-tooltip,
.dark .chartjs-tooltip {
    background-color: var(--card-bg);
    color: var(--text-primary);
    border-color: var(--border-color);
}

.dark tspan {
    fill: var(--text-primary) !important;
}

.dark text {
    fill: var(--text-primary) !important;
}

.dark .axis text {
    fill: var(--text-primary) !important;
}

.dark .domain,
.dark .tick line {
    stroke: var(--border-color) !important;
}

.dark .grid line {
    stroke: var(--border-color) !important;
    opacity: 0.3;
}

/* Ajustes para todos os elementos de texto */
.dark p, 
.dark span:not(.badge span),
.dark label,
.dark h1, .dark h2, .dark h3, .dark h4, .dark h5, .dark h6,
.dark .h1, .dark .h2, .dark .h3, .dark .h4, .dark .h5, .dark .h6,
.dark th,
.dark td,
.dark div,
.dark li,
.dark small,
.dark a,
.dark canvas,
.dark input,
.dark select,
.dark textarea,
.dark button:not(.btn),
.dark footer {
    color: var(--text-primary) !important;
}

/* Garantir que os textos pequenosbsejam claros no tema escuro */
.dark .text-muted,
.dark .text-secondary,
.dark .text-black-50,
.dark small,
.dark .small,
.dark footer,
.dark .footer {
    color: var(--text-secondary) !important;
}

/* Fixar o Dashboard especificamente */
.dark .card .card-body {
    color: var(--text-primary) !important;
}

.dark .card .card-body div,
.dark .card .card-body p,
.dark .card .card-body span {
    color: var(--text-primary) !important;
}

/* Estatísticas nos cards do dashboard */
.dark .stat-text,
.dark .stat-number,
.dark .chart-indicator {
    color: var(--text-primary) !important;
}

.dark .chart-indicator.up {
    color: var(--success-color) !important;
}

.dark .chart-indicator.down {
    color: var(--danger-color) !important;
}

/* Aumentar contraste para fontes nos cards */
.dark .card {
    color: white !important;
}

.dark .card * {
    color: white !important;
}

/* Exceções para botões e badges */
.dark .btn:not(.btn-link) *,
.dark .badge * {
    color: inherit !important;
}

/* Alta especificidade para quebrar regras do tema */
.dark [class*="text-"] {
    color: var(--text-primary) !important;
}

.dark [class*="text-success"],
.dark .text-success,
.dark .text-success * {
    color: var(--success-color) !important;
}

.dark [class*="text-danger"],
.dark .text-danger,
.dark .text-danger * {
    color: var(--danger-color) !important;
}

.dark [class*="text-warning"],
.dark .text-warning,
.dark .text-warning * {
    color: var(--warning-color) !important;
}

.dark [class*="text-info"],
.dark .text-info,
.dark .text-info * {
    color: var(--info-color) !important;
}

/* Forçar todas as tags SVG a terem cor clara */
.dark svg,
.dark svg *,
.dark .svg *,
.dark path,
.dark tspan,
.dark text,
.dark g {
    fill: var(--text-primary) !important;
    color: var(--text-primary) !important;
}

/* Forçar estatísticas a terem cor branca */
.dark .stat-icon + div * {
    color: white !important;
}

/* Forçar labels de gráficos a terem cor branca */
.dark .chartjs-render-monitor + [class*="chartjs"],
.dark canvas + div,
.dark canvas + span {
    color: white !important;
}

/* Ajustes para cabeçalho e navegação */
.dark .header .ri-menu-line,
.dark .header .ri-user-line,
.dark .header .ri-sun-line,
.dark .header .ri-moon-line,
.dark .header .btn i,
.dark .sidebar-toggle i {
    color: white !important;
    fill: white !important;
}

.dark .header button,
.dark .header .btn {
    color: white !important;
    border-color: transparent !important;
}

.dark .header button:hover,
.dark .header .btn:hover {
    background-color: rgba(255, 255, 255, 0.1) !important;
}

/* Ajustes para breadcrumbs */
.dark .breadcrumb-item,
.dark .breadcrumb-item.active,
.dark .breadcrumb-item + .breadcrumb-item::before {
    color: var(--text-secondary) !important;
}

.dark .breadcrumb-item a {
    color: var(--text-light) !important;
}

/* 
* ==========================================================
* TABELAS NO TEMA ESCURO
* ==========================================================
*/

/* Estilos básicos de tabela no tema escuro */
.dark .table {
    color: #e9ecef;
    border-color: #495057;
    background-color: #1a2234;
}

.dark .table-striped > tbody > tr:nth-of-type(odd) {
    background-color: rgba(0, 0, 0, 0.15);
}

.dark .table-striped > tbody > tr:nth-of-type(even) {
    background-color: #1a2234;
}

.dark .table-hover > tbody > tr:hover {
    background-color: rgba(0, 0, 0, 0.25);
}

.dark .table thead th {
    border-bottom-color: #495057;
    color: #fff;
    font-weight: 600;
    background-color: #151c2c;
}

.dark .table td, 
.dark .table th {
    border-color: #495057;
    padding: 0.75rem;
}

/* Correção específica para células da tabela no tema escuro */
.dark .table tbody td {
    background-color: #1a2234 !important; /* Forçar cor de fundo escura */
    color: #e9ecef !important; /* Garantir texto claro */
}

.dark .table tbody tr:nth-of-type(odd) td {
    background-color: #1d2942 !important; /* Cor mais escura para linhas ímpares */
}

.dark .table tbody tr:hover td {
    background-color: #253253 !important; /* Cor de destaque ao passar o mouse */
}

/* Super seletor para garantir que todos os elementos dentro da tabela tenham o fundo transparente e texto claro */
.dark .table tbody td,
.dark .table tbody td *,
.dark .table tbody td a,
.dark .table tbody td span,
.dark .table tbody td div,
.dark .table tbody td p,
.dark .table tbody td strong,
.dark .table tbody td small,
.dark .table tbody td em,
.dark .table tbody td b,
.dark .table tbody td i:not(.ri-*) {
    color: #ffffff !important;
    background-color: transparent !important;
    background: transparent !important;
}

/* Super seletor para forçar elementos com texto roxo a terem cor branca */
.dark .table td[style*="color"],
.dark .table td[style*="background"],
.dark .table td *[style*="color"],
.dark .table td *[style*="background"] {
    color: #ffffff !important;
    background-color: transparent !important;
    background: transparent !important;
}

/* Badges/etiquetas dentro da tabela */
.dark .table .badge {
    color: white !important;
    background-color: inherit !important;
}

.dark .table .badge.bg-success {
    background-color: #22c55e !important;
}

.dark .table .badge.bg-danger {
    background-color: #ef4444 !important;
}

.dark .table .badge.bg-warning {
    background-color: #f59e0b !important;
}

.dark .table .badge.bg-info {
    background-color: #3b82f6 !important;
}

/* Estilos para elementos de DataTables */
.dark .dataTables_info,
.dark .dataTables_length,
.dark .dataTables_filter,
.dark .dataTables_paginate {
    color: #e9ecef !important;
}

.dark .dataTables_length select, 
.dark .dataTables_filter input {
    color: #e9ecef !important;
    background-color: #343a40 !important;
    border-color: #495057 !important;
}

.dark .paginate_button {
    color: #e9ecef !important;
    background-color: #202b3c !important;
    border-color: #495057 !important;
}

.dark .paginate_button.current {
    background: #0d6efd !important;
    border-color: #0d6efd !important;
    color: #fff !important;
}

.dark .paginate_button:hover:not(.current) {
    background: #364156 !important;
    color: #fff !important;
}

/* DataTables específicos */
.dark .dataTables_wrapper .dataTable {
    background-color: #1a2234;
    border-color: #495057;
}

.dark .dataTables_wrapper .dataTable thead th {
    background-color: #151c2c;
    color: #fff;
}

.dark .dataTables_wrapper .dataTable tbody tr {
    color: #e9ecef;
}

.dark .dataTables_wrapper .dataTable tbody tr td {
    background-color: #1a2234 !important;
}

.dark .dataTables_wrapper .dataTable tbody tr.odd td {
    background-color: #1d2942 !important;
}

.dark .dataTables_wrapper .dataTable tbody tr.odd:hover td,
.dark .dataTables_wrapper .dataTable tbody tr.even:hover td {
    background-color: #253253 !important;
}

/* Garantir melhor contraste para botões na tabela */
.dark .table .btn-info,
.dark .table .btn-primary,
.dark .table .btn-success {
    background-color: #0d6efd;
    border-color: #0d6efd;
    color: white !important;
}

.dark .table .btn-danger {
    background-color: #dc3545;
    border-color: #dc3545;
    color: white !important;
}

.dark .table .btn-info i,
.dark .table .btn-primary i,
.dark .table .btn-success i {
    color: white !important;
}

/* Status de paginação do DataTables */
.dark div.dataTables_wrapper div.dataTables_info {
    color: #cbd5e1 !important;
    padding-top: 1em;
}

.dark div.dataTables_wrapper div.dataTables_paginate ul.pagination {
    margin-top: 1em;
}

.dark div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item.active .page-link {
    background-color: #0d6efd;
    border-color: #0d6efd;
    color: white;
}

.dark div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item:not(.active) .page-link {
    background-color: #202b3c;
    border-color: #364156;
    color: #e9ecef;
}

.dark div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item.disabled .page-link {
    background-color: #202b3c;
    border-color: #364156;
    color: #6c757d;
}

/* Estilos para formulários dentro de cards */
.dark .form-control,
.dark .form-select {
    background-color: #202b3c;
    border-color: #495057;
    color: #e9ecef;
}

.dark .form-control:focus,
.dark .form-select:focus {
    border-color: #0d6efd;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

.dark .form-control::placeholder {
    color: #adb5bd;
    opacity: 1;
}

.dark .form-label {
    color: #e9ecef;
}

/* Estilos para SweetAlert2 no tema escuro */
body.dark .swal2-popup {
    background-color: #1a2234;
    color: #e9ecef;
    border: 1px solid #364156;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.4);
}

body.dark .swal2-title {
    color: #ffffff;
    font-weight: 600;
}

body.dark .swal2-html-container {
    color: #e9ecef;
}

body.dark .swal2-icon {
    border-color: #64df91;
    color: #64df91;
}

/* Melhoria nos ícones de sucesso */
body.dark .swal2-success {
    border-color: #64df91;
}

body.dark .swal2-success-ring {
    border-color: rgba(100, 223, 145, 0.5);
}

body.dark .swal2-success-line-tip,
body.dark .swal2-success-line-long {
    background-color: #64df91;
}

body.dark .swal2-success-circular-line-left,
body.dark .swal2-success-circular-line-right,
body.dark .swal2-success-fix {
    background-color: #1a2234;
}

/* Ícone de erro */
body.dark .swal2-error {
    border-color: #ff5b5b;
}

body.dark .swal2-error-x-mark {
    background-color: transparent;
}

body.dark .swal2-error-line-left,
body.dark .swal2-error-line-right {
    background-color: #ff5b5b;
}

/* Botões */
body.dark .swal2-styled.swal2-confirm {
    background-color: #64df91;
    color: #1a2234;
    font-weight: 600;
    box-shadow: 0 3px 6px rgba(100, 223, 145, 0.2);
}

body.dark .swal2-styled.swal2-cancel {
    background-color: #dc3545;
    color: #ffffff;
}

body.dark .swal2-styled:focus {
    box-shadow: 0 0 0 3px rgba(100, 223, 145, 0.3);
}

/* Loader do SweetAlert2 */
body.dark .swal2-loader {
    border-color: #64df91 transparent #64df91 transparent;
}

/* Animações e transições */
body.dark .swal2-show {
    animation: swal2-show-dark 0.3s;
}

@keyframes swal2-show-dark {
    0% {
        transform: scale(0.9);
        opacity: 0;
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

/* Ícone de aviso */
body.dark .swal2-warning {
    border-color: #f59e0b;
    color: #f59e0b;
}

/* Ícone de informação */
body.dark .swal2-info {
    border-color: #3b82f6;
    color: #3b82f6;
}

/* Ícone de pergunta */
body.dark .swal2-question {
    border-color: #8b5cf6;
    color: #8b5cf6;
}

/* Fundo do modal */
body.dark .swal2-container.swal2-backdrop-show {
    background-color: rgba(10, 15, 25, 0.7);
}

/* Botão OK verde */
body.dark .swal2-confirm.swal2-styled {
    background-color: #64df91;
    color: #1a2234;
    font-weight: 600;
}

body.dark .swal2-confirm.swal2-styled:hover {
    background-color: #52c97f;
}

body.dark .swal2-confirm.swal2-styled:focus {
    box-shadow: 0 0 0 3px rgba(100, 223, 145, 0.3);
} 

/* Ajustando os estilos dos botões no tema escuro */
.dark .btn {
    background-color: var(--card-bg) !important;
    color: var(--text-light) !important;
    border: 1px solid var(--border-color) !important;
}

.dark .btn:hover {
    background-color: var(--primary-hover) !important;
    color: var(--text-light) !important;
}

.dark .feature-icon {
    background-color: var(--card-bg) !important;
    color: var(--text-light) !important;
}