/* ============================================================
   EXTRAS — refatorado com custom properties
   ============================================================ */

/* Loading popup */
.popup-loading{text-align:center;padding:12px;color:var(--cor-texto-terciario);font-size:13px;}
.popup-loading::after{content:"";display:inline-block;width:14px;height:14px;border:2px solid var(--cor-borda-forte);border-top-color:var(--cor-primaria);border-radius:50%;animation:popup-spin .6s linear infinite;margin-left:6px;vertical-align:middle;}
@keyframes popup-spin{to{transform:rotate(360deg);}}

/* Toast */
.toast-container{position:fixed;bottom:20px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:8px;pointer-events:none;}
.toast{padding:12px 20px;border-radius:var(--radius-md);font-size:13px;font-weight:500;max-width:360px;opacity:0;transform:translateX(40px);animation:toast-in .3s ease forwards;pointer-events:auto;box-shadow:var(--shadow-md);}
.toast-error{background:var(--cor-erro);color:#fff;}
.toast-success{background:var(--cor-sucesso);color:#fff;}
.toast-info{background:var(--cor-info);color:#fff;}
.toast.toast-out{animation:toast-out .3s ease forwards;}
@keyframes toast-in{to{opacity:1;transform:translateX(0);}}
@keyframes toast-out{to{opacity:0;transform:translateX(40px);}}

/* Busca */
.input-busca{width:100%;padding:7px 10px;border:1px solid var(--cor-borda-forte);border-radius:var(--radius-sm);font-size:13px;}
.input-busca:focus{outline:none;border-color:var(--cor-primaria);}

/* Login */
.login-actions{display:flex;gap:6px;align-items:center;}
.btn-admin-link{padding:4px 10px;background:transparent;color:var(--cor-primaria);border:1px solid var(--cor-primaria);border-radius:3px;font-size:12px;font-weight:600;text-decoration:none;}
.btn-admin-link:hover{background:var(--cor-primaria);color:#fff;}

/* ---- Sidebar layout compacto ---- */
.sidebar-compact{padding:8px 16px;border-bottom:1px solid var(--cor-borda-leve);}
.sidebar-row{display:flex;gap:6px;}
.mini-select{flex:1;padding:6px 8px;border:1px solid var(--cor-borda-forte);border-radius:var(--radius-sm);font-size:12px;background:var(--cor-fundo-card);}
.mini-select:focus{outline:none;border-color:var(--cor-primaria);}

/* Secoes retateis */
.collapse-toggle{width:100%;padding:5px 0;background:none;border:none;font-size:13px;font-weight:600;color:var(--cor-texto-secundario);cursor:pointer;text-align:left;}
.collapse-toggle:hover{color:var(--cor-primaria);}
.collapse-body{padding-top:6px;}
.collapse-body .filter-item{display:flex;align-items:center;gap:6px;padding:2px 0;cursor:pointer;}
.collapse-body .filter-item input{width:14px;height:14px;accent-color:var(--cor-primaria);}
.collapse-body .filter-item label{font-size:12px;cursor:pointer;display:flex;align-items:center;gap:5px;}
.color-dot{width:9px;height:9px;border-radius:50%;display:inline-block;}

/* Toolbar */
.sidebar-toolbar{padding:6px 16px;border-bottom:1px solid var(--cor-borda);background:var(--cor-fundo-input);flex-shrink:0;}
.sidebar-toolbar .stats-bar{padding:0;margin-bottom:4px;border:none;background:none;font-size:12px;color:var(--cor-texto-secundario);}
.sidebar-toolbar .stats-bar span{font-weight:700;color:var(--cor-primaria);}
.toolbar-actions{display:flex;align-items:center;gap:4px;flex-wrap:wrap;}
.toolbar-sep{width:1px;height:14px;background:var(--cor-borda);margin:0 2px;}
.btn-export{padding:3px 7px;background:var(--cor-fundo-input);border:1px solid var(--cor-borda-forte);border-radius:3px;font-size:11px;cursor:pointer;color:var(--cor-texto-secundario);}
.btn-export:hover{background:var(--cor-borda);}
.view-toggle-btn{padding:3px 7px;background:none;border:1px solid var(--cor-borda-forte);border-radius:3px;font-size:11px;cursor:pointer;color:var(--cor-texto-terciario);}
.view-toggle-btn.active{color:var(--cor-primaria);border-color:var(--cor-primaria);background:color-mix(in srgb, var(--cor-primaria) 12%, var(--cor-fundo-card));}

/* Scroll area: lista/tabela */
.sidebar-scroll{flex:1;overflow-y:auto;min-height:0;}

/* Tabela */
.registro-table-wrap{overflow:auto;}
.registro-table{width:100%;border-collapse:collapse;font-size:12px;}
.registro-table th{padding:6px 8px;background:var(--cor-fundo);text-align:left;font-weight:700;color:var(--cor-texto-secundario);border-bottom:2px solid var(--cor-borda);white-space:nowrap;position:sticky;top:0;}
.registro-table td{padding:5px 8px;border-bottom:1px solid var(--cor-borda-leve);color:var(--cor-texto);}
.registro-table tr:hover{background:color-mix(in srgb, var(--cor-primaria) 6%, var(--cor-fundo-card));cursor:pointer;}
.td-desc{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* Geocoder */
.geocoder-container{position:absolute;top:14px;left:14px;z-index:1050;width:260px;}
.geocoder-input{width:100%;padding:9px 12px;border:none;border-radius:var(--radius-md);font-size:13px;box-shadow:0 2px 8px rgba(0,0,0,.2);background:var(--cor-fundo-card);}
.geocoder-input:focus{outline:2px solid var(--cor-primaria);}
.geocoder-results{background:var(--cor-fundo-card);border-radius:0 0 var(--radius-md) var(--radius-md);box-shadow:var(--shadow-lg);max-height:200px;overflow-y:auto;}
.geocoder-item{padding:9px 12px;font-size:13px;cursor:pointer;border-bottom:1px solid var(--cor-borda-leve);}
.geocoder-item:hover{background:color-mix(in srgb, var(--cor-primaria) 12%, var(--cor-fundo-card));}

/* PESS boundary tooltip */
.pess-tooltip{background:rgba(27,94,32,.85);color:#fff;border:none;font-size:12px;font-weight:600;padding:4px 10px;border-radius:var(--radius-sm);}

/* Seletor de camadas */
.leaflet-control-layers{border-radius:8px !important;box-shadow:var(--shadow-md) !important;}

/* Botao registro */
.btn-modo-registro{position:absolute;top:14px;right:14px;z-index:1050;padding:10px 18px;background:var(--cor-primaria);color:#fff;border:none;border-radius:var(--radius-md);font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.25);}
.btn-modo-registro:hover{background:var(--cor-primaria-hover);}
.btn-modo-registro.ativo{background:var(--cor-erro);}.btn-modo-registro.ativo:hover{background:#d32f2f;}
.instrucao-registro{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);background:rgba(27,94,32,.92);color:#fff;padding:10px 24px;border-radius:var(--radius-md);font-size:13px;font-weight:600;z-index:1050;pointer-events:none;}

/* Wizard */
.wizard-steps{display:flex;padding:10px 16px;gap:4px;background:var(--cor-fundo-input);border-bottom:1px solid var(--cor-borda-leve);}
.wizard-step{flex:1;text-align:center;font-size:12px;font-weight:600;color:var(--cor-texto-terciario);padding:5px 4px;}
.wizard-step span{display:inline-block;width:20px;height:20px;line-height:20px;border-radius:50%;background:var(--cor-borda);color:#fff;font-size:11px;margin-right:3px;vertical-align:middle;}
.wizard-step.active{color:var(--cor-primaria);}.wizard-step.active span{background:var(--cor-primaria);}
.wizard-step.done{color:#4caf50;}.wizard-step.done span{background:#4caf50;}
.wizard-page{display:none;}.wizard-page.active{display:block;}
.wizard-nav{display:flex;gap:8px;}
.btn-wizard-prev{padding:10px 18px;background:var(--cor-fundo);color:var(--cor-texto-secundario);border:1px solid var(--cor-borda-forte);border-radius:var(--radius-sm);font-size:14px;cursor:pointer;}
.btn-wizard-next{padding:10px 18px;background:var(--cor-info);color:#fff;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:600;cursor:pointer;}

/* Validacao */
.campo-erro{border-color:var(--cor-erro) !important;box-shadow:0 0 0 2px rgba(198,40,40,.2) !important;}
.campo-erro-msg{font-size:11px;color:var(--cor-erro);margin-top:3px;}

/* GBIF */
.gbif-autocomplete-wrap{position:relative;}
.gbif-autocomplete-list{position:absolute;top:100%;left:0;right:0;background:var(--cor-fundo-card);border:1px solid var(--cor-borda);border-top:none;border-radius:0 0 var(--radius-sm) var(--radius-sm);max-height:200px;overflow-y:auto;z-index:100;box-shadow:var(--shadow-md);}
.gbif-item{padding:8px 10px;font-size:12px;cursor:pointer;border-bottom:1px solid var(--cor-fundo);}
.gbif-item:hover{background:color-mix(in srgb, var(--cor-primaria) 12%, var(--cor-fundo-card));}

/* Galeria */
.gallery-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.9);z-index:20000;display:flex;align-items:center;justify-content:center;}
.gallery-content{position:relative;max-width:90vw;max-height:90vh;display:flex;align-items:center;justify-content:center;}
.gallery-img{max-width:85vw;max-height:85vh;object-fit:contain;border-radius:var(--radius-sm);}
.gallery-close{position:fixed;top:20px;right:24px;background:none;border:none;color:#fff;font-size:36px;cursor:pointer;z-index:20001;}
.gallery-prev,.gallery-next{position:fixed;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.15);border:none;color:#fff;font-size:28px;padding:12px 16px;cursor:pointer;border-radius:var(--radius-sm);z-index:20001;}
.gallery-prev{left:16px;}.gallery-next{right:16px;}
.gallery-prev:hover,.gallery-next:hover{background:rgba(255,255,255,.3);}
.gallery-counter{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);color:#fff;font-size:14px;z-index:20001;}

/* Mobile */
.mobile-menu-btn{display:none;position:fixed;top:10px;left:10px;z-index:2000;background:var(--cor-primaria);color:#fff;border:none;border-radius:var(--radius-md);font-size:22px;width:40px;height:40px;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.3);line-height:40px;text-align:center;padding:0;}
.mobile-close-btn{display:none;background:none;border:none;color:#fff;font-size:28px;cursor:pointer;position:absolute;top:14px;right:14px;}

@media(max-width:768px){
    .mobile-menu-btn{display:block;}.mobile-close-btn{display:block;}
    .app-container{flex-direction:column;}
    .sidebar{position:fixed;top:0;left:0;width:85vw;max-width:340px;height:100vh;transform:translateX(-100%);transition:transform .25s ease;z-index:3000;box-shadow:4px 0 20px rgba(0,0,0,.3);}
    .sidebar.open{transform:translateX(0);}
    .map-container{width:100%;height:100vh;}
    .geocoder-container{width:calc(100% - 70px);left:50px;}
    .form-overlay{width:100%;top:0;right:0;height:100vh;z-index:4000;}
    .btn-modo-registro{top:auto;bottom:20px;right:14px;z-index:1500;}
    .toast-container{left:50%;right:auto;transform:translateX(-50%);bottom:80px;}
    .gallery-img{max-width:95vw;max-height:80vh;}
    .gallery-prev{left:4px;}.gallery-next{right:4px;}
    .sidebar.open::after{content:"";position:fixed;top:0;left:100%;width:100vw;height:100vh;background:rgba(0,0,0,.4);z-index:-1;}
}

/* Wizard hint */
.wizard-hint{font-size:13px;font-weight:600;color:var(--cor-primaria);padding:0 0 12px 0;margin:0;border-bottom:1px solid var(--cor-borda-leve);margin-bottom:12px;}

/* ============================================================
   Componentes que antes viviam como estilo inline no JS
   ============================================================ */

/* Botao "Carregar mais" da sidebar */
.carregar-mais-wrap{padding:12px 20px;text-align:center;}
.btn-carregar-mais{padding:8px 20px;background:var(--cor-primaria);color:#fff;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer;width:100%;}
.btn-carregar-mais:hover{background:var(--cor-primaria-hover);}
.btn-carregar-mais:disabled{opacity:.6;cursor:default;}

/* Titulos dos itens da lista */
.item-titulo-cientifico{font-weight:700;font-style:italic;}
.item-titulo-nome{font-weight:600;}
.item-subtitulo{font-size:12px;color:var(--cor-texto-terciario);}
.lista-vazia{padding:20px;color:var(--cor-texto-terciario);text-align:center;}

/* Banner de rascunho do formulario */
.rascunho-banner{background:var(--cor-aviso-fundo);border:1px solid var(--cor-aviso);border-radius:var(--radius-md);padding:10px 14px;margin:0 0 12px 0;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;color:var(--cor-aviso);}
.rascunho-banner-acoes{display:flex;gap:6px;flex-shrink:0;}
.btn-rascunho-restaurar{padding:5px 12px;background:var(--cor-aviso);color:#fff;border:none;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;}
.btn-rascunho-descartar{padding:5px 12px;background:transparent;color:var(--cor-aviso);border:1px solid var(--cor-aviso);border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;}

/* Botoes dentro do popup do mapa */
.popup-btn{margin-top:8px;padding:6px 12px;border:none;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;width:100%;color:#fff;display:block;}
.popup-btn-editar{background:var(--cor-info);}
.popup-btn-incerteza{background:var(--cor-aviso);font-weight:400;font-size:11px;padding:5px 12px;}
.popup-btn-link{background:transparent;color:var(--cor-info);border:1px solid var(--cor-info);}
.popup-meta-extra{font-size:12px;color:var(--cor-texto-terciario);margin-top:6px;}
.popup-thumb-mais{font-size:11px;color:var(--cor-texto-terciario);margin-top:4px;cursor:pointer;}

/* Botoes de tema e idioma no cabecalho da sidebar */
.sidebar-header{position:relative;}
.header-acoes{position:absolute;top:12px;right:12px;display:flex;gap:6px;}
.btn-header-acao{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:var(--radius-sm);font-size:12px;font-weight:600;width:30px;height:26px;cursor:pointer;line-height:1;}
.btn-header-acao:hover{background:rgba(255,255,255,.3);}
@media(max-width:768px){.header-acoes{right:48px;}}
