/* =========================================================
   estilo.css — aparência do Portal de Dados
   Servido de www/ pelo static_assets do app.py.

   Ao editar, incremente VERSAO_ESTATICOS em layout.py: é o que força
   o navegador a buscar a versão nova em vez de reusar o cache.
   ========================================================= */

:root {
    /* Faixas do cabeçalho */
    --marca-topo:   #132844;   /* faixa utilitária, no alto */
    --marca-nav:    #16304f;   /* faixa dos menus */
    --marca-realce: #e8a33d;   /* item ativo e borda dos submenus */

    /* Faixa da marca: fundo branco, texto verde */
    --marca-fundo:  #ffffff;
    --marca-texto:  #4D5E34;

    /* Azul institucional usado no resto do portal (gráficos, XLSX) */
    --azul-portal:  #1b365d;

    --altura-topo:   34px;
    --altura-marca: 118px;   /* precisa acomodar a logo + respiro */
    --altura-nav:    46px;
    --altura-logo:   96px;

    /* Cabeçalho do site oficial (ui/site_wp.py) */
    --altura-wp-topo:  68px;
    --altura-wp-barra: 74px;
    --altura-subbarra: 38px;
    /* Altura do cabeçalho fixo. Com o cabeçalho do site, o site_wp.py
       redefine esta variável no <head>. */
    --altura-cabecalho: calc(var(--altura-topo) + var(--altura-marca) + var(--altura-nav));

    /* =========================================================
       PALETA OFICIAL DO LOGOTIPO (Observatório da Agricultura Familiar)
       ========================================================= */
    --cor-verde:          #4F6036;   /* Observatório & Mulher/Folhas */
    --cor-verde-dark:     #3B4B27;
    --cor-verde-light:    #F2F5ED;
    --cor-terracota:      #BB633F;   /* Agricultura Familiar & Homem/Barro */
    --cor-terracota-dark: #9E4D2C;
    --cor-terracota-light:#FAF1EC;
    --cor-petroleo:       #496973;   /* Rede/Pesca/Água & Dados/Gráficos */
    --cor-petroleo-dark:  #37535C;
    --cor-petroleo-light: #EEF3F5;
    --cor-dourado:        #EC9E25;   /* Sol/Colheita & Alertas/Ano em andamento */
    --cor-dourado-dark:   #B07212;
    --cor-dourado-light:  #FDF6EA;
    --cor-fundo-corpo:    #F8F9F5;   /* Fundo suave acolhedor */
}

body { margin: 0; padding: 0; font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; background-color: var(--cor-fundo-corpo); color: #1e293b; }

/* =========================================================
   CABEÇALHO EM TRÊS FAIXAS
   ========================================================= */
.cabecalho { position: fixed; top: 0; left: 0; right: 0; z-index: 1050;
             box-shadow: 0 2px 6px rgba(0,0,0,.18); }

.faixa-topo { height: var(--altura-topo); background: var(--marca-topo);
              color: rgba(255,255,255,.78); display: flex; align-items: center;
              justify-content: space-between; padding: 0 1.5rem; font-size: .78rem; }
.faixa-topo .acoes { display: flex; align-items: center; gap: .35rem; }
.faixa-topo a, .faixa-topo button { color: rgba(255,255,255,.85); text-decoration: none;
              background: none; border: 1px solid rgba(255,255,255,.28); border-radius: 4px;
              padding: .1rem .5rem; font-size: .78rem; line-height: 1.4; }
.faixa-topo a { border-color: transparent; }
.faixa-topo a:hover, .faixa-topo button:hover { color: #fff; border-color: rgba(255,255,255,.6); }

/* --- faixa da marca ------------------------------------- */
.faixa-marca { height: var(--altura-marca); background: var(--marca-fundo);
               border-bottom: 1px solid #e7e9e2;
               display: flex; align-items: center; justify-content: space-between;
               padding: 0 1.75rem; }
.marca { display: flex; align-items: center; gap: 1.1rem; text-decoration: none;
         color: var(--marca-texto); }
.marca-logo { height: var(--altura-logo); width: auto; display: block; }
.marca-nome { font-size: 1.55rem; font-weight: 700; line-height: 1.16; letter-spacing: .01em;
              color: var(--marca-texto); }
.marca-sub { display: block; margin-top: .4rem; font-size: .72rem; letter-spacing: .13em;
             color: rgba(77,94,52,.78); }

.acoes-marca { display: flex; align-items: center; gap: .6rem; }
.btn-busca { width: 44px; height: 44px; border-radius: 50%; border: 1px solid #dfe3d8;
             background: #f4f6f0; color: var(--marca-texto); font-size: 1rem; }
.btn-busca:hover { background: var(--marca-texto); border-color: var(--marca-texto); color: #fff; }
.btn-hamburguer { display: none; background: none; border: 1px solid #dfe3d8;
                  color: var(--marca-texto); border-radius: 4px; padding: .25rem .6rem;
                  font-size: 1.1rem; }

/* =========================================================
   MENUS
   ========================================================= */
.faixa-nav { background: var(--marca-nav); }
.menu { display: flex; align-items: stretch; list-style: none; margin: 0;
        padding: 0 1.25rem; flex-wrap: wrap; }
.menu-link { display: flex; align-items: center; gap: .45rem; height: var(--altura-nav);
             padding: 0 .95rem; color: rgba(255,255,255,.88); text-decoration: none;
             font-size: .78rem; font-weight: 600; letter-spacing: .06em;
             text-transform: uppercase; border-bottom: 3px solid transparent; }
.menu-link:hover { color: #fff; background: rgba(255,255,255,.07); }
.menu-link.ativo { color: #fff; border-bottom-color: var(--marca-realce); }
.menu-link:focus-visible { outline: 2px solid var(--marca-realce); outline-offset: -2px; }
.menu-icone { font-size: .95rem; opacity: .8; letter-spacing: 0; }

.menu .dropdown-menu { border: 0; border-top: 3px solid var(--marca-realce);
                       border-radius: 0 0 4px 4px; box-shadow: 0 6px 18px rgba(0,0,0,.18);
                       padding: .35rem 0; margin-top: 0; min-width: 240px; }
.menu .dropdown-item { font-size: .88rem; color: #1f2937; padding: .5rem 1.1rem;
                       border-left: 3px solid transparent; }
.menu .dropdown-item:hover { background: #f1f5f9; color: var(--azul-portal);
                             border-left-color: var(--marca-realce); }
/* input_action_link chega com o estilo de link do Bootstrap */
.menu .dropdown-item.action-link { text-decoration: none; }
.item-inativo { opacity: .55; cursor: default; }
.etiqueta-breve { font-size: .62rem; text-transform: uppercase; letter-spacing: .08em;
                  margin-left: .5rem; color: #64748b; }

/* =========================================================
   CONTEÚDO
   ========================================================= */
.main-content { padding: calc(var(--altura-cabecalho) + 1.25rem) 1.5rem 2rem 1.5rem; }

/* Abaixo de 992px o cabeçalho deixa de ser fixo: o menu aberto empurra o
   conteúdo em vez de cobri-lo. */
@media (max-width: 991.98px) {
    :root { --altura-logo: 64px; }
    .cabecalho { position: static; }
    .main-content { padding-top: 1.25rem; }
    .faixa-topo .rotulo { display: none; }
    .btn-hamburguer { display: inline-block; }
    .faixa-marca { height: auto; padding: .9rem 1rem; }
    .marca-nome { font-size: 1.15rem; }
    .marca-sub { font-size: .64rem; }
    .menu { flex-direction: column; padding: 0; }
    .menu-link { height: auto; padding: .7rem 1.25rem; border-bottom: 0;
                 border-left: 3px solid transparent; }
    .menu-link.ativo { border-left-color: var(--marca-realce); }
    .menu .dropdown-menu { border-top: 0; box-shadow: none; background: rgba(0,0,0,.15); }
    .menu .dropdown-item { color: rgba(255,255,255,.85); }
    .menu .dropdown-item:hover { background: rgba(255,255,255,.1); color: #fff; }
}

/* =========================================================
   ABAS E TABELAS
   ========================================================= */
.seletor-base-box {
    background-color: #ffffff;
    border: 1px solid #e2e8df;
    border-radius: 10px;
    padding: 0.9rem 1.25rem;
    margin-bottom: 1.25rem;
    box-shadow: 0 2px 8px rgba(79, 96, 54, 0.05);
    transition: opacity .25s ease;
}

/* Oculta a barra de seleção superior enquanto nenhuma base estiver selecionada */
.seletor-base-box.seletor-base-oculto {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
    opacity: 0;
    pointer-events: none;
    margin-bottom: 0;
}

.seletor-base-cabecalho {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.6rem;
}

.badge-seletor-base {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--cor-verde-dark);
    background-color: var(--cor-verde-light);
    border: 1px solid rgba(79, 96, 54, 0.25);
    padding: 0.15rem 0.5rem;
    border-radius: 4px;
}

.texto-seletor-base {
    font-size: 0.82rem;
    color: #64748b;
    font-weight: 500;
}

/* Seleção em dois níveis: botões de rádio estilizados e dropdown de modalidade */
.seletor-familia {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}
.seletor-familia .shiny-input-radiogroup { margin-bottom: 0; }
.seletor-familia .shiny-options-group {
    display: flex;
    gap: 0.6rem;
    flex-wrap: wrap;
    align-items: center;
}

/* Transforma o rádio em cartões/pills clicáveis com alinhamento milimétrico em Terracota */
.seletor-familia .radio-inline,
.seletor-familia .form-check {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0.5rem !important;
    background-color: #ffffff !important;
    border: 1.5px solid #cbd5e1 !important;
    border-radius: 8px !important;
    padding: 0 1.15rem !important;
    margin: 0 !important;
    transition: all 0.15s ease-in-out !important;
    cursor: pointer !important;
    font-weight: 600 !important;
    font-size: 0.9rem !important;
    color: #334155 !important;
    line-height: 1 !important;
    height: 40px !important;
    box-sizing: border-box !important;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05) !important;
    user-select: none !important;
}
.seletor-familia .radio-inline:hover:not(:has(input:checked)),
.seletor-familia .form-check:hover:not(:has(.form-check-input:checked)),
.seletor-familia .form-check:hover:not(:has(input:checked)) {
    border-color: var(--cor-terracota) !important;
    background-color: var(--cor-terracota-light) !important;
    color: var(--cor-terracota-dark) !important;
    transform: translateY(-1.5px) !important;
    box-shadow: 0 3px 6px rgba(187, 99, 63, 0.15) !important;
}
.seletor-familia .radio-inline:hover:not(:has(input:checked)) span,
.seletor-familia .form-check:hover:not(:has(.form-check-input:checked)) label,
.seletor-familia .form-check:hover:not(:has(.form-check-input:checked)) .form-check-label {
    color: var(--cor-terracota-dark) !important;
}
.seletor-familia .shiny-input-container-inline .shiny-options-group .radio-inline:has(input:checked),
.seletor-familia .shiny-options-group .radio-inline:has(input:checked),
.seletor-familia .radio-inline:has(input:checked),
.seletor-familia .form-check:has(.form-check-input:checked),
.seletor-familia .form-check:has(input:checked) {
    border-color: var(--cor-terracota-dark) !important;
    background-color: var(--cor-terracota) !important;
    box-shadow: 0 3px 8px rgba(187, 99, 63, 0.35) !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    transform: translateY(0) !important;
}
.seletor-familia .radio-inline:has(input:checked) span,
.seletor-familia .radio-inline:has(input:checked) label,
.seletor-familia .form-check:has(.form-check-input:checked) label,
.seletor-familia .form-check:has(.form-check-input:checked) .form-check-label,
.seletor-familia .form-check:has(input:checked) span {
    color: #ffffff !important;
    font-weight: 700 !important;
}
.seletor-familia .radio-inline:has(input:checked)::before,
.seletor-familia .form-check:has(.form-check-input:checked)::before,
.seletor-familia .form-check:has(input:checked)::before {
    content: "✓" !important;
    font-weight: 800 !important;
    margin-right: 0.35rem !important;
    font-size: 0.82rem !important;
    color: #ffffff !important;
}

/* O CÍRCULO DO RÁDIO:
   Ocultado para manter o formato puro de botão moderno */
.seletor-familia .shiny-input-container-inline .shiny-options-group .radio-inline input,
.seletor-familia .radio-inline input[type="radio"],
.seletor-familia .radio-inline input,
.seletor-familia .form-check-input,
.seletor-familia .form-check input {
    position: absolute !important;
    opacity: 0 !important;
    pointer-events: none !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}

.seletor-familia .radio-inline span,
.seletor-familia .form-check-label {
    display: inline-block !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
    color: inherit !important;
    white-space: nowrap !important;
}

/* =========================================================
   FAIXA DE MODALIDADES (PRONAF: Custeio, Investimento, Contratos)
   Aparece logo abaixo dos seletores de base quando há mais de uma opção
   ========================================================= */
.faixa-modalidades {
    display: flex !important;
    align-items: center !important;
    gap: 0.85rem !important;
    margin-top: 0.85rem !important;
    padding-top: 0.75rem !important;
    border-top: 1px dashed #e2e8df !important;
    flex-wrap: wrap !important;
}

.rotulo-faixa-modalidade {
    font-size: 0.74rem;
    font-weight: 700;
    color: var(--cor-terracota-dark);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;
    line-height: 1;
}

.faixa-modalidades .shiny-input-radiogroup,
.faixa-modalidades .shiny-input-container {
    margin-bottom: 0 !important;
    padding: 0 !important;
    width: auto !important;
}

.faixa-modalidades .shiny-options-group {
    display: inline-flex !important;
    align-items: center !important;
    gap: 0.55rem !important;
    flex-wrap: wrap !important;
}

/* Pílula inativa: botão branco limpo com borda suave */
.faixa-modalidades .radio-inline,
.faixa-modalidades .form-check {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0.35rem !important;
    background-color: #ffffff !important;
    border: 1.5px solid #cbd5e1 !important;
    border-radius: 6px !important;
    padding: 0 1rem !important;
    margin: 0 !important;
    transition: all 0.15s ease-in-out !important;
    cursor: pointer !important;
    font-weight: 600 !important;
    font-size: 0.86rem !important;
    color: #334155 !important;
    line-height: 1 !important;
    height: 36px !important;
    box-sizing: border-box !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05) !important;
    user-select: none !important;
}

/* Ocultar o input de rádio nativo */
.faixa-modalidades .radio-inline input[type="radio"],
.faixa-modalidades .radio-inline input,
.faixa-modalidades .form-check-input {
    position: absolute !important;
    opacity: 0 !important;
    pointer-events: none !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}

.faixa-modalidades .radio-inline span,
.faixa-modalidades .form-check-label {
    display: inline-block !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
    color: inherit !important;
    white-space: nowrap !important;
}

/* Hover na pílula inativa: verde suave com elevação */
.faixa-modalidades .radio-inline:hover:not(:has(input:checked)),
.faixa-modalidades .form-check:hover:not(:has(.form-check-input:checked)) {
    background-color: var(--cor-verde-light, #F2F5ED) !important;
    border-color: var(--cor-verde, #4F6036) !important;
    color: var(--cor-verde-dark, #3B4B27) !important;
    transform: translateY(-1px) !important;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.08) !important;
}
.faixa-modalidades .radio-inline:hover:not(:has(input:checked)) span {
    color: var(--cor-verde-dark, #3B4B27) !important;
}

/* Pílula ativa / selecionada: Verde institucional sólido com texto branco e checkmark */
.faixa-modalidades .radio-inline:has(input:checked),
.faixa-modalidades .form-check:has(.form-check-input:checked),
.faixa-modalidades .form-check:has(input:checked) {
    background-color: var(--cor-verde, #4F6036) !important;
    border-color: var(--cor-verde-dark, #3B4B27) !important;
    box-shadow: 0 2px 6px rgba(79, 96, 54, 0.3) !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    transform: translateY(0) !important;
}
.faixa-modalidades .radio-inline:has(input:checked) span,
.faixa-modalidades .form-check:has(.form-check-input:checked) label,
.faixa-modalidades .form-check:has(.form-check-input:checked) .form-check-label {
    color: #ffffff !important;
    font-weight: 700 !important;
}
.faixa-modalidades .radio-inline:has(input:checked)::before,
.faixa-modalidades .form-check:has(.form-check-input:checked)::before {
    content: "✓" !important;
    font-weight: 800 !important;
    margin-right: 0.35rem !important;
    font-size: 0.8rem !important;
    color: #ffffff !important;
}

/* Badge de destaque da base ativa na barra lateral */
.badge-base-destaque {
    display: inline-flex;
    align-items: center;
    background-color: var(--cor-terracota);
    color: #ffffff;
    font-size: 0.74rem;
    font-weight: 700;
    padding: 0.18rem 0.55rem;
    border-radius: 5px;
    letter-spacing: 0.03em;
    box-shadow: 0 1px 3px rgba(187, 99, 63, 0.35);
    text-transform: uppercase;
    line-height: 1.2;
}
.seletor-familia .shiny-input-container { margin-bottom: 0; width: auto !important; }

@media (max-width: 575.98px) {
    .seletor-familia { flex-direction: column; align-items: stretch; gap: .6rem; }
    .faixa-modalidades { flex-direction: column; align-items: stretch; gap: .5rem; }
}

/* =========================================================
   ABAS DO PORTAL (navset_card_tab)
   ========================================================= */
.nav-tabs {
    border-bottom: 2px solid #e2e8df;
    gap: 0.35rem;
    margin-bottom: 0;
}
.nav-tabs .nav-link {
    font-size: 0.88rem;
    font-weight: 600;
    color: #475569;
    border: none;
    border-bottom: 3px solid transparent;
    border-radius: 8px 8px 0 0;
    padding: 0.65rem 1.15rem;
    transition: all 0.15s ease-in-out;
}
.nav-tabs .nav-link:hover {
    color: var(--cor-verde);
    background-color: var(--cor-verde-light);
    border-color: transparent;
}
.nav-tabs .nav-link.active {
    color: var(--cor-verde-dark) !important;
    background-color: #ffffff !important;
    border-bottom: 3px solid var(--cor-verde) !important;
    font-weight: 700;
}

/* =========================================================
   CARDS E COMPONENTES GERAIS
   ========================================================= */
.card {
    border: 1px solid #e2e8e0;
    border-radius: 10px;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
    background-color: #ffffff;
}
.card-header {
    background-color: #ffffff;
    border-bottom: 1px solid #f1f5f0;
    font-weight: 700;
    font-size: 0.95rem;
    color: #1e293b;
    padding: 0.85rem 1.25rem;
}

/* Botão de atualizar filtros em Verde Mata (#4F6036) */
.btn-atualizar-filtro {
    background-color: var(--cor-verde) !important;
    border-color: var(--cor-verde) !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    font-size: 0.88rem !important;
    padding: 0.6rem 1rem !important;
    border-radius: 8px !important;
    box-shadow: 0 2px 6px rgba(79, 96, 54, 0.25) !important;
    transition: all 0.2s ease !important;
}
.btn-atualizar-filtro:hover {
    background-color: var(--cor-verde-dark) !important;
    border-color: var(--cor-verde-dark) !important;
    color: #ffffff !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 10px rgba(79, 96, 54, 0.35) !important;
}
.btn-atualizar-filtro:active {
    transform: translateY(0);
}
.btn-secundario-atualizar {
    opacity: 0.9;
}

/* Estado pendente do botão de atualizar filtros */
.btn-atualizar-filtro.filtro-pendente {
    background-color: var(--cor-dourado) !important;
    border-color: var(--cor-dourado-dark) !important;
    color: #1e293b !important;
    animation: pulso-filtro-pendente 2s infinite ease-in-out !important;
}
.btn-atualizar-filtro.filtro-pendente:hover {
    background-color: var(--cor-dourado-dark) !important;
    color: #ffffff !important;
}
.btn-atualizar-filtro.filtro-pendente::after {
    content: " (pendente)";
    font-size: 0.78rem;
    font-weight: 600;
    margin-left: 4px;
}
@keyframes pulso-filtro-pendente {
    0% {
        box-shadow: 0 0 0 0 rgba(236, 158, 37, 0.55);
    }
    70% {
        box-shadow: 0 0 0 8px rgba(236, 158, 37, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(236, 158, 37, 0);
    }
}

/* Botões de Download */
.btn-download-planilha {
    border: 1.5px solid var(--cor-verde) !important;
    color: var(--cor-verde-dark) !important;
    background-color: var(--cor-verde-light) !important;
    font-weight: 600 !important;
    font-size: 0.82rem !important;
    border-radius: 6px !important;
    transition: all 0.15s ease !important;
}
.btn-download-planilha:hover {
    background-color: var(--cor-verde) !important;
    color: #ffffff !important;
}

.btn-download-texto {
    border: 1.5px solid #cbd5e1 !important;
    color: #475569 !important;
    background-color: #ffffff !important;
    font-weight: 600 !important;
    font-size: 0.82rem !important;
    border-radius: 6px !important;
    transition: all 0.15s ease !important;
}
.btn-download-texto:hover {
    background-color: #f1f5f9 !important;
    color: #1e293b !important;
}

/* =========================================================
   ABAS PRINCIPAIS DO PORTAL (Botões / Chips Convidativos)
   ========================================================= */
.card-header:has(#abas_portal) {
    background-color: #ffffff !important;
    border-bottom: 1px solid #e2e8df !important;
    padding: 0.75rem 1.25rem !important;
}

#abas_portal.nav-tabs,
#abas_portal.card-header-tabs {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    background: transparent !important;
    border: none !important;
    border-bottom: none !important;
    padding: 0 !important;
    margin: 0 !important;
    gap: 0.65rem !important;
    box-shadow: none !important;
}

#abas_portal .nav-item {
    margin: 0 !important;
    padding: 0 !important;
}

#abas_portal .nav-link {
    display: inline-flex !important;
    align-items: center !important;
    gap: 0.5rem !important;
    padding: 0.55rem 1.15rem !important;
    font-size: 0.88rem !important;
    font-weight: 600 !important;
    color: #334155 !important;
    background-color: #ffffff !important;
    border: 1.5px solid #cbd5e1 !important;
    border-radius: 8px !important;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05) !important;
    transition: all 0.15s ease-in-out !important;
    cursor: pointer !important;
    user-select: none !important;
    text-decoration: none !important;
    line-height: 1.4 !important;
    margin: 0 !important;
}

#abas_portal .nav-link:hover:not(.active) {
    background-color: var(--cor-verde-light, #F2F5ED) !important;
    border-color: var(--cor-verde, #4F6036) !important;
    color: var(--cor-verde-dark, #3B4B27) !important;
    transform: translateY(-1.5px) !important;
    box-shadow: 0 3px 6px rgba(0, 0, 0, 0.08) !important;
}

#abas_portal .nav-link.active {
    background-color: var(--cor-verde, #4F6036) !important;
    border-color: var(--cor-verde-dark, #3B4B27) !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    border-radius: 8px !important;
    box-shadow: 0 3px 8px rgba(79, 96, 54, 0.32) !important;
    transform: translateY(0) !important;
}

/* Controles internos do gráfico (Valor e Agrupamento) em Botões de Alternância / Chips */
.controles-grafico-wrap {
    background-color: #EEF4E8;
    border: 1px solid #CADBC0;
    border-left: 4px solid var(--cor-verde);
    border-radius: 8px;
    padding: 0.55rem 1rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1.6rem;
    box-shadow: 0 2px 6px rgba(79, 96, 54, 0.08);
}
/* Os output_ui usam display:contents, então os itens deste flex são as
   divs de dentro. Sem min-width:0 eles não encolhem, e a lista "Gráfico:"
   (420px fixos) passava da borda em telas estreitas. */
.controles-grafico-wrap > .shiny-html-output > * { min-width: 0; max-width: 100%; }
.controles-grafico-wrap .shiny-input-container { max-width: 100%; }
.controles-grafico-wrap .control-label {
    font-size: 0.76rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--cor-verde-dark);
    margin-bottom: 0;
    margin-right: 0.45rem;
}
.controles-grafico-wrap .shiny-options-group {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}
.controles-grafico-wrap .radio-inline {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.38rem 0.8rem;
    margin: 0 !important;
    border-radius: 6px;
    font-size: 0.82rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease-in-out;
    user-select: none;
    background-color: #ffffff;
    color: #334155;
    border: 1.5px solid #cbd5e1;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.controles-grafico-wrap .radio-inline input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
    width: 0;
    height: 0;
    margin: 0;
}
/* Efeito hover no botão inativo: deixa clara a interatividade imediata */
.controles-grafico-wrap .radio-inline:hover:not(:has(input:checked)) {
    background-color: var(--cor-verde-light);
    border-color: var(--cor-verde);
    color: var(--cor-verde-dark);
    transform: translateY(-1px);
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.08);
}
/* Botão ativo / selecionado: Verde institucional preenchido com texto branco e checkmark */
.controles-grafico-wrap .radio-inline:has(input:checked) {
    background-color: var(--cor-verde);
    border-color: var(--cor-verde-dark);
    color: #ffffff;
    font-weight: 700;
    box-shadow: 0 2px 6px rgba(79, 96, 54, 0.3);
}
.controles-grafico-wrap .radio-inline:has(input:checked)::before {
    content: "✓";
    font-weight: 800;
    margin-right: 0.35rem;
    font-size: 0.78rem;
}

.table-container table { width: 100% !important; margin-bottom: 0 !important; }
.table-container th, .table-container td { vertical-align: middle !important; padding: 0.45rem 0.65rem !important; }
.table-container th {
    background-color: #f8fafc !important;
    color: #334155 !important;
    font-weight: 700 !important;
    font-size: 0.83rem !important;
    border-bottom: 2px solid #cbd5e1 !important;
    letter-spacing: 0.02em;
}

/* =========================================================
   ABA EXTRAÇÃO
   ========================================================= */
.secao-checkbox-extracao {
    column-count: 2;
    column-gap: 28px;
    padding: 0.6rem 0;
}

@media (max-width: 767.98px) {
    .secao-checkbox-extracao {
        column-count: 1;
    }
}

.secao-checkbox-extracao .shiny-input-checkboxgroup {
    margin-bottom: 0;
}

.secao-checkbox-extracao .checkbox {
    break-inside: avoid-column;
    padding: 0.35rem 0.55rem;
    margin-bottom: 0.2rem;
    border-radius: 6px;
    transition: background-color 0.15s ease;
}

.secao-checkbox-extracao .checkbox:hover {
    background-color: var(--cor-verde-light);
}

.secao-checkbox-extracao .checkbox label {
    display: flex;
    align-items: baseline;
    gap: 0.55rem;
    cursor: pointer;
    margin-bottom: 0;
    line-height: 1.4;
}

.secao-checkbox-extracao input[type="checkbox"] {
    accent-color: var(--cor-verde) !important;
    width: 16px;
    height: 16px;
    min-width: 16px;
    min-height: 16px;
    cursor: pointer;
    position: relative;
    top: 2px;
}

.secao-checkbox-extracao .col-nome {
    font-weight: 600;
    color: #1e293b;
    font-size: 0.88rem;
}

.secao-checkbox-extracao .col-desc {
    color: #64748b;
    font-size: 0.82rem;
    font-weight: 400;
}

/* Mini botões de seleção rápida */
.btn-mini-acao {
    background: #ffffff !important;
    border: 1px solid #cbd5e1 !important;
    color: #475569 !important;
    font-size: 0.78rem !important;
    font-weight: 600 !important;
    padding: 0.22rem 0.65rem !important;
    border-radius: 6px !important;
    line-height: 1.3 !important;
    transition: all 0.15s ease !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03) !important;
}

.btn-mini-acao:hover {
    background: var(--cor-verde-light) !important;
    border-color: var(--cor-verde) !important;
    color: var(--cor-verde-dark) !important;
}

/* Botão de download de extração (Azul Petróleo institucional) */
.btn-download-extracao {
    background-color: var(--cor-petroleo) !important;
    border-color: var(--cor-petroleo) !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    font-size: 0.88rem !important;
    padding: 0.6rem 1.15rem !important;
    border-radius: 8px !important;
    box-shadow: 0 2px 6px rgba(73, 105, 115, 0.25) !important;
    transition: all 0.2s ease !important;
    text-decoration: none !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 0.4rem !important;
}

.btn-download-extracao:hover {
    background-color: var(--cor-petroleo-dark) !important;
    border-color: var(--cor-petroleo-dark) !important;
    color: #ffffff !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 10px rgba(73, 105, 115, 0.35) !important;
}

.btn-download-extracao:active {
    transform: translateY(0);
}

/* Painel de status e volume da extração */
.painel-status-extracao {
    border-radius: 8px;
    padding: 0.75rem 1rem;
    font-size: 0.86rem;
    line-height: 1.5;
    margin-top: 1rem;
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.painel-status-extracao.status-info {
    background-color: #f8fafc;
    border: 1px solid #e2e8f0;
    border-left: 4px solid #94a3b8;
    color: #475569;
}

.painel-status-extracao.status-sucesso {
    background-color: var(--cor-verde-light);
    border: 1px solid rgba(79, 96, 54, 0.25);
    border-left: 4px solid var(--cor-verde);
    color: var(--cor-verde-dark);
}

.painel-status-extracao.status-aviso {
    background-color: var(--cor-dourado-light);
    border: 1px solid rgba(236, 158, 37, 0.35);
    border-left: 4px solid var(--cor-dourado);
    color: #7a4c05;
}

.painel-status-extracao.status-alerta {
    background-color: var(--cor-terracota-light);
    border: 1px solid rgba(187, 99, 63, 0.35);
    border-left: 4px solid var(--cor-terracota);
    color: var(--cor-terracota-dark);
}

.painel-status-extracao .status-icone {
    font-size: 1.15rem;
    line-height: 1;
    flex-shrink: 0;
}

.painel-status-extracao .status-corpo {
    flex: 1;
}

/* =========================================================
   ABA RELATÓRIO POR IA
   ========================================================= */
.btn-gerar-ia {
    background-color: var(--cor-verde) !important;
    border: 1px solid var(--cor-verde-dark) !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    font-size: 0.88rem !important;
    padding: 0.58rem 1rem !important;
    border-radius: 8px !important;
    box-shadow: 0 2px 6px rgba(79, 96, 54, 0.28) !important;
    transition: all 0.2s ease !important;
}

.btn-gerar-ia:hover:not(:disabled) {
    background-color: var(--cor-verde-dark) !important;
    border-color: var(--cor-verde-dark) !important;
    color: #ffffff !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 10px rgba(79, 96, 54, 0.38) !important;
}

.btn-gerar-ia:active:not(:disabled) {
    transform: translateY(0);
}

/* Proteção rigorosa de clique único: desativa eventos e cursor quando ocupado/desabilitado */
.btn-gerar-ia:disabled,
.btn-gerar-ia[disabled] {
    opacity: 0.65 !important;
    cursor: not-allowed !important;
    pointer-events: none !important;
    box-shadow: none !important;
    transform: none !important;
}

/* Painel de cota e limites */
.painel-cota-ia {
    background-color: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 0.65rem 0.95rem;
}

.badge-cota {
    background-color: var(--cor-petroleo-light);
    color: var(--cor-petroleo-dark);
    font-weight: 700;
    font-size: 0.76rem;
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
    border: 1px solid rgba(73, 105, 115, 0.2);
}

/* Painel de orientação / aviso com destaque no topo */
.painel-orientacao-ia {
    background: linear-gradient(135deg, #f8faf6 0%, #ffffff 100%);
    border: 1.5px solid #d4dfcb;
    border-left: 5px solid var(--cor-verde);
    border-radius: 10px;
    padding: 1.25rem 1.5rem;
    display: flex;
    align-items: center;
    gap: 1.15rem;
    color: #334155;
    box-shadow: 0 2px 8px rgba(79, 96, 54, 0.06);
    text-align: left;
}

.painel-disparo-ia {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    width: 100%;
}


/* Tipografia editorial do relatório gerado */
.corpo-relatorio-ia {
    color: #1e293b;
    font-size: 0.95rem;
    line-height: 1.72;
    padding: 0.5rem 0;
}

.corpo-relatorio-ia h1 {
    font-size: 1.5rem;
    color: var(--cor-verde-dark);
    font-weight: 700;
    margin-top: 1.25rem;
    margin-bottom: 1rem;
    line-height: 1.3;
}

.corpo-relatorio-ia h2 {
    font-size: 1.35rem;
    color: var(--cor-verde-dark);
    font-weight: 700;
    margin-top: 1.25rem;
    margin-bottom: 1.2rem;
    padding-bottom: 0.45rem;
    border-bottom: 2px solid #e2e8df;
    line-height: 1.35;
}

.corpo-relatorio-ia h3 {
    font-size: 1.22rem;
    color: var(--cor-verde-dark);
    font-weight: 700;
    margin-top: 2rem;
    margin-bottom: 0.85rem;
    line-height: 1.35;
    border-left: 4px solid var(--cor-verde);
    padding-left: 0.75rem;
    letter-spacing: -0.01em;
}

.corpo-relatorio-ia h4 {
    font-size: 1.08rem;
    color: var(--cor-verde-dark);
    font-weight: 600;
    margin-top: 1.5rem;
    margin-bottom: 0.5rem;
}

.corpo-relatorio-ia p {
    margin-bottom: 1rem;
}

.corpo-relatorio-ia ul,
.corpo-relatorio-ia ol {
    margin-bottom: 1rem;
    padding-left: 1.4rem;
}

.corpo-relatorio-ia li {
    margin-bottom: 0.35rem;
}

.corpo-relatorio-ia blockquote {
    border-left: 4px solid var(--cor-verde);
    background-color: var(--cor-verde-light);
    padding: 0.65rem 1rem;
    border-radius: 0 8px 8px 0;
    margin: 1.2rem 0;
    color: var(--cor-verde-dark);
    font-style: italic;
}

.corpo-relatorio-ia table {
    width: 100%;
    margin: 1.25rem 0;
    border-collapse: collapse;
}

.corpo-relatorio-ia th,
.corpo-relatorio-ia td {
    padding: 0.5rem 0.75rem;
    border: 1px solid #e2e8f0;
    font-size: 0.88rem;
}

.corpo-relatorio-ia th {
    background-color: #f8fafc;
    font-weight: 600;
    color: #334155;
}

/* Badges de telemetria no rodapé do relatório */
.badge-telemetria {
    display: inline-flex;
    align-items: center;
    background-color: #f1f5f9;
    color: #475569;
    font-size: 0.76rem;
    font-weight: 500;
    padding: 0.2rem 0.55rem;
    border-radius: 5px;
    border: 1px solid #e2e8f0;
}

.badge-cache-reaproveitado {
    display: inline-flex;
    align-items: center;
    background-color: var(--cor-verde-light);
    color: var(--cor-verde-dark);
    font-size: 0.82rem;
    padding: 0.35rem 0.75rem;
    border-radius: 6px;
    border: 1px solid rgba(79, 96, 54, 0.25);
}

.rodape-telemetria-ia {
    font-size: 0.84rem;
    color: #475569;
    line-height: 1.65;
}

.rodape-telemetria-ia p {
    margin-bottom: 0.35rem !important;
}

.rodape-telemetria-ia code {
    background-color: #f1f5f9;
    color: #1e293b;
    padding: 0.12rem 0.4rem;
    border-radius: 4px;
    font-size: 0.82rem;
    border: 1px solid #cbd5e1;
    font-weight: 600;
}

/* =========================================================
   PÁGINA INICIAL — ENTRADA DO PORTAL
   Estática: nenhum dado, nenhuma consulta. Some assim que uma base
   é aberta. Prefixo "ent-" para não colidir com o resto do portal.
   Cores: sempre da paleta do logotipo (variáveis --cor-*).
     verde     → bases / Entender        petróleo → Explorar
     terracota → Obter os dados          dourado  → destaques e "Em breve"
   ========================================================= */
.pagina-inicial {
    width: 82%;
    max-width: 1480px;
    min-width: 320px;
    margin: 0 auto;
    padding: .75rem 0 2rem;
    --ent-borda: #e2e7da;
    --ent-texto: #334155;
    --ent-suave: #5b6778;
}

/* --- Cores utilitárias --------------------------------- */
.ent-cor--verde     { color: var(--cor-verde); }
.ent-cor--petroleo  { color: var(--cor-petroleo); }
.ent-cor--terracota { color: var(--cor-terracota); }
.ent-cor--dourado   { color: var(--cor-dourado-dark); }

.ent-svg { width: 1.25rem; height: 1.25rem; flex-shrink: 0; display: block; }

/* Ladrilho de ícone: quadrado arredondado, eco dos quadrados do logo */
.ent-tile {
    display: inline-flex; align-items: center; justify-content: center;
    width: 2.75rem; height: 2.75rem; border-radius: 12px 12px 12px 4px;
    color: #fff; flex-shrink: 0;
}
.ent-tile .ent-svg { width: 1.4rem; height: 1.4rem; }
.ent-tile--verde     { background: var(--cor-verde); }
.ent-tile--petroleo  { background: var(--cor-petroleo); }
.ent-tile--terracota { background: var(--cor-terracota); }
.ent-tile--dourado   { background: var(--cor-dourado); }
.ent-tile--suave { width: 2.35rem; height: 2.35rem; border-radius: 10px 10px 10px 3px; }
.ent-tile--suave .ent-svg { width: 1.2rem; height: 1.2rem; }
.ent-tile--suave.ent-tile--verde     { background: var(--cor-verde-light);     color: var(--cor-verde); }
.ent-tile--suave.ent-tile--petroleo  { background: var(--cor-petroleo-light);  color: var(--cor-petroleo); }
.ent-tile--suave.ent-tile--terracota { background: var(--cor-terracota-light); color: var(--cor-terracota); }

/* --- Apresentação: texto à esquerda | "Como funciona" à direita ---
   Mesma grade dos painéis de baixo (.ent-grade), para as bordas se alinharem. */
.ent-apresentacao {
    display: grid; grid-template-columns: minmax(340px, 5fr) 7fr;
    gap: 1.75rem; align-items: center; margin: 1.25rem 0 1.75rem;
}
.ent-titulo {
    font-size: clamp(1.8rem, 2.5vw, 2.5rem); font-weight: 700; line-height: 1.15;
    letter-spacing: -.02em; color: var(--cor-verde-dark);
    margin: 0 0 .85rem; text-wrap: balance;
}
.ent-intro {
    font-size: 1.06rem; line-height: 1.7; color: var(--ent-suave);
    max-width: 34rem; margin: 0; text-wrap: pretty;
}
.ent-como {
    background: #fff; border: 1px solid var(--ent-borda); border-radius: 16px;
    padding: 1.2rem 1.6rem 1.4rem;
    box-shadow: 0 1px 2px rgba(30, 41, 59, .04), 0 8px 24px rgba(30, 41, 59, .04);
}

/* Trilha em 3 passos: é o "fluxograma" da página */
.ent-trilha {
    list-style: none; margin: 0; padding: 0;
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem;
    position: relative; text-align: left;
}
.ent-trilha::before {               /* linha que liga os três passos */
    content: ""; position: absolute; top: 1.375rem; left: 16%; right: 16%;
    border-top: 2px dashed #cdd6c2; z-index: 0;
}
.ent-passo { display: flex; flex-direction: column; align-items: center; text-align: center; gap: .7rem; position: relative; z-index: 1; }
.ent-passo-marca {
    position: relative; display: inline-flex; align-items: center; justify-content: center;
    width: 2.75rem; height: 2.75rem; border-radius: 12px 12px 12px 4px; color: #fff; flex-shrink: 0;
    box-shadow: 0 0 0 6px #fff;   /* recorta a linha tracejada atrás do ícone */
}
.ent-passo-num {
    position: absolute; top: -.45rem; right: -.45rem;
    width: 1.2rem; height: 1.2rem; border-radius: 50%;
    background: #fff; color: var(--cor-verde-dark); border: 1px solid var(--ent-borda);
    font-size: .68rem; font-weight: 700; line-height: 1.1rem; text-align: center;
}
.ent-passo-texto strong { display: block; font-size: .98rem; color: #1e293b; margin-bottom: .15rem; }
.ent-passo-texto span { display: block; font-size: .86rem; color: var(--ent-suave); line-height: 1.45; max-width: 260px; margin: 0 auto; }

/* --- Grade principal: bases | ferramentas --------------- */
.ent-grade {
    display: grid; grid-template-columns: minmax(340px, 5fr) 7fr;
    gap: 1.75rem; align-items: start;
}
.ent-painel {
    background: #fff; border: 1px solid var(--ent-borda); border-radius: 16px;
    padding: 1.5rem 1.6rem 1.6rem;
    box-shadow: 0 1px 2px rgba(30, 41, 59, .04), 0 8px 24px rgba(30, 41, 59, .04);
}
.ent-secao-cabeca { display: flex; gap: .85rem; align-items: flex-start; margin-bottom: 1.25rem; }
.ent-secao-num {
    flex-shrink: 0; width: 1.9rem; height: 1.9rem; border-radius: 50%;
    background: var(--cor-verde); color: #fff; font-weight: 700; font-size: .92rem;
    display: inline-flex; align-items: center; justify-content: center; margin-top: .1rem;
}
.ent-secao-titulo { font-size: 1.2rem; font-weight: 700; color: var(--cor-verde-dark); margin: 0 0 .2rem; line-height: 1.3; }
.ent-secao-texto  { font-size: .9rem; color: var(--ent-suave); margin: 0; line-height: 1.5; }

/* --- Cartões das bases (clicáveis) --------------------- */
.ent-bases { display: flex; flex-direction: column; gap: 1rem; }
.ent-base {
    display: flex; flex-direction: column; gap: .75rem;
    width: 100%; text-align: left; cursor: pointer; font: inherit; color: inherit;
    background: #fcfdfa; border: 1px solid var(--ent-borda); border-radius: 14px;
    padding: 1.15rem 1.2rem 1.1rem;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease, background-color .18s ease;
}
.ent-base:hover { background: #fff; border-color: var(--cor-verde); transform: translateY(-2px);
                  box-shadow: 0 10px 24px rgba(59, 75, 39, .10); }
.ent-base:focus-visible { outline: 3px solid var(--cor-dourado); outline-offset: 2px; }
.ent-base.base-card-ativa { border-color: var(--cor-verde); background: var(--cor-verde-light); }

.ent-base-topo { display: flex; gap: .85rem; align-items: center; }
.ent-base-cabeca { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }
.ent-base-nome { font-size: 1.08rem; font-weight: 700; color: #1e293b; line-height: 1.25; }
.ent-base-meta { display: flex; flex-wrap: wrap; gap: .1rem .5rem; font-size: .78rem; color: var(--ent-suave); }
.ent-meta-item + .ent-meta-item::before { content: "·"; margin-right: .5rem; color: #a3adbb; }
.ent-base-desc { font-size: .9rem; line-height: 1.55; color: var(--ent-texto); margin: 0; }

.ent-perguntas { border-left: 2px solid var(--cor-dourado); padding: .1rem 0 .1rem .8rem; }
.ent-perguntas-rotulo { display: block; font-size: .7rem; font-weight: 700; letter-spacing: .08em;
                        text-transform: uppercase; color: var(--cor-dourado-dark); margin-bottom: .25rem; }
.ent-perguntas ul { list-style: none; margin: 0; padding: 0; }
.ent-perguntas li { font-size: .85rem; color: var(--ent-texto); line-height: 1.5; }
.ent-perguntas li + li { margin-top: .15rem; }

.ent-base-cta {
    align-self: flex-end; display: inline-flex; align-items: center; gap: .45rem;
    font-size: .88rem; font-weight: 600; color: #fff;
    background: var(--cor-verde); border-radius: 999px; padding: .45rem .75rem .45rem 1rem;
    transition: background-color .18s ease;
}
.ent-svg-seta { width: 1rem; height: 1rem; transition: transform .18s ease; }
.ent-base:hover .ent-base-cta { background: var(--cor-verde-dark); }
.ent-base:hover .ent-svg-seta { transform: translateX(3px); }

/* --- Ferramentas (informativas, sem aparência de botão) - */
.ent-grupos { display: flex; flex-direction: column; gap: 1.35rem; }
.ent-grupo-rotulo {
    display: flex; align-items: center; gap: .6rem;
    font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    margin-bottom: .7rem;
}
.ent-grupo-rotulo::after { content: ""; flex: 1; height: 1px; background: var(--ent-borda); }
.ent-grupo-itens { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.5rem; }
.ent-ferr { display: flex; gap: .8rem; align-items: flex-start; }
.ent-ferr-cabeca { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; margin-bottom: .2rem; }
.ent-ferr-titulo { font-size: .97rem; font-weight: 600; color: #1e293b; }
.ent-ferr-desc { font-size: .86rem; line-height: 1.55; color: var(--ent-suave); margin: 0; }
.ent-selo {
    font-size: .64rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
    color: var(--cor-dourado-dark); background: var(--cor-dourado-light);
    border: 1px solid rgba(236, 158, 37, .35); border-radius: 999px; padding: .1rem .5rem;
}
.ent-ferr--breve .ent-tile { filter: grayscale(.6); opacity: .75; }

.ent-dica {
    display: flex; gap: .6rem; align-items: flex-start;
    margin: 1.5rem 0 0; padding: .8rem 1rem; border-radius: 10px;
    background: var(--cor-petroleo-light); color: var(--cor-petroleo-dark);
    font-size: .86rem; line-height: 1.5;
}
.ent-dica .ent-svg { width: 1.15rem; height: 1.15rem; margin-top: .1rem; }

.ent-rodape { margin-top: 2.25rem; font-size: .86rem; color: #64748b; text-align: center; }

@media (prefers-reduced-motion: reduce) {
    .ent-base, .ent-svg-seta, .ent-base-cta { transition: none; }
    .ent-base:hover { transform: none; }
}


/* =========================================================
   CARDS DE ESTATÍSTICAS — faixa responsiva da página inicial
   ========================================================= */

/* Grid responsivo: 6 em linha em telas largas, recua para 3, 2 e 1
   automaticamente conforme o espaço disponível — sem media queries. */
.stats-faixa {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: .75rem;
    margin: 0 auto 2rem;
    width: 100%;
}

.stat-card {
    display: flex;
    align-items: center;
    gap: .75rem;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    border-left: 4px solid;        /* cor definida por modificador */
    padding: .75rem 1rem;
    box-shadow: 0 1px 4px rgba(0,0,0,.06);
    min-width: 0;
}

.stat-card-icone {
    font-size: 1.55rem;
    line-height: 1;
    flex-shrink: 0;
}

.stat-card-corpo {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.stat-card-numero {
    font-size: 1.35rem;
    font-weight: 700;
    color: #1e293b;
    line-height: 1.1;
    white-space: nowrap;
}

.stat-card-rotulo {
    font-size: .73rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #1e293b;
    margin-top: .15rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.stat-card-subtitulo {
    font-size: .68rem;
    font-weight: 400;
    color: #64748b;
    margin-top: .1rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Modificadores de cor — um por card, usando a paleta do portal */
.stat-card--azul      { border-left-color: var(--azul-portal); }
.stat-card--petroleo  { border-left-color: var(--cor-petroleo); }
.stat-card--verde     { border-left-color: var(--cor-verde); }
.stat-card--dourado   { border-left-color: var(--cor-dourado); }
.stat-card--terracota { border-left-color: var(--cor-terracota); }
.stat-card--ia        { border-left-color: #556b82; }

/* =========================================================
   PAINEL DA FAIXA DE ESTATÍSTICAS (moldura e título)
   ========================================================= */
.painel-bloco-stats {
    background: #ffffff;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
    padding: 1.25rem 1.4rem;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .04);
}

.painel-secao-cabecalho {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: .3rem;
}

.painel-secao-icone {
    font-size: 1.2rem;
    line-height: 1;
}

.painel-secao-titulo {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--cor-verde-dark);
}

/* --- BLOCO DE ESTATÍSTICAS / USO EM LINHA INTEIRA --- */
.painel-stats-linha-inteira {
    width: 100%;
    margin-top: 2rem;
    box-sizing: border-box;
    container-type: inline-size;   /* as colunas seguem a largura do painel, não da tela */
}

.painel-stats-linha-inteira .secao-stats-topo {
    margin-bottom: .85rem;
}

/* 6 → 3 → 2 colunas (divisores de 6, sem cartão órfão), decididas pela
   largura do próprio painel. Cada cartão precisa de ~222px para o rótulo
   mais longo ("Registros extraídos") caber sem reticências: 6×222 + 5 vãos
   ≈ 1392px, daí o limite de 1400px. */
.stats-grid-linha {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .75rem;
    margin-bottom: 0;
}
@container (min-width: 1400px) {
    .stats-grid-linha { grid-template-columns: repeat(6, 1fr); }
}
@container (max-width: 679.98px) {
    .stats-grid-linha { grid-template-columns: repeat(2, 1fr); gap: .55rem; }
    /* Com 2 colunas estreitas o rótulo quebra em linha em vez de cortar */
    .stats-grid-linha .stat-card-rotulo,
    .stats-grid-linha .stat-card-subtitulo { white-space: normal; overflow: visible; }
    .stats-grid-linha .stat-card { padding: .65rem .7rem; gap: .55rem; }
    .stats-grid-linha .stat-card-icone { font-size: 1.3rem; }
}
/* Celular: o ícone sobe para cima do número e libera a largura para o texto */
@container (max-width: 419.98px) {
    .stats-grid-linha .stat-card { flex-direction: column; align-items: flex-start; gap: .35rem; }
}

.stats-grid-linha .stat-card {
    padding: .7rem .85rem;
    min-width: 0;
    box-sizing: border-box;
}

.stats-grid-linha .stat-card-numero {
    font-size: 1.3rem;
    font-weight: 700;
}

.stats-grid-linha .stat-card-rotulo {
    font-size: .75rem;
    font-weight: 700;
}

.stats-grid-linha .stat-card-subtitulo {
    font-size: .68rem;
}

/* Avisos do gráfico: ano em andamento, base da correção monetária */
.nota-periodo {
    background: var(--cor-dourado-light);
    border: 1px solid rgba(236, 158, 37, .45);
    border-left: 4px solid var(--cor-dourado);
    border-radius: 8px;
    color: #7a4c05;
    padding: .65rem 1rem;
    font-size: .85rem;
    line-height: 1.5;
}
.nota-periodo > div + div { margin-top: .3rem; }

/* Página inicial em telas intermediárias (telas menores e tablets) */
@media (max-width: 1080px) {
    .pagina-inicial { width: 92%; }
    .ent-apresentacao { grid-template-columns: 1fr; gap: 1.25rem; margin-top: .75rem; }
    .ent-grade { grid-template-columns: 1fr; gap: 1.5rem; }
}

/* Abaixo de 768px a trilha vira lista vertical e as ferramentas, uma coluna */
@media (max-width: 767.98px) {
    .pagina-inicial { width: 95%; }
    .ent-trilha { grid-template-columns: 1fr; gap: 1rem; }
    .ent-como { padding: 1.1rem 1.1rem 1.2rem; }
    .ent-trilha::before { top: 1rem; bottom: 1rem; left: 1.375rem; right: auto; border-top: 0; border-left: 2px dashed #cdd6c2; }
    .ent-passo { flex-direction: row; text-align: left; gap: .9rem; }
    .ent-passo-texto span { margin: 0; }
    .ent-painel { padding: 1.2rem 1.1rem; }
    .ent-grupo-itens { grid-template-columns: 1fr; }
    .painel-stats-linha-inteira {
        margin-top: 1.4rem;
        padding: 1rem .9rem;
    }
}

/* =========================================================
   NOTA TÉCNICA
   O conteúdo vem de notas/<base>.md, então os níveis de título são os do
   Markdown: h1 para o nome da base, h2 para as seções, h3 para
   subdivisões que o autor da nota queira criar.
   ========================================================= */
.nota-tecnica { max-width: 900px; }
.nota-tecnica h1 { font-size: 1.3rem; font-weight: 700; color: var(--azul-portal);
                   margin: 0 0 1.5rem 0; }
.nota-tecnica h2 { font-size: .95rem; font-weight: 600; color: var(--azul-portal);
                   text-transform: uppercase; letter-spacing: .04em;
                   border-left: 3px solid var(--azul-portal); padding-left: .6rem;
                   margin: 1.9rem 0 .6rem; }
.nota-tecnica h3 { font-size: .92rem; font-weight: 600; color: var(--azul-portal);
                   margin: 1.2rem 0 .4rem; }
.nota-tecnica h1 + h2 { margin-top: 0; }
.nota-tecnica p, .nota-tecnica li { color: #334155; line-height: 1.7; }
.nota-tecnica p:last-child { margin-bottom: 0; }
.nota-tecnica ul, .nota-tecnica ol { padding-left: 1.25rem; margin-bottom: 0; }
.nota-tecnica li { margin-bottom: .35rem; }
.nota-tecnica code { background: #f1f5f9; padding: .05rem .3rem; border-radius: 3px;
                     font-size: .88em; }
.nota-tecnica table { border-collapse: collapse; margin: .8rem 0; font-size: .88rem; }
.nota-tecnica th, .nota-tecnica td { border: 1px solid #e2e8f0; padding: .35rem .6rem; }
.nota-tecnica th { background: #f8fafc; }
/* Cada "## " da nota vira pergunta fechada (<details>), aberta ao clicar. */
.nota-tecnica > .nota-pergunta:first-of-type { margin-top: 1.5rem; }
.nota-pergunta { border-top: 1px solid #e2e8f0; }
.nota-pergunta:last-child { border-bottom: 1px solid #e2e8f0; }
.nota-pergunta > summary {
    list-style: none; cursor: pointer;
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    padding: .8rem .5rem; font-weight: 600; font-size: .98rem;
    color: var(--azul-portal);
}
.nota-pergunta > summary::-webkit-details-marker { display: none; }
.nota-pergunta > summary::after {
    content: ""; flex: none; width: .55rem; height: .55rem;
    border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
    transform: rotate(45deg); transition: transform .15s ease;
    margin-right: .3rem;
}
.nota-pergunta[open] > summary::after { transform: rotate(-135deg); }
.nota-pergunta > summary:hover { background: #f8fafc; }
.nota-pergunta > summary:focus-visible { outline: 2px solid var(--azul-portal); outline-offset: 2px; }
.nota-resposta { padding: 0 .5rem 1.1rem; }
.nota-tecnica-metadados {
    background-color: #f0f7ff;
    border-left: 4px solid var(--azul-portal, #1e3a8a);
    border-top: 1px solid #dbeafe;
    border-right: 1px solid #dbeafe;
    border-bottom: 1px solid #dbeafe;
    color: #1e293b;
    font-size: 0.86rem;
    padding: 0.65rem 0.95rem;
    border-radius: 5px;
    margin-bottom: 1.25rem;
    display: flex;
    align-items: center;
    line-height: 1.5;
}
.celula-metadados-destaque {
    border-left: 4px solid var(--azul-portal, #1e3a8a) !important;
    background-color: #ffffff;
    max-width: 900px;
}
.celula-metadados-destaque .card-header {
    background-color: #f8fafc;
    font-weight: 600;
    color: var(--azul-portal, #1e3a8a);
    font-size: 0.92rem;
    border-bottom: 1px solid #e2e8f0;
}

/* =========================================================
   TELA CHEIA
   Oculta o cabeçalho alto de três faixas para dar espaço máximo
   aos gráficos, tabelas e relatórios.
   Controlado pela classe .tela-cheia no <body> (via portal.js).
   ========================================================= */

/* Por padrão, o botão de saída fica oculto */
.btn-sair-cheia {
    display: none;
}

/* Quando em modo tela cheia: oculta o cabeçalho e ajusta espaçamentos */
body.tela-cheia .cabecalho:not(.cabecalho-wp) {
    display: none !important;
}

body.tela-cheia .main-content {
    padding-top: 1.25rem;
}

/* Botão flutuante tipo pílula no canto superior direito para sair da tela cheia */
body.tela-cheia .btn-sair-cheia {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    position: fixed;
    top: .85rem;
    right: 1.5rem;
    z-index: 1060;
    background: #ffffff;
    color: var(--cor-petroleo-dark);
    border: 1px solid #cbd5e1;
    border-radius: 20px;
    padding: .4rem .9rem;
    font-size: .8rem;
    font-weight: 600;
    line-height: 1.4;
    cursor: pointer;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
    transition: all .2s ease;
}

body.tela-cheia .btn-sair-cheia:hover {
    background: var(--cor-verde-light);
    border-color: var(--cor-verde);
    color: var(--cor-verde-dark);
    box-shadow: 0 4px 12px rgba(79, 96, 54, 0.16);
    transform: translateY(-1px);
}

/* Dá espaço na barra superior de seleção para não colidir com o botão de saída */
body.tela-cheia .seletor-base-box {
    padding-right: 11rem;
}

@media (max-width: 575.98px) {
    body.tela-cheia .btn-sair-cheia {
        top: .5rem;
        right: .75rem;
        padding: .25rem .55rem;
        font-size: .75rem;
    }
    body.tela-cheia .seletor-base-box {
        padding-right: 1rem;
    }
}

/* =========================================================
   TÍTULO DO CARD DE GRÁFICO (Aba Gráficos)
   ========================================================= */
.titulo-grafico-box {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.45rem 0.65rem;
    line-height: 1.35;
}

.titulo-grafico-texto {
    font-size: 1.15rem;
    font-weight: 700;
    color: #1e293b;
    letter-spacing: -0.01em;
}

.titulo-grafico-destaque {
    display: inline-flex;
    align-items: center;
    font-size: 0.96rem;
    font-weight: 600;
    color: var(--cor-petroleo-dark);
    background-color: var(--cor-petroleo-light);
    border: 1px solid rgba(73, 105, 115, 0.25);
    border-left: 3.5px solid var(--cor-petroleo);
    padding: 0.18rem 0.65rem;
    border-radius: 6px;
    letter-spacing: -0.005em;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
    max-width: 100%;
    white-space: normal;
    word-break: break-word;
}

.badge-escopo-comparativo {
    display: inline-flex;
    align-items: center;
    font-size: 0.88rem;
    font-weight: 700;
    color: #1e3a8a;
    background-color: #eff6ff;
    border: 1px solid #bfdbfe;
    border-left: 3.5px solid #2563eb;
    padding: 0.18rem 0.65rem;
    border-radius: 6px;
    letter-spacing: -0.005em;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}

.badge-escopo-familiar {
    display: inline-flex;
    align-items: center;
    font-size: 0.88rem;
    font-weight: 700;
    color: #065f46;
    background-color: #ecfdf5;
    border: 1px solid #a7f3d0;
    border-left: 3.5px solid #059669;
    padding: 0.18rem 0.65rem;
    border-radius: 6px;
    letter-spacing: -0.005em;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}

.badge-escopo-naofamiliar {
    display: inline-flex;
    align-items: center;
    font-size: 0.88rem;
    font-weight: 700;
    color: #7c2d12;
    background-color: #fff7ed;
    border: 1px solid #fed7aa;
    border-left: 3.5px solid #ea580c;
    padding: 0.18rem 0.65rem;
    border-radius: 6px;
    letter-spacing: -0.005em;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}

.badge-escopo-total {
    display: inline-flex;
    align-items: center;
    font-size: 0.88rem;
    font-weight: 700;
    color: #334155;
    background-color: #f8fafc;
    border: 1px solid #cbd5e1;
    border-left: 3.5px solid #64748b;
    padding: 0.18rem 0.65rem;
    border-radius: 6px;
    letter-spacing: -0.005em;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}

/* =========================================================
   RODAPÉ DO PORTAL (rodape.py)
   Mesma cor da barra de menus (--marca-nav)
   ========================================================= */
html, body {
    min-height: 100%;
}

.container-fluid {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

.main-content {
    flex: 1 0 auto;
}

.rodape-portal {
    flex-shrink: 0;
    width: 100%;
    background: var(--marca-nav);
    border-top: 3px solid var(--marca-realce);
    color: rgba(255, 255, 255, 0.9);
    padding: 2.25rem 1.5rem;
    box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.15);
    margin-top: auto;
}

.rodape-conteudo {
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.rodape-bloco-marca {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.9rem;
}

.rodape-imagem {
    height: 62px;
    max-width: 250px;
    width: auto;
    object-fit: contain;
    filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
    transition: transform 0.25s ease, opacity 0.25s ease;
}

.rodape-imagem:hover {
    transform: scale(1.03);
    opacity: 0.95;
}

.rodape-texto {
    font-size: 0.92rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.92);
    line-height: 1.4;
    text-align: center;
}

/* Oculta o rodapé no modo tela cheia para priorizar espaço de gráficos e dados */
body.tela-cheia .rodape-portal,
body.tela-cheia .wp-rodape {
    display: none !important;
}

@media (max-width: 575.98px) {
    .rodape-portal {
        padding: 1.75rem 1rem;
    }
    .rodape-imagem {
        height: 48px;
        max-width: 190px;
    }
    .rodape-texto {
        font-size: 0.82rem;
        letter-spacing: 0.05em;
    }
}

/* =========================================================
   TOOLTIPS DOS FILTROS (IBGE / METODOLOGIA)
   ========================================================= */
.rotulo-com-tooltip {
    display: inline-flex;
    align-items: center;
}

.icone-tooltip-filtro {
    color: var(--cor-verde-dark, #3b4b27); /* Verde institucional em harmonia com o cabeçalho e tooltip */
    opacity: 1 !important;
    transition: transform 0.18s ease, color 0.18s ease;
    cursor: help;
}

.icone-tooltip-filtro:hover,
.icone-tooltip-filtro:focus {
    color: var(--cor-verde, #4f6036);
    transform: scale(1.2);
}


/* =========================================================
   BARRA DE MACROINDICADORES DO CENSO (Brasil 2017)
   ========================================================= */
.barra-censo-box {
    background-color: #ffffff;
    border: 1px solid #e2e8df;
    border-radius: 10px;
    padding: 0.65rem 1.15rem 0.8rem 1.15rem;
    margin-bottom: 1.15rem;
    box-shadow: 0 2px 8px rgba(79, 96, 54, 0.05);
    animation: fadeInCenso 0.2s ease-in-out;
}

@keyframes fadeInCenso {
    from { opacity: 0; transform: translateY(-4px); }
    to { opacity: 1; transform: translateY(0); }
}

.barra-censo-cabecalho {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.55rem;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.barra-censo-cabecalho-esquerda {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex-wrap: wrap;
}

.barra-censo-bandeira {
    display: inline-flex;
    align-items: center;
    line-height: 1;
    text-decoration: none !important;
}

.icone-bandeira-svg {
    width: 1.15rem;
    height: 1.15rem;
    vertical-align: middle;
    box-shadow: none !important;
    filter: none !important;
    border: none !important;
}

.barra-censo-titulo {
    font-size: 0.84rem;
    font-weight: 700;
    color: var(--cor-verde-dark);
    letter-spacing: -0.01em;
}

.barra-censo-tag {
    font-size: 0.66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--cor-verde-dark);
    background-color: var(--cor-verde-light);
    border: 1px solid rgba(79, 96, 54, 0.25);
    padding: 0.1rem 0.45rem;
    border-radius: 4px;
}

.barra-censo-aviso {
    font-size: 0.72rem;
    color: #64748b;
    font-weight: 500;
}

.barra-censo-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 0.6rem;
}

.barra-censo-grid > bslib-tooltip {
    display: flex;
    flex-direction: column;
    min-width: 0;
    width: 100%;
}

.barra-censo-grid > bslib-tooltip > .card-censo-mini {
    flex: 1;
    width: 100%;
}

.card-censo-mini {
    background: #fbfdf9;
    border: 1px solid #e4eae0;
    border-radius: 8px;
    padding: 0.45rem 0.65rem 0.5rem 0.65rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    transition: all 0.18s ease-in-out;
    cursor: help;
    min-height: 68px;
}

.card-censo-mini:hover,
.card-censo-mini:focus {
    transform: translateY(-2px);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.07);
    background-color: #ffffff;
    border-color: #cbd5e1;
    outline: none;
}

.card-censo-mini.card-terracota {
    border-left: 3.5px solid var(--cor-terracota);
}

.card-censo-mini.card-verde {
    border-left: 3.5px solid var(--cor-verde);
}

.card-censo-mini.card-petroleo {
    border-left: 3.5px solid var(--cor-petroleo);
}

.card-censo-mini.card-dourado {
    border-left: 3.5px solid var(--cor-dourado);
}

.card-censo-topo {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-bottom: 0.15rem;
}

.card-censo-icone {
    font-size: 0.82rem;
    line-height: 1;
}

.card-censo-rotulo {
    font-size: 0.70rem;
    font-weight: 600;
    color: #475569;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.card-censo-valor {
    font-size: 1.15rem;
    font-weight: 800;
    color: #1e293b;
    line-height: 1.15;
    letter-spacing: -0.02em;
}

.card-censo-sub {
    font-size: 0.69rem;
    color: #64748b;
    font-weight: 500;
    margin-top: 0.12rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

@media (max-width: 1100px) {
    .barra-censo-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (max-width: 768px) {
    .barra-censo-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .barra-censo-aviso {
        display: none;
    }
}

@media (max-width: 480px) {
    .barra-censo-grid {
        grid-template-columns: 1fr;
    }
}

/* =========================================================
   TOOLTIP VERDE OFICIAL (Cards do Censo & Filtros)
   ========================================================= */
.tooltip-censo-verde {
    --bs-tooltip-bg: var(--cor-verde-dark);
    --bs-tooltip-color: #ffffff;
    --bs-tooltip-opacity: 1;
    --bs-tooltip-padding-y: 0.55rem;
    --bs-tooltip-padding-x: 0.85rem;
    --bs-tooltip-border-radius: 7px;
    filter: drop-shadow(0 4px 14px rgba(59, 75, 39, 0.28));
}

.tooltip-censo-verde .tooltip-inner {
    background-color: var(--cor-verde-dark) !important;
    color: #ffffff !important;
    font-size: 0.82rem !important;
    font-weight: 500 !important;
    line-height: 1.45 !important;
    border-radius: 7px !important;
    padding: 0.55rem 0.85rem !important;
    text-align: center !important;
    max-width: 320px !important;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.15) !important;
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
}

/* Tooltip dos filtros do Censo na barra lateral (leitura de texto extenso) */
.tooltip-censo-verde.tooltip-filtro-verde .tooltip-inner {
    text-align: left !important;
    max-width: 340px !important;
    line-height: 1.55 !important;
    padding: 0.75rem 0.95rem !important;
}

.tooltip-censo-verde.bs-tooltip-bottom .tooltip-arrow::before,
.tooltip-censo-verde.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before {
    border-bottom-color: var(--cor-verde-dark) !important;
}

.tooltip-censo-verde.bs-tooltip-top .tooltip-arrow::before,
.tooltip-censo-verde.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before {
    border-top-color: var(--cor-verde-dark) !important;
}

.tooltip-censo-verde.bs-tooltip-end .tooltip-arrow::before,
.tooltip-censo-verde.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before {
    border-right-color: var(--cor-verde-dark) !important;
}

.tooltip-censo-verde.bs-tooltip-start .tooltip-arrow::before,
.tooltip-censo-verde.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before {
    border-left-color: var(--cor-verde-dark) !important;
}




/* =========================================================
   CABEÇALHO E RODAPÉ DO SITE OFICIAL (ui/site_wp.py)
   Dados em www/wp/snapshot.json; desenho feito aqui. Cores vêm das
   variáveis --wp-cor-* que o site_wp.py coloca no <head> (com os valores
   abaixo como reserva). Fontes: as do site (Inter, Oswald, Roboto), servidas de www/fontes/.
   ========================================================= */
.cabecalho-wp { font-family: Inter, 'Segoe UI', Arial, sans-serif; }

.wp-interno { width: min(calc(100% - 96px), 1200px); margin: 0 auto; display: flex;
              align-items: center; position: relative; box-sizing: border-box; }

/* --- faixa do topo: logo e redes -------------------------- */
.wp-topo { background: #E6D9C9; height: var(--altura-wp-topo); }
.wp-topo .wp-interno { height: 100%; justify-content: space-between; gap: 20px; }
.wp-topo-logo { display: flex; align-items: center; min-width: 0; margin-left: 18px; }
.wp-topo-logo-img { display: block; width: auto; max-width: 280px; height: 48px; }

.wp-sociais { display: flex; gap: 14px; list-style: none; margin: 0; padding: 0; }
.wp-topo .wp-sociais { margin-right: 4px; }
.wp-social { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px;
             border-radius: 50%; background: var(--wp-cor-secundaria, #4E6227);
             transition: transform .15s ease; }
.wp-social:hover { transform: scale(1.1); }
.wp-social svg { width: 15px; height: 15px; fill: #fff; }
.wp-social:focus-visible { outline: 2px solid var(--wp-cor-aa0d6fa, #ECA021); outline-offset: 2px; }

/* --- barra de menus --------------------------------------- */
.wp-barra { background: #405E34; height: var(--altura-wp-barra); }
.wp-barra .wp-interno { height: 100%; }
.wp-barra-logo { display: flex; align-items: center; flex: 0 0 auto; margin-left: 18px; }
.wp-barra-logo-img { display: block; height: 53px; width: auto; }
.wp-hamburguer { display: none; margin-left: auto; background: none; color: #fff;
                 border: 1px solid rgba(255,255,255,.45); border-radius: 8px; padding: .3rem .5rem;
                 line-height: 0; cursor: pointer; }

/* Como no site: os logos entram 18px na faixa de 1200px e o menu começa 48px
   depois do logo, com os itens seguindo para a direita (não encostado na
   borda direita). */
.wp-menu { display: flex; align-items: center; gap: 12px; list-style: none; margin: 0 0 0 48px;
           padding: 0; height: 100%; }
.wp-menu-item { height: 100%; display: flex; align-items: center; }
.wp-menu-link { display: inline-flex; align-items: center; gap: 14px; height: 44px;
                padding: 0 14px; border: 0; border-radius: 8px; background: none; cursor: pointer;
                font: 600 16px/24px Oswald, 'Arial Narrow', sans-serif; color: #fff;
                text-decoration: none; white-space: nowrap; }
/* Como no site: passar o mouse ou abrir o painel deixa o rótulo amarelo */
.wp-menu-link:hover, .wp-menu-link:focus-visible,
.wp-item-aberto > .wp-menu-link { background: none; color: var(--wp-cor-aa0d6fa, #ECA021); }
.wp-menu-link:focus-visible { outline: 2px solid var(--wp-cor-aa0d6fa, #ECA021); outline-offset: 2px; }
/* "Portal de dados": a página atual. Texto branco com a barra amarela
   embaixo; não é link, então não reage ao mouse. */
.wp-menu-link.ativo, .wp-menu-link.ativo:hover {
    color: #fff; cursor: default; border-radius: 0;
    box-shadow: inset 0 -3px 0 var(--wp-cor-aa0d6fa, #ECA021); }
.wp-sem-link { cursor: default; }
/* No site o item tem seta (abre o painel do plugin); aqui não. Guarda o
   lugar dela para os itens seguintes caírem na mesma posição do site. */
@media (min-width: 1025px) {
    .wp-menu-item:has(> .wp-menu-link.ativo) { margin-right: 30px; }
}
.wp-caret { transition: transform .15s ease; flex: 0 0 auto; width: 16px; height: 11px;
            color: var(--wp-cor-aa0d6fa, #ECA021); }
.wp-item-aberto > .wp-menu-link .wp-caret { transform: rotate(180deg); }

/* --- painéis suspensos ------------------------------------ */
/* Caixa grafite centralizada, 12px abaixo da barra, cantos de 20px, como no
   site. O .wp-interno da barra (até 1200px, centrado) é a referência. */
.wp-painel { display: none; position: absolute; top: calc(100% + 12px); left: 50%;
             transform: translateX(-50%); width: max-content; max-width: calc(100vw - 32px);
             box-sizing: border-box; background: var(--wp-cor-9d051e8, #2A2A2A);
             color: var(--wp-cor-5c21efa, #E6E0D5); padding: 26px 48px 30px; border-radius: 20px;
             gap: 30px; box-shadow: 0 14px 30px rgba(0,0,0,.28); z-index: 5; }
.wp-item-aberto > .wp-painel { display: flex; }
/* Com o cabeçalho fixo, um painel mais alto que a janela não teria como
   ser rolado (notebook 1366x768: o fim do painel do Observatório ficava
   fora da tela). O painel para 16px antes da borda e rola por dentro. */
@media (min-width: 1025px) {
    .wp-painel { max-height: calc(100vh - var(--altura-wp-topo) - var(--altura-wp-barra) - 28px);
                 overflow-y: auto; overscroll-behavior: contain;
                 scrollbar-width: thin; scrollbar-color: rgba(230,224,213,.35) transparent; }
    body.cabecalho-recolhido .wp-painel { max-height: calc(100vh - var(--altura-wp-barra) - 28px); }
}
.wp-colunas { display: flex; gap: 30px; }
.wp-coluna { width: 340px; box-sizing: border-box; }
.wp-painel--lista .wp-coluna { width: 450px; }     /* Repositório e Biblioteca */
.wp-painel--portal .wp-coluna { width: 230px; }
/* coluna sem título (a 2ª do Observatório) começa na altura dos cartões */
.wp-coluna:not(:has(> .wp-coluna-titulo)) { padding-top: 39px; }
.wp-coluna-titulo { margin: 0 0 14px; font: 600 22px/1.15 Oswald, 'Arial Narrow', sans-serif;
                    color: var(--wp-cor-5c21efa, #E6E0D5); }
/* No lugar do logo animado do site, o logo colorido como imagem fixa */
.wp-painel-marca { flex: 0 0 240px; display: flex; align-items: center; justify-content: center; }
.wp-painel-marca-img { display: block; width: 100%; max-width: 237px; height: auto; }
/* Logo animado (portal.js): mesma proporção da animação (596x420); a imagem
   fixa só sai quando a animação já está desenhada. */
.wp-painel-marca-anima { width: 100%; max-width: 237px; aspect-ratio: 596 / 420; }
.wp-marca-animada .wp-painel-marca-img { display: none; }

.wp-cartao { display: flex; align-items: flex-start; gap: 12px; padding: 8px; margin: 0 -8px 6px;
             border-radius: 8px; text-decoration: none; color: inherit; }
a.wp-cartao:hover, a.wp-cartao:focus-visible { background: rgba(230,224,213,.1); }
a.wp-cartao:focus-visible { outline: 2px solid var(--wp-cor-aa0d6fa, #ECA021); }
/* "Ver todos os arquivos →" no fim das colunas do Repositório e da Biblioteca */
.wp-coluna-todos { display: inline-block; margin-top: 10px; color: var(--wp-cor-aa0d6fa, #ECA021);
                   font: 600 13px/1.3 Inter, 'Segoe UI', Arial, sans-serif; text-decoration: none; }
.wp-coluna-todos:hover, .wp-coluna-todos:focus-visible { text-decoration: underline; color: var(--wp-cor-aa0d6fa, #ECA021); }
.wp-cartao-inativo { opacity: .6; }
.wp-cartao-icone { flex: 0 0 20px; padding-top: 2px; }
.wp-cartao-icone svg { width: 20px; height: 20px; fill: var(--wp-cor-aa0d6fa, #ECA021); display: block; }
.wp-cartao-texto { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.wp-cartao-titulo { font: 700 15px/1.3 Inter, 'Segoe UI', Arial, sans-serif; color: #fff; }
.wp-cartao-desc { font: 400 13px/1.5 Inter, 'Segoe UI', Arial, sans-serif; color: rgba(255,255,255,.85); }

.wp-destaque { width: 230px; flex: 0 0 230px; box-sizing: border-box; padding: 20px 18px; border-radius: 14px;
               background: var(--wp-cor-destaque, #417486); color: #fff; align-self: stretch;
               display: flex; flex-direction: column; gap: 10px; }
.wp-destaque-logo { display: block; max-width: 100%; height: 46px; width: auto; align-self: flex-start; }
.wp-destaque-titulo { margin: 0; font: 600 24px/1.15 Oswald, 'Arial Narrow', sans-serif; }
.wp-destaque-texto { margin: 0; font: 400 13px/1.45 Inter, 'Segoe UI', Arial, sans-serif; }
.wp-destaque-botao { margin-top: auto; align-self: flex-start; padding: 9px 16px; border-radius: 12px;
                     background: var(--wp-cor-secundaria, #4E6227); color: #fff; text-decoration: none;
                     font: 700 14px/1.2 Inter, 'Segoe UI', Arial, sans-serif; }
.wp-destaque-botao:hover { background: #3b4b1f; color: #fff; }

/* --- sub-barra do portal ---------------------------------- */
/* Grafite dos painéis do menu, com "Portal de Dados" no amarelo do site:
   o bege claro de antes sumia contra o fundo do portal. */
.wp-subbarra { background: var(--wp-cor-9d051e8, #2A2A2A); height: var(--altura-subbarra); }
.wp-subbarra .wp-interno { height: 100%; justify-content: space-between; gap: 12px; }
.sub-titulo { font-size: .85rem; color: var(--wp-cor-5c21efa, #E6E0D5); white-space: nowrap;
              overflow: hidden; text-overflow: ellipsis; }
.sub-titulo strong { color: var(--wp-cor-aa0d6fa, #ECA021); }
.sub-sep { opacity: .5; }
.sub-acoes { display: flex; gap: .35rem; flex: 0 0 auto; }
.sub-acoes button { background: transparent; border: 1px solid rgba(230,224,213,.45); border-radius: 6px;
                    color: #fff; padding: .1rem .55rem; font-size: .78rem; line-height: 1.5; cursor: pointer; }
.sub-acoes button:hover { border-color: var(--wp-cor-aa0d6fa, #ECA021); color: var(--wp-cor-aa0d6fa, #ECA021); }
.sub-acoes button:focus-visible { outline: 2px solid var(--wp-cor-aa0d6fa, #ECA021); outline-offset: 2px; }

/* --- rodapé ------------------------------------------------ */
.wp-rodape { flex-shrink: 0; width: 100%; margin-top: auto; background: var(--wp-cor-5c21efa, #E6E0D5);
             color: var(--wp-cor-9d051e8, #2A2A2A); font-family: Inter, 'Segoe UI', Arial, sans-serif;
             padding: 0 0 32px; box-sizing: border-box; }
.wp-rodape-interno { width: min(calc(100% - 96px), 1200px); margin: 0 auto; }
.wp-rodape-linha { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start;
                   border-top: 2px solid var(--wp-cor-secundaria, #4E6227); padding-top: 40px; }
/* Como no site: logo e texto alinhados à esquerda; só as redes ficam
   centradas na coluna. */
.wp-rodape-marca { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; }
.wp-rodape-logo { display: block; width: 100%; max-width: 340px; height: auto; }
.wp-rodape-descricao { margin: 0; font-size: 14px; line-height: 1.6; }
.wp-sociais-rodape { gap: 36px; justify-content: center; align-self: stretch; }
.wp-sociais-rodape .wp-social { width: 48px; height: 48px; }
.wp-sociais-rodape .wp-social svg { width: 24px; height: 24px; fill: var(--wp-cor-5c21efa, #E6E0D5); }

.wp-boletim { display: flex; flex-direction: column; gap: 18px; }
.wp-boletim p { margin: 0; }
.wp-boletim-etiqueta { font: 600 16px/1.5 Oswald, 'Arial Narrow', sans-serif;
                       color: var(--wp-cor-aa0d6fa, #ECA021); text-transform: uppercase; }
.wp-boletim-titulo { font: 700 29px/1.2 Oswald, 'Arial Narrow', sans-serif; text-transform: uppercase; }
.wp-boletim-texto, .wp-boletim-nota { font-size: 14px; line-height: 1.6; }
.wp-boletim-acao { display: flex; gap: 8px; align-items: stretch; }
.wp-boletim-campo { flex: 1 1 auto; display: flex; align-items: center; height: 40px; padding: 0 16px;
                    background: #fff; border-radius: 12px; color: #6b7280; font-size: 14px;
                    text-decoration: none; }
.wp-boletim-botao { flex: 0 0 auto; display: flex; align-items: center; height: 40px; padding: 0 17px;
                    background: #EC9E27; color: #2A2A2A; border-radius: 12px; text-decoration: none;
                    font-weight: 700; font-size: 14px; }
.wp-boletim-botao:hover { filter: brightness(.95); color: #2A2A2A; }
.wp-boletim-botao:focus-visible { outline: 2px solid #2A2A2A; outline-offset: 2px; }

/* Colunas recuadas e com largura fixa (240px + 34px), como no site; um fio
   claro em cima e outro embaixo, antes da faixa de cores. */
.wp-rodape-colunas { display: grid; grid-template-columns: repeat(4, minmax(0, 240px)); column-gap: 34px;
                     row-gap: 28px; margin-top: 32px; padding: 32px 0 32px 69px;
                     border-top: 1px solid rgba(42,42,42,.12); border-bottom: 1px solid rgba(42,42,42,.12);
                     box-sizing: border-box; }
.wp-rodape-titulo { margin: 0 0 10px; font: 700 16px/1.1 Oswald, 'Arial Narrow', sans-serif;
                    text-transform: uppercase; }
.wp-rodape-coluna .wp-rodape-titulo:not(:first-child) { margin-top: 18px; }
.wp-rodape-links { list-style: none; margin: 0; padding: 0; }
.wp-rodape-links li { padding-bottom: 4px; font: 400 16px/24px 'Roboto Site', Roboto, 'Segoe UI', Arial, sans-serif; }
.wp-rodape-links a { color: inherit; text-decoration: none; }
.wp-rodape-links a:hover, .wp-rodape-links a:focus-visible { text-decoration: underline; }
.wp-rodape-final { margin: 18px 0 0; font-size: 13px; text-align: center; }
/* Logo de apoiador sob "Apoio e financiamento" (ex.: Porticus) */
.wp-rodape-apoio { margin-top: 14px; }
.wp-rodape-apoio-img { display: block; width: 100%; max-width: 185px; height: auto; }

.wp-rodape-selo { height: 15px; margin-top: 24px; background-size: cover; background-position: center; }
.wp-rodape-selo-css { background-image: linear-gradient(90deg,
        var(--wp-cor-destaque, #417486) 0 12.5%, var(--wp-cor-secundaria, #4E6227) 12.5% 25%,
        var(--wp-cor-aa0d6fa, #ECA021) 25% 37.5%, var(--wp-cor-primaria, #BA603C) 37.5% 50%,
        var(--wp-cor-destaque, #417486) 50% 62.5%, var(--wp-cor-secundaria, #4E6227) 62.5% 75%,
        var(--wp-cor-aa0d6fa, #ECA021) 75% 87.5%, var(--wp-cor-primaria, #BA603C) 87.5% 100%); }

/* --- telas médias: menu compacto --------------------------- */
/* Logo + 6 itens pedem ~1100px no tamanho cheio; abaixo de 1280px o último
   item sairia da tela (notebook 1366 com zoom de 125%, iPad deitado). Como
   o site faz até 1366px, a fonte do menu desce; margens e logo encolhem. */
@media (min-width: 1025px) and (max-width: 1279.98px) {
    .wp-interno, .wp-rodape-interno { width: calc(100% - 48px); }
    .wp-menu { gap: 4px; margin-left: 24px; }
    .wp-topo-logo, .wp-barra-logo { margin-left: 0; }
    .wp-menu-link { padding: 0 10px; gap: 6px; font-size: 13px; }
    .wp-barra-logo-img { height: 46px; }
    .wp-coluna { width: 300px; }
    .wp-painel--lista .wp-coluna { width: 400px; }
    .wp-painel-marca { flex-basis: 200px; }
}

/* --- telas estreitas (mesmo ponto de quebra do site) ------ */
@media (max-width: 1024px) {
    .cabecalho-wp { position: static; }
    .wp-interno, .wp-rodape-interno { width: calc(100% - 32px); }
    .wp-barra { height: auto; }
    .wp-barra .wp-interno { flex-wrap: wrap; height: auto; padding: 6px 0; }
    .wp-hamburguer { display: inline-flex; }
    .wp-topo-logo, .wp-barra-logo { margin-left: 0; }
    .wp-menu { display: none; flex: 0 0 100%; flex-direction: column; align-items: stretch;
               height: auto; margin: 8px 0 4px; }
    .wp-barra-aberta .wp-menu { display: flex; }
    .wp-menu-item { height: auto; flex-direction: column; align-items: stretch; }
    .wp-menu-link { height: 44px; width: 100%; justify-content: space-between; }
    .wp-painel { position: static; transform: none; width: auto; max-width: none;
                 flex-direction: column; gap: 14px; padding: 16px 14px; border-radius: 12px;
                 margin: 2px 0 6px; box-shadow: none; }
    .wp-colunas { flex-direction: column; gap: 6px; }
    .wp-coluna, .wp-painel--lista .wp-coluna, .wp-painel--portal .wp-coluna,
    .wp-coluna:not(:has(> .wp-coluna-titulo)) { width: auto; padding-top: 0; }
    .wp-painel-marca { display: none; }
    .wp-destaque { width: auto; flex: 0 0 auto; }
    .wp-rodape-linha { grid-template-columns: 1fr; gap: 28px; }
    .wp-rodape-colunas { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 24px 0; }
}
@media (max-width: 575.98px) {
    .wp-topo { height: auto; padding: 8px 0; }
    .wp-topo-logo-img { max-width: 190px; }
    .wp-rodape-colunas { grid-template-columns: 1fr; }
    /* 5 redes de 48px com o espaço de 36px do site passam de 375px */
    .wp-sociais-rodape { gap: 14px; flex-wrap: wrap; }
    .wp-boletim-titulo { font-size: 24px; }
    .sub-titulo { font-size: .78rem; }
    /* sem espaço para "· Agricultura Familiar": fica só "Portal de Dados",
       em vez de um "Portal de Dados · Agric…" cortado */
    .sub-sep, .sub-marca { display: none; }
}
/* Celulares de até 420px (360px é o Android mais comum): logo e 5 redes
   não cabiam lado a lado e os ícones cobriam o logo. Os ícones encolhem
   e o logo cede o que faltar, sem sobrepor. */
@media (max-width: 420px) {
    .wp-topo .wp-interno { gap: 12px; }
    .wp-topo-logo { flex: 1 1 auto; }
    .wp-topo-logo-img { max-width: 100%; }
    .wp-topo .wp-sociais { gap: 4px; flex: 0 0 auto; }
    .wp-topo .wp-social { width: 28px; height: 28px; }
    .wp-topo .wp-social svg { width: 14px; height: 14px; }
    .wp-topo-logo-img { height: auto; max-height: 44px; }
}

/* --- faixa do topo recolhe ao rolar (como no site oficial) -- */
/* Só em telas largas, onde o cabeçalho é fixo: a faixa branca sobe para
   fora da tela e fica a barra verde, com a sub-barra colada nela. A classe
   no <body> vem do portal.js. */
@media (min-width: 1025px) {
    .cabecalho-wp { transition: transform .25s ease; }
    body.cabecalho-recolhido .cabecalho-wp {
        transform: translateY(calc(-1 * var(--altura-wp-topo)));
    }
    /* fora da tela, os links da faixa também saem da ordem do Tab */
    body.cabecalho-recolhido .wp-topo { visibility: hidden; transition: visibility 0s .25s; }
}
@media (prefers-reduced-motion: reduce) {
    .cabecalho-wp { transition: none; }
}

/* --- tela cheia com o cabeçalho do site --------------------- */
/* Some o logo/menu do site, mas fica a sub-barra com o nome do Observatório
   e o botão de sair. A pílula flutuante de saída não é mais necessária. */
.sub-so-cheia, .sub-acoes .rot-sair { display: none; }
body.tela-cheia .sub-so-cheia { display: inline; }
body.tela-cheia .sub-acoes .rot-entrar { display: none; }
body.tela-cheia .sub-acoes .rot-sair { display: inline; }

body.tela-cheia .cabecalho-wp .wp-topo,
body.tela-cheia .cabecalho-wp .wp-barra { display: none; }
body.tela-cheia .cabecalho-wp { transform: none; }
/* faixa amarela do site no topo: marca que a tela cheia está ativa */
body.tela-cheia .cabecalho-wp .wp-subbarra { border-top: 4px solid var(--wp-cor-aa0d6fa, #ECA021); }
body.tela-cheia .cabecalho-wp ~ .btn-sair-cheia { display: none; }
body.tela-cheia .cabecalho-wp ~ .main-content .seletor-base-box { padding-right: 1.25rem; }
@media (min-width: 1025px) {
    /* cabeçalho fixo: o conteúdo só precisa deixar a altura da sub-barra */
    body.tela-cheia .cabecalho-wp ~ .main-content {
        padding-top: calc(var(--altura-subbarra) + 1.25rem);
    }
}

/* --- "Pular para o conteúdo" (layout.py) -------------------- */
/* Fora da vista até receber o foco pelo Tab; aí aparece no canto, acima
   do cabeçalho fixo (z-index maior que o 1050 do .cabecalho). */
.pular-conteudo { position: absolute; left: 12px; top: -100px; z-index: 1100;
                  padding: .55rem 1rem; border-radius: 0 0 8px 8px; background: #2A2A2A;
                  color: #fff; font: 600 15px/1.2 Inter, 'Segoe UI', Arial, sans-serif;
                  text-decoration: none; }
.pular-conteudo:focus { top: 0; color: #fff; outline: 2px solid #ECA021; outline-offset: 2px; }
/* o destino recebe foco por programa, não pelo Tab: sem contorno */
.main-content:focus { outline: none; }

/* =========================================================
   FILTROS NO CELULAR (abaixo de 576px)
   Nessa largura o Shiny mostra OU os filtros OU o conteúdo, e o único
   acesso aos filtros era uma seta de 32px sem texto. Aqui ela vira um
   botão largo com rótulo. O texto acompanha o aria-expanded que o
   próprio Shiny mantém; acima de 576px nada disto se aplica.
   O seletor repete o da regra de celular do Shiny ([data-collapsible-
   mobile] + :not(.sidebar-right)) para ter precedência sobre ela.
   ========================================================= */
@media (max-width: 575.98px) {
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right) > .collapse-toggle {
        grid-column: 1 / -1;
        justify-self: stretch;
        left: 0; right: 0;
        width: auto; height: auto; min-height: 44px;   /* alvo de toque confortável */
        margin: 0 1rem;
        display: flex; align-items: center; justify-content: center; gap: .55rem;
        background: var(--cor-verde); color: #fff;
        border: 1.5px solid var(--cor-verde); border-radius: 8px;
        font-size: .95rem; font-weight: 700; letter-spacing: .01em;
        box-shadow: 0 3px 10px rgba(79, 96, 54, .28);
    }
    /* A seta original some da vista, mas NÃO pode levar display:none: o
       Shiny só conclui a abertura/fechamento no transitionend do giro
       dela. Sem a animação o painel ficaria travado em "transitioning". */
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right) > .collapse-toggle > .collapse-icon {
        position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none;
    }

    /* Ícone desenhado com máscara: herda a cor do texto */
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right) > .collapse-toggle::before {
        content: ""; width: 1.1rem; height: 1.1rem; flex-shrink: 0;
        background: currentColor;
        -webkit-mask: var(--icone-toggle) center / contain no-repeat;
                mask: var(--icone-toggle) center / contain no-repeat;
    }

    /* Fechado: abre os filtros */
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right) > .collapse-toggle[aria-expanded="false"] {
        --icone-toggle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 5h17l-6.5 7.5V19l-4 2v-8.5z'/%3E%3C/svg%3E");
    }
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right) > .collapse-toggle[aria-expanded="false"]::after { content: "Filtros"; }

    /* Aberto: volta ao conteúdo. Botão claro, para não competir com
       o "Atualizar Visualização" logo abaixo. */
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right) > .collapse-toggle[aria-expanded="true"] {
        --icone-toggle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 12H5'/%3E%3Cpath d='M11 6l-6 6 6 6'/%3E%3C/svg%3E");
        background: #fff; color: var(--cor-verde-dark);
        box-shadow: none;
    }
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right) > .collapse-toggle[aria-expanded="true"]::after { content: "Voltar"; }
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right):has([id^="mod_graficos-"]) > .collapse-toggle[aria-expanded="true"]::after { content: "Ver gráfico"; }
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right):has([id^="mod_extracao-"]) > .collapse-toggle[aria-expanded="true"]::after { content: "Ver extração"; }
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right):has([id^="mod_ia-"]) > .collapse-toggle[aria-expanded="true"]::after { content: "Ver relatório"; }

    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right) > .collapse-toggle:focus-visible { outline: 3px solid var(--cor-dourado); outline-offset: 2px; }

    /* O botão ficou mais alto que a seta original: afasta os filtros dele */
    .bslib-sidebar-layout[data-collapsible-mobile="true"]:not(.sidebar-right) > aside > .sidebar-content { margin-top: .75rem; }

    /* Destino da rolagem ao fechar os filtros (ver portal.js) */
    .bslib-sidebar-layout { scroll-margin-top: 1rem; }
}

/* =========================================================
   CORES DOS QUADROS DA PÁGINA INICIAL
   Quadro 1 em petróleo e quadro 2 em terracota, as cores dos
   ícones 1 e 2 do "Como funciona" (TRILHA em ui/inicial.py).
   ========================================================= */
/* Quadro 1: petróleo */
.ent-painel[aria-labelledby="ent-titulo-bases"] {
    background: var(--cor-petroleo); border-color: var(--cor-petroleo);
}
.ent-painel[aria-labelledby="ent-titulo-bases"] .ent-base { background: #fff; }
.ent-painel[aria-labelledby="ent-titulo-bases"] .ent-base:hover { border-color: var(--cor-petroleo-dark); }
.ent-painel[aria-labelledby="ent-titulo-bases"] .ent-secao-num { background: #fff; color: var(--cor-petroleo); }
.ent-painel[aria-labelledby="ent-titulo-bases"] .ent-secao-titulo { color: #fff; }
.ent-painel[aria-labelledby="ent-titulo-bases"] .ent-secao-texto { color: rgba(255, 255, 255, .85); }

/* Quadro 2: terracota, com cada grupo num cartão branco
   (dentro dos cartões, rótulos e ícones mantêm as cores dos grupos) */
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] {
    background: var(--cor-terracota); border-color: var(--cor-terracota);
    display: flex; flex-direction: column;
}
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] .ent-secao-num { background: #fff; color: var(--cor-terracota); }
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] .ent-secao-titulo { color: #fff; }
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] .ent-secao-texto { color: rgba(255, 255, 255, .88); }
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] .ent-grupos { gap: 1rem; }
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] .ent-grupo {
    background: #fff; border-radius: 14px; padding: 1rem 1.2rem 1.15rem;
}
/* Ícones das ferramentas em quadrado sólido, como os do "Como funciona" */
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] .ent-tile--suave { color: #fff; }
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] .ent-tile--suave.ent-tile--petroleo  { background: var(--cor-petroleo); color: #fff; }
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] .ent-tile--suave.ent-tile--terracota { background: var(--cor-terracota); color: #fff; }
.ent-painel[aria-labelledby="ent-titulo-ferramentas"] .ent-tile--suave.ent-tile--verde     { background: var(--cor-verde); color: #fff; }

/* Quadro 3: verde, o passo "Leve com você" da trilha, abaixo do quadro 2 */
/* Verde um pouco mais claro que --cor-verde, para não pesar mais que os quadros 1 e 2 */
.ent-painel--verde { --verde-quadro: #6b7e4c; background: var(--verde-quadro); border-color: var(--verde-quadro); }
.ent-painel--verde .ent-secao-cabeca { margin-bottom: 0; }
.ent-painel--verde .ent-secao-num { background: #fff; color: var(--verde-quadro); }
.ent-painel--verde .ent-secao-titulo { color: #fff; }
.ent-painel--verde .ent-secao-texto { color: rgba(255, 255, 255, .9); }
.ent-painel--verde .ent-secao-texto strong { color: #fff; }

/* Coluna da direita (quadros 2 e 3) e quadro 1 terminam na mesma altura:
   o quadro 2 estica para ocupar a sobra */
.ent-grade { align-items: stretch; }
.ent-coluna { display: flex; flex-direction: column; gap: 1.75rem; }
.ent-coluna > .ent-painel:first-child { flex: 1; }
@media (max-width: 1080px) { .ent-coluna { gap: 1.5rem; } }
