:root {
    --bs-body-bg: #1a1a2e;
    --bs-body-color: #fff;
    --bs-dark: #16213e;
    --bs-border-color: #2a2a4a;
    --theme-accent: #4a6fa5;
    --theme-bg-image: none;
}

body {
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    background-image: var(--theme-bg-image);
    background-size: cover;
    background-attachment: fixed;
}

.navbar {
    box-shadow: 0 2px 8px rgba(0,0,0,.3);
}

.card {
    box-shadow: 0 2px 6px rgba(0,0,0,.2);
}

.table {
    --bs-table-color: var(--bs-body-color);
}

.table > :not(caption) > * > * {
    border-bottom-color: var(--bs-border-color);
}

.table-dark {
    --bs-table-color: var(--bs-body-color);
    --bs-table-bg: var(--bs-dark);
    --bs-table-border-color: var(--bs-border-color);
    --bs-table-hover-color: var(--bs-body-color);
    --bs-table-hover-bg: color-mix(in srgb, var(--bs-body-color) 10%, var(--bs-dark));
    --bs-table-striped-color: var(--bs-body-color);
    --bs-table-striped-bg: color-mix(in srgb, var(--bs-body-color) 5%, var(--bs-dark));
    --bs-table-active-color: var(--bs-body-color);
    --bs-table-active-bg: color-mix(in srgb, var(--bs-body-color) 15%, var(--bs-dark));
    --bs-table-emphasis-color: var(--bs-body-color);
    --bs-table-emphasis-bg: color-mix(in srgb, var(--bs-body-color) 8%, var(--bs-dark));
    --bs-table-group-separator-color: var(--bs-border-color);
}

.badge.bg-dark {
    color: var(--bs-body-color);
}

.form-control, .form-select {
    background-color: #0f3460;
    border-color: #2a2a4a;
    color: #e0e0e0;
}

.form-control:focus, .form-select:focus {
    background-color: #0f3460;
    border-color: #4a6fa5;
    color: #e0e0e0;
    box-shadow: 0 0 0 .25rem rgba(74,111,165,.25);
}

.form-control::placeholder {
    color: #6c757d;
}

.list-group-item {
    background-color: transparent;
}

.ql-editor {
    min-height: 200px;
}

.ql-toolbar {
    background: #0f3460;
    border-color: #2a2a4a !important;
    border-radius: .375rem .375rem 0 0;
}

.ql-container {
    border-color: #2a2a4a !important;
    border-radius: 0 0 .375rem .375rem;
    background: #0a0a23;
}

.ql-snow .ql-stroke {
    stroke: #e0e0e0;
}

.ql-snow .ql-fill {
    fill: #e0e0e0;
}

.ql-snow .ql-picker {
    color: #e0e0e0;
}

.ql-snow .ql-picker-options {
    background: #0f3460;
}

.ql-snow .ql-toolbar button:hover,
.ql-snow .ql-toolbar button:focus,
.ql-snow .ql-toolbar .ql-picker-label:hover,
.ql-snow .ql-toolbar .ql-picker-label.ql-active {
    color: #fff;
    background: rgba(74, 111, 165, 0.35);
}

.ql-snow .ql-toolbar button.ql-active {
    color: #fff;
    background: rgba(74, 111, 165, 0.55);
}

.ql-snow .ql-toolbar button:hover .ql-stroke,
.ql-snow .ql-toolbar button:focus .ql-stroke,
.ql-snow .ql-toolbar button.ql-active .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke {
    stroke: #fff;
}

.ql-snow .ql-toolbar button:hover .ql-fill,
.ql-snow .ql-toolbar button:focus .ql-fill,
.ql-snow .ql-toolbar button.ql-active .ql-fill,
.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,
.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill {
    fill: #fff;
}

.ql-snow .ql-toolbar .ql-picker-item:hover,
.ql-snow .ql-toolbar .ql-picker-item.ql-selected {
    color: #fff;
}

.ql-editor.ql-blank::before {
    color: #6c757d;
}

.nav-pills .nav-link {
    color: var(--bs-body-color);
}

.nav-pills .nav-link.active {
    background-color: #0d6efd;
}

a {
    color: #8ec5ff;
}

a:hover {
    color: #b3d8ff;
}

.btn-outline-secondary {
    --bs-btn-color: #adb5bd;
    --bs-btn-border-color: #495057;
}

.btn-outline-secondary:hover {
    --bs-btn-hover-bg: #495057;
    --bs-btn-hover-border-color: #6c757d;
}

/* Correção de contraste WCAG 2 AA (axe color-contrast) para tema escuro */
.btn-outline-danger {
    --bs-btn-color: #ff8a8a;
    --bs-btn-border-color: #ff8a8a;
    --bs-btn-hover-bg: #ff8a8a;
    --bs-btn-hover-border-color: #ff8a8a;
    --bs-btn-hover-color: #1a1a2e;
}

.btn-outline-primary {
    --bs-btn-color: #8ec5ff;
    --bs-btn-border-color: #8ec5ff;
    --bs-btn-hover-bg: #8ec5ff;
    --bs-btn-hover-border-color: #8ec5ff;
    --bs-btn-hover-color: #1a1a2e;
}

.btn-outline-success {
    --bs-btn-color: #5dd68a;
    --bs-btn-border-color: #5dd68a;
    --bs-btn-hover-bg: #5dd68a;
    --bs-btn-hover-border-color: #5dd68a;
    --bs-btn-hover-color: #1a1a2e;
}

.btn-outline-warning {
    --bs-btn-color: #ffd166;
    --bs-btn-border-color: #ffd166;
    --bs-btn-hover-bg: #ffd166;
    --bs-btn-hover-border-color: #ffd166;
    --bs-btn-hover-color: #1a1a2e;
}

.btn-outline-info {
    --bs-btn-color: #7dd3ff;
    --bs-btn-border-color: #7dd3ff;
    --bs-btn-hover-bg: #7dd3ff;
    --bs-btn-hover-border-color: #7dd3ff;
    --bs-btn-hover-color: #1a1a2e;
}

/* badges com contraste suficiente sobre fundo escuro — usar texto claro */
.badge.bg-secondary {
    --bs-bg-opacity: 1;
    background-color: #495057 !important;
    color: #fff !important;
}

.badge.bg-danger {
    background-color: #c0392b !important;
    color: #fff !important;
}

/* mapa: botão Grid — bg escuro o bastante para branco passar 4.5:1 */
#gridBtn.btn-info {
    --bs-btn-bg: #0878b8;
    --bs-btn-border-color: #0878b8;
    --bs-btn-color: #fff;
    --bs-btn-hover-bg: #066099;
    --bs-btn-hover-border-color: #066099;
}

/* mapa: botão Mapa (btn-outline-info) e Mover (btn-outline-warning) */
.map-toolbar .btn-outline-info {
    --bs-btn-color: #7dd3ff;
    --bs-btn-border-color: #7dd3ff;
    --bs-btn-hover-bg: #7dd3ff;
    --bs-btn-hover-border-color: #7dd3ff;
    --bs-btn-hover-color: #1a1a2e;
}

.map-toolbar .btn-outline-warning {
    --bs-btn-color: #ffd166;
    --bs-btn-border-color: #ffd166;
    --bs-btn-hover-bg: #ffd166;
    --bs-btn-hover-border-color: #ffd166;
    --bs-btn-hover-color: #1a1a2e;
}

/* texto de estatísticas (Total) — verde mais claro para passar em bg-dark */
.text-success {
    color: #5dd68a !important;
}

code {
    color: #f8c7cc;
}

/* Mundo tree: links e texto muted precisam de contraste em bg escuro */
:root {
    --tree-text-muted: #adb5bd;
    --tree-text: #e6edf3;
}
