:root{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#e8f2ee;background:#071016;color-scheme:dark;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}#globe{position:absolute;inset:0}.panel{position:absolute;background:rgba(12,26,31,.94);border:1px solid #2b4148;border-radius:16px;box-shadow:0 12px 45px #0004;backdrop-filter:blur(16px)}
.brand{left:max(28px,env(safe-area-inset-left,0px));top:max(28px,env(safe-area-inset-top,0px));display:flex;align-items:center;gap:14px;padding:17px 22px;pointer-events:none}.mark{font-size:36px;color:#86e2b8}h1{font-size:20px;letter-spacing:-.6px;margin:0;font-weight:600}.brand p{font-size:10px;letter-spacing:1.8px;margin:6px 0 0;color:#a0b7b0}.brand p span{letter-spacing:0;margin-left:12px;color:#86e2b8}
.controls{top:max(28px,env(safe-area-inset-top,0px));right:max(28px,env(safe-area-inset-right,0px));width:294px;padding:23px}h2{font-size:18px;font-weight:550;margin:0}.intro{color:#9bb0ac;font-size:13px;margin:7px 0 24px}label{display:block;font-size:12px;color:#c1d1cc;margin-bottom:9px}select{width:100%;padding:11px 9px;background:#14292f;border:1px solid #3b5257;border-radius:8px;font:inherit;font-size:12px}.toggle{display:flex;align-items:center;gap:8px;margin:18px 0 22px;line-height:1.5}input{accent-color:#8ce5bd;width:16px;height:16px}.buttons{display:flex;gap:8px}button{flex:1;padding:11px 8px;border:1px solid #3c5b57;border-radius:8px;background:#193b34;color:#d0f4df;cursor:pointer;font:inherit;font-size:12px}@media(hover:hover){button:hover{background:#265044}}button:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid #8ce5bd;outline-offset:3px}details{margin-top:23px;font-size:12px;color:#a6bcb4}summary{cursor:pointer}details p{line-height:1.7}.status{border-top:1px solid #2b4148;margin-top:22px;padding-top:12px;color:#9ab9ac;font-size:11px;line-height:1.6}.status p{margin:5px 0}footer{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:end;gap:12px;padding:10px max(18px,env(safe-area-inset-right,0px)) max(10px,env(safe-area-inset-bottom,0px)) max(18px,env(safe-area-inset-left,0px));background:linear-gradient(transparent,#071016e8);pointer-events:none}#credits{pointer-events:auto;max-width:70%;font-size:10px}.stage{font-size:10px;color:#b0c5bb;padding-bottom:4px}.cesium-credit-textContainer a{color:#c2d5ca!important}.cesium-viewer-bottom{display:none}
/* O Cesium põe o contêiner de créditos em position:absolute; a regra que o devolve
   ao fluxo só vale dentro de .cesium-viewer, e este projeto usa o widget. Fora do
   fluxo, o 70% de #credits não o continha: com sete ou oito camadas criadas os
   créditos passavam para três linhas por cima do texto do rodapé e do painel de
   camadas. No fluxo, em três colunas: o logotipo, mais alto que uma linha (numa
   caixa de duas linhas só uma de texto cabia ao lado dele); o texto, em duas
   linhas que rolam; e "Data attribution", que abre os créditos do mapa de fundo
   e ficava no fim da rolagem. O celular tem o seu arranjo em celular.css. */
#credits .cesium-widget-credits{position:static;padding:0}
#credits{line-height:1.45}
@media (min-width:701px) and (min-height:501px){
  #credits .cesium-widget-credits{display:flex;align-items:flex-start;gap:0 6px}
  #credits .cesium-credit-textContainer{flex:0 1 auto;min-width:0;max-height:2.9em;overflow-y:auto;overscroll-behavior:contain}
  #credits .cesium-credit-expand-link{flex:none;padding-left:0}
}
.layers{top:calc(106px + max(28px,env(safe-area-inset-top,0px)));left:max(28px,env(safe-area-inset-left,0px));width:316px;padding:22px;max-height:calc(100vh - 147px - max(28px,env(safe-area-inset-top,0px)) - max(10px,env(safe-area-inset-bottom,0px)));overflow:auto}.layer{border-bottom:1px solid #1d3339;padding-bottom:6px}.layers .layer .toggle{margin:12px 0 3px}.layer:last-child{border:0}.corpo>summary{cursor:pointer;font-size:10px;letter-spacing:.3px;color:#8fd9b5;margin:8px 0 2px;list-style:none}.corpo>summary::before{content:'▸ ';font-size:9px}.corpo[open]>summary::before{content:'▾ '}.corpo[open]{padding-bottom:6px}#perf-status{color:#cfe6dd}.dica{position:fixed;z-index:40;pointer-events:none;background:rgba(9,22,27,.95);border:1px solid #2f5b62;border-radius:6px;padding:5px 9px;font-size:11px;color:#e8f2ee;max-width:280px;line-height:1.4}.dica[hidden]{display:none}#recorte-aviso{background:#1d3a33;border:1px solid #2f6b57;border-radius:8px;padding:10px 12px;margin:10px 0 4px}#recorte-aviso[hidden]{display:none}#recorte-aviso .note{margin:0 0 8px;color:#d6efe4}#recorte-limpar{width:100%;font-size:11px;padding:7px;background:#2f6b57;border-color:#3f8b71}#resumo-area{background:#13272c;border:1px solid #2b4148;border-radius:8px;padding:10px 12px;margin:8px 0}#resumo-area[hidden]{display:none}#resumo-titulo{margin:0 0 6px;color:#cfe6dd;font-size:12px}#resumo-corpo{font-size:10px;line-height:1.7;color:#b6c9c1}#resumo-corpo b{color:#d6efe4;font-weight:600}#resumo-ressalva{margin:8px 0 0;font-size:9px}#feature-figure{margin:10px 0 4px}#feature-figure[hidden]{display:none}#feature-figure img{width:100%;border-radius:8px;display:block;background:#10282b}#feature-figure figcaption{font-size:9px;line-height:1.5;color:#8fa8a0;margin-top:5px}#feature-actions{margin:10px 0 4px}#feature-actions[hidden]{display:none}#feature-actions button{width:100%;font-size:11px;padding:8px;background:#17323a;border:1px solid #2f5b62;text-align:left}@media(hover:hover){#feature-actions button:hover{background:#1e414a}}.layers .note:empty{display:none;margin:0}.layers h2{font-size:17px}.note{font-size:11px;line-height:1.6;color:#b6c9c1}.layers .toggle{margin:18px 0 8px}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:10px;margin:14px 0 22px;color:#c5dacf}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:9px;height:9px;border-radius:2px}.pi{background:#70edb2}.us{background:#ffd074}#uc-search{width:100%;padding:11px;border:1px solid #3b5257;border-radius:8px;background:#14292f;font:inherit;font-size:12px}#uc-results{max-height:156px;overflow:auto;margin-top:8px}#uc-results button{display:block;text-align:left;width:100%;margin:5px 0;font-size:10px;line-height:1.5;background:#10282b}#uc-opacity{width:100%;margin:0;height:18px}hr{border:0;border-top:1px solid #2b4148;margin:20px 0}#bio-load{width:100%;margin-top:10px}button:disabled{opacity:.45;cursor:default}.layers a,.feature a{color:#91e5c1;font-size:11px}.feature{left:calc(338px + max(28px,env(safe-area-inset-left,0px)));bottom:calc(45px + max(10px,env(safe-area-inset-bottom,0px)));width:330px;padding:22px;max-height:65vh;overflow:auto}.feature[hidden]{display:none}.feature h2{font-size:17px;line-height:1.4;padding-right:12px}.eyebrow{font-size:9px;letter-spacing:1.5px;color:#8fd9b5}#feature-close{position:absolute;right:8px;top:8px;border:0;background:none;padding:4px 9px;font-size:20px}dl{font-size:11px;line-height:1.6}dt{color:#92aea3;margin-top:10px}dd{margin:0;overflow-wrap:anywhere}.controls{max-height:calc(100vh - 52px - max(28px,env(safe-area-inset-top,0px)) - max(10px,env(safe-area-inset-bottom,0px)));overflow:auto}
@media(max-width:1100px){.controls{width:235px;padding:16px}.layers{width:280px}.feature{left:auto;right:max(28px,env(safe-area-inset-right,0px));bottom:calc(35px + max(10px,env(safe-area-inset-bottom,0px)));width:310px;max-height:45vh;z-index:3}}

/* v0.3 — quatro camadas no mesmo painel */
.layer{border-top:1px solid #2b4148;margin-top:18px;padding-top:6px}.layer:first-of-type{border-top:0;margin-top:6px}
.layers h3{font-size:13px;margin:16px 0 2px;color:#cfe6dd;font-weight:600}
.layers label{display:block;font-size:11px;color:#9db3ac;margin:12px 0 5px}
.layers .toggle{display:flex;align-items:center;gap:8px;font-size:12px;color:#e8f2ee;margin:14px 0 6px;cursor:pointer}
.layers .toggle.small{font-size:11px;color:#b6c9c1;margin:10px 0 4px}
.layers select{width:100%;padding:9px;border:1px solid #3b5257;border-radius:8px;background:#14292f;color:inherit;font:inherit;font-size:11px}
#occ-load{width:100%;margin-top:10px}
.layers input[type=range]{width:100%;margin:0;height:18px}
.layer details{margin-top:10px}.layer summary{font-size:11px;color:#8fd9b5;cursor:pointer}
.legend .amz{background:#2fbf71}.legend .mat{background:#8fe388}.legend .cer{background:#ffc857}
.legend .caat{background:#f4845f}.legend .ptn{background:#4cc9f0}.legend .pmp{background:#c5e99b}
.legend .cr{background:#ff4d4d}.legend .en{background:#ff9f43}.legend .vu{background:#ffd93d}.legend .nl{background:#ed9aff}
.legend i{border-radius:2px}

/* filtro taxonômico */
#taxon-search{width:100%;padding:10px;border:1px solid #3b5257;border-radius:8px;background:#14292f;color:inherit;font:inherit;font-size:12px}
#taxon-results{max-height:172px;overflow:auto;margin-top:6px}
#taxon-results button{display:block;text-align:left;width:100%;margin:4px 0;font-size:10px;line-height:1.45;background:#10282b;padding:7px 9px}
#taxon-results .rank{color:#8fd9b5}
#taxon-results .linhagem{color:#8aa39b;display:block}
#taxon-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
#taxon-chips button{display:flex;align-items:center;gap:6px;font-size:10px;padding:5px 9px;border-radius:99px;background:#1d4a44;border:1px solid #2f6b60;color:#d7f3e6}
#taxon-chips button::after{content:"×";font-size:13px;line-height:1;color:#8fd9b5}
#aoi-results{max-height:230px;overflow:auto;overflow-wrap:anywhere}
#aoi-results details{padding:8px 0;border-bottom:1px solid #2b4148}
#aoi-results summary{line-height:1.6}
#aoi-clear,#aoi-focus{margin-top:8px}

/* filtros da camada de unidades de conservação */
#uc-group,#uc-category,#uc-uf{margin-bottom:2px}
.layers .note strong{color:#cfe6dd;font-weight:600}
.legend .esf-est{background:#7aa5ff}.legend .esf-mun{background:#c58fff}.legend .esf-rppn{background:#ff9ecd}
/* unidade registrada sem limite: marcador vazado, que nao afirma extensao */
.legend .esf-ponto{background:none;border:2px solid #cfe6dd;border-radius:50%}
#cnuc-search{width:100%;padding:10px;border:1px solid #3b5257;border-radius:8px;background:#14292f;color:inherit;font:inherit;font-size:12px}
#cnuc-results{max-height:150px;overflow:auto;margin-top:6px}
#cnuc-results button{display:block;text-align:left;width:100%;margin:4px 0;font-size:10px;line-height:1.5;background:#10282b;padding:6px 8px}
.legend .terr-uf{background:#ffd9a0}.legend .terr-mun{background:#9fb8c9}
/* terras indígenas: a cor acompanha o avanço do processo de demarcação */
.legend .osm-falta{background:#ffb454}.legend .osm-tem{background:#7fd1c4}
#osm-search{width:100%;padding:10px;border:1px solid #3b5257;border-radius:8px;background:#14292f;color:inherit;font:inherit;font-size:12px}
#osm-results{max-height:150px;overflow:auto;margin-top:6px}
#osm-results button{display:block;text-align:left;width:100%;margin:4px 0;font-size:10px;line-height:1.5;background:#10282b;padding:6px 8px}
.legend .ti-est{background:#e57373}.legend .ti-del{background:#ffa94d}.legend .ti-dec{background:#ffd43b}
.legend .ti-hom{background:#a9e34b}.legend .ti-ri{background:#63e6be}.legend .ti-reg{background:#38d9a9}
/* Territórios quilombolas: a mesma gramática das terras indígenas — etapa de
   um processo de regularização, ordenada —, numa faixa de matiz própria.
   As duas camadas recaem sobre o mesmo chão em alguns lugares, e repetir a
   paleta faria um polígono verde não dizer de qual das duas ele é. */
.legend .qui-est{background:#d8c2ea}.legend .qui-rtid{background:#c4a3e2}.legend .qui-del{background:#b083d9}
.legend .qui-por{background:#9c64d0}.legend .qui-dec{background:#8845c7}.legend .qui-tit{background:#7426be}
/* Assentamentos: a cor é a forma como a terra foi obtida, que é o que o
   arquivo diz com clareza. Não é a fase, que vem como número sem legenda. */
.legend .as-des{background:#ffb454}.legend .as-rec{background:#7fd1c4}.legend .as-arr{background:#a9e34b}
.legend .as-com{background:#f4c774}.legend .as-doa{background:#c4a3e2}.legend .as-out{background:#adb5bd}
.legend .as-tra{background:#4f7df5}.legend .as-dis{background:#f1909b}
#ti-search{width:100%;padding:10px;border:1px solid #3b5257;border-radius:8px;background:#14292f;color:inherit;font:inherit;font-size:12px}
#ti-results{max-height:150px;overflow:auto;margin-top:6px}
#ti-results button{display:block;text-align:left;width:100%;margin:4px 0;font-size:10px;line-height:1.5;background:#10282b;padding:6px 8px}
#terr-search{width:100%;padding:10px;border:1px solid #3b5257;border-radius:8px;background:#14292f;color:inherit;font:inherit;font-size:12px}
#terr-results{max-height:150px;overflow:auto;margin-top:6px}
#terr-results button{display:block;text-align:left;width:100%;margin:4px 0;font-size:10px;line-height:1.5;background:#10282b;padding:6px 8px}

/* Toda busca do painel com a mesma caixa. A regra global de input (16 × 16 px,
   feita para a caixa marcável) encolhia as buscas que não tinham regra própria:
   sete viravam um quadrado de 16 px e seis ficavam sem altura para o texto. */
.layers input[type=search]{width:100%;height:auto;padding:10px;border:1px solid #3b5257;border-radius:8px;background:#14292f;color:inherit;font:inherit;font-size:12px}
.layers input[type=search]:focus-visible{outline:2px solid #8ce5bd;outline-offset:3px}
/* O exemplo dentro dos campos vinha no cinza do navegador, 3,3:1 sobre o fundo
   do campo; este fica em 5,6:1 e continua mais apagado que o texto digitado. */
.panel ::placeholder{color:#8aa39b;opacity:1}


/* Os três atalhos para marcar área, dentro da linha de estado de uma camada
   que não pode carregar sem ela. Pequenos: acompanham o texto, não competem
   com ele. */
.pedir-area{display:inline-flex;gap:4px;margin-left:6px;vertical-align:middle}
.pedir-area button{flex:0 0 auto;padding:2px 7px;font-size:12px;line-height:1.4;border-radius:6px;min-width:0}
