/* ============================================================
   CORREÇÕES DE HARMONIA ENTRE TEMAS - OFICIAL, CLARO E ESCURO
   Arquivo criado para corrigir inconsistências visuais
   ============================================================ */

/* ============================================================
   1. CORREÇÃO DO BOTÃO "IMPORTAR ARQUIVOS GEO" (TEMA OFICIAL)
   Problema: Ficava todo branco no hover
   ============================================================ */

[data-theme="official"] .btn-primary:hover,
[data-theme="official"] #importGeoFileBtn:hover,
[data-theme="official"] #btnSearchAddress:hover,
[data-theme="official"] #goToCoordBtn:hover,
[data-theme="official"] #addConditionBtn:hover,
[data-theme="official"] #applyFilterBtn:hover {
    /* Usa a cor primária com leve escurecimento via filtro */
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;

    /* Escurece 8% para dar efeito de clique */
    filter: brightness(0.92) !important;

    /* Garante texto legível com contraste automático */
    color: var(--text-on-primary, #ffffff) !important;

    /* Remove interferências */
    background-image: none !important;
    opacity: 1 !important;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2) !important;
}

/* Garante que os ícones dentro dos botões também fiquem legíveis */
[data-theme="official"] .btn-primary:hover i,
[data-theme="official"] #importGeoFileBtn:hover i {
    color: var(--text-on-primary, #ffffff) !important;
}

/* ============================================================
   2. CORREÇÃO DOS BOTÕES SECUNDÁRIOS (TODOS OS TEMAS)
   Garante consistência visual
   ============================================================ */

.btn-secondary {
    background: var(--btn-sec-bg);
    color: var(--btn-sec-text);
    border: 1px solid var(--btn-sec-border);
    transition: all 0.2s ease;
}

.btn-secondary:hover {
    background: var(--btn-sec-hover);
    border-color: var(--btn-sec-border);
    color: var(--btn-sec-text);
    transform: translateY(-1px);
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

/* ============================================================
   3. CORREÇÃO DO HEADER (TEMA OFICIAL)
   Garante que o texto seja sempre legível
   ============================================================ */

[data-theme="official"] .header {
    background: var(--header-bg) !important;
}

[data-theme="official"] .header-titles h1,
[data-theme="official"] .header-titles p {
    color: var(--header-text-color) !important;
}

[data-theme="official"] .header-right .btn-icon-only {
    color: var(--header-text-color) !important;
    background: transparent;
    border-color: transparent;
}

[data-theme="official"] .header-right .btn-icon-only:hover {
    background: rgba(255, 255, 255, 0.2) !important;
}

/* ============================================================
   4. CORREÇÃO DAS ABAS LATERAIS (TEMA OFICIAL)
   Texto legível com cor adequada
   ============================================================ */

[data-theme="official"] .tab.active {
    color: var(--tab-text-active, var(--primary-color)) !important;
    border-bottom-color: var(--primary-color) !important;
    font-weight: 400 !important;
    /* Mantém peso normal igual aos outros temas */
}

[data-theme="official"] .tab:hover {
    color: var(--primary-color) !important;
}

/* ============================================================
   5. CORREÇÃO DOS INPUTS E SELECTS (MODO ESCURO)
   ============================================================ */

[data-theme="dark"] input[type="text"],
[data-theme="dark"] input[type="number"],
[data-theme="dark"] input[type="search"],
[data-theme="dark"] textarea,
[data-theme="dark"] select,
[data-theme="dark"] .filter-input,
[data-theme="dark"] .search-name-input {
    background-color: var(--bg-input) !important;
    color: var(--text-main) !important;
    border: 1px solid var(--border-input) !important;
}

[data-theme="dark"] ::placeholder {
    color: var(--text-light);
    opacity: 0.7;
}

/* ============================================================
   6. CORREÇÃO DO SELECT2 (DROPDOWNS) - MODO ESCURO
   ============================================================ */

[data-theme="dark"] .select2-container--default .select2-selection--single {
    background-color: var(--bg-input) !important;
    border: 1px solid var(--border-input) !important;
}

[data-theme="dark"] .select2-container--default .select2-selection--single .select2-selection__rendered {
    color: var(--text-main) !important;
}

[data-theme="dark"] .select2-dropdown {
    background-color: var(--bg-panel) !important;
    border: 1px solid var(--border-color) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] .select2-results__option {
    background-color: var(--bg-panel);
    color: var(--text-main);
}

[data-theme="dark"] .select2-results__option--highlighted[aria-selected] {
    background-color: var(--primary-color) !important;
    color: #ffffff !important;
}

/* ============================================================
   7. CORREÇÃO DOS MODAIS (MODO ESCURO)
   ============================================================ */

[data-theme="dark"] #identify-results-modal {
    background: rgba(30, 30, 30, 0.85) !important;
    backdrop-filter: blur(14px) saturate(180%) !important;
    -webkit-backdrop-filter: blur(14px) saturate(180%) !important;
    border-color: rgba(255, 255, 255, 0.1) !important;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.6) !important;
}

[data-theme="dark"] .identify-modal-header {
    background: transparent !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
}

[data-theme="dark"] .identify-modal-close {
    background: rgba(255, 255, 255, 0.05) !important;
}

[data-theme="dark"] .identify-tabs {
    background: rgba(255, 255, 255, 0.02) !important;
}

[data-theme="dark"] .identify-tab {
    background: rgba(255, 255, 255, 0.05) !important;
    color: var(--text-light) !important;
}

[data-theme="dark"] .identify-tab.active {
    background: var(--primary-color) !important;
    color: #ffffff !important;
}

[data-theme="dark"] .feature-prop {
    background: rgba(255, 255, 255, 0.03) !important;
}

[data-theme="dark"] .feature-prop:hover {
    background: rgba(var(--primary-rgb), 0.1) !important;
}

[data-theme="dark"] .prop-value {
    color: var(--text-main) !important;
}

[data-theme="dark"] .feature-nav-bar {
    background: rgba(var(--primary-rgb), 0.1) !important;
}

[data-theme="dark"] .feature-nav-btn {
    background: rgba(255, 255, 255, 0.1) !important;
    border-color: rgba(255, 255, 255, 0.05) !important;
}

/* ============================================================
   7B. CORREÇÃO DOS CARDS FEDERAIS NO IDENTIFY (MODO ESCURO)
   Cards CAR, SPU e SIGEF com fundo/texto adaptados
   ============================================================ */

/* --- Card SPU (Azul) --- */
[data-theme="dark"] .federal-card-spu {
    background: rgba(21,101,192,0.15) !important;
    border-color: rgba(66,165,245,0.3) !important;
}
[data-theme="dark"] .federal-card-spu .federal-card-title {
    color: #64b5f6 !important;
}
[data-theme="dark"] .federal-card-spu .federal-code-box {
    background: rgba(255,255,255,0.08) !important;
    color: #e0e0e0 !important;
    border-color: rgba(66,165,245,0.2) !important;
}

/* --- Card CAR (Verde) --- */
[data-theme="dark"] .federal-card-car {
    background: rgba(46,125,50,0.15) !important;
    border-color: rgba(76,175,80,0.3) !important;
}
[data-theme="dark"] .federal-card-car .federal-card-title {
    color: #81c784 !important;
}
[data-theme="dark"] .federal-card-car .federal-code-box {
    background: rgba(255,255,255,0.08) !important;
    color: #e0e0e0 !important;
    border-color: rgba(76,175,80,0.2) !important;
}

/* --- Card SIGEF (Laranja) --- */
[data-theme="dark"] .federal-card-sigef {
    background: rgba(230,81,0,0.15) !important;
    border-color: rgba(255,167,38,0.3) !important;
}
[data-theme="dark"] .federal-card-sigef .federal-card-title {
    color: #ffa726 !important;
}
[data-theme="dark"] .federal-card-sigef .federal-code-box {
    background: rgba(255,255,255,0.08) !important;
    color: #e0e0e0 !important;
    border-color: rgba(255,167,38,0.2) !important;
}

/* --- Badges de status (CAR) — dark mode --- */
[data-theme="dark"] .federal-status-badge {
    background: rgba(255,255,255,0.08) !important;
}

/* ============================================================
   8. CORREÇÃO DO BOTÃO "LIMPAR DESTAQUES" (TODOS OS TEMAS)
   ============================================================ */

.btn-limpar-destaque {
    width: 100%;
    margin-bottom: 15px;
    margin-top: 5px;
    background-color: #ffffff !important;
    border: 1px solid var(--btn-action-color, var(--primary-color)) !important;
    color: var(--btn-action-color, var(--primary-color)) !important;
    font-weight: 700;
    border-radius: 6px;
    transition: all 0.3s ease;
}

.btn-limpar-destaque:hover {
    background-color: var(--btn-action-color, var(--primary-color)) !important;
    color: #ffffff !important;
    border-color: var(--btn-action-color, var(--primary-color)) !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

[data-theme="dark"] .btn-limpar-destaque {
    background-color: transparent !important;
}

[data-theme="dark"] .btn-limpar-destaque:hover {
    color: #000000 !important;
    background-color: var(--btn-action-color) !important;
}

/* ============================================================
   9. CORREÇÃO DOS CARDS DE ESTATÍSTICA (MODO ESCURO)
   ============================================================ */

[data-theme="dark"] .chart-card {
    background-color: var(--bg-panel) !important;
    border-color: var(--border-color) !important;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3) !important;
}

[data-theme="dark"] .chart-card .chart-header {
    background: var(--bg-light) !important;
    border-bottom: 1px solid var(--border-color) !important;
}

[data-theme="dark"] .chart-card .chart-header span {
    color: var(--text-main) !important;
}

[data-theme="dark"] .stat-val {
    color: var(--text-main) !important;
}

[data-theme="dark"] .stat-lbl {
    color: var(--text-light) !important;
}

/* ============================================================
   10. CORREÇÃO DO MENU DE COR DO RAIO (MODO ESCURO)
   ============================================================ */

.color-picker-menu {
    background-color: var(--bg-panel) !important;
    color: var(--text-main) !important;
    border: 1px solid var(--border-color) !important;
    box-shadow: 0 4px 15px var(--shadow-color) !important;
    position: absolute;
    top: 100%;
    right: -5px !important;
    left: auto !important;
    transform: none !important;
    z-index: 2000;
    padding: 10px;
    border-radius: 6px;
    min-width: 120px;
}

.color-picker-menu::after {
    content: "";
    position: absolute;
    bottom: 100%;
    right: 10px;
    left: auto;
    margin-left: 0;
    border-width: 6px;
    border-style: solid;
    border-color: transparent transparent var(--bg-panel) transparent;
}

/* ============================================================
   11. CORREÇÃO DO BALÃO DE ENDEREÇO (SMART POPUP) - MODO ESCURO
   ============================================================ */

[data-theme="dark"] .address-popup {
    background: rgba(30, 30, 30, 0.95) !important;
    border: 1px solid #555 !important;
    color: #fff !important;
}

[data-theme="dark"] .address-popup::after {
    border-top-color: rgba(30, 30, 30, 0.95) !important;
}

[data-theme="dark"] .popup-close-btn {
    background: rgba(255, 255, 255, 0.2) !important;
    color: #fff !important;
}

[data-theme="dark"] .popup-close-btn:hover {
    background: #dc3545 !important;
}

/* ============================================================
   12. CORREÇÃO DO DROPDOWN DE SUGESTÕES (AUTOCOMPLETE) - MODO ESCURO
   ============================================================ */

[data-theme="dark"] .suggestions-dropdown {
    background-color: var(--bg-panel) !important;
    border: 1px solid var(--border-color) !important;
    color: var(--text-main) !important;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.5) !important;
}

[data-theme="dark"] .suggestion-item {
    border-bottom: 1px solid var(--border-color) !important;
    color: var(--text-light) !important;
}

[data-theme="dark"] .suggestion-item:hover {
    background-color: var(--bg-hover) !important;
    color: var(--primary-color) !important;
}

[data-theme="dark"] .suggestion-item strong {
    color: var(--primary-color) !important;
}

/* ============================================================
   13. CORREÇÃO DA CAIXA DE ANOTAÇÃO (MODO ESCURO)
   ============================================================ */

[data-theme="dark"] .annotation-box {
    background-color: var(--bg-panel) !important;
    border: 1px solid var(--border-color) !important;
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.6) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] .annotation-header {
    background-color: var(--bg-light) !important;
    border-bottom: 1px solid var(--border-color) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] .annotation-box textarea,
[data-theme="dark"] .annotation-box select {
    background-color: var(--bg-input) !important;
    color: var(--text-main) !important;
    border: 1px solid var(--border-input) !important;
}

[data-theme="dark"] .check-label {
    background-color: var(--bg-input) !important;
    border: 1px solid var(--border-input) !important;
    color: var(--text-light) !important;
}

[data-theme="dark"] .check-label:hover {
    background-color: var(--bg-hover) !important;
    color: var(--primary-color) !important;
}

/* ============================================================
   14. CORREÇÃO DO PAINEL SWIPE (MODO ESCURO)
   ============================================================ */

[data-theme="dark"] .swipe-panel.wide {
    background-color: var(--bg-panel) !important;
    border-color: var(--border-color);
}

[data-theme="dark"] .swipe-body-grid {
    background: var(--bg-inner-container);
}

[data-theme="dark"] .col-title {
    color: var(--primary-color);
    border-bottom-color: var(--primary-color);
}

[data-theme="dark"] .swipe-footer {
    background: var(--bg-light);
    border-top-color: var(--border-color);
}

[data-theme="dark"] .swipe-panel select.filter-select {
    background-color: var(--bg-input);
    color: var(--text-main);
    border-color: var(--border-input);
}

/* ============================================================
   15. CORREÇÃO DOS BOTÕES DE BUFFER (MODO ESCURO)
   ============================================================ */

[data-theme="dark"] .buffer-tool-btn {
    background-color: transparent !important;
    border-color: var(--border-color) !important;
    color: var(--text-light) !important;
    transition: all 0.2s;
}

[data-theme="dark"] .buffer-tool-btn:hover {
    background-color: var(--bg-hover) !important;
    color: var(--text-main) !important;
    border-color: var(--text-light) !important;
}

[data-theme="dark"] .buffer-tool-btn.active {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
    color: #ffffff !important;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}

[data-theme="dark"] .input-group-text {
    background-color: var(--bg-hover) !important;
    border-color: var(--border-input) !important;
    color: var(--text-main) !important;
}

/* ============================================================
   16. CORREÇÃO DO MODAL DE IMPRESSÃO (MODO ESCURO)
   ============================================================ */

[data-theme="dark"] #print-settings-modal>div {
    background-color: var(--bg-panel) !important;
    color: var(--text-main) !important;
    border: 1px solid var(--border-color);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5) !important;
}

[data-theme="dark"] #print-settings-modal h3 {
    color: var(--primary-color) !important;
    border-bottom-color: var(--border-color) !important;
}

[data-theme="dark"] #print-settings-modal label {
    color: var(--text-light) !important;
}

[data-theme="dark"] #btnCancelPrint {
    background-color: transparent !important;
    color: var(--text-main) !important;
    border: 1px solid var(--border-color) !important;
}

[data-theme="dark"] #btnCancelPrint:hover {
    background-color: var(--bg-hover) !important;
    color: var(--primary-color) !important;
}

/* ============================================================
   17. CORREÇÃO DO AVISO DE EPSG (TEMA OFICIAL)
   ============================================================ */

[data-theme="official"] .epsg-warning {
    background-color: var(--bg-panel) !important;
    border: 1px solid var(--secondary-color) !important;
    color: var(--secondary-color) !important;
    border-left: 4px solid var(--secondary-color) !important;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
}

[data-theme="official"] .epsg-warning i {
    color: var(--secondary-color) !important;
}

/* ============================================================
   18. CORREÇÃO DOS GRUPOS DE CAMADAS (MODO ESCURO)
   ============================================================ */

[data-theme="dark"] .layer-group-container {
    background-color: #1e1e1e;
    border-color: #333;
}

[data-theme="dark"] .layer-group-header {
    background-color: #2c2c2c;
    border-bottom: 1px solid #333;
    color: #e0e0e0;
}

[data-theme="dark"] .layer-group-header:hover {
    background-color: #383838;
}

[data-theme="dark"] .layer-group-header .group-title {
    color: #f5f5f5;
}

[data-theme="dark"] .layer-group-content {
    background-color: #1e1e1e;
}

/* ============================================================
   19. CORREÇÃO FINAL: GARANTIR CONSISTÊNCIA EM TODOS OS BOTÕES
   ============================================================ */

/* Tema Oficial - Todos os botões primários */
[data-theme="official"] button.btn-primary,
[data-theme="official"] .btn-primary {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
    color: var(--text-on-primary, #ffffff) !important;
}

/* Tema Escuro - Todos os botões primários */
[data-theme="dark"] button.btn-primary,
[data-theme="dark"] .btn-primary {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
    color: #ffffff !important;
}

[data-theme="dark"] button.btn-primary:hover,
[data-theme="dark"] .btn-primary:hover {
    background-color: var(--primary-hover) !important;
    border-color: var(--primary-hover) !important;
}

/* ============================================================
   20. CORREÇÃO DOS CONTROLES TEMÁTICOS (MODO ESCURO)
   ============================================================ */

[data-theme="dark"] .thematic-control-group input,
[data-theme="dark"] .thematic-control-group select {
    background-color: var(--bg-input) !important;
    color: var(--text-main) !important;
    border-color: var(--border-input) !important;
}

[data-theme="dark"] .style-controls {
    background-color: var(--bg-panel) !important;
    border: 1px solid var(--border-color) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] .thematic-card:last-child {
    background: var(--bg-panel) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .thematic-preview {
    background-color: var(--bg-inner-container) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] #categoriesList {
    background-color: var(--bg-input) !important;
    border-color: var(--border-color) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] .cat-row {
    border-bottom-color: var(--border-color) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] .cat-label-input {
    color: var(--text-main) !important;
    background-color: transparent !important;
    border-color: transparent !important;
}

[data-theme="dark"] .cat-label-input:hover,
[data-theme="dark"] .cat-label-input:focus {
    background-color: var(--bg-hover) !important;
    border-color: var(--border-input) !important;
    color: var(--primary-color) !important;
}

/* ============================================================
   21. CORREÇÃO DOS BOTÕES DE ZOOM DO GERADOR DE RELATÓRIOS (MODO ESCURO)
   Problema: Botões +/- ficavam com fundo branco
   ============================================================ */

[data-theme="dark"] .report-preview-map-controls button {
    background-color: var(--bg-panel) !important;
    border: 2px solid var(--border-color) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] .report-preview-map-controls button:hover {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
    color: #ffffff !important;
}

/* Controle de Escala */
[data-theme="dark"] .report-scale-controls {
    background-color: var(--bg-panel) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .report-scale-controls label {
    color: var(--text-light) !important;
}

[data-theme="dark"] .report-scale-controls select {
    background-color: var(--bg-input) !important;
    color: var(--text-main) !important;
    border-color: var(--border-input) !important;
}

/* ============================================================
   21B. DARK MODE - MODAL DE ALTIMETRIA (buffer-elevation-modal)
   ============================================================ */

[data-theme="dark"] #buffer-elevation-modal {
    background-color: var(--bg-panel) !important;
    color: var(--text-main) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] #buffer-elevation-modal label,
[data-theme="dark"] #buffer-elevation-modal .form-label,
[data-theme="dark"] #buffer-elevation-modal span,
[data-theme="dark"] #buffer-elevation-modal small {
    color: var(--text-light) !important;
}

[data-theme="dark"] #buffer-elevation-modal h6,
[data-theme="dark"] #buffer-elevation-modal h5 {
    color: var(--text-main) !important;
}

[data-theme="dark"] #buffer-elevation-modal hr {
    border-color: var(--border-color) !important;
}

/* Painel de cores das camadas ad-hoc (dentro do grupo no sidebar) */
[data-theme="dark"] .layer-color-panel {
    background: var(--bg-panel) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .layer-color-row label {
    color: var(--text-light) !important;
}

/* ============================================================
   21C. DARK MODE - PAINEL DO TERRENO 3D (#terrain3DSidebar)
   ============================================================ */

[data-theme="dark"] #terrain3DSidebar {
    background: var(--bg-panel) !important;
    border-left-color: var(--border-color) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] #terrain3DSidebar h5 {
    color: var(--primary-color) !important;
    border-bottom-color: var(--border-color) !important;
}

[data-theme="dark"] #terrain3DSidebar>div {
    background: var(--bg-inner-container, #1e1e1e) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] #terrain3DSidebar label {
    color: var(--text-light) !important;
}

[data-theme="dark"] #terrain3DSidebar select,
[data-theme="dark"] #terrain3DSidebar input[type="number"] {
    background-color: var(--bg-input) !important;
    color: var(--text-main) !important;
    border-color: var(--border-input) !important;
}

/* Resultados de Volume no Menu 3D */
[data-theme="dark"] #terrain3DSidebar>div>div {
    background: var(--bg-panel) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] #terrain3DSidebar span {
    color: var(--text-main) !important;
}

[data-theme="dark"] #t3dVolAterro,
[data-theme="dark"] #t3dVolCorte {
    color: var(--text-main) !important;
}

/* ============================================================
   FIM DAS CORREÇÕES
   ============================================================ */

/* ============================================================
   22. REFATORAÇÃO FINAL DO MODAL 360 (VERSÃO DEFINITIVA V2)
   Usa seletores de raiz (html) para garantir especificidade correta.
   Corrige explicitamente cores de span/icones no tema claro.
   ============================================================ */

/* --- LAYOUT BASE --- */
#modal-360 .csv-modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 15px;
    border-bottom: 1px solid transparent;
    transition: all 0.3s ease;
}

#modal-360 .csv-modal-header button {
    cursor: pointer;
    border-radius: 4px;
    padding: 4px 10px;
    font-size: 13px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    transition: all 0.2s;
}

/* ============================================================
   TEMA 1: CLARO / PADRÃO (Branco)
   Seletor: html:not([data-theme="dark"]):not([data-theme="official"])
   ============================================================ */
html:not([data-theme="dark"]):not([data-theme="official"]) #modal-360 .csv-modal-header {
    background-color: #ffffff !important;
    border-bottom: 1px solid #dee2e6 !important;
    color: #333333 !important;
}

/* [CRÍTICO] Força cor escura nos textos e ícones do tema claro */
html:not([data-theme="dark"]):not([data-theme="official"]) #modal-360 .csv-modal-header span,
html:not([data-theme="dark"]):not([data-theme="official"]) #modal-360 .csv-modal-header i {
    color: #333333 !important;
    text-shadow: none !important;
}

/* Botões do Tema Claro */
html:not([data-theme="dark"]):not([data-theme="official"]) #modal-360 .csv-modal-header button {
    background: #f8f9fa !important;
    border: 1px solid #ced4da !important;
    color: #555555 !important;
}

html:not([data-theme="dark"]):not([data-theme="official"]) #modal-360 .csv-modal-header button:hover {
    background: #e9ecef !important;
    color: #333333 !important;
}

/* Botão fechar (X) */
html:not([data-theme="dark"]):not([data-theme="official"]) #modal-360 #btnClose360 {
    background: transparent !important;
    border: none !important;
    color: #999999 !important;
}

html:not([data-theme="dark"]):not([data-theme="official"]) #modal-360 #btnClose360:hover {
    color: #dc3545 !important;
    /* Vermelho no hover */
}


/* ============================================================
   TEMA 2: ESCURO (Dark)
   Seletor: html[data-theme="dark"]
   ============================================================ */
html[data-theme="dark"] #modal-360 .csv-modal-header {
    background-color: var(--bg-light) !important;
    /* #2c2c2c */
    border-bottom: 1px solid #444 !important;
    color: var(--text-main) !important;
}

html[data-theme="dark"] #modal-360 .csv-modal-header span,
html[data-theme="dark"] #modal-360 .csv-modal-header i {
    color: var(--text-main) !important;
}

/* Botões do Tema Escuro */
html[data-theme="dark"] #modal-360 .csv-modal-header button {
    background: rgba(255, 255, 255, 0.1) !important;
    border: 1px solid #555 !important;
    color: var(--text-main) !important;
}

html[data-theme="dark"] #modal-360 .csv-modal-header button:hover {
    background: rgba(255, 255, 255, 0.2) !important;
    border-color: #777 !important;
}

html[data-theme="dark"] #modal-360 #btnClose360 {
    background: transparent !important;
    border: none !important;
    color: var(--text-light) !important;
}

html[data-theme="dark"] #modal-360 #btnClose360:hover {
    color: #ff6b6b !important;
}


/* ============================================================
   TEMA 3: OFICIAL (Cor Primária + Contraste Automático)
   Seletor: html[data-theme="official"]
   ============================================================ */
html[data-theme="official"] #modal-360 .csv-modal-header {
    /* Usa a cor primária sólida */
    background: var(--primary-color) !important;
    border-bottom: none !important;

    /* Usa a variável mágica calculada para texto (Preto ou Branco) */
    color: var(--text-on-primary, #ffffff) !important;
}

/* Força a cor do texto/ícones para obedecer o contraste */
html[data-theme="official"] #modal-360 .csv-modal-header span,
html[data-theme="official"] #modal-360 .csv-modal-header svg,
html[data-theme="official"] #modal-360 .csv-modal-header i {
    color: var(--text-on-primary, #ffffff) !important;
    fill: var(--text-on-primary, #ffffff) !important;
}

/* Botões Adaptativos (Seguem a cor do texto) */
html[data-theme="official"] #modal-360 .csv-modal-header button {
    background: transparent !important;
    /* Borda e texto acompanham a cor de contraste */
    border: 1px solid var(--text-on-primary, #ffffff) !important;
    color: var(--text-on-primary, #ffffff) !important;
    opacity: 0.8;
}

html[data-theme="official"] #modal-360 .csv-modal-header button:hover {
    /* Efeito de preenchimento (inversão) no hover */
    background: var(--text-on-primary, #ffffff) !important;
    color: var(--primary-color) !important;
    opacity: 1;
}

/* Botão Fechar no Oficial */
html[data-theme="official"] #modal-360 #btnClose360 {
    border: none !important;
    opacity: 0.8;
}

html[data-theme="official"] #modal-360 #btnClose360:hover {
    background: transparent !important;
    opacity: 1;
    color: var(--text-on-primary, #ffffff) !important;
}

/* ============================================================
   23. CORREÇÃO DOS BOTÕES DO EDITOR (TEMA OFICIAL/GERAL)
   Problema: Botão "Iniciar Edição" ficava branco no hover
   ============================================================ */

/* Garante texto branco quando botão Primário está em hover/active */
[data-theme="official"] #btnToggleEdit,
[data-theme="official"] #btnToggleEdit:hover,
[data-theme="official"] #btnToggleEdit:active,
[data-theme="official"] #btnToggleEdit:focus {
    color: #ffffff !important;
}

/* Quando estiver em modo edição (btn-danger), também garantir texto branco */
#btnToggleEdit.btn-danger,
#btnToggleEdit.btn-danger:hover {
    color: #ffffff !important;
    border-color: #dc3545 !important;
}

#btnToggleEdit i {
    color: inherit !important;
}

/* ============================================================
   24. ESTILIZAÇÃO DO MODAL DE EXPORTAÇÃO (EDITOR)
   Modernização da interface (Bootstrap-like)
   ============================================================ */

#editorExportModal.modal {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 10050;
    width: 100%;
    height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
    outline: 0;
    background: rgba(0, 0, 0, 0.5);
    /* Backdrop */
}

#editorExportModal .modal-dialog {
    transition: transform .3s ease-out;
    transform: none;
    max-width: 400px;
    margin: 1.75rem auto;
    pointer-events: none;
    position: relative;
    width: auto;
    top: 20%;
}

#editorExportModal .modal-content {
    position: relative;
    display: flex;
    pointer-events: auto;
    flex-direction: column;
    width: 100%;
    background-color: #fff;
    background-clip: padding-box;
    border: 1px solid rgba(0, 0, 0, .2);
    border-radius: .3rem;
    outline: 0;
}

/* Modificações para Tema Escuro */
[data-theme="dark"] #editorExportModal .modal-content {
    background-color: var(--bg-panel) !important;
    border-color: var(--border-color) !important;
    color: var(--text-main) !important;
}

[data-theme="dark"] #editorExportModal .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}

[data-theme="dark"] #editorExportModal .text-muted {
    color: var(--text-light) !important;
}

[data-theme="dark"] #editorExportModal .form-select,
[data-theme="dark"] #editorExportModal .input-group-text {
    background-color: var(--bg-input) !important;
    border-color: var(--border-input) !important;
    color: var(--text-main) !important;
}

/* Ajustes de layout interno */
#editorExportModal .modal-header {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1rem;
    border-bottom: 1px solid #dee2e6;
    border-top-left-radius: calc(.3rem - 1px);
    border-top-right-radius: calc(.3rem - 1px);
}

#editorExportModal .modal-body {
    position: relative;
    flex: 1 1 auto;
    padding: 1rem;
}

#editorExportModal .modal-footer {
    display: flex;
    flex-wrap: wrap;
    flex-shrink: 0;
    align-items: center;
    justify-content: flex-end;
    padding: .75rem;
    border-top: 1px solid #dee2e6;
    border-bottom-right-radius: calc(.3rem - 1px);
    border-bottom-left-radius: calc(.3rem - 1px);
    gap: 8px;
    /* Espaço entre botões */
}

[data-theme="dark"] #editorExportModal .modal-header,
[data-theme="dark"] #editorExportModal .modal-footer {
    border-color: var(--border-color);
}

/* ============================================================
   25. CORREÇÃO DA UI DE EDIÇÃO (CRIAÇÃO) - MODO ESCURO
   Substitui estilos inline para permitir dark mode
   ============================================================ */

/* Container de ferramentas de criação */
.editor-create-tools {
    background-color: #f8f9fa;
    /* Padrão (Light) */
    padding: 8px;
    border-radius: 4px;
    margin-bottom: 10px;
    transition: background-color 0.3s;
}

[data-theme="dark"] .editor-create-tools {
    background-color: var(--bg-hover) !important;
    /* Escuro */
    border: 1px solid var(--border-color);
}

/* Label "CRIAR NOVO" */
.editor-tool-label {
    font-size: 10px;
    font-weight: bold;
    color: #666;
    /* Padrão */
    display: block;
    margin-bottom: 5px;
}

[data-theme="dark"] .editor-tool-label {
    color: var(--text-light) !important;
}

[data-theme="official"] .editor-create-tools {
    background-color: #fff;
    border: 1px solid var(--border-color);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}

/* ============================================================
   26. REFINAMENTO VISUAL DO MODAL DE EXPORTAÇÃO
   Deixa o modal "Save As" coerente com o resto do app
   ============================================================ */

/* Header com cor primária (Estilo Premium) */
#editorExportModal .modal-header {
    background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-hover, var(--primary-color)) 100%) !important;
    border-top-left-radius: 8px;
    border-top-right-radius: 8px;
    padding: 15px 20px !important;
}

#editorExportModal .modal-title {
    color: #ffffff !important;
    font-size: 16px !important;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    gap: 10px;
}

#editorExportModal .modal-title i {
    color: rgba(255, 255, 255, 0.9) !important;
    /* Ícone Branco */
}

/* Botão de Fechar no Header */
#editorExportModal .btn-close {
    background-color: rgba(255, 255, 255, 0.2) !important;
    opacity: 1 !important;
    border-radius: 50%;
    width: 28px;
    height: 28px;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") !important;
    background-size: 12px;
    background-position: center;
    background-repeat: no-repeat;
    margin: 0;
    transition: all 0.2s;
}

#editorExportModal .btn-close:hover {
    background-color: rgba(255, 255, 255, 0.4) !important;
    transform: rotate(90deg);
}

/* Corpo do Modal */
#editorExportModal .modal-content {
    border: none !important;
    border-radius: 12px !important;
    /* Mais arredondado */
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.3) !important;
    overflow: hidden;
}

[data-theme="dark"] #editorExportModal .modal-content {
    background-color: var(--bg-panel) !important;
    border: 1px solid var(--border-color) !important;
}

/* Textos e Labels Internos */
#editorExportModal .form-label {
    color: var(--primary-color) !important;
    font-weight: 700 !important;
    letter-spacing: 0.5px;
}

[data-theme="dark"] #editorExportModal .form-label {
    color: var(--secondary-color) !important;
    /* Destaque no escuro */
}

[data-theme="dark"] #editorExportModal .text-muted {
    color: var(--text-light) !important;
}

/* Inputs e Selects do Modal */
#editorExportModal .form-select {
    padding: 10px;
    font-size: 13px;
    border-radius: 6px;
    border: 1px solid var(--border-color);
}

[data-theme="dark"] #editorExportModal .form-select {
    background-color: var(--bg-input) !important;
    color: var(--text-main) !important;
    border-color: var(--border-input) !important;
}

[data-theme="dark"] #editorExportModal .input-group-text {
    background-color: var(--bg-hover) !important;
    border-color: var(--border-input) !important;
    color: var(--text-light) !important;
}

/* Rodapé do Modal */
#editorExportModal .modal-footer {
    background-color: var(--bg-light);
    /* Leve contraste */
    padding: 15px 20px !important;
    border-top: 1px solid var(--border-color) !important;
}

[data-theme="dark"] #editorExportModal .modal-footer {
    background-color: rgba(0, 0, 0, 0.1) !important;
}

/* Botão Confirmar (Download) */
#editorExportModal #btnConfirmExport {
    background: linear-gradient(135deg, #198754 0%, #157347 100%);
    border: none;
    box-shadow: 0 4px 6px rgba(25, 135, 84, 0.3);
    font-weight: 600;
    padding: 8px 16px;
    transition: transform 0.2s;
}

#editorExportModal #btnConfirmExport:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 10px rgba(25, 135, 84, 0.4);
}


/* ============================================================
   27. CORREÇÃO DA CAIXA DE SNAPPING - MODO ESCURO
   ============================================================ */
.editor-snap-box {
    margin-top: 15px;
    padding: 10px;
    background: #e8f5e9;
    /* Light mode default */
    border: 1px solid #c8e6c9;
    border-radius: 4px;
    transition: all 0.3s;
}

.editor-snap-label {
    font-size: 11px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    font-weight: 500;
    color: #2e7d32;
    /* Texto verde escuro padrão */
}

/* Dark Mode Overrides */
[data-theme="dark"] .editor-snap-box {
    background-color: var(--bg-hover) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .editor-snap-label {
    color: var(--primary-color) !important;
}

[data-theme="official"] .editor-snap-box {
    background-color: #f8f9fa;
    border-color: var(--border-color);
}

[data-theme="official"] .editor-snap-label {
    color: var(--text-main);
}

/* ============================================================
   28. CORREÇÃO URGENTE: MODAL DE EXPORTAÇÃO NO TEMA OFICIAL
   Garante fundo e texto legíveis
   ============================================================ */

[data-theme="official"] #editorExportModal .modal-content {
    background-color: #ffffff !important;
    border: 1px solid var(--border-color);
}

[data-theme="official"] #editorExportModal .modal-title {
    color: #ffffff !important;
    /* Header tem background primário, texto deve ser branco */
}

[data-theme="official"] #editorExportModal .form-label,
[data-theme="official"] #editorExportModal p.text-muted,
[data-theme="official"] #editorExportModal .input-group-text,
[data-theme="official"] #editorExportModal select {
    color: #333333 !important;
}

[data-theme="official"] #editorExportModal select option {
    background-color: #ffffff;
    color: #333333;
}


/* ============================================================
   29. CORREÇÃO FINAL: HEADER DO MODAL DE EXPORTAÇÃO (TEMA OFICIAL)
   Usa o mesmo padrão do modal 360 (Cor Primária + Contraste)
   ============================================================ */

html[data-theme="official"] #editorExportModal .modal-header {
    background: var(--primary-color) !important;
    border-bottom: none !important;
    color: var(--text-on-primary) !important;
}

html[data-theme="official"] #editorExportModal .modal-title,
html[data-theme="official"] #editorExportModal .modal-title i {
    color: var(--text-on-primary) !important;
}

html[data-theme="official"] #editorExportModal .btn-close {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") !important;
    opacity: 0.8 !important;
}

html[data-theme="official"] #editorExportModal .btn-close:hover {
    opacity: 1 !important;
}

/* ============================================================
   30. SPLIT VIEW - VISUALIZADOR 360 AVANÇADO
   Suporta visão única (100%), lado a lado e cima/baixo
   ============================================================ */

/* Painéis de visualização */
.viewer360-pane {
    flex: 1;
    position: relative;
    overflow: hidden;
    min-width: 100px;
    min-height: 100px;
}

/* Identificador da Fonte (badge) */
.viewer360-badge {
    position: absolute;
    top: 10px;
    left: 10px;
    background: rgba(0, 0, 0, 0.6);
    color: #fff;
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: bold;
    z-index: 10;
    pointer-events: none;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
}

/* Handle de Resize (Arraste) */
.split-handle {
    background-color: var(--primary-color, #0d6efd);
    position: relative;
    z-index: 20;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    user-select: none;
    transition: background-color 0.2s;
}

.split-handle:hover,
.split-handle.dragging {
    background-color: #ff9900;
}

/* Vertical / Lado a Lado */
.split-handle-v {
    width: 8px;
    cursor: col-resize;
    flex-direction: column;
}

/* Horizontal / Cima a Baixo */
.split-handle-h {
    height: 8px;
    cursor: row-resize;
    flex-direction: row;
}

.split-handle i {
    font-size: 10px;
    opacity: 0.8;
}

/* ============================================================
   31. CORREÇÃO DE CORES: CONFIGURADOR DO VISUALIZADOR 360 (MODO ESCURO)
   ============================================================ */
html[data-theme="dark"] #selection360>div {
    background-color: var(--bg-panel, #2c2c2c) !important;
    border: 1px solid var(--border-color, #444) !important;
}

html[data-theme="dark"] #selection360 h3,
html[data-theme="dark"] #selection360 label {
    color: var(--text-main, #e0e0e0) !important;
}

html[data-theme="dark"] #selection360 select.filter-select {
    background-color: var(--bg-input, #1e1e1e) !important;
    color: var(--text-main, #e0e0e0) !important;
    border-color: var(--border-input, #444) !important;
}

html[data-theme="dark"] #selection360 input[type="radio"] {
    accent-color: var(--primary-color);
}

/* ============================================================
   32. CORREÇÃO DE CORES: PAINEL DE VOLUMETRIA 3D (MODO ESCURO)
   ============================================================ */

/* Fundo das métricas de resultados e donut charts */
[data-theme="dark"] #t3dVolAterro,
[data-theme="dark"] #t3dVolCorte,
[data-theme="dark"] #t3dAreaAterro,
[data-theme="dark"] #t3dAreaCorte {
    color: var(--text-main, #e0e0e0) !important;
}

/* Títulos do bloco (Volume, Área) */
[data-theme="dark"] span[style*="color:#2c3e50"] {
    color: var(--text-main, #e0e0e0) !important;
    border-bottom-color: var(--border-color, #444) !important;
}

/* Sub-títulos (Aterro / Água, Corte / Terra Seca) */
[data-theme="dark"] span[style*="color:#555"] {
    color: var(--text-light, #bbb) !important;
}

/* Letras e unidades (m³, m², %, ...) */
[data-theme="dark"] span[style*="color:#666"],
[data-theme="dark"] span[style*="color:#444"] {
    color: var(--text-light, #999) !important;
}

/* Fundo da barra de progresso (parte vazia) */
[data-theme="dark"] div[style*="background: #eee"] {
    background-color: var(--bg-hover, #333) !important;
}

/* O fundo do componente pai de resultados (Resultados com gráficos) */
[data-theme="dark"] div[style*="background:#f8f9fa"] {
    background-color: var(--bg-input, #1e1e1e) !important;
    border-color: var(--border-color, #444) !important;
}

/* O círculo central do Donut Chart */
[data-theme="dark"] #t3dPieArea>div,
[data-theme="dark"] #t3dPieVol>div {
    background-color: var(--bg-input, #1e1e1e) !important;
}

[data-theme="dark"] #t3dDonutTextArea,
[data-theme="dark"] #t3dDonutTextVol {
    color: var(--text-main, #fff) !important;
}

/* ============================================================
   33. CORREÇÃO DE CORES: THEMATIC CONTAINER PARITY
   ============================================================ */
.thematic-container-bg {
    background-color: var(--bg-body, #f4f6f9);
    padding: 15px;
}

/* ============================================================
   34. TEMÁTICO: LEGENDA NO TEMA ESCURO
   ============================================================ */
.thematic-legend {
    background: var(--bg-panel, #f8f9fa);
    border: 1px solid var(--border-color, #e9ecef);
}
.thematic-legend h6 {
    color: var(--text-main, #666);
}
.thematic-legend .legend-label {
    color: var(--text-main, #333);
}

/* ============================================================
   FIX: Botão Calcular NP (invisível no tema oficial)
   O seletor [data-theme="official"] .btn-primary usa !important
   que sobrescreve inline styles. Forçamos via ID.
   ============================================================ */
#btnNpredialCalc {
    background: linear-gradient(135deg, #1565c0, #0d47a1) !important;
    color: #ffffff !important;
    border: none !important;
}

/* ============================================================
   FIX: Temático Rápido (Quick Thematic) - MODO ESCURO
   Painel inline de classificação dentro da sidebar de camadas
   ============================================================ */

[data-theme="dark"] [id^="thematic_content_"] > div {
    background: var(--bg-panel, #1e1e1e) !important;
    border-color: var(--border-color, #444) !important;
}

[data-theme="dark"] [id^="thematic_content_"] label {
    color: var(--text-light, #aaa) !important;
}

[data-theme="dark"] [id^="thematic_content_"] select,
[data-theme="dark"] [id^="thematic_content_"] input[type="number"] {
    background-color: var(--bg-input, #2a2a2a) !important;
    color: var(--text-main, #e0e0e0) !important;
    border-color: var(--border-input, #555) !important;
}

/* Container da lista de valores/intervalos */
[data-theme="dark"] [id^="qt_values_"] {
    background-color: var(--bg-input, #2a2a2a) !important;
    border-color: var(--border-color, #444) !important;
    color: var(--text-main, #e0e0e0) !important;
}

/* Cada linha de valor (checkbox + cor + nome) */
[data-theme="dark"] [id^="qt_values_"] > div {
    border-bottom-color: var(--border-color, #333) !important;
    color: var(--text-main, #e0e0e0) !important;
}

/* Spans de texto dentro dos valores */
[data-theme="dark"] [id^="qt_values_"] span {
    color: var(--text-main, #e0e0e0) !important;
}

/* Contadores (2), (1) etc */
[data-theme="dark"] [id^="qt_values_"] span:last-child {
    color: var(--text-light, #888) !important;
}

/* Botões Todos / Nenhum */
[data-theme="dark"] [id^="qt_values_"] button {
    background: var(--bg-panel, #2c2c2c) !important;
    border-color: var(--border-color, #555) !important;
    color: var(--text-main, #e0e0e0) !important;
}

[data-theme="dark"] [id^="qt_values_"] button:hover {
    background: var(--bg-hover, #383838) !important;
}

/* Botão Carregar */
[data-theme="dark"] [id^="thematic_content_"] button[onclick*="_qtLoadValues"] {
    background: var(--bg-panel, #2c2c2c) !important;
    border-color: #9c27b0 !important;
    color: #ce93d8 !important;
}

/* Botão Limpar */
[data-theme="dark"] [id^="thematic_content_"] button[onclick*="_qtClear"] {
    background: var(--bg-panel, #2c2c2c) !important;
    border-color: var(--border-color, #555) !important;
    color: var(--text-main, #e0e0e0) !important;
}

/* Separadores */
[data-theme="dark"] [id^="thematic_content_"] div[style*="border-top"] {
    border-top-color: var(--border-color, #444) !important;
}

/* Label BORDA e texto px */
[data-theme="dark"] [id^="qt_stroke_label_"],
[data-theme="dark"] [id^="thematic_content_"] span {
    color: var(--text-light, #aaa) !important;
}

/* Botões Salvar / Carregar Estilo */
[data-theme="dark"] [id^="thematic_content_"] button[onclick*="_qtSaveStyle"],
[data-theme="dark"] [id^="thematic_content_"] button[onclick*="qt_load_input"] {
    background: var(--bg-panel, #2c2c2c) !important;
    border-color: var(--border-color, #555) !important;
    color: var(--text-main, #e0e0e0) !important;
}

[data-theme="dark"] [id^="thematic_content_"] button[onclick*="_qtSaveStyle"]:hover,
[data-theme="dark"] [id^="thematic_content_"] button[onclick*="qt_load_input"]:hover {
    background: var(--bg-hover, #383838) !important;
    color: #ce93d8 !important;
}