/**
 * GeoAgro SRP — v37 Dashboard AgriBusiness CIEA
 * ─────────────────────────────────────────────
 * Estilos do shell que envolve o mapa GeoAgro como painel central.
 * Escopo isolado em .agbz-root — não vaza para o tema WordPress.
 * Variáveis CSS (--agbz-*) permitem personalização via White Label.
 */

.agbz-root {
    /* ── Paleta dashboard (terminal financeiro do agro) ───────── */
    --agbz-bg:         #060C0A;
    --agbz-bg-panel:   #0F2620;
    --agbz-card:       #142822;
    --agbz-card-alt:   #18302A;
    --agbz-border:     rgba(201, 161, 74, 0.10);
    --agbz-border-st:  rgba(201, 161, 74, 0.20);
    --agbz-gold:       #D4AD5A;
    --agbz-gold-soft:  #E8C26E;
    --agbz-green-up:   #43E97B;
    --agbz-red-down:   #FF5C5C;
    --agbz-brand:      #3FA34D;
    --agbz-text:       #F2EDE0;
    --agbz-text-2:     #C4D2C8;
    --agbz-muted:      #7E8E84;
    --agbz-muted-dk:   #4D5E55;

    /* ── Tipografia ───────────────────────────────────────────── */
    --agbz-f-display:  'Fraunces', Georgia, serif;
    --agbz-f-ui:       'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    --agbz-f-mono:     'JetBrains Mono', 'SF Mono', Menlo, monospace;

    box-sizing: border-box;
    width: 100%;

    /* ════════════════════════════════════════════════════════════
       v43 — LAYOUT VIEWPORT-BOUNDED (Zero Scrolling Overflow)
       ────────────────────────────────────────────────────────────
       Antes: min-height: 100vh + overflow: visible deixava o mapa
       (70vh) somar com header + ticker + macro + foot e estourar
       a viewport, forçando rolagem global e cortando elementos.

       Agora: o root é um grid de altura EXATAMENTE 100vh com 4
       linhas (ticker | header | shell | foot). O `shell` é a única
       linha 1fr (cresce/encolhe), enquanto as outras são `auto`.
       Combinado com min-height: 0 nos filhos, garante que TODOS
       os elementos cabem na viewport sem precisar rolar a página.

       v63 — Removida a confinação 100vh + overflow:hidden:
       O dashboard cresceu (carrossel de patrocinadores v59 +
       potencialmente mais widgets futuros) e ficou maior que a
       viewport em telas médias/pequenas. Mudar pra min-height
       permite que o conteúdo extrapole e o usuário role
       naturalmente. overflow:visible volta o page-scroll padrão
       do browser. As colunas internas seguem com overflow-y:auto
       individual (definido em outras regras), então quem rola é
       a página como um todo, não cada coluna.
    ════════════════════════════════════════════════════════════ */
    /* ════════════════════════════════════════════════════════════
       v103 — LAYOUT FLUIDO (substitui viewport-bounded da v78)
       ────────────────────────────────────────────────────────────
       Histórico: v43 → v63 → v77 → v78 amarraram cada zona do
       dashboard a uma fração da viewport (3vh/7vh/42vh/8vh/42vh/4vh).
       O resultado visual era um "cockpit travado" — cada seção
       grudada a um pedaço da tela, sensação de Bloomberg terminal.
       Conteúdo dentro dos cards tinha overflow-y:auto individual,
       quebrando o fluxo natural de leitura.

       v103: alinha o dashboard com o padrão dos outros plugins SRP
       (avaliacao-senar, srp-pesquisa, expopinda-direcionador) — todos
       usam container content-driven com altura natural, sem grid em
       vh, scroll global da página. Cards têm altura definida pelo
       conteúdo. O mapa central recebe um piso generoso (min-height
       via .agbz-mapwrap) e cresce conforme o conteúdo.

       Resultado: dashboard rola como uma página normal, com fluxo
       vertical natural. Mantemos o grid pra ordenar as áreas
       (ticker → header → shell → macro → parceiros → foot), mas
       cada linha agora é `auto` em vez de vh fixo. */
    min-height: 100vh;
    display: grid;
    grid-template-rows: auto auto auto auto auto auto;
    overflow: visible;

    background:
        radial-gradient(800px 400px at 80% -10%, rgba(63,163,77,0.06), transparent 60%),
        radial-gradient(600px 300px at -10% 110%, rgba(212,173,90,0.05), transparent 60%),
        var(--agbz-bg);
    color: var(--agbz-text);
    font-family: var(--agbz-f-ui);
    font-variant-numeric: tabular-nums;
    isolation: isolate;
}
.agbz-root *,
.agbz-root *::before,
.agbz-root *::after { box-sizing: border-box; }

/* ═══════════════════════════════════════════════════════════════
   v98 — CONTEXTO SLIM para CARDS individuais (shortcodes únicos)
   ───────────────────────────────────────────────────────────────
   Wrapper aplicado por cada card-shortcode (`[agribusiness_clima]`,
   `[agribusiness_commodities]` etc.) quando usado FORA do painel
   monolítico. Replica APENAS os tokens CSS e a tipografia base —
   SEM o layout fluido vertical de viewport-bound do `.agbz-root`,
   pra não forçar grid/flex column no contexto do builder de
   página (Elementor, Gutenberg, etc.).

   Assim as classes filhas (.agbz-card, .agbz-clima-cell, .agbz-quote,
   .agbz-macro-cell, .agbz-spons__*) — que usam `var(--agbz-gold)`,
   `var(--agbz-bg-panel)` etc. — resolvem corretamente também fora
   do painel completo.

   O `.agbz-root` continua tendo todos os tokens + layout;
   `.agbz-ctx` é o subset mínimo pra card-em-página-arbitrária.
═══════════════════════════════════════════════════════════════ */
.agbz-ctx {
    /* Paleta — espelha .agbz-root */
    --agbz-bg:         #060C0A;
    --agbz-bg-panel:   #0F2620;
    --agbz-card:       #142822;
    --agbz-card-alt:   #18302A;
    --agbz-border:     rgba(201, 161, 74, 0.10);
    --agbz-border-st:  rgba(201, 161, 74, 0.20);
    --agbz-gold:       #D4AD5A;
    --agbz-gold-soft:  #E8C26E;
    --agbz-green-up:   #43E97B;
    --agbz-red-down:   #FF5C5C;
    --agbz-brand:      #3FA34D;
    --agbz-text:       #F2EDE0;
    --agbz-text-2:     #C4D2C8;
    --agbz-muted:      #7E8E84;
    --agbz-muted-dk:   #4D5E55;

    /* Tipografia — espelha .agbz-root */
    --agbz-f-display:  'Fraunces', Georgia, serif;
    --agbz-f-ui:       'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    --agbz-f-mono:     'JetBrains Mono', 'SF Mono', Menlo, monospace;

    box-sizing: border-box;
    width: 100%;
    color: var(--agbz-text);
    font-family: var(--agbz-f-ui);
    font-variant-numeric: tabular-nums;
    isolation: isolate;
    position: relative;
}
.agbz-ctx *,
.agbz-ctx *::before,
.agbz-ctx *::after { box-sizing: border-box; }

/* Quando o card é usado avulso (não em .agbz-root), dá uma respiração
   mínima ao redor do conteúdo pra não colar nos elementos do builder.
   Padding curto, configurável via override se o usuário quiser zerar. */
.agbz-ctx--card {
    padding: 0;
    background: transparent;
    border-radius: 0;
}

/* v99 — Em mobile (≤768px), QUALQUER largura configurada pelo admin no
   editor de diagramação é forçada a 100% pra evitar cards estreitos
   demais (ex.: width: 33% configurado pra desktop resultaria num card
   de ~120px num iPhone). O admin configura desktop; mobile colapsa
   automaticamente pra full-width — padrão responsivo. */
@media ( max-width: 768px ) {
    .agbz-ctx--card {
        width:      100% !important;
        max-width:  100% !important;
        margin-left:  0  !important;
        margin-right: 0  !important;
    }
}


/* ── Acessibilidade ───────────────────────────────────────── */
.agbz-hidden { display: none !important; }
.agbz-sr-only {
    position: absolute; width: 1px; height: 1px;
    padding: 0; margin: -1px; overflow: hidden;
    clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* ─────────────────────────────────────────────────────────────
   TICKER (faixa superior animada com cotações)
   ─────────────────────────────────────────────────────────────
   v37 FIX — STICKY POSITIONING
   Ticker permanece ancorado no topo da viewport durante toda a
   navegação no mapa. Z-index 9999 garante que NENHUM elemento do
   Leaflet (controles, popups, polígonos, fullscreen) o sobreponha.
   pointer-events: auto força o ticker a receber eventos do mouse
   mesmo quando o Leaflet captura wheel events no seu container.
───────────────────────────────────────────────────────────── */
/* ═══════════════════════════════════════════════════════════════
   v41 — TICKER DE COMMODITIES (refatorado p/ responsividade estrita)
   ───────────────────────────────────────────────────────────────
   Antes: height fixo de 36px, items sem min-width, animação fixa de
   60s. Em mobile e resoluções intermediárias, os blocos encavalavam
   e geravam "linhas fantasmas" por overflow vertical mal calculado.

   Agora:
   • height → min-height (cresce se necessário, nunca corta)
   • items com flex: 0 0 auto + min-width consistente por breakpoint
   • spans internos com white-space: nowrap absoluto (nenhum colapso)
   • animação ajustada por breakpoint para manter velocidade legível
   • gap e padding escalonáveis (não acumulam no mobile)
═══════════════════════════════════════════════════════════════ */
.agbz-ticker {
    /* v74 — Ticker ocupa exatamente os 4vh da row 1 do root.
       Removido sticky/position (agora é parte fixa do grid).
       Removido min-height (forçaria altura > 4vh em viewports
       altas, quebrando o grid template do root). */
    background: linear-gradient(180deg, #050A08, #0A1410);
    border-bottom: 1px solid var(--agbz-border-st);
    overflow: hidden;
    display: flex;
    align-items: center;
    pointer-events: auto;
    flex-shrink: 0;
    isolation: isolate;
    white-space: nowrap;
    min-height: 0;
}
@keyframes agbz-ticker-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}
.agbz-ticker-rail {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 32px;
    white-space: nowrap;
    /* v148 — 60s → 180s (3× mais lento). Briefing 28/jun/2026 do Michel:
       "a velocidade dos Ticker de Cotações deve ser extremamente reduzida".
       Em 60s a leitura era apressada demais; 180s dá tempo confortável de
       absorver cada cotação sem precisar pausar com hover. */
    animation: agbz-ticker-scroll 180s linear infinite;
    padding-left: 24px;
    /* v41 — rail nunca encolhe, sempre maior que a viewport */
    flex-shrink: 0;
    /* v41 — width:max-content garante que itens não comprimam */
    width: max-content;
    min-width: 100%;
}
.agbz-ticker:hover .agbz-ticker-rail { animation-play-state: paused; }

.agbz-tick-item {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--agbz-f-mono);
    font-size: 12px;
    font-weight: 500;
    /* v41 — flex: 0 0 auto + min-width consistente
       Impede que items colapsem mesmo se a rail tentar comprimi-los */
    flex: 0 0 auto;
    min-width: 0;            /* permite conteúdo intrínseco */
    white-space: nowrap;
    /* v41 — line-height garantido evita variação vertical entre itens */
    line-height: 1.4;
}

.agbz-tick-lbl {
    color: var(--agbz-muted);
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-weight: 600;
    /* v41 — spans internos nunca quebram */
    white-space: nowrap;
    flex-shrink: 0;
}
.agbz-tick-val {
    color: var(--agbz-text);
    font-weight: 700;
    white-space: nowrap;
    flex-shrink: 0;
}
.agbz-tick-chg {
    font-size: 10px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 3px;
    /* v41 — bloco de variação nunca encolhe nem quebra */
    white-space: nowrap;
    flex-shrink: 0;
}
.agbz-up   { color: var(--agbz-green-up); background: rgba(67, 233, 123, 0.14); }
.agbz-down { color: var(--agbz-red-down); background: rgba(255, 92, 92, 0.14); }
.agbz-flat { color: #9CAFA2; background: rgba(156, 175, 162, 0.10); }
.agbz-tick-sep {
    color: var(--agbz-muted-dk);
    flex-shrink: 0;
}

/* ─────────────────────────────────────────────────────────────
   HEADER institucional
   ─────────────────────────────────────────────────────────────
   v37 FIX — STICKY ABAIXO DO TICKER
   O cabeçalho institucional (logo AgriBusiness CIEA + tagline + ao vivo
   + relógio) também é sticky, ancorado a 36px do topo (logo abaixo do
   ticker). Z-index 9998 — um nível abaixo do ticker (9999) — garante
   que ticker fique sempre na frente em sobreposição.

   Background sólido com gradiente + backdrop-filter para legibilidade
   total sobre qualquer ponto do mapa quando o usuário rolar.
───────────────────────────────────────────────────────────── */
.agbz-header {
    /* v74 — Header ocupa 4vh (row 2 do root). Sem sticky/blur. */
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 4px 18px;
    background:
        linear-gradient(180deg, rgba(212,173,90,0.04), transparent),
        var(--agbz-bg);
    border-bottom: 1px solid var(--agbz-border);
    flex-shrink: 0;
    overflow: hidden;
    min-height: 0;
}
.agbz-header-emblem {
    width: 32px; height: 32px;
    border-radius: 50%;
    flex-shrink: 0;
    object-fit: cover;
    background: radial-gradient(circle, var(--agbz-gold) 30%, #8B6B2A);
    box-shadow: 0 4px 12px rgba(212, 173, 90, 0.25);
}
.agbz-header-txt { flex: 1; min-width: 0; }
.agbz-header-brand {
    /* v74 — Compactado de 26px → 18px para caber em 4vh */
    font-family: var(--agbz-f-display);
    font-weight: 500;
    font-size: 18px;
    line-height: 1.1;
    color: var(--agbz-text);
    letter-spacing: -0.015em;
}
.agbz-header-brand em {
    font-style: italic;
    font-weight: 400;
    color: var(--agbz-gold-bright, var(--agbz-gold));
}
.agbz-header-tagline {
    /* v74 — Compactado de 14px → 11px, inline com brand */
    font-family: var(--agbz-f-display);
    font-style: italic;
    font-weight: 400;
    font-size: 11px;
    color: var(--agbz-text-2);
    margin-top: 1px;
    line-height: 1.2;
    letter-spacing: 0;
}
.agbz-header-sub {
    /* v74 — Compactado de 10px → 9px, sem margin-top */
    font-size: 9px;
    color: var(--agbz-muted);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-weight: 600;
    margin-top: 1px;
}
.agbz-header-sub span { color: var(--agbz-gold); }
.agbz-header-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
    flex-shrink: 0;
}
.agbz-header-live {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 10px;
    color: var(--agbz-green-up);
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-weight: 700;
    background: rgba(67, 233, 123, 0.14);
    padding: 3px 9px;
    border-radius: 999px;
}
@keyframes agbz-pulse {
    0%, 100% { opacity: 0.4; transform: scale(0.85); }
    50%      { opacity: 1;   transform: scale(1); }
}
.agbz-dot {
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--agbz-green-up);
    box-shadow: 0 0 8px var(--agbz-green-up);
    animation: agbz-pulse 1.6s ease-in-out infinite;
}
.agbz-header-clock {
    font-family: var(--agbz-f-mono);
    text-align: right;
    font-size: 9.5px;
    color: var(--agbz-muted);
    letter-spacing: 0.10em;
    line-height: 1.3;
}
.agbz-header-clock div { text-transform: uppercase; }
.agbz-header-clock strong {
    display: block;
    color: var(--agbz-gold);
    font-size: 14px;
    font-weight: 700;
    margin-top: 1px;
}

/* ─────────────────────────────────────────────────────────────
   SHELL principal · grid 3 colunas
───────────────────────────────────────────────────────────── */
.agbz-shell {
    /* v76 — Padding horizontal AUMENTADO de 14px para 32px.
       Michel reportou que os cards da coluna direita
       (commodities) e o macro estavam sendo cortados na borda
       direita da viewport. Com 32px de padding em cada lado,
       todos os cards têm folga visual da borda da tela.

       v103 — LAYOUT FLUIDO:
       • REMOVIDO `overflow: hidden` (clipava conteúdo quando o
         shell crescia acima da viewport — fonte do "travado").
       • REMOVIDO `min-height: 0` (era um hack pra grid 100vh).
       • align-items: start (em vez de stretch) — cards ganham
         altura natural pelo conteúdo, não esticam pra forçar
         alinhamento numa altura imposta pelo grid pai. */
    width: 100%;
    margin: 0;
    padding: 8px 32px;
    display: grid !important;
    grid-template-columns: 15% 70% 15%;
    grid-template-areas: "left center right";
    gap: 14px;
    align-items: start !important;     /* v103 — era `stretch !important` */
    overflow: visible;                  /* v103 — era `hidden` */
    box-sizing: border-box;
}
.agbz-shell > * { min-width: 0; min-height: 0; }

/* v74 — Breakpoint ≤1280px: laterais ficam um pouco maiores
   pra commodities/filtros não ficarem espremidos */
@media (max-width: 1280px) {
    .agbz-shell {
        grid-template-columns: 18% 64% 18%;
    }
}
/* v74 — ≤900px vira coluna única (mobile) */
@media (max-width: 900px) {
    .agbz-root {
        height: auto !important;
        max-height: none !important;
        grid-template-rows: auto !important;
        overflow: visible !important;
    }
    .agbz-shell {
        grid-template-columns: 1fr;
        grid-template-areas:
            "left"
            "center"
            "right";
        padding: 12px;
        gap: 12px;
        height: auto !important;
        align-items: start !important;
    }
    .agbz-col-left, .agbz-col-right { height: auto !important; }
    .agbz-mapwrap { min-height: 360px !important; height: 360px !important; }
}
.agbz-col-left   {
    /* v78 — Estratégia mudou: a COLUNA não rola, mas cada
       card filho rola separadamente (CTA fixo no topo,
       Filtros e Clima dividem a sobra com flex: 1 e
       scroll interno via card-body-scroll). */
    grid-area: left;
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    height: 100% !important;
    align-self: stretch !important;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
}
.agbz-col-right  {
    /* v78 — Mesmo padrão na coluna direita.
       Commodities precisa rolar internamente, não a coluna toda. */
    grid-area: right;
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    height: 100% !important;
    align-self: stretch !important;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
}

/* v78 — Cards de Filtros e Clima dividem a altura disponível
   na coluna esquerda. flex: 1 1 0 + min-height: 0 fazem cada
   card encolher se preciso, dando espaço para o filho rolar. */
.agbz-col-left .agbz-card:not(.agbz-cta-alianca) {
    flex: 1 1 0;
    min-height: 0;
}
/* v49 — Placeholder visível quando cotações vazias. */
.agbz-quote--empty {
    border: 1px dashed var(--agbz-muted-dk) !important;
    opacity: .85;
}
.agbz-quote--empty .agbz-quote-name {
    color: var(--agbz-muted) !important;
}
.agbz-quote--empty .agbz-quote-chg strong {
    color: var(--agbz-gold);
    font-weight: 700;
}
.agbz-macro      {
    /* v78 — Michel reportou que o macro estava MAIS LARGO que
       as colunas do painel. Causa: box-sizing padrão é
       content-box, então padding+border ADICIONAM à largura.
       Com margin: 0 32px + padding: 8px 14px + border 1px,
       a largura renderizada estourava o shell em 30px.
       FIX: box-sizing: border-box garante que padding+border
       são INCLUÍDOS na largura calculada (margin: 0 32px é
       respeitado exatamente). */
    width: auto;
    box-sizing: border-box;
    padding: 8px 14px;
    overflow: hidden;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* ── Card genérico ───────────────────────────────────────────── */
.agbz-card {
    background: var(--agbz-card);
    border: 1px solid var(--agbz-border);
    border-radius: 10px;
    overflow: hidden;
    /* v76 — display:flex p/ que .agbz-card-body-scroll filho
       possa preencher altura disponível e rolar internamente */
    display: flex;
    flex-direction: column;
    min-height: 0;
}
.agbz-card-title {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--agbz-gold);
    padding: 10px 12px 8px;
    border-bottom: 1px solid var(--agbz-border);
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.agbz-card-title small {
    font-weight: 500;
    color: var(--agbz-muted);
    letter-spacing: 0.04em;
    text-transform: none;
    font-size: 10px;
}
.agbz-card-body { padding: 10px 12px; }

/* ── Toggle list (filtros) ─────────────────────────────────── */
.agbz-toggle-list { display: flex; flex-direction: column; gap: 4px; }

/* ─────────────────────────────────────────────────────────────────────
   v148 → v149 — Busca por propriedade no card "Filtros GeoAgro"
   ─────────────────────────────────────────────────────────────────────
   Briefing 28/jun/2026 do Michel.

   v149 — FIX DE CONTRASTE: na v148 o texto digitado saía PRETO sobre
   fundo escuro (Image fornecida pelo Michel). Causa: o `color: var(--agbz-text)`
   estava sendo sobrescrito por algum reset de tema WP. Solução em camadas:
     • Specificity maior: `.agbz-card .agbz-busca-prop` em vez de só `.agbz-busca-prop`
     • Valor hardcoded (não var) pra não depender de cascata externa
     • `!important` nas regras de cor (defensividade vs reset agressivo)
     • `-webkit-text-fill-color` cobre browsers que respeitam essa antes de `color`
     • `caret-color: #43E97B` torna o cursor verde-claro, visível mesmo no fundo escuro
   ─────────────────────────────────────────────────────────────────── */
.agbz-busca-prop-wrap {
    position: relative;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
}
.agbz-busca-prop-icon {
    position: absolute;
    left: 9px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 11px;
    color: #8a9088 !important;
    pointer-events: none;
    line-height: 1;
    z-index: 1;
}
.agbz-card .agbz-busca-prop,
input.agbz-busca-prop {
    flex: 1;
    width: 100%;
    background: #0F1F19 !important;
    border: 1px solid #1f3a2c;
    border-radius: 6px;
    color: #F2EDE0 !important;
    -webkit-text-fill-color: #F2EDE0 !important;
    caret-color: #43E97B;
    font-family: inherit;
    font-size: 13px;
    font-weight: 500;
    padding: 6px 28px 6px 28px;
    box-sizing: border-box;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.agbz-card .agbz-busca-prop::placeholder,
input.agbz-busca-prop::placeholder {
    color: #8a9088 !important;
    -webkit-text-fill-color: #8a9088 !important;
    font-style: italic;
    font-weight: 400;
    opacity: 1;
}
.agbz-card .agbz-busca-prop:focus,
input.agbz-busca-prop:focus {
    outline: none;
    border-color: #43E97B;
    box-shadow: 0 0 0 2px rgba(67, 233, 123, 0.18);
}
/* Defesa contra autofill do browser (Chrome em particular força amarelo
   no fundo e preto no texto via -webkit-autofill, ignorando regras normais) */
.agbz-card .agbz-busca-prop:-webkit-autofill,
input.agbz-busca-prop:-webkit-autofill {
    -webkit-box-shadow: 0 0 0 100px #0F1F19 inset !important;
    -webkit-text-fill-color: #F2EDE0 !important;
    caret-color: #43E97B !important;
}
.agbz-busca-prop-limpar {
    position: absolute;
    right: 4px;
    top: 50%;
    transform: translateY(-50%);
    background: transparent;
    border: none;
    color: #8a9088 !important;
    cursor: pointer;
    font-size: 11px;
    width: 22px;
    height: 22px;
    border-radius: 4px;
    line-height: 1;
    padding: 0;
    transition: background .15s ease, color .15s ease;
    z-index: 1;
}
.agbz-busca-prop-limpar:hover {
    background: rgba(255, 255, 255, 0.06);
    color: #F2EDE0 !important;
}

/* ─── v152 — Dropdown de autocompletar (painel agribusiness) ───────
   Briefing 29/jun/2026 do Michel. Resultado da busca aparece inline
   abaixo do input a partir de 2 chars digitados. Posicionamento
   absolute relativo ao .agbz-busca-prop-wrap (que é position: relative).
   Lista flutua sobre os toggles sem mexer o layout vertical.

   Paleta espelha o estilo dark do input pra continuidade visual.
   Item navegado por teclado destaca com inset border-left verde +
   leve overlay verde-fluorescente. */
.agbz-busca-prop-results {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background: #0F1F19;
    border: 1px solid #1f3a2c;
    border-radius: 8px;
    list-style: none;
    margin: 0;
    padding: 4px 0;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.42), 0 2px 6px rgba(0, 0, 0, 0.24);
    max-height: 320px;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    z-index: 50;
}
.agbz-busca-prop-results[hidden] { display: none; }
.agbz-busca-prop-results li {
    padding: 9px 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 10px;
    border-bottom: 1px solid rgba(212, 173, 90, 0.08);
    transition: background 0.12s ease;
}
.agbz-busca-prop-results li:last-child { border-bottom: none; }
.agbz-busca-prop-results li:hover {
    background: rgba(67, 233, 123, 0.05);
}
.agbz-busca-prop-results li.agbz-busca-prop-selecionado {
    background: rgba(67, 233, 123, 0.08);
    box-shadow: inset 3px 0 0 #43E97B;
}
.agbz-busca-prop-results .agbz-busca-prop-cor {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    border: 1.5px solid rgba(0, 0, 0, 0.25);
    flex-shrink: 0;
}
.agbz-busca-prop-results .agbz-busca-prop-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.agbz-busca-prop-results .agbz-busca-prop-nome {
    font-size: 13px;
    font-weight: 600;
    color: #F2EDE0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.agbz-busca-prop-results .agbz-busca-prop-meta {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-wrap: wrap;
    font-size: 11px;
    color: #8a9088;
}
.agbz-busca-prop-results .agbz-busca-prop-resp {
    max-width: 48%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.agbz-busca-prop-results .agbz-busca-prop-pill {
    padding: 1px 7px;
    border-radius: 999px;
    font-size: 10px;
    font-weight: 700;
    background: rgba(255, 255, 255, 0.05);
    color: #C4D2C8;
    border: 1px solid rgba(255, 255, 255, 0.08);
    white-space: nowrap;
}
.agbz-busca-prop-results .agbz-busca-prop-pill-sind {
    background: rgba(212, 173, 90, 0.12);
    color: #D4AD5A;
    border-color: rgba(212, 173, 90, 0.28);
}
.agbz-busca-prop-results .agbz-busca-prop-vazio {
    padding: 12px 14px;
    font-size: 12px;
    color: #8a9088;
    font-style: italic;
    text-align: center;
    cursor: default;
}
.agbz-busca-prop-results .agbz-busca-prop-vazio:hover {
    background: transparent;
}
.agbz-busca-prop-results .agbz-busca-prop-mais {
    padding: 8px 14px;
    font-size: 11px;
    color: #8a9088;
    font-style: italic;
    text-align: center;
    cursor: default;
    border-top: 1px solid rgba(212, 173, 90, 0.08);
}

.agbz-toggle {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 6px;
    border-radius: 5px;
    font-size: 11.5px;
    cursor: pointer;
    transition: background 0.15s;
    user-select: none;
}
.agbz-toggle:hover { background: rgba(255, 255, 255, 0.03); }
.agbz-toggle-sw {
    position: relative;
    flex-shrink: 0;
    width: 22px;
    height: 12px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.10);
    transition: background 0.18s;
}
.agbz-toggle-sw::after {
    content: '';
    position: absolute;
    top: 1px;
    left: 1px;
    width: 10px;
    height: 10px;
    background: #E5E1D4;
    border-radius: 50%;
    transition: transform 0.18s, background 0.18s;
}
.agbz-toggle.agbz-on .agbz-toggle-sw { background: var(--agbz-brand); }
.agbz-toggle.agbz-on .agbz-toggle-sw::after {
    transform: translateX(10px);
    background: #fff;
}
.agbz-toggle-dot {
    flex-shrink: 0;
    width: 7px;
    height: 7px;
    border-radius: 50%;
}
.agbz-toggle:not(.agbz-on) .agbz-toggle-dot { box-shadow: none !important; opacity: 0.5; }
.agbz-toggle-lbl {
    flex: 1;
    color: var(--agbz-text);
    transition: color 0.15s;
}
.agbz-toggle:not(.agbz-on) .agbz-toggle-lbl { color: var(--agbz-muted); }

/* ── Clima ───────────────────────────────────────────────── */
/* v49 — REDESIGN STACKED:
   Antes (v42-v48): grid 4×2 horizontal que ficava apertado na sidebar
   estreita; rótulos e valores não respiravam.
   Agora (v49): pilha vertical de cells full-width. Cada linha:
     [LABEL caixa alta pequena] ......... [VALOR mono grande]
   Hero (Temperatura) ocupa o topo com Archivo Black 28px.
   Cada métrica tem um acento lateral colorido próprio
   (border-left 3px) — sinal visual rápido para identificar.

   IMPORTANTE: o seletor .agbz-clima-cell continua existindo intacto,
   apenas seu container .agbz-clima ganhou a classe .agbz-clima-stack
   que dispara o novo layout. O JS (dashboard.js linha 211) chama
   `el.closest('.agbz-clima-cell')` — segue funcionando 100%. */

.agbz-clima.agbz-clima-stack {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.agbz-clima.agbz-clima-stack .agbz-clima-cell {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    background: var(--agbz-card-alt);
    border-left: 3px solid transparent;
    border-radius: 4px 6px 6px 4px;
    padding: 6px 10px 7px;
    transition: background .18s ease, border-color .18s ease;
    min-width: 0;
}
.agbz-clima.agbz-clima-stack .agbz-clima-cell:hover {
    background: rgba(212, 173, 90, .07);
}

.agbz-clima.agbz-clima-stack .agbz-clima-lbl {
    display: inline;
    margin: 0;
    font-size: 9.5px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--agbz-muted);
    font-weight: 700;
    white-space: nowrap;
    flex-shrink: 0;
}

.agbz-clima.agbz-clima-stack .agbz-clima-val {
    font-family: var(--agbz-f-mono);
    font-size: 14px;
    font-weight: 700;
    color: var(--agbz-text);
    line-height: 1.2;
    display: inline;
    margin: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: right;
    flex-shrink: 1;
    min-width: 0;
}
.agbz-clima.agbz-clima-stack .agbz-clima-val small {
    font-size: 10px;
    color: var(--agbz-muted);
    font-weight: 500;
    margin-left: 1px;
}
.agbz-clima.agbz-clima-stack .agbz-clima-val-sm {
    font-size: 12px;
}

/* HERO — Temperatura grande no topo, peso visual máximo.
   Empilha label em cima do valor (layout column) — único cell
   diferente do resto, para criar hierarquia visual clara. */
.agbz-clima.agbz-clima-stack .agbz-clima-hero {
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    padding: 10px 12px 11px;
    background: linear-gradient(135deg, rgba(212, 173, 90, .10), rgba(212, 173, 90, .02));
    border-left-color: var(--agbz-gold);
    margin-bottom: 2px;
}
.agbz-clima.agbz-clima-stack .agbz-clima-hero .agbz-clima-lbl {
    font-size: 9px;
    color: var(--agbz-gold);
    letter-spacing: .16em;
}
.agbz-clima.agbz-clima-stack .agbz-clima-hero .agbz-clima-val {
    font-family: 'Archivo Black', 'Poppins', 'Inter', sans-serif;
    font-weight: 900;
    font-size: 28px;
    line-height: 1;
    color: var(--agbz-text);
    text-align: left;
    letter-spacing: -.01em;
}
.agbz-clima.agbz-clima-stack .agbz-clima-hero .agbz-clima-val small {
    font-family: var(--agbz-f-ui);
    font-size: 13px;
    font-weight: 500;
    color: var(--agbz-text-2);
    margin-left: 4px;
    letter-spacing: 0;
}

/* CELL DE VENTO — comporta velocidade + direção lado a lado.
   O label fica à esquerda, valor numérico no meio, direção
   (NE/SE/etc) à direita em destaque sutil. */
.agbz-clima.agbz-clima-stack .agbz-clima-wind .agbz-clima-aux {
    font-family: var(--agbz-f-ui);
    font-size: 11px;
    font-weight: 600;
    color: var(--agbz-gold);
    letter-spacing: .04em;
    flex-shrink: 0;
    margin-left: 6px;
    padding-left: 8px;
    border-left: 1px solid rgba(212, 173, 90, .25);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 95px;
}

/* ACENTOS LATERAIS POR MÉTRICA — cada categoria climática ganha
   uma cor própria na borda esquerda, criando um "código de cores"
   intuitivo que o usuário aprende rapidamente.
   Paleta: cores semanticamente associadas a cada fenômeno. */
.agbz-clima.agbz-clima-stack .agbz-clima-cell[data-metric="hum"]   { border-left-color: #5DCAA5; }   /* teal — vapor d'água */
.agbz-clima.agbz-clima-stack .agbz-clima-cell[data-metric="rain"]  { border-left-color: #378ADD; }   /* azul — chuva */
.agbz-clima.agbz-clima-stack .agbz-clima-cell[data-metric="wind"]  { border-left-color: #D4AD5A; }   /* dourado — ar */
.agbz-clima.agbz-clima-stack .agbz-clima-cell[data-metric="uv"]    { border-left-color: #EF9F27; }   /* âmbar — sol */
.agbz-clima.agbz-clima-stack .agbz-clima-cell[data-metric="cloud"] { border-left-color: #888780; }   /* cinza — neutro */
.agbz-clima.agbz-clima-stack .agbz-clima-cell[data-metric="et0"]   { border-left-color: #97C459; }   /* verde — agronômico */

/* Indisponível: cell ganha estilo discreto para sinalizar
   "sem leitura recente" sem assustar o usuário. */
.agbz-clima.agbz-clima-stack .agbz-clima-cell[data-unavailable] {
    opacity: .55;
}
.agbz-clima.agbz-clima-stack .agbz-clima-cell[data-unavailable] .agbz-clima-val {
    color: var(--agbz-muted);
    font-family: var(--agbz-f-ui);
    font-size: 10px;
    font-style: italic;
    font-weight: 500;
}

/* RODAPÉ — localização + status, ocupando linha inteira no fluxo */
.agbz-clima.agbz-clima-stack .agbz-clima-loc {
    grid-column: unset; /* limpa regra antiga (era grid) */
    margin-top: 6px;
    padding: 6px 10px 0;
    font-size: 10px;
    color: var(--agbz-muted);
    display: flex;
    align-items: center;
    gap: 5px;
    flex-wrap: wrap;
    border-top: 0.5px solid rgba(255, 255, 255, .05);
}

/* ── Fallback: regras antigas do grid permanecem ativas SE o
   container não tiver a classe .agbz-clima-stack. Isso garante
   retrocompatibilidade se alguma página antiga ainda usar o HTML
   pré-v49 sem o novo modifier. ── */
.agbz-clima:not(.agbz-clima-stack) {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 6px;
}
.agbz-clima:not(.agbz-clima-stack) .agbz-clima-cell {
    background: var(--agbz-card-alt);
    border-radius: 5px;
    padding: 7px 8px;
    min-width: 0;
    transition: background 0.2s ease, color 0.2s ease;
}
.agbz-clima:not(.agbz-clima-stack) .agbz-clima-lbl {
    display: block;
    font-size: 9px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--agbz-muted);
    font-weight: 700;
}
.agbz-clima:not(.agbz-clima-stack) .agbz-clima-val {
    font-family: var(--agbz-f-mono);
    font-size: 16px;
    font-weight: 700;
    color: var(--agbz-text);
    line-height: 1.1;
    display: block;
    margin-top: 1px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.agbz-clima:not(.agbz-clima-stack) .agbz-clima-val small {
    font-size: 10px;
    color: var(--agbz-muted);
    font-weight: 500;
}
.agbz-clima:not(.agbz-clima-stack) .agbz-clima-val-sm {
    font-size: 13px;
}
.agbz-clima:not(.agbz-clima-stack) .agbz-clima-loc {
    grid-column: 1 / -1;
    font-size: 10px;
    color: var(--agbz-muted);
    padding: 0 2px;
    display: flex;
    align-items: center;
    gap: 5px;
    flex-wrap: wrap;
}
.agbz-clima-loc strong { color: var(--agbz-text-2); }
.agbz-clima-fonte { color: var(--agbz-muted-dk); }

/* ─────────────────────────────────────────────────────────────
   v42 — Status badge do clima
   Mostra estado da última leitura:
     • vazio       → leitura fresca (default, nada exibido)
     • "cache"     → cache válido (≤ 30 min) — discreto cinza
     • "atrasado"  → cache estendido (até 6 h) — amarelo
     • "off-line"  → API indisponível — vermelho discreto
───────────────────────────────────────────────────────────── */
.agbz-clima-status {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 9px;
    font-size: 9px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-left: 4px;
}
.agbz-clima-status[data-state="cache"] {
    background: rgba(180, 180, 180, 0.15);
    color: var(--agbz-muted);
}
.agbz-clima-status[data-state="stale"] {
    background: rgba(245, 184, 60, 0.18);
    color: #F5B83C;
}
.agbz-clima-status[data-state="off"] {
    background: rgba(255, 92, 92, 0.18);
    color: var(--agbz-red-down);
}
/* Quando uma célula está sinalizada como indisponível, esmaecemos */
.agbz-clima-cell[data-unavailable="1"] .agbz-clima-val {
    color: var(--agbz-muted-dk);
    font-style: italic;
    font-size: 11px;
    font-weight: 500;
}
.agbz-clima-cell[data-unavailable="1"] .agbz-clima-val small {
    display: none;
}

/* ─────────────────────────────────────────────────────────────
   MAPA central (v72 — IDÊNTICO ao modelo-correto.html · Michel)
   ─────────────────────────────────────────────────────────────
   ANTES (v70/v71): aspect-ratio 4:5 + max-width 380/500 + margin
   auto + align-self start. Resultado: mapa retângulo retrato fixo
   no MEIO da coluna central, com vazio horizontal (laterais) e
   vertical (embaixo). O Michel reportou repetidamente que os
   "cards não estavam unidos" e mandou modelo-correto.html como
   referência.

   AGORA (v72): mapa OCUPA TODA a coluna central (largura via
   grid-area, altura via height:100%). Como o shell tem
   align-items:stretch, a altura da row 1 é a do conteúdo mais alto
   das 3 colunas — todas terminam juntas (eliminando o vazio).

   • min-height: 580px → piso de altura mesmo se as laterais forem
     compactas. Garante respiração mínima ao mapa.
   • height: 100% → estica até a altura da row (definida pelas
     colunas laterais via stretch).
   • SEM aspect-ratio, SEM max-width, SEM margin/justify-self/
     align-self → mapa preenche TODO o espaço da grid-area:center.
─────────────────────────────────────────────────────────────── */
.agbz-mapwrap {
    /* v103 — LAYOUT FLUIDO:
       Antes (v74): `height: 100% !important` + `min-height: 0`
       deixavam o mapa preencher os 42vh impostos pelo grid pai.
       Com o grid agora content-driven, esse "100%" não tem
       referência — o mapa colapsaria pra 0 sem piso explícito.
       Solução: `min-height: 520px` (piso generoso pra Leaflet
       renderizar com qualidade) e nada de `height: 100%`. O mapa
       cresce naturalmente se a viewport for grande. Mobile herda
       a regra do @media (max-width: 900px) com piso menor. */
    grid-area: center;
    background: var(--agbz-card);
    border: 1px solid var(--agbz-border);
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 10px 28px -12px rgba(0, 0, 0, .45), 0 1px 0 rgba(255, 255, 255, .03) inset;
    display: flex !important;
    flex-direction: column !important;
    width: 100%;
    min-height: 520px;                 /* v103 — piso fixo (era height:100%) */
    box-sizing: border-box;
    /* v103 — REMOVIDO `contain: layout paint` que junto com
       isolation:isolate criava um sub-contexto que impedia a
       herança natural de scroll do mapwrap pra página. */
    isolation: isolate;
    position: relative;
    min-width: 0;
}
@media (max-width: 900px) {
    .agbz-mapwrap {
        min-height: 360px !important;
        height: 360px !important;
    }
}
.agbz-mapwrap-head {
    /* v72 — modelo-correto: padding 14px 18px (era 10px 14px) */
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 14px 18px;
    background: linear-gradient(180deg, rgba(212,173,90,0.05), transparent);
    border-bottom: 1px solid var(--agbz-border);
}
.agbz-mapwrap-title-row {
    display: flex;
    align-items: baseline;
    gap: 12px;
    flex-wrap: wrap;
}
.agbz-mapwrap-num {
    /* v72 — modelo-correto: font-size 10.5px, padding 3px 8px */
    font-family: var(--agbz-f-mono);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--agbz-gold);
    background: rgba(212, 173, 90, 0.10);
    padding: 3px 8px;
    border-radius: 4px;
}
.agbz-mapwrap-title {
    /* v72 — modelo-correto: font-size 20px (era 16) */
    margin: 0;
    font-family: var(--agbz-f-display);
    font-size: 20px;
    font-weight: 500;
    color: var(--agbz-text);
    letter-spacing: -0.01em;
}
.agbz-mapwrap-title em {
    font-style: italic;
    color: var(--agbz-gold-soft);
    font-weight: 400;
}
.agbz-mapwrap-action {
    /* v72 — modelo-correto: font-size 11px, padding 7px 12px, radius 6px */
    font-family: var(--agbz-f-mono);
    font-size: 11px;
    color: var(--agbz-gold-soft);
    text-transform: uppercase;
    letter-spacing: 0.14em;
    font-weight: 600;
    padding: 7px 12px;
    border: 1px solid var(--agbz-border-st);
    border-radius: 6px;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}
.agbz-mapwrap-action:hover {
    /* v72 — modelo-correto: hover preenche em dourado, texto escuro */
    background: var(--agbz-gold);
    color: #1A1106;
    text-decoration: none;
}
/* v137 — TAREFA 2: Variante ícone-puro (sem texto "abrir tela cheia ↗").
   Botão quadrado 34×34 com SVG de 4 setas no centro. Comportamento e
   tamanho IMUTÁVEIS em qualquer breakpoint (sem media queries) — o
   próprio padding/width são absolutos, não responsivos. */
.agbz-mapwrap-action--icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    padding: 0;
    letter-spacing: 0;
    line-height: 0;
    flex-shrink: 0;
}
.agbz-mapwrap-action--icon svg {
    width: 16px;
    height: 16px;
    display: block;
}
.agbz-mapwrap-frame {
    /* v72 — IDÊNTICO ao modelo-correto.html .agbz-mapwrap__frame:
       • position: relative · width: 100%
       • flex: 1 1 auto → toma a sobra do mapwrap (após o head + foot)
       • min-height: 460px → piso de altura interna
       • gradient radial central de fallback durante carregamento */
    position: relative !important;
    width: 100% !important;
    flex: 1 1 auto !important;
    min-height: 460px !important;
    background: radial-gradient(ellipse at center, #0F2620 0%, #050C0A 100%) !important;
    z-index: 1 !important;
    overflow: hidden !important;
    contain: layout paint style !important;
    isolation: isolate !important;
    touch-action: pan-y;          /* v102 — era `none` (travava scroll vertical da página) */
    box-sizing: border-box !important;
}

/* v102 — Preserva gestos nativos do Leaflet (pan + pinch-zoom) dentro
   do canvas, sem afetar o scroll da página fora dele. */
.agbz-mapwrap-frame .leaflet-container {
    touch-action: none;
}
.agbz-mapwrap-frame iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

/* ─────────────────────────────────────────────────────────────
   v37 — Mapa renderizado INLINE (sem iframe) — v69 reforçado
   ───────────────────────────────────────────────────────────────
   O shortcode [mapa_pinda] injeta seu próprio markup (#mapa-pinda-wrap,
   #mapa-pinda, header, controles, modais, popups, etc). O wrapper
   .agbz-srp-host serve de janela: ocupa 100% da área do painel central,
   mantém o mapa contido visualmente e oculta o header do mapa interno
   (que duplica o cabeçalho institucional já presente no dashboard).

   v69 — `contain: strict` + `isolation: isolate` + `!important` em
   tudo. Isso impede que estilos do tema (Astra/Avada/Divi/Elementor)
   herdem para dentro do mapa via seletores genéricos do tipo
   `.entry-content > div { margin: 1em 0 }`.
───────────────────────────────────────────────────────────── */
.agbz-mapwrap-frame--inline { overflow: hidden !important; }
.agbz-srp-host {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    /* v71 — Afrouxa de `contain: strict` p/ `contain: layout paint`.
       `strict` força size containment, exigindo ao navegador recalcular
       layout do mapa em CADA repaint (zoom/pan do Leaflet ⇒ ~60fps de
       reflows). Em viewports widescreen com muitos pins isso causava
       lentidão visível no carregamento e na interação (reportada pelo
       Michel em 24 jun/2026). `layout paint` mantém o isolamento de
       layout e a cliposfera de pintura — protege contra herança do
       tema WP — mas pula o size containment, permitindo o navegador
       reusar cálculos de tamanho do mapa. Ganho prático: 20-40%
       redução no tempo de primeira pintura em widescreen. */
    contain: layout paint !important;
    isolation: isolate !important;
    pointer-events: auto !important;
    z-index: 1 !important;
    box-sizing: border-box !important;
}
/* Faz o wrap interno do mapa preencher todo o host */
.agbz-srp-host #mapa-pinda-wrap {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
}
.agbz-srp-host #mapa-pinda {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    width: 100% !important;
    height: 100% !important;
}
/* Oculta o topbar institucional do mapa quando ele é embedado no dashboard
   — o dashboard já tem seu próprio header AgriBusiness CIEA. */
.agbz-srp-host .srp-geoagro-topbar { display: none !important; }

/* ─────────────────────────────────────────────────────────────
   v37 — Modo Tela Cheia do Mapa
   ───────────────────────────────────────────────────────────────
   Quando o usuário clica em "abrir tela cheia ↗", a classe
   .agbz-fullscreen-map é adicionada ao <html>, e via CSS o painel
   central ocupa 100vw × 100vh, ocultando todas as outras zonas do
   dashboard (ticker, header, filtros, terminal, macro). Volta clicando
   no mesmo botão.
───────────────────────────────────────────────────────────── */
html.agbz-fullscreen-map body { overflow: hidden; }
html.agbz-fullscreen-map .agbz-ticker,
html.agbz-fullscreen-map .agbz-header,
html.agbz-fullscreen-map .agbz-col-left,
html.agbz-fullscreen-map .agbz-col-right,
html.agbz-fullscreen-map .agbz-macro,
html.agbz-fullscreen-map .agbz-foot { display: none !important; }
html.agbz-fullscreen-map .agbz-shell {
    display: block !important;
    padding: 0 !important;
    gap: 0 !important;
}
html.agbz-fullscreen-map .agbz-mapwrap {
    position: fixed !important;
    inset: 0 !important;
    border-radius: 0 !important;
    z-index: 99999 !important;
    /* v70 — anula aspect-ratio + max-width do bloco base p/ fullscreen */
    aspect-ratio: auto !important;
    width: 100vw !important;
    max-width: 100vw !important;
    height: 100vh !important;
    min-height: 100vh !important;
    max-height: 100vh !important;
    margin: 0 !important;
    contain: none !important;
}
html.agbz-fullscreen-map .agbz-mapwrap-frame {
    height: calc(100vh - 56px) !important;
}
.agbz-mapwrap-badge {
    position: absolute;
    top: 12px; left: 12px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: rgba(11, 22, 18, 0.78);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    border: 1px solid var(--agbz-border-st);
    padding: 5px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    color: var(--agbz-text);
    z-index: 5;
    pointer-events: none;
}
.agbz-mapwrap-badge small { color: var(--agbz-muted); font-weight: 500; }
.agbz-mapwrap-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--agbz-bg-panel);
    color: var(--agbz-muted);
    font-size: 12px;
    font-family: var(--agbz-f-mono);
    text-transform: uppercase;
    letter-spacing: 0.14em;
    z-index: 4;
    transition: opacity 0.4s;
}

/* ─────────────────────────────────────────────────────────────
   TERMINAL de Commodities
───────────────────────────────────────────────────────────── */
.agbz-terminal-title {
    font-family: var(--agbz-f-display);
    font-size: 11px;
    font-weight: 500;
    color: var(--agbz-gold);
    letter-spacing: 0.10em;
    text-transform: uppercase;
    padding: 2px 4px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.agbz-terminal-title small {
    font-family: var(--agbz-f-mono);
    font-size: 9px;
    color: var(--agbz-muted);
    letter-spacing: 0.10em;
    font-weight: 500;
}
.agbz-quote {
    background: var(--agbz-card);
    border: 1px solid var(--agbz-border);
    border-left: 3px solid var(--agbz-muted-dk);
    border-radius: 7px;
    padding: 8px 10px 9px;
}
.agbz-quote--up   { border-left-color: var(--agbz-green-up); }
.agbz-quote--down { border-left-color: var(--agbz-red-down); }
.agbz-quote--flat { border-left-color: var(--agbz-muted-dk); }
.agbz-quote-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
}
.agbz-quote-name {
    font-family: var(--agbz-f-display);
    font-size: 12.5px;
    font-weight: 600;
    color: var(--agbz-text);
}
/* v37 — .agbz-quote-src definido mais abaixo junto com a seção de selos */
.agbz-quote-chart {
    height: 88px;
    margin: 4px 0 2px;
    /* v147 — Aumentado de 24px (sparkline puro v145) pra 88px (chart Fibonacci v147).
       O novo SVG carrega 5 níveis horizontais + labels mono + tag dourada do
       valor atual; precisa de espaço vertical pra ler. SVG inserido por JS
       (montarSparklineDeHistorico em dashboard.js) já vem com width:100%. */
}
.agbz-quote-price {
    font-family: var(--agbz-f-mono);
    font-weight: 700;
    font-size: 16px;
    color: var(--agbz-text);
    line-height: 1;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
}
.agbz-quote-price small {
    font-size: 8.5px;
    color: var(--agbz-muted);
    font-weight: 500;
    letter-spacing: 0.04em;
    margin-right: 6px;
}
.agbz-quote-chg {
    font-family: var(--agbz-f-mono);
    font-size: 10.5px;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 3px;
    margin-top: 4px;
    display: inline-block;
}

/* ─────────────────────────────────────────────────────────────
   v37 — Selos de origem da cotação (MANUAL × AO VIVO)
   ───────────────────────────────────────────────────────────────
   Aparece em cada card do terminal de commodities e nos cards de
   câmbio/juros da faixa macro. Transparência total ao produtor:
   ele sabe se o valor foi inserido pelo editor ou vem de API.
───────────────────────────────────────────────────────────── */
.agbz-fonte-badge {
    display: inline-block;
    font-family: var(--agbz-f-mono);
    font-size: 8px;
    font-weight: 800;
    letter-spacing: 0.10em;
    padding: 2px 5px;
    border-radius: 3px;
    margin-left: 4px;
    vertical-align: middle;
    line-height: 1;
    white-space: nowrap;
}
.agbz-fonte-manual {
    background: rgba(255, 209, 102, 0.18);
    color: #FFD166;
    border: 1px solid rgba(255, 209, 102, 0.30);
}
.agbz-fonte-live {
    background: rgba(67, 233, 123, 0.16);
    color: var(--agbz-green-up);
    border: 1px solid rgba(67, 233, 123, 0.28);
}

/* Cabeçalho do card: nome à esquerda, selo à direita */
.agbz-quote-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 6px;
}
.agbz-quote-src {
    font-family: var(--agbz-f-mono);
    font-size: 8px;
    color: var(--agbz-muted);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    font-weight: 500;
    margin-bottom: 3px;
    display: block;
}

/* Cards macro com indicador AO VIVO ganham borda superior verde */
.agbz-macro-cell--live { border-top: 2px solid var(--agbz-green-up); }
.agbz-macro-lbl {
    font-size: 9px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--agbz-muted);
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}
.agbz-macro-lbl .agbz-fonte-badge {
    margin-left: auto;
    font-size: 7px;
    padding: 1px 4px;
}

/* ─────────────────────────────────────────────────────────────
   v37 — Rodapé do terminal (timestamp da última atualização manual)
───────────────────────────────────────────────────────────── */
.agbz-terminal-footer {
    margin-top: 8px;
    padding: 8px 10px;
    background: var(--agbz-card-alt);
    border-radius: 6px;
    border-left: 2px solid #FFD166;
    font-size: 9.5px;
    line-height: 1.5;
    color: var(--agbz-muted);
}
.agbz-terminal-footer i {
    font-style: italic;
    color: #FFD166;
    font-size: 9px;
}
.agbz-terminal-footer strong {
    color: var(--agbz-text-2);
    font-weight: 700;
    font-family: var(--agbz-f-mono);
    font-size: 10px;
    display: block;
    margin-top: 2px;
}
.agbz-terminal-footer small {
    color: var(--agbz-muted);
    font-size: 9px;
    display: block;
    margin-top: 1px;
}

/* ─────────────────────────────────────────────────────────────
   FAIXA MACRO inferior
───────────────────────────────────────────────────────────── */
.agbz-macro .agbz-card-body { padding: 12px 14px; }
.agbz-macro {
    background: var(--agbz-card);
    border: 1px solid var(--agbz-border);
    border-radius: 10px;
    padding: 8px 14px;
    margin: 0 32px;   /* v76 — alinha com padding do shell */
    /* v74 — macro vive em 14vh; conteúdo precisa caber sem rolar */
}
.agbz-macro-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 6px;
    flex-shrink: 0;
}
.agbz-macro-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 8px;
    flex: 1 1 auto;
    min-height: 0;
}
.agbz-macro-cell {
    background: var(--agbz-card-alt);
    border-radius: 5px;
    padding: 6px 9px;
    border-top: 2px solid rgba(201, 161, 74, 0.30);
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 0;
    overflow: hidden;
}
.agbz-macro-title {
    margin: 0;
    font-family: var(--agbz-f-display);
    font-size: 13px;
    font-weight: 500;
    color: var(--agbz-text);
}
.agbz-macro-title em {
    font-style: italic;
    color: var(--agbz-gold-soft);
    font-weight: 400;
}
.agbz-macro-hint {
    font-family: var(--agbz-f-mono);
    font-size: 9px;
    color: var(--agbz-muted);
    letter-spacing: 0.04em;
}
.agbz-macro-pending { opacity: 0.65; }
.agbz-macro-lbl {
    font-size: 9px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--agbz-muted);
    font-weight: 700;
}
.agbz-macro-val {
    font-family: var(--agbz-f-mono);
    font-size: 15px;
    font-weight: 700;
    color: var(--agbz-text);
    line-height: 1.1;
    margin-top: 2px;
}
.agbz-macro-sub {
    font-family: var(--agbz-f-mono);
    font-size: 9px;
    margin-top: 1px;
}

/* ─────────────────────────────────────────────────────────────
   FOOTER
   ─────────────────────────────────────────────────────────────
   v37 FIX — STICKY BOTTOM
   Footer institucional ancorado na base da viewport, sempre visível
   independente da interação com o mapa. Background sólido (não
   transparente) para garantir legibilidade sobre qualquer ponto do mapa.
───────────────────────────────────────────────────────────── */
.agbz-foot {
    /* v74 — Rodapé com altura exata 5vh (controlada pelo root).
       Removido o sticky/blur antigos — agora é mais um elemento
       fixo do layout, não flutuante. */
    padding: 6px 14px;
    border-top: 1px solid var(--agbz-border);
    background: linear-gradient(180deg, rgba(6, 12, 10, 0.94), #060C0A);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    min-height: 0;
}
.agbz-foot-disc {
    font-size: 10px;
    color: var(--agbz-muted);
    font-style: italic;
    line-height: 1.5;
}

/* ═════════════════════════════════════════════════════════════
   RESPONSIVO · Tablet (entre 901 e 1200px) — v72: o grid do
   shell agora é controlado pelo @media 1280px (linha ~360)
   conforme modelo-correto.html. Aqui só ajustes de cards.
═════════════════════════════════════════════════════════════ */
@media (max-width: 1200px) {
    .agbz-quote-name { font-size: 11.5px; }
    .agbz-macro-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .agbz-macro-cell:nth-child(5),
    .agbz-macro-cell:nth-child(6) { grid-column: span 2; }
}

/* ═════════════════════════════════════════════════════════════
   RESPONSIVO · Mobile (≤ 900px)
   Stack vertical: ticker → header → mapa (60vh) → terminal →
   filtros (drawer) → macro
═════════════════════════════════════════════════════════════ */
@media (max-width: 900px) {
    /* v43 — Mobile NÃO é viewport-bounded: conteúdo flui naturalmente
       em uma coluna vertical com scroll global. A restrição 100vh
       que vale no desktop não cabe em telas pequenas. */
    .agbz-root {
        height: auto;
        max-height: none;
        min-height: 100vh;
        display: block;
        overflow: visible;
    }

    /* v41 FIX — Ticker em tablet/landscape mobile (≤900px)
       Reduz gap entre itens (32px → 20px) e velocidade da animação
       (60s → 75s) para dar tempo de leitura em telas menores. */
    .agbz-ticker {
        min-height: 34px;
    }
    .agbz-ticker-rail {
        gap: 20px;
        padding-left: 16px;
        /* v148 — 75s → 225s (3× mais lento, briefing 28/jun/2026) */
        animation-duration: 225s;
    }
    .agbz-tick-item {
        font-size: 11px;
        gap: 6px;
    }
    .agbz-tick-lbl { font-size: 9px; letter-spacing: 0.12em; }
    .agbz-tick-chg { font-size: 9px; padding: 1px 5px; }

    .agbz-header {
        flex-wrap: wrap;
        padding: 8px 12px;
        gap: 8px;
        /* Mobile mantém sticky no top: 36px (ticker) — header compacto */
    }
    .agbz-header-brand { font-size: 18px; }
    .agbz-header-tagline { font-size: 11px; line-height: 1.25; }
    .agbz-header-sub { display: none; }
    .agbz-header-meta { width: 100%; flex-direction: row; align-items: center; justify-content: space-between; }
    .agbz-header-clock { text-align: left; }
    .agbz-header-clock strong { display: inline; margin-left: 6px; }

    .agbz-shell {
        /* v43 — Reverte para grid 1 coluna sem restrição de altura */
        grid-template-columns: 1fr;
        grid-template-rows: auto;
        grid-template-areas:
            "center"
            "right"
            "left"
            "macro";
        gap: 10px;
        padding: 10px;
        min-height: 0;
        overflow: visible;
    }
    .agbz-col-left, .agbz-col-right {
        overflow: visible;
        min-height: auto;
    }
    /* v69 — .agbz-mapwrap mobile: altura controlada pelo bloco v69
       (clamp 320px-50vh-480px com !important na linha ~795).
       Aqui só liberamos overflow para permitir o tooltip dos
       resize handles vazar quando o usuário arrasta. */
    .agbz-mapwrap {
        overflow: visible;
    }
    .agbz-mapwrap-frame {
        /* v69 — Em mobile o frame se ajusta à altura clamp do
           mapwrap pai (flex 1 1 auto). Não precisa mais de altura
           explícita aqui — removido p/ evitar conflito com o bloco
           v69 que controla tudo via !important. */
        touch-action: pan-x pan-y;
    }
    .agbz-macro {
        /* v43 — Em mobile, sem limite de altura (deixa fluir) */
        max-height: none;
        overflow-y: visible;
    }
    .agbz-col-right {
        flex-direction: row;
        overflow-x: auto;
        gap: 8px;
        padding-bottom: 4px;
        -webkit-overflow-scrolling: touch;
    }
    .agbz-terminal-title {
        position: sticky;
        left: 0;
        flex-shrink: 0;
        align-self: center;
        writing-mode: vertical-rl;
        transform: rotate(180deg);
        padding: 8px 0;
    }
    .agbz-quote {
        flex-shrink: 0;
        width: 180px;
    }
    .agbz-col-left {
        gap: 10px;
    }
    /* v49 — Stack já gerencia a pilha em todo viewport.
       As regras antigas de grid-template-columns: repeat(4,1fr)
       e grid-column nas cells foram removidas. Mantemos apenas
       tweaks de tamanho de fonte para o caso de uso tablet. */
    .agbz-clima.agbz-clima-stack .agbz-clima-val { font-size: 13px; }
    .agbz-clima.agbz-clima-stack .agbz-clima-val-sm { font-size: 11px; }
    .agbz-clima.agbz-clima-stack .agbz-clima-val small { font-size: 9px; }
    .agbz-clima.agbz-clima-stack .agbz-clima-cell { padding: 5px 9px 6px; }
    .agbz-clima.agbz-clima-stack .agbz-clima-hero { padding: 9px 11px 10px; }
    .agbz-clima.agbz-clima-stack .agbz-clima-hero .agbz-clima-val { font-size: 24px; }
    .agbz-toggle-list {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 4px 8px;
    }
    .agbz-macro-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .agbz-macro-cell:nth-child(n) { grid-column: auto; }
}

@media (max-width: 600px) {
    .agbz-header-emblem { width: 36px; height: 36px; }
    .agbz-header-brand { font-size: 16px; }
    .agbz-mapwrap-title { font-size: 14px; }
    .agbz-mapwrap-action { padding: 4px 8px; font-size: 9px; }
    /* v137 — Variante ícone NÃO encolhe em mobile: comportamento imutável. */
    .agbz-mapwrap-action--icon { padding: 0; font-size: 0; width: 34px; height: 34px; }
    /* v69 — .agbz-mapwrap-frame mobile: altura/min-height controladas
       pelo bloco v69 (.agbz-mapwrap height: clamp + frame flex 1 1 auto). */
    .agbz-toggle-list { grid-template-columns: 1fr; }

    /* v49 — Smartphone: stack continua vertical e ganha um pouco
       mais de compactação. Hero ainda destacado. */
    .agbz-clima.agbz-clima-stack .agbz-clima-val { font-size: 13px; }
    .agbz-clima.agbz-clima-stack .agbz-clima-val-sm { font-size: 11px; }
    .agbz-clima.agbz-clima-stack .agbz-clima-hero .agbz-clima-val { font-size: 22px; }
    .agbz-clima.agbz-clima-stack .agbz-clima-wind .agbz-clima-aux { font-size: 10px; max-width: 75px; }

    /* v41 FIX — Ticker em smartphones (≤600px)
       Reduz ainda mais para legibilidade em telas pequenas, mantendo
       proporções harmônicas. Animação fica mais lenta (90s) para que
       o usuário consiga ler cada commodity antes dela sair de cena. */
    .agbz-ticker {
        min-height: 32px;
    }
    .agbz-ticker-rail {
        gap: 14px;
        padding-left: 10px;
        /* v148 — 90s → 270s (3× mais lento, briefing 28/jun/2026).
           Em mobile o ritmo precisa ser ainda mais generoso porque a tela
           pequena mostra menos commodities ao mesmo tempo e o usuário
           normalmente lê passivamente sem hover. */
        animation-duration: 270s;
    }
    .agbz-tick-item {
        font-size: 10px;
        gap: 4px;
    }
    .agbz-tick-lbl { font-size: 8px; letter-spacing: 0.1em; }
    .agbz-tick-val { font-size: 11px; }
    .agbz-tick-chg { font-size: 8px; padding: 0 4px; }
    .agbz-tick-sep { font-size: 9px; }
}

/* v41 FIX — Breakpoint 1200px (laptops e desktops compactos)
   Reduz gap entre commodities sem sacrificar legibilidade. */
@media (max-width: 1200px) {
    .agbz-ticker-rail {
        gap: 26px;
        padding-left: 20px;
        /* v148 — 65s → 195s (3× mais lento, briefing 28/jun/2026) */
        animation-duration: 195s;
    }
    .agbz-tick-item {
        gap: 7px;
    }
}


/* ═══════════════════════════════════════════════════════════════
   v41 — SCROLLBAR CUSTOMIZADA NO DASHBOARD
   ───────────────────────────────────────────────────────────────
   Aplica scrollbar elegante na coluna direita (terminal de commodities)
   quando ela rola horizontalmente em mobile, e em qualquer container do
   dashboard que exceda altura/largura disponível.

   Paleta: dourado/marrom do tema agbz, harmonizando com o card escuro.
═══════════════════════════════════════════════════════════════ */
.agbz-root *::-webkit-scrollbar,
.agbz-col-right::-webkit-scrollbar,
.agbz-card-body::-webkit-scrollbar {
    width:  8px;
    height: 8px;
}
.agbz-root *::-webkit-scrollbar-track,
.agbz-col-right::-webkit-scrollbar-track,
.agbz-card-body::-webkit-scrollbar-track {
    background: rgba(255, 255, 255, 0.04);
    border-radius: 4px;
}
.agbz-root *::-webkit-scrollbar-thumb,
.agbz-col-right::-webkit-scrollbar-thumb,
.agbz-card-body::-webkit-scrollbar-thumb {
    background: linear-gradient(135deg, var(--agbz-gold, #D4AD5A), #7E6342);
    border-radius: 4px;
    min-height: 24px;
}
.agbz-root *::-webkit-scrollbar-thumb:hover,
.agbz-col-right::-webkit-scrollbar-thumb:hover,
.agbz-card-body::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(135deg, var(--agbz-gold-soft, #E8C26E), #A07F2E);
}
.agbz-root,
.agbz-col-right,
.agbz-card-body {
    scrollbar-width: thin;
    scrollbar-color: var(--agbz-gold, #D4AD5A) rgba(255,255,255,0.04);
}

/* ═══════════════════════════════════════════════════════════════════════
   v53/v54/v58 — SCROLL VERTICAL NO CARD "FILTROS GEOAGRO"
   ───────────────────────────────────────────────────────────────────────
   v53: introduziu .agbz-card-body-scroll com max-height clamp(180,38vh,360px).
   v54: bumped pra clamp(240,55vh,560px) + padding-bottom 14px + scroll-padding.
   v58: bumped DE NOVO pra clamp(320,65vh,620px) + padding-bottom 24px
        + adicionado mask-image fade-edge no topo (12px) e base (18px) —
        sinaliza visualmente que há conteúdo a rolar, padrão iOS/Android.
        Em mobile (≤1023.98px) cresce até 70vh / 720px.

   PORQUE TANTAS BUMPADAS? Cada bump foi para resolver corte do último
   item ("Milho/Cana") em viewports específicos / zoom alto. Esta versão
   garante respiro suficiente em qualquer combinação razoável de tela e
   zoom — itens ficam totalmente visíveis com fade visual no fim.
═══════════════════════════════════════════════════════════════════════ */
.agbz-card-body-scroll {
    /* v76 — Michel pediu: "crie barras de rolagem verticais
       para que seja possível ver todos os filtros e informações
       meteorológicas." Restauradas as barras internas.
       max-height: 100% do parent (.agbz-card) + flex: 1 fazem
       o card de filtros e o de clima rolarem internamente
       quando há mais itens que cabem.
       Fade-edge nas bordas internas pra dar affordance visual
       de "tem mais aqui". */
    max-height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    flex: 1 1 auto;
    min-height: 0;
    padding-right: 6px;
    padding-bottom: 12px;
    -webkit-mask-image: linear-gradient(
        to bottom,
        transparent 0,
        #000 10px,
        #000 calc(100% - 14px),
        transparent 100%
    );
    mask-image: linear-gradient(
        to bottom,
        transparent 0,
        #000 10px,
        #000 calc(100% - 14px),
        transparent 100%
    );
    scrollbar-width: thin;
    scrollbar-color: rgba(212, 173, 90, .35) transparent;
}
.agbz-card-body-scroll::-webkit-scrollbar { width: 6px; }
.agbz-card-body-scroll::-webkit-scrollbar-track { background: transparent; }
.agbz-card-body-scroll::-webkit-scrollbar-thumb {
    background: rgba(212, 173, 90, .35);
    border-radius: 3px;
}
.agbz-card-body-scroll::-webkit-scrollbar-thumb:hover {
    background: rgba(212, 173, 90, .55);
}

/* Firefox honra scrollbar-width / scrollbar-color — fallback fino e
   institucional caso ::-webkit-scrollbar não esteja ativo. */
.agbz-card-body-scroll {
    scrollbar-width: thin;
    scrollbar-color: rgba(212, 173, 90, .25) transparent;
}

/* ── v65 — CTA Programa Aliança ─────────────────────────────────────
   Card destacado no topo da coluna esquerda do dashboard que dispara
   o modal de cadastro via [data-mp-alianca]. */
.agbz-cta-alianca {
    /* v78 — Michel reportou no v77 que o botão "QUERO PARTICIPAR"
       ainda não aparecia para ser clicado. Aumentamos:
       padding 18→20px e min-height 145→175px.
       Combinado com margin-top:auto no botão, o card sempre
       mostra título + body + botão clicável. */
    background: rgba(212, 173, 90, 0.06);
    border: 1px solid rgba(212, 173, 90, 0.25);
    padding: 20px 20px;
    border-radius: 12px;
    flex-shrink: 0;
    min-height: 175px;
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
}
.agbz-cta-alianca__title {
    font-family: var(--agbz-f-display);
    font-size: 17px;
    font-weight: 500;
    color: var(--agbz-text);
    line-height: 1.2;
    margin: 0;
}
.agbz-cta-alianca__title em {
    color: var(--agbz-gold-bright, var(--agbz-gold, #D4AD5A));
    font-style: italic;
    font-weight: 400;
}
.agbz-cta-alianca__body {
    font-size: 11.5px;
    color: var(--agbz-text-2);
    line-height: 1.5;
    margin: 8px 0 14px;
}
.agbz-cta-alianca__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    background: var(--agbz-gold, #D4AD5A);
    color: #1A1106;
    border: 1px solid var(--agbz-gold, #D4AD5A);
    padding: 10px 14px;
    border-radius: 6px;
    font-size: 10.5px;
    letter-spacing: 0.14em;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.1s ease;
    margin-top: auto;       /* v77 — empurra botão pro fim do card */
    align-self: stretch;    /* v77 — largura total */
}
.agbz-cta-alianca__btn:hover {
    background: #E0B964;
    color: #1A1106;
}
.agbz-cta-alianca__btn:active {
    transform: scale(0.98);
}

/* ── v68 — RESIZE HANDLES DO MAPA (Melhorado) ────────────────────────────
   Alças de redimensionamento ROBUSTAS contra interferências do tema WordPress.
   • .agbz-resize-bottom  → borda inferior (ajusta altura)
   • .agbz-resize-left    → borda esquerda (ajusta col-left)
   • .agbz-resize-right   → borda direita  (ajusta col-right)
   Duplo-clique em qualquer handle restaura as dimensões padrão.
   
   v68 FIX — Proteção máxima contra temas WordPress:
   • !important em TODOS os valores críticos
   • Reset completo de herança de estilos do tema
   • Isolamento total com 'all: unset' + propriedades específicas
   • Visibilidade aumentada e feedback visual claro
──────────────────────────────────────────────────────────────────── */
.agbz-resize-handle {
    position: absolute !important;
    z-index: 500 !important;
    background: transparent !important;
    transition: background 0.15s ease !important;
    all: unset !important;
    position: absolute !important;
    z-index: 500 !important;
    box-sizing: border-box !important;
    font-size: 0 !important;
    line-height: 0 !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
    outline: none !important;
}

.agbz-resize-handle::before {
    content: '' !important;
    position: absolute !important;
    background: transparent !important;
}

.agbz-resize-handle::after {
    content: '' !important;
    position: absolute !important;
    background: linear-gradient(90deg, var(--agbz-gold, #D4AD5A) 0%, var(--agbz-gold-soft, #E8C26E) 100%) !important;
    border-radius: 2px !important;
    opacity: 0.4 !important;
    transition: opacity 0.2s ease !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3) !important;
}

.agbz-resize-handle:hover::after,
.agbz-resize-handle:active::after {
    opacity: 0.85 !important;
    box-shadow: 0 3px 10px rgba(212, 173, 90, 0.4) !important;
}

/* Borda inferior (HANDLE de ALTURA) */
.agbz-resize-bottom {
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    height: 10px !important;
    cursor: ns-resize !important;
    touch-action: none !important;
    user-select: none !important;
}

.agbz-resize-bottom::after {
    left: 50% !important;
    transform: translateX(-50%) !important;
    bottom: 3px !important;
    width: 60px !important;
    height: 4px !important;
    border-radius: 2px !important;
}

/* Feedback visual: tooltip ao passar */
.agbz-resize-bottom::before {
    content: '⋮ Arraste para ajustar altura' !important;
    position: absolute !important;
    bottom: 14px !important;
    left: 50% !important;
    transform: translateX(-50%) translateY(-100%) !important;
    background: rgba(212, 173, 90, 0.95) !important;
    color: #060C0A !important;
    padding: 4px 8px !important;
    border-radius: 4px !important;
    font-size: 10px !important;
    white-space: nowrap !important;
    font-weight: 600 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: opacity 0.2s ease !important;
}

.agbz-resize-bottom:hover::before {
    opacity: 1 !important;
}

/* Borda esquerda (HANDLE de LARGURA - coluna left) */
.agbz-resize-left {
    left: 0 !important;
    top: 0 !important;
    bottom: 0 !important;
    width: 8px !important;
    cursor: ew-resize !important;
    touch-action: none !important;
    user-select: none !important;
}

.agbz-resize-left::after {
    top: 50% !important;
    transform: translateY(-50%) !important;
    left: 2px !important;
    width: 4px !important;
    height: 60px !important;
    border-radius: 2px !important;
}

/* Borda direita (HANDLE de LARGURA - coluna right) */
.agbz-resize-right {
    right: 0 !important;
    top: 0 !important;
    bottom: 0 !important;
    width: 8px !important;
    cursor: ew-resize !important;
    touch-action: none !important;
    user-select: none !important;
}

.agbz-resize-right::after {
    top: 50% !important;
    transform: translateY(-50%) !important;
    right: 2px !important;
    width: 4px !important;
    height: 60px !important;
    border-radius: 2px !important;
}

/* ─── Cursor GLOBAL durante drag para não tremer ao sair do handle ─────── */
body.agbz-dragging-ns {
    cursor: ns-resize !important;
    user-select: none !important;
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
}

body.agbz-dragging-ew {
    cursor: ew-resize !important;
    user-select: none !important;
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
}

/* ─── v69 — Regra "Garantir contexto de posição dos handles" REMOVIDA
   Consolidada no bloco v69 (linha ~763) que já define position:
   relative !important + overflow: visible !important. */

/* ════════════════════════════════════════════════════════════
   v81 — CONTAINER SCROLÁVEL DAS COMMODITIES
   ────────────────────────────────────────────────────────────
   Michel reportou que os últimos cards (Café Arábica em diante)
   eram cortados pelo bottom da viewport. Causa: o .agbz-col-right
   tinha overflow: hidden (v78) e os <article class="agbz-quote">
   ficavam em fluxo livre dentro dele, sem container intermediário
   para limitar/rolar.

   Solução: novo wrapper .agbz-quotes-scroll envolve os quotes.
   - Título "Commodities CEPEA·B3" fica fixo no topo (fora do scroll)
   - Footer (timestamp última atualização) fica fixo embaixo
   - Apenas os quotes rolam, com scrollbar dourada (reusa o tema
     gradiente dourado já definido para .agbz-col-right)
═══════════════════════════════════════════════════════════ */
.agbz-col-right .agbz-quotes-scroll {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding-right: 6px;  /* respiro pra scrollbar não tampar texto */
    display: flex;
    flex-direction: column;
    gap: 10px;
    /* Firefox */
    scrollbar-width: thin;
    scrollbar-color: var(--agbz-gold, #D4AD5A) rgba(255,255,255,0.04);
}
.agbz-col-right .agbz-quotes-scroll::-webkit-scrollbar {
    width: 8px;
}
.agbz-col-right .agbz-quotes-scroll::-webkit-scrollbar-track {
    background: rgba(255, 255, 255, 0.04);
    border-radius: 4px;
}
.agbz-col-right .agbz-quotes-scroll::-webkit-scrollbar-thumb {
    background: linear-gradient(135deg, var(--agbz-gold, #D4AD5A), #7E6342);
    border-radius: 4px;
    min-height: 24px;
}
.agbz-col-right .agbz-quotes-scroll::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(135deg, var(--agbz-gold-soft, #E8C26E), #A07F2E);
}

/* Garante que o col-right inteiro seja um flex container com
   título + scroll-area + footer empilhados, e que o scroll-area
   ocupe TODA a sobra vertical disponível. */
.agbz-col-right {
    display: flex !important;
    flex-direction: column !important;
}
.agbz-col-right .agbz-terminal-title,
.agbz-col-right .agbz-terminal-footer {
    flex-shrink: 0;
}

/* ════════════════════════════════════════════════════════════
   v81 — MODAL "RESERVAR ESPAÇO"
   ────────────────────────────────────────────────────────────
   Estilos do modal disparado pelo slide 4 do carrossel.
   Mesmo overlay imersivo do popup do pin (v78) com paleta
   institucional verde/ouro do SRP.

   v131 — Z-INDEX HARDENING (TAREFA 1 v131)
   ────────────────────────────────────────
   • z-index escalado pra 2147483600 (próximo do INT32_MAX) pra
     garantir que NUNCA fique atrás de selos, ticker, header ou
     qualquer outro card mesmo se a portagem JS pra <body> falhar
     em algum edge case.
   • Quando o JS porta o overlay pra ser filho direto de <body>,
     ele sai do stacking context isolado do .srp-pc-root e o
     z-index volta a ser global. Esta camada CSS é o cinto-de-
     segurança caso o JS não rode (ex: bug futuro, browser
     legacy). Os dois mecanismos em paralelo são defesa em
     profundidade.
═══════════════════════════════════════════════════════════ */
.agbz-reserva-overlay {
    position: fixed;
    inset: 0;
    z-index: 2147483600;
    background: rgba(6, 12, 10, 0.92);
    display: none;
    align-items: center;
    justify-content: center;
    padding: 24px;
    box-sizing: border-box;
}
.agbz-reserva-overlay.is-open {
    display: flex;
    animation: agbz-reserva-fade 0.18s ease-out;
}
/* v131 — Garantia adicional: quando o overlay É filho de <body>
   (caminho feliz da portagem JS), redobra o z-index e remove
   qualquer transform/filter herdado que pudesse criar stacking
   context indesejado. */
body > .agbz-reserva-overlay {
    z-index: 2147483600;
    transform: none !important;
    filter: none !important;
    contain: none !important;
}
@keyframes agbz-reserva-fade {
    from { opacity: 0; }
    to   { opacity: 1; }
}

.agbz-reserva-card {
    background: #0F2620;
    border: 1px solid rgba(212, 173, 90, 0.32);
    border-radius: 18px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
    width: 100%;
    max-width: 640px;
    max-height: 92vh;
    overflow: hidden;
    position: relative;
    display: flex;
    flex-direction: column;
    animation: agbz-reserva-zoom 0.22s cubic-bezier(.16, 1, .3, 1);
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
}
@keyframes agbz-reserva-zoom {
    from { opacity: 0; transform: scale(0.96) translateY(8px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}

.agbz-reserva-close {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 38px;
    height: 38px;
    background: rgba(15, 38, 32, 0.85);
    border: 1px solid rgba(212, 173, 90, 0.4);
    border-radius: 50%;
    color: #D4AD5A;
    cursor: pointer;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: background 0.15s ease, transform 0.1s ease;
}
.agbz-reserva-close:hover {
    background: rgba(212, 173, 90, 0.18);
    color: #E8C26E;
}
.agbz-reserva-close:active { transform: scale(0.94); }

.agbz-reserva-header {
    padding: 28px 32px 16px;
    border-bottom: 1px solid rgba(212, 173, 90, 0.15);
}
.agbz-reserva-eyebrow {
    font-size: 11px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: #D4AD5A;
    font-weight: 600;
    margin-bottom: 8px;
}
.agbz-reserva-header h2 {
    margin: 0 0 10px;
    font-family: 'Fraunces', 'Playfair Display', Georgia, serif;
    font-weight: 500;
    font-size: 30px;
    line-height: 1.1;
    color: #F2EDE0;
}
.agbz-reserva-header h2 em {
    font-style: italic;
    color: #D4AD5A;
}
.agbz-reserva-sub {
    margin: 0;
    color: rgba(242, 237, 224, 0.7);
    font-size: 13px;
    line-height: 1.5;
}

.agbz-reserva-form {
    padding: 20px 32px 28px;
    overflow-y: auto;
    flex: 1 1 auto;
    min-height: 0;
    scrollbar-width: thin;
    scrollbar-color: rgba(212, 173, 90, 0.35) transparent;
}
.agbz-reserva-form::-webkit-scrollbar { width: 8px; }
.agbz-reserva-form::-webkit-scrollbar-track { background: transparent; }
.agbz-reserva-form::-webkit-scrollbar-thumb {
    background: rgba(212, 173, 90, 0.35);
    border-radius: 4px;
}

.agbz-reserva-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.agbz-reserva-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.agbz-reserva-field--full {
    grid-column: 1 / -1;
}
.agbz-reserva-label {
    font-size: 11px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: #D4AD5A;
    font-weight: 600;
}
.agbz-reserva-label em {
    color: #E8C26E;
    font-style: normal;
}

.agbz-reserva-field input[type=text],
.agbz-reserva-field input[type=tel],
.agbz-reserva-field input[type=email],
.agbz-reserva-field select,
.agbz-reserva-field textarea {
    background: rgba(15, 38, 32, 0.6);
    border: 1px solid rgba(212, 173, 90, 0.25);
    border-radius: 8px;
    padding: 10px 14px;
    color: #F2EDE0;
    font-family: inherit;
    font-size: 14px;
    transition: border-color 0.15s ease, background 0.15s ease;
    width: 100%;
    box-sizing: border-box;
}
.agbz-reserva-field input:focus,
.agbz-reserva-field select:focus,
.agbz-reserva-field textarea:focus {
    outline: none;
    border-color: #D4AD5A;
    background: rgba(15, 38, 32, 0.8);
    box-shadow: 0 0 0 3px rgba(212, 173, 90, 0.12);
}
.agbz-reserva-field textarea {
    resize: vertical;
    min-height: 70px;
}

.agbz-reserva-field select {
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D4AD5A' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 16px;
    padding-right: 36px;
}
.agbz-reserva-field select option {
    background: #0F2620;
    color: #F2EDE0;
}

.agbz-reserva-checkbox {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 12px;
    color: rgba(242, 237, 224, 0.75);
    line-height: 1.5;
    margin-top: 4px;
    cursor: pointer;
}
.agbz-reserva-checkbox input[type=checkbox] {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    margin-top: 2px;
    accent-color: #D4AD5A;
    cursor: pointer;
}
.agbz-reserva-checkbox a { color: #D4AD5A; text-decoration: underline; }

.agbz-reserva-feedback {
    margin-top: 14px;
    padding: 10px 14px;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.4;
    display: none;
}
.agbz-reserva-feedback:not(:empty) { display: block; }
.agbz-reserva-feedback--info {
    background: rgba(60, 130, 246, 0.08);
    border: 1px solid rgba(60, 130, 246, 0.3);
    color: #87B5FF;
}
.agbz-reserva-feedback--success {
    background: rgba(30, 92, 48, 0.18);
    border: 1px solid rgba(67, 224, 123, 0.4);
    color: #43E07B;
}
.agbz-reserva-feedback--error {
    background: rgba(220, 50, 50, 0.12);
    border: 1px solid rgba(220, 50, 50, 0.4);
    color: #FF8B8B;
}

.agbz-reserva-actions {
    display: flex;
    gap: 12px;
    justify-content: flex-end;
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid rgba(212, 173, 90, 0.12);
}
.agbz-reserva-btn {
    padding: 12px 24px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 1px;
    text-transform: uppercase;
    cursor: pointer;
    border: 1px solid transparent;
    font-family: inherit;
    transition: all 0.15s ease;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.agbz-reserva-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}
.agbz-reserva-btn--ghost {
    background: transparent;
    border-color: rgba(242, 237, 224, 0.25);
    color: rgba(242, 237, 224, 0.7);
}
.agbz-reserva-btn--ghost:hover {
    border-color: rgba(242, 237, 224, 0.5);
    color: #F2EDE0;
}
.agbz-reserva-btn--primary {
    background: linear-gradient(135deg, #D4AD5A, #A07F2E);
    color: #0F2620;
    border-color: #D4AD5A;
}
.agbz-reserva-btn--primary:hover:not(:disabled) {
    background: linear-gradient(135deg, #E8C26E, #B89035);
    transform: translateY(-1px);
    box-shadow: 0 8px 20px rgba(212, 173, 90, 0.3);
}

/* Mobile */
@media (max-width: 640px) {
    .agbz-reserva-overlay { padding: 12px; }
    .agbz-reserva-card { max-height: 95vh; }
    .agbz-reserva-header { padding: 24px 20px 14px; }
    .agbz-reserva-header h2 { font-size: 24px; }
    .agbz-reserva-form { padding: 18px 20px 24px; }
    .agbz-reserva-grid { grid-template-columns: 1fr; }
    .agbz-reserva-actions { flex-direction: column-reverse; }
    .agbz-reserva-btn { width: 100%; justify-content: center; }
}

/* ════════════════════════════════════════════════════════════
   v84 — LINKS DISCRETOS PARA O PAINEL EXPANDIDO
   ────────────────────────────────────────────────────────────
   Dois links sutis no dashboard principal:
   - .agbz-terminal-expandir → no footer das Commodities
   - .agbz-macro-expandir    → no header do Macro
   Ambos apontam para o mesmo URL (filterável WP), levando o
   usuário ao painel /comodities/ com modo="expandido".
═══════════════════════════════════════════════════════════ */
.agbz-terminal-expandir {
    display: inline-block;
    margin-top: 10px;
    padding: 6px 12px;
    font-size: 10.5px;
    font-family: var(--agbz-f-ui);
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: var(--agbz-gold);
    text-decoration: none;
    background: rgba(212, 173, 90, 0.06);
    border: 1px solid rgba(212, 173, 90, 0.22);
    border-radius: 999px;
    font-weight: 500;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.agbz-terminal-expandir:hover {
    background: rgba(212, 173, 90, 0.14);
    border-color: rgba(212, 173, 90, 0.5);
    color: var(--agbz-gold-soft);
}
.agbz-terminal-expandir span {
    margin-left: 4px;
    transition: transform 0.15s ease;
    display: inline-block;
}
.agbz-terminal-expandir:hover span {
    transform: translateX(2px);
}

.agbz-macro-expandir {
    margin-left: auto;
    padding: 5px 12px;
    font-size: 10px;
    font-family: var(--agbz-f-ui);
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: var(--agbz-gold);
    text-decoration: none;
    background: rgba(212, 173, 90, 0.06);
    border: 1px solid rgba(212, 173, 90, 0.22);
    border-radius: 999px;
    font-weight: 500;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
    white-space: nowrap;
}
.agbz-macro-expandir:hover {
    background: rgba(212, 173, 90, 0.14);
    border-color: rgba(212, 173, 90, 0.5);
    color: var(--agbz-gold-soft);
}
.agbz-macro-expandir span {
    margin-left: 4px;
    transition: transform 0.15s ease;
    display: inline-block;
}
.agbz-macro-expandir:hover span {
    transform: translateX(2px);
}
.agbz-macro-head {
    /* v84 — garante alinhamento dos 3 itens: título à esquerda,
       hint no meio, botão à direita */
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

/* Em mobile, links viram block para não estourarem */
@media (max-width: 640px) {
    .agbz-macro-expandir {
        margin-left: 0;
        margin-top: 6px;
    }
}

/* ════════════════════════════════════════════════════════════════════
   v93+1.0 — LAYOUT FLUIDO VERTICAL ESTILO SENAR
   ════════════════════════════════════════════════════════════════════
   Aplicado em cima do v93 limpo. Substitui o grid 3-col original
   (`agbz-shell { grid-template-columns: 15% 70% 15% }`) por fluxo
   vertical natural com seções full-width. Resolve o bug original do
   "zoom out necessário" sem mexer em nenhuma lógica de renderização
   do mapa — pins continuam funcionando exatamente como em v93.

   Estratégia:
     1. `.agbz-shell` → neutralizada (`display: contents`), pra cobrir
        eventual cache antigo do tema que ainda referencie a classe.
     2. Novas seções (.agbz-cta-row, .agbz-info-row, .agbz-commodities-row)
        são blocos full-width no flow vertical do .agbz-root.
     3. `.agbz-mapwrap` ganha altura EXPLÍCITA (não mínima) sempre >= 460px
        — esta é a lição da v96.0.3: `.agbz-mapwrap-frame { min-height:
        460px }` precisa de pai com altura efetiva >= 460, senão overflow
        clipa marcadores.
     4. `.agbz-root` perde `grid-template-rows` (não é mais 106vh).
═══════════════════════════════════════════════════════════════════ */

/* ── 1. Reseta o .agbz-root pra fluxo vertical (era grid 106vh) ──── */
.agbz-root {
    /* v93+1.0 — vira flex column, abandona grid-template-rows */
    display: flex !important;
    flex-direction: column !important;
    grid-template-rows: none !important;
    grid-template-areas: none !important;
    overflow: visible !important;
    /* Mantém min-height pra evitar painel "sem altura" quando o conteúdo
       é curto durante carregamento. Não trava em 100vh — o painel real
       sempre tem >100vh. */
    min-height: 100vh;
}
@media (max-width: 900px) {
    .agbz-root {
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }
}

/* ── 2. Neutraliza .agbz-shell (não é mais usado, mas a classe pode
   sobrar em cache de tema ou no `body_class` filter) ─────────────── */
.agbz-shell {
    /* `display: contents` faz o elemento sumir do layout mas mantém
       os filhos no lugar — fail-safe se algo legacy ainda usar a
       classe. */
    display: contents !important;
    grid-template-columns: none !important;
    grid-template-areas: none !important;
    grid-template-rows: none !important;
}

/* ── 3. Padding lateral consistente entre todas as seções ──────── */
:root {
    --agbz-pad: clamp(14px, 2.4vw, 28px);
    --agbz-pad-mobile: 12px;
}

/* ── 4. CTA Aliança — variante WIDE (faixa horizontal) ─────────── */
.agbz-cta-row {
    width: 100%;
    box-sizing: border-box;
    padding: 14px var(--agbz-pad) 0;
}
.agbz-cta-alianca--wide {
    display: grid !important;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 2fr) auto !important;
    gap: 14px 22px !important;
    align-items: center !important;
    padding: 14px 18px !important;
    /* Override do `.agbz-cta-alianca` base que era min-height: 175px
       (pra ele caber na sidebar antiga). Aqui é faixa, 60-72px basta. */
    min-height: 0 !important;
    flex-direction: row !important;
}
.agbz-cta-alianca--wide .agbz-cta-alianca__title { margin: 0 !important; }
.agbz-cta-alianca--wide .agbz-cta-alianca__body  { margin: 0 !important; }
.agbz-cta-alianca--wide .agbz-cta-alianca__btn {
    white-space: nowrap;
    margin-top: 0 !important;
    align-self: auto !important;
}

/* ── 5. Mapa — altura EXPLÍCITA (a lição crítica) ────────────────
   v93 original: mapwrap em grid 3-col com `height: 100% + align-self:
   stretch + min-height: 0`. Stretch garantia altura >= 460px sempre.
   
   v93+1.0: sem grid, precisa de altura EXPLÍCITA. `height: clamp(460,
   50vh, 560)` garante >= 460 sempre, evitando o conflito com
   `.agbz-mapwrap-frame { min-height: 460px }` que causaria clipping
   dos panes Leaflet → pins invisíveis (bug que torturou v96.0.0-0.2). */
.agbz-mapwrap {
    grid-area: auto !important;
    margin: 14px var(--agbz-pad) 0 var(--agbz-pad) !important;
    width: calc(100% - 2 * var(--agbz-pad)) !important;
    height: clamp(460px, 50vh, 560px) !important;
    box-sizing: border-box !important;
}
@media (max-width: 900px) {
    .agbz-mapwrap {
        margin-left:  var(--agbz-pad-mobile) !important;
        margin-right: var(--agbz-pad-mobile) !important;
        width: calc(100% - 2 * var(--agbz-pad-mobile)) !important;
        height: clamp(420px, 60vh, 520px) !important;
    }
}

/* ── 6. Info row (Filtros | Clima) — 2 col reflowa pra 1 col ───── */
.agbz-info-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    width: 100%;
    box-sizing: border-box;
    padding: 14px var(--agbz-pad) 0;
}
.agbz-info-row > .agbz-card {
    margin: 0;
    min-width: 0;
}
@media (max-width: 900px) {
    .agbz-info-row {
        grid-template-columns: 1fr;
        padding-left:  var(--agbz-pad-mobile);
        padding-right: var(--agbz-pad-mobile);
    }
}

/* ── 6b. Clima 2col — aproveita largura horizontal disponível ──── */
.agbz-clima-2col {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}
.agbz-clima-2col .agbz-clima-hero { grid-column: 1 / -1; }
.agbz-clima-2col .agbz-clima-loc  { grid-column: 1 / -1; }
@media (max-width: 540px) {
    .agbz-clima-2col {
        grid-template-columns: 1fr;
    }
}

/* ── 7. Commodities — grid auto-fit full-width (era col vertical) ── */
.agbz-commodities-row {
    width: 100%;
    box-sizing: border-box;
    padding: 14px var(--agbz-pad) 0;
}
.agbz-commodities-row .agbz-terminal-title {
    padding: 0 4px 10px;
    margin-bottom: 0;
}
.agbz-quotes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
    width: 100%;
}
.agbz-quotes-grid > .agbz-quote {
    margin: 0;
    min-width: 0;
}
@media (max-width: 900px) {
    .agbz-commodities-row {
        padding-left:  var(--agbz-pad-mobile);
        padding-right: var(--agbz-pad-mobile);
    }
    .agbz-quotes-grid {
        grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
        gap: 10px;
    }
}

/* ════════════════════════════════════════════════════════════════════════
   v124 — TERMINAL VERTICAL (substituindo o .agbz-quotes-grid auto-fit)
   ────────────────────────────────────────────────────────────────────────
   Quando o card commodities renderiza dentro de col3 do painel custom
   (300/1fr/320 grid), ele vira um terminal vertical: stack flex column
   com cards empilhados, espelhando .agbz-terminal do HTML de referência.

   O .agbz-commodities-row recebe a classe modificadora .agbz-terminal-v124
   pelo template (commodities.php v124), o que ativa as regras abaixo.
   ════════════════════════════════════════════════════════════════════════ */
.agbz-terminal-stack {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
}
.agbz-terminal-stack > .agbz-quote {
    margin: 0;
    min-width: 0;
    width: 100%;
}

/* Linha de unidade (praça + janela "30 dias") no rodapé de cada quote.
   Espelhando .agbz-quote__unit do HTML — duas pequenas labels lado a lado
   com cor muted e tipografia compacta. */
.agbz-quote-unit {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid var(--agbz-border);
    font-family: var(--agbz-f-sans);
    font-size: 9px;
    color: var(--agbz-muted);
    letter-spacing: 0.04em;
    line-height: 1.3;
}
.agbz-quote-unit span:last-child {
    color: var(--agbz-muted-dk);
    text-transform: uppercase;
    letter-spacing: 0.10em;
    font-weight: 500;
    font-size: 8.5px;
    flex-shrink: 0;
}

/* Quando o terminal está dentro da col3 estreita (320px no desktop),
   os números de preço podem precisar diminuir um pouco pra caber.
   Aplicado via descendant selector pra não afetar outros usos do card. */
.srp-pc-col-3 .agbz-quote-price {
    font-size: 15px;
}
.srp-pc-col-3 .agbz-quote-name {
    font-size: 11.5px;
}

/* ── 8. Garante que o macro e a section dos parceiros respeitem o
   mesmo padding horizontal das outras seções ────────────────────── */
.agbz-macro {
    margin-left:  var(--agbz-pad) !important;
    margin-right: var(--agbz-pad) !important;
    width: calc(100% - 2 * var(--agbz-pad)) !important;
    box-sizing: border-box !important;
}
@media (max-width: 900px) {
    .agbz-macro {
        margin-left:  var(--agbz-pad-mobile) !important;
        margin-right: var(--agbz-pad-mobile) !important;
        width: calc(100% - 2 * var(--agbz-pad-mobile)) !important;
    }
}

/* ════════════════════════════════════════════════════════════════════
   v93+1.0 — SCROLLBAR CRIATIVA AMARELO OVO + INDICADOR FLUTUANTE MOBILE
   ════════════════════════════════════════════════════════════════════
   Portado do v96.0.4. Substitui a scrollbar fina/neutra do tema WP
   por uma versão visível com identidade do plugin.

   Cor adicionada: amarelo ovo (#FFD955 → #FFC93C → #F0B232 → #E8A923)
   Largura: 14px desktop / 8px mobile
   Textura: 3 linhas horizontais de "grip" no thumb (affordance visual
            de "agarrar e arrastar")
   Animação: pulso sutil 3 ciclos ao boot (só em pointer:fine)
   Mobile: indicador flutuante <div class="agbz-scroll-hint"> injetado
           pelo template, some no primeiro scroll/touchmove ou após 14s
═══════════════════════════════════════════════════════════════════ */

/* ── Firefox (sem ::-webkit-scrollbar, mas honra scrollbar-color) ── */
html.agbz-page,
body.agbz-page {
    scrollbar-width: auto !important;
    scrollbar-color: #F0B232 rgba(15, 38, 32, 0.55) !important;
}

/* ── Webkit (Chrome/Safari/Edge/mobile) ────────────────────────── */
html.agbz-page::-webkit-scrollbar,
body.agbz-page::-webkit-scrollbar {
    width: 14px;
    height: 14px;
    background: rgba(15, 38, 32, 0.55);
}
html.agbz-page::-webkit-scrollbar-track,
body.agbz-page::-webkit-scrollbar-track {
    background: linear-gradient(
        90deg,
        rgba(6, 12, 10, 0.45) 0%,
        rgba(15, 38, 32, 0.55) 50%,
        rgba(6, 12, 10, 0.45) 100%
    );
    border-left:  1px solid rgba(212, 173, 90, 0.12);
    border-right: 1px solid rgba(212, 173, 90, 0.12);
    box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.35);
}
html.agbz-page::-webkit-scrollbar-thumb,
body.agbz-page::-webkit-scrollbar-thumb {
    background-color: #F0B232;
    background-image:
        linear-gradient(
            180deg,
            transparent 0,
            transparent calc(50% - 8px),
            rgba(95, 50, 0, 0.45) calc(50% - 8px),
            rgba(95, 50, 0, 0.45) calc(50% - 7px),
            transparent calc(50% - 7px),
            transparent calc(50% - 1px),
            rgba(95, 50, 0, 0.45) calc(50% - 1px),
            rgba(95, 50, 0, 0.45) calc(50%),
            transparent calc(50%),
            transparent calc(50% + 6px),
            rgba(95, 50, 0, 0.45) calc(50% + 6px),
            rgba(95, 50, 0, 0.45) calc(50% + 7px),
            transparent calc(50% + 7px),
            transparent 100%
        ),
        linear-gradient(
            180deg,
            #FFD955 0%,
            #FFC93C 30%,
            #F0B232 60%,
            #E8A923 100%
        );
    border: 2px solid rgba(15, 38, 32, 0.7);
    border-radius: 7px;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.35),
        inset 0 -1px 0 rgba(95, 50, 0, 0.3),
        0 0 4px rgba(0, 0, 0, 0.45);
    min-height: 48px;
}
html.agbz-page::-webkit-scrollbar-thumb:hover,
body.agbz-page::-webkit-scrollbar-thumb:hover {
    background-color: #FFC93C;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.5),
        inset 0 -1px 0 rgba(95, 50, 0, 0.3),
        0 0 12px rgba(255, 201, 60, 0.55),
        0 0 4px rgba(0, 0, 0, 0.45);
    cursor: grab;
}
html.agbz-page::-webkit-scrollbar-thumb:active,
body.agbz-page::-webkit-scrollbar-thumb:active {
    background-color: #FFD955;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.6),
        0 0 16px rgba(255, 217, 85, 0.7),
        0 0 4px rgba(0, 0, 0, 0.45);
    cursor: grabbing;
}
html.agbz-page::-webkit-scrollbar-corner,
body.agbz-page::-webkit-scrollbar-corner {
    background: rgba(15, 38, 32, 0.55);
}

/* ── Pulso de boas-vindas (só pointer fino, evita touch) ────── */
@keyframes agbz-scroll-pulse {
    0%, 100% {
        box-shadow:
            inset 0 1px 0 rgba(255, 255, 255, 0.35),
            inset 0 -1px 0 rgba(95, 50, 0, 0.3),
            0 0 4px rgba(0, 0, 0, 0.45);
    }
    50% {
        box-shadow:
            inset 0 1px 0 rgba(255, 255, 255, 0.5),
            inset 0 -1px 0 rgba(95, 50, 0, 0.3),
            0 0 10px rgba(255, 201, 60, 0.55),
            0 0 4px rgba(0, 0, 0, 0.45);
    }
}
@media (hover: hover) and (pointer: fine) {
    html.agbz-page::-webkit-scrollbar-thumb,
    body.agbz-page::-webkit-scrollbar-thumb {
        animation: agbz-scroll-pulse 4s ease-in-out 3;
        animation-delay: 1.5s;
    }
}

/* ── Mobile: scrollbar menor + grip removido ─────────────────── */
@media (max-width: 900px) {
    html.agbz-page::-webkit-scrollbar,
    body.agbz-page::-webkit-scrollbar {
        width: 8px;
        height: 8px;
    }
    html.agbz-page::-webkit-scrollbar-thumb,
    body.agbz-page::-webkit-scrollbar-thumb {
        border-width: 1px;
        border-radius: 4px;
        background-image: linear-gradient(
            180deg,
            #FFD955 0%,
            #FFC93C 50%,
            #E8A923 100%
        );
    }
}

/* ── Indicador flutuante mobile (some no 1º scroll) ──────────── */
.agbz-scroll-hint {
    position: fixed;
    right: 6px;
    bottom: 80px;
    width: 28px;
    height: 56px;
    z-index: 9000;
    pointer-events: none;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: linear-gradient(
        180deg,
        rgba(15, 38, 32, 0.85) 0%,
        rgba(15, 38, 32, 0.95) 100%
    );
    border: 1.5px solid #F0B232;
    border-radius: 14px;
    box-shadow:
        0 4px 14px rgba(0, 0, 0, 0.4),
        0 0 12px rgba(255, 201, 60, 0.35);
    opacity: 0.92;
    animation: agbz-hint-pulse 2.2s ease-in-out infinite;
}
.agbz-scroll-hint::before {
    content: '';
    width: 4px;
    height: 4px;
    background: #FFD955;
    border-radius: 50%;
    box-shadow:
        0 -7px 0 #FFC93C,
        0 7px 0 #E8A923;
    animation: agbz-hint-dots 1.4s ease-in-out infinite;
}
.agbz-scroll-hint::after {
    content: '';
    width: 0;
    height: 0;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-top: 7px solid #FFC93C;
    margin-top: 5px;
    filter: drop-shadow(0 0 3px rgba(255, 201, 60, 0.6));
    animation: agbz-hint-arrow 1.4s ease-in-out infinite;
}
@keyframes agbz-hint-pulse {
    0%, 100% {
        transform: scale(1);
        box-shadow:
            0 4px 14px rgba(0, 0, 0, 0.4),
            0 0 12px rgba(255, 201, 60, 0.35);
    }
    50% {
        transform: scale(1.08);
        box-shadow:
            0 6px 18px rgba(0, 0, 0, 0.5),
            0 0 20px rgba(255, 201, 60, 0.55);
    }
}
@keyframes agbz-hint-dots {
    0%, 100% { opacity: 0.6; }
    50%      { opacity: 1; }
}
@keyframes agbz-hint-arrow {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(3px); }
}
.agbz-scroll-hint--seen {
    opacity: 0;
    transform: translateX(40px) scale(0.7);
    transition: opacity 0.45s ease, transform 0.45s ease;
}
@media (hover: hover) and (pointer: fine) and (min-width: 901px) {
    .agbz-scroll-hint { display: none; }
}
@media (prefers-reduced-motion: reduce) {
    .agbz-scroll-hint,
    .agbz-scroll-hint::before,
    .agbz-scroll-hint::after,
    html.agbz-page::-webkit-scrollbar-thumb,
    body.agbz-page::-webkit-scrollbar-thumb {
        animation: none !important;
    }
}

/* ════════════════════════════════════════════════════════════════════
   v100 — COMPORTAMENTO DA PÁGINA (modo · scrollbar · fundo)
   ────────────────────────────────────────────────────────────────────
   3 dimensões independentes aplicadas como classes modificadoras no
   <html> e no <body> pelo script emitido em
   Mapa_Pinda_Dashboard_Cards::emitir_classes_pagina().

   Classes geradas:
     .agbz-page                         ← sempre (trigger base)
     .agbz-page--modo-{fullscreen|blog|auto}
     .agbz-page--sb-{custom|nativa|nenhuma}
     .agbz-page--bg-{gradient|transparente}

   Os padrões (fullscreen + custom + gradient) NÃO precisam de overrides
   — o `.agbz-root` original já implementa esse comportamento. As regras
   abaixo são só pros modos NÃO-DEFAULT.

   Editor: wp-admin → GeoAgro SRP → 🧩 Cards · Diagramação → seção
   "Comportamento da página".
════════════════════════════════════════════════════════════════════ */

/* ─── MODO: BLOG ──────────────────────────────────────────────────── */
/* Painel renderiza como conteúdo de blog: max-width 720px centrado,
   sem altura forçada, sem layout vertical fluido, fundo transparente
   (tema controla). Cards individuais herdam transparência também. */
html.agbz-page--modo-blog body,
body.agbz-page--modo-blog {
    background: transparent !important;
}
.agbz-page--modo-blog .agbz-root {
    display: block !important;
    min-height: auto !important;
    max-width: 720px !important;
    margin: 0 auto !important;
    padding: 1rem !important;
    background: transparent !important;
    background-image: none !important;
}
.agbz-page--modo-blog .agbz-root > * {
    margin-bottom: 1.5rem;
}
.agbz-page--modo-blog .agbz-ctx,
.agbz-page--modo-blog .agbz-ctx--card {
    background: transparent !important;
}
/* No modo blog, o ticker no topo ainda é full-width (estrutural) mas
   sem position:sticky pesado — flui como conteúdo. */
.agbz-page--modo-blog .agbz-ticker {
    position: static !important;
}

/* ─── MODO: AUTO ──────────────────────────────────────────────────── */
/* Zero overrides — painel e cards herdam exatamente o que o tema dá.
   Sem display:flex forçado, sem min-height, sem gradient. */
.agbz-page--modo-auto .agbz-root {
    display: block !important;
    min-height: auto !important;
    background: transparent !important;
    background-image: none !important;
}
.agbz-page--modo-auto .agbz-ctx,
.agbz-page--modo-auto .agbz-ctx--card {
    background: transparent !important;
}
.agbz-page--modo-auto .agbz-ticker {
    position: static !important;
}

/* ─── SCROLLBAR: NATIVA ───────────────────────────────────────────── */
/* Desativa a scrollbar dourada animada criativa, deixa a padrão do
   browser. Funciona zerando todas as regras ::-webkit-scrollbar-*. */
html.agbz-page--sb-nativa::-webkit-scrollbar,
body.agbz-page--sb-nativa::-webkit-scrollbar {
    width: auto !important;
    height: auto !important;
    background: transparent !important;
}
html.agbz-page--sb-nativa::-webkit-scrollbar-thumb,
body.agbz-page--sb-nativa::-webkit-scrollbar-thumb {
    background: rgba(0, 0, 0, 0.25) !important;
    animation: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    border: 0 !important;
}
html.agbz-page--sb-nativa::-webkit-scrollbar-track,
body.agbz-page--sb-nativa::-webkit-scrollbar-track {
    background: transparent !important;
    box-shadow: none !important;
}
html.agbz-page--sb-nativa,
body.agbz-page--sb-nativa {
    scrollbar-width: auto !important;
    scrollbar-color: auto !important;
}

/* ─── SCROLLBAR: NENHUMA ──────────────────────────────────────────── */
/* Bloqueia scroll global. Útil pra quiosques/displays fixos onde a
   página tem que caber EXATAMENTE na viewport sem qualquer barra.
   Cuidado: se o conteúdo exceder a viewport, fica inacessível. */
html.agbz-page--sb-nenhuma,
body.agbz-page--sb-nenhuma {
    overflow: hidden !important;
}
html.agbz-page--sb-nenhuma::-webkit-scrollbar,
body.agbz-page--sb-nenhuma::-webkit-scrollbar {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
}

/* ─── FUNDO: TRANSPARENTE ─────────────────────────────────────────── */
/* Remove o radial-gradient + a cor base do painel pra deixar o tema
   da página decidir. Útil pra integrar com temas claros ou pra
   embedar em iframes com fundo customizado. */
.agbz-page--bg-transparente .agbz-root,
.agbz-page--bg-transparente .agbz-ctx,
.agbz-page--bg-transparente .agbz-ctx--card {
    background: transparent !important;
    background-image: none !important;
}
html.agbz-page--bg-transparente body,
body.agbz-page--bg-transparente {
    background-color: transparent !important;
}


/* ═══════════════════════════════════════════════════════════════════════
   v145 — TERMINAL DE COMMODITIES COM SCROLL INTERNO
   ─────────────────────────────────────────────────────────────────────
   Briefing 28/jun/2026 (Michel): a primeira tentativa com JSON achatado
   (84 itens raiz, 1 por mês × commodity) deixou o card lateral com
   ~6.700px de altura, empurrando todo o dashboard pra baixo. A v145
   reestrutura o JSON pra 7 raiz + historico[12] aninhado E aplica
   altura máxima ao terminal vertical com scroll interno na paleta
   dourada — usuário navega pelos cards sem que o card cresça vertical.

   Aplica APENAS no modo terminal vertical do v124 (.agbz-terminal-v124).
   No grid horizontal full-width (.agbz-quotes-grid) o scroll não é
   necessário porque cards se acomodam em colunas.
   ═══════════════════════════════════════════════════════════════════════ */

.agbz-commodities-row.agbz-terminal-v124 .agbz-terminal-stack {
    max-height: 72vh;              /* ~700px em 1080p; ~520px em 720p */
    min-height: 320px;             /* nunca menor que ~4 cards visíveis */
    overflow-y: auto;
    overflow-x: hidden;
    padding-right: 6px;            /* respiro pra scrollbar não cobrir conteúdo */
    /* Fade sutil nas bordas top/bottom sinaliza overflow */
    mask-image: linear-gradient(
        to bottom,
        transparent 0,
        #000 14px,
        #000 calc(100% - 14px),
        transparent 100%
    );
    -webkit-mask-image: linear-gradient(
        to bottom,
        transparent 0,
        #000 14px,
        #000 calc(100% - 14px),
        transparent 100%
    );
    -webkit-overflow-scrolling: touch;
    scroll-behavior: smooth;
    /* Scrollbar elegante (Firefox + Edge) */
    scrollbar-width: thin;
    scrollbar-color: rgba(212, 173, 90, 0.55) rgba(255, 255, 255, 0.04);
}
@media (max-height: 800px) {
    .agbz-commodities-row.agbz-terminal-v124 .agbz-terminal-stack {
        max-height: 60vh;
    }
}
@media (max-width: 720px) {
    .agbz-commodities-row.agbz-terminal-v124 .agbz-terminal-stack {
        max-height: 65vh;
        min-height: 280px;
    }
}
/* Scrollbar Webkit (Chrome, Safari, Edge ≥ 79) */
.agbz-commodities-row.agbz-terminal-v124 .agbz-terminal-stack::-webkit-scrollbar {
    width: 6px;
}
.agbz-commodities-row.agbz-terminal-v124 .agbz-terminal-stack::-webkit-scrollbar-track {
    background: rgba(255, 255, 255, 0.03);
    border-radius: 3px;
}
.agbz-commodities-row.agbz-terminal-v124 .agbz-terminal-stack::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, #D4AD5A 0%, #8a6f3d 100%);
    border-radius: 3px;
    transition: background 0.18s ease;
}
.agbz-commodities-row.agbz-terminal-v124 .agbz-terminal-stack::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(180deg, #E8C26E 0%, #D4AD5A 100%);
}

/* Contador "X ativos" no header do terminal */
.agbz-terminal-counter {
    display: inline-block;
    margin-left: 10px;
    padding: 2px 8px;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgba(212, 173, 90, 0.75);
    background: rgba(212, 173, 90, 0.10);
    border: 1px solid rgba(212, 173, 90, 0.25);
    border-radius: 3px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    vertical-align: middle;
}

/* ═══════════════════════════════════════════════════════════════════════
   v175 — CARD GESTÃO DE RISCO NA PECUÁRIA (.agbz-risco-*) — BLINDADO
   Redesign terminal escuro (preview aprovado 03/07/2026) + BLINDAGEM
   v175 contra o cascade hostil: o painel custom aplica
   `.srp-pc-root .agbz-card { background/border }` (0,2,0) e
   `border-radius: 0 !important` (v123), que engoliam este card (por
   isso nem o creme da v173 nem o escuro da v174 apareceram no site).
   Padrão SRP de especificidade pareada: raiz `.agbz-card.agbz-risco
   .agbz-risco` e filhos `.agbz-risco.agbz-risco .x` (0,3,0) + todas as
   declarações com !important — vence 0,2,0 com !important em qualquer
   ordem de carga. Namespace exclusivo: !important aqui não vaza: o card
   abraça a identidade do AgriPainel — superfícies translúcidas sobre o
   verde-escuro, hairlines douradas, números em mono, comentário do
   consultor em serifa. Substitui o tema creme da v173, que o fundo
   escuro da página engolia (gauge ilegível, tiles brancos flutuando).
   Paleta: verde #1e5c30 · ouro #c8a84b · creme #f5efe3
   Semáforo dark: verde #97C459 · âmbar #EF9F27 · vermelho #E24B4A
   ═══════════════════════════════════════════════════════════════════════ */.agbz-card.agbz-risco.agbz-risco{background:#13221a !important;border:1px solid rgba(200,168,75,.28) !important;border-radius:14px !important;overflow:hidden !important;display:flex !important;flex-direction:column !important;height:100% !important;font-family:'DM Sans','Inter',system-ui,sans-serif !important;color:#ece5d3 !important}.agbz-risco.agbz-risco .agbz-risco-vazio{padding:24px !important;color:rgba(232,224,205,.6) !important;font-size:14px !important;margin:0 !important}

/* Cabeçalho */.agbz-risco.agbz-risco .agbz-risco-head{background:#1e5c30 !important;padding:12px 18px !important;display:flex !important;align-items:center !important;justify-content:space-between !important;gap:12px !important;flex-wrap:wrap !important}.agbz-risco.agbz-risco .agbz-risco-head-tit{display:flex !important;align-items:center !important;gap:10px !important;color:#f5efe3 !important;font-size:15px !important;font-weight:600 !important;letter-spacing:.09em !important;font-family:'Playfair Display',Georgia,serif !important}.agbz-risco.agbz-risco .agbz-risco-head-tit svg{width:20px !important;height:20px !important;color:#c8a84b !important;flex:none !important}.agbz-risco.agbz-risco .agbz-risco-toggle{display:flex !important;gap:6px !important}.agbz-risco.agbz-risco .agbz-risco-tab{appearance:none !important;-webkit-appearance:none !important;background:transparent !important;border:1px solid rgba(245,239,227,.35) !important;color:#e8e0cd !important;font-size:12px !important;font-weight:600 !important;padding:5px 16px !important;border-radius:20px !important;cursor:pointer !important;transition:background .15s,color .15s !important;font-family:'DM Sans','Inter',system-ui,sans-serif !important;line-height:1.2 !important}.agbz-risco.agbz-risco .agbz-risco-tab.is-ativo{background:#c8a84b !important;border-color:#c8a84b !important;color:#2a2410 !important}.agbz-risco.agbz-risco .agbz-risco-tab:focus-visible{outline:2px solid #c8a84b !important;outline-offset:2px !important}

/* Aviso de defasagem */.agbz-risco.agbz-risco .agbz-risco-stale{margin:12px 18px 0 !important;background:rgba(239,159,39,.12) !important;border:1px solid rgba(239,159,39,.45) !important;color:#FAC775 !important;border-radius:8px !important;padding:8px 12px !important;font-size:12px !important}

/* Modos (toggle) */.agbz-risco.agbz-risco .agbz-risco-modo{display:none !important}.agbz-risco.agbz-risco .agbz-risco-modo.is-visivel{display:block !important}

/* Topo: gauge + semáforos em linhas */.agbz-risco.agbz-risco .agbz-risco-topo{padding:16px 18px 4px !important;display:grid !important;grid-template-columns:168px minmax(0,1fr) !important;gap:14px !important;align-items:stretch !important}.agbz-risco.agbz-risco .agbz-risco-gauge-wrap{background:rgba(255,255,255,.045) !important;border:1px solid rgba(200,168,75,.18) !important;border-radius:10px !important;display:flex !important;flex-direction:column !important;align-items:center !important;justify-content:center !important;padding:12px 8px !important;gap:6px !important}.agbz-risco.agbz-risco .agbz-risco-gauge{width:118px !important;height:auto !important}.agbz-risco.agbz-risco .agbz-risco-gauge-num{font-size:26px !important;font-weight:500 !important;fill:#f5efe3 !important;font-family:'JetBrains Mono',ui-monospace,monospace !important}.agbz-risco.agbz-risco .agbz-risco-gauge-lbl{font-size:9px !important;fill:#c8a84b !important;letter-spacing:.14em !important;text-transform:uppercase !important;font-family:'DM Sans','Inter',system-ui,sans-serif !important}.agbz-risco.agbz-risco .agbz-risco-selo{font-size:11px !important;font-weight:600 !important;padding:3px 12px !important;border-radius:20px !important;letter-spacing:.05em !important;border:1px solid transparent !important}.agbz-risco.agbz-risco .agbz-risco-selo-tranquilo{background:rgba(151,196,89,.14) !important;border-color:rgba(151,196,89,.4) !important;color:#C0DD97 !important}.agbz-risco.agbz-risco .agbz-risco-selo-atencao{background:rgba(239,159,39,.14) !important;border-color:rgba(239,159,39,.45) !important;color:#FAC775 !important}.agbz-risco.agbz-risco .agbz-risco-selo-critico{background:rgba(226,75,74,.14) !important;border-color:rgba(226,75,74,.5) !important;color:#F09595 !important}.agbz-risco.agbz-risco .agbz-risco-dims{display:grid !important;grid-auto-rows:1fr !important;gap:8px !important}.agbz-risco.agbz-risco .agbz-risco-dim{background:rgba(255,255,255,.045) !important;border-left:3px solid #888780 !important;padding:8px 12px !important;display:flex !important;align-items:center !important;gap:12px !important;min-width:0 !important}.agbz-risco.agbz-risco .agbz-risco-dim-lbl{width:118px !important;flex:none !important;font-size:10px !important;color:rgba(232,224,205,.6) !important;letter-spacing:.12em !important;text-transform:uppercase !important}.agbz-risco.agbz-risco .agbz-risco-dim-nv{width:74px !important;flex:none !important;font-size:13px !important;font-weight:600 !important}.agbz-risco.agbz-risco .agbz-risco-dim-resumo{font-size:12px !important;color:rgba(232,224,205,.78) !important;font-family:'JetBrains Mono',ui-monospace,monospace !important;min-width:0 !important;overflow:hidden !important;text-overflow:ellipsis !important;white-space:nowrap !important}.agbz-risco.agbz-risco .agbz-risco-nv-tranquilo{border-left-color:#97C459 !important}.agbz-risco.agbz-risco .agbz-risco-nv-tranquilo .agbz-risco-dim-nv{color:#C0DD97 !important}.agbz-risco.agbz-risco .agbz-risco-nv-atencao{border-left-color:#EF9F27 !important}.agbz-risco.agbz-risco .agbz-risco-nv-atencao .agbz-risco-dim-nv{color:#FAC775 !important}.agbz-risco.agbz-risco .agbz-risco-nv-critico{border-left-color:#E24B4A !important}.agbz-risco.agbz-risco .agbz-risco-nv-critico .agbz-risco-dim-nv{color:#F09595 !important}

/* Indicadores — painel único dividido por hairlines */.agbz-risco.agbz-risco .agbz-risco-inds{margin:12px 18px 0 !important;background:rgba(255,255,255,.045) !important;border:1px solid rgba(200,168,75,.18) !important;border-radius:10px !important;display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr)) !important;gap:0 !important;overflow:hidden !important}.agbz-risco.agbz-risco .agbz-risco-ind{padding:11px 14px !important;display:flex !important;flex-direction:column !important;gap:2px !important;min-width:0 !important}.agbz-risco.agbz-risco .agbz-risco-ind:not(:last-child){border-right:1px solid rgba(200,168,75,.15) !important}.agbz-risco.agbz-risco .agbz-risco-ind-lbl{font-size:10px !important;color:rgba(232,224,205,.6) !important;letter-spacing:.1em !important;text-transform:uppercase !important}.agbz-risco.agbz-risco .agbz-risco-ind-val{font-size:21px !important;font-weight:500 !important;color:#f5efe3 !important;font-family:'JetBrains Mono',ui-monospace,monospace !important}.agbz-risco.agbz-risco .agbz-risco-ind-val em{font-style:normal !important;font-size:11px !important;font-weight:400 !important;color:#c8a84b !important;font-family:'DM Sans','Inter',system-ui,sans-serif !important}.agbz-risco.agbz-risco .agbz-risco-ind-nota{font-size:11px !important;color:rgba(232,224,205,.55) !important}.agbz-risco.agbz-risco .agbz-risco-tom-ok{color:#9FE1CB !important}.agbz-risco.agbz-risco .agbz-risco-tom-ruim{color:#F09595 !important}.agbz-risco.agbz-risco .agbz-risco-ind-nota.agbz-risco-tom-ok{color:#9FE1CB !important}.agbz-risco.agbz-risco .agbz-risco-ind-nota.agbz-risco-tom-ruim{color:#F09595 !important}

/* Comentário do consultor — bloco editorial */.agbz-risco.agbz-risco .agbz-risco-coment{margin:12px 18px 0 !important;background:rgba(200,168,75,.07) !important;border-left:3px solid #c8a84b !important;padding:12px 16px !important}.agbz-risco.agbz-risco .agbz-risco-coment-head{display:flex !important;align-items:center !important;gap:8px !important;margin-bottom:6px !important;color:#c8a84b !important;font-size:10px !important;font-weight:600 !important;letter-spacing:.14em !important;text-transform:uppercase !important}.agbz-risco.agbz-risco .agbz-risco-coment-head svg{width:15px !important;height:15px !important;flex:none !important}.agbz-risco.agbz-risco .agbz-risco-coment p{margin:0 !important;font-size:14px !important;line-height:1.7 !important;color:#ece5d3 !important;font-family:'Playfair Display',Georgia,serif !important}

/* Recomendações — painel único, linhas com hairline */.agbz-risco.agbz-risco .agbz-risco-recs{margin:12px 18px 0 !important;background:rgba(255,255,255,.045) !important;border:1px solid rgba(200,168,75,.18) !important;border-radius:10px !important;overflow:hidden !important;display:flex !important;flex-direction:column !important}.agbz-risco.agbz-risco .agbz-risco-recs-tit{padding:9px 14px 7px !important;font-size:10px !important;font-weight:600 !important;color:#c8a84b !important;letter-spacing:.14em !important;text-transform:uppercase !important;border-bottom:1px solid rgba(200,168,75,.15) !important}.agbz-risco.agbz-risco .agbz-risco-rec{display:flex !important;gap:10px !important;align-items:flex-start !important;padding:9px 14px !important;background:transparent !important;border:0 !important}.agbz-risco.agbz-risco .agbz-risco-rec + .agbz-risco-rec{border-top:1px solid rgba(200,168,75,.12) !important}.agbz-risco.agbz-risco .agbz-risco-rec-ico{flex:none !important;margin-top:1px !important}.agbz-risco.agbz-risco .agbz-risco-rec-ico svg{width:16px !important;height:16px !important}.agbz-risco.agbz-risco .agbz-risco-rec.agbz-risco-tom-ruim .agbz-risco-rec-ico{color:#FAC775 !important}.agbz-risco.agbz-risco .agbz-risco-rec.agbz-risco-tom-ok .agbz-risco-rec-ico{color:#9FE1CB !important}.agbz-risco.agbz-risco .agbz-risco-rec-txt{font-size:13px !important;color:#ece5d3 !important;line-height:1.45 !important;display:flex !important;flex-direction:column !important;gap:1px !important}.agbz-risco.agbz-risco .agbz-risco-rec-txt em{font-style:normal !important;font-size:11px !important;color:rgba(232,224,205,.5) !important}

/* Rodapé */.agbz-risco.agbz-risco .agbz-risco-rodape{margin-top:12px !important;padding:9px 18px !important;border-top:1px solid rgba(200,168,75,.18) !important;display:flex !important;justify-content:space-between !important;gap:8px !important;flex-wrap:wrap !important;font-size:11px !important;color:rgba(232,224,205,.5) !important}

/* Mobile ≤768px — gauge centraliza, semáforos empilham, indicadores 1 col */
@media(max-width:768px){
  .agbz-risco.agbz-risco .agbz-risco-topo{grid-template-columns:1fr !important;gap:10px !important;padding:14px 14px 4px !important}.agbz-risco.agbz-risco .agbz-risco-gauge-wrap{flex-direction:row !important;justify-content:center !important;gap:14px !important;padding:10px !important}.agbz-risco.agbz-risco .agbz-risco-dim{flex-wrap:wrap !important;gap:4px 12px !important}.agbz-risco.agbz-risco .agbz-risco-dim-lbl{width:auto !important;flex:1 1 100% !important}.agbz-risco.agbz-risco .agbz-risco-dim-resumo{white-space:normal !important;flex:1 1 100% !important}.agbz-risco.agbz-risco .agbz-risco-inds{grid-template-columns:1fr !important;margin-left:14px !important;margin-right:14px !important}.agbz-risco.agbz-risco .agbz-risco-ind:not(:last-child){border-right:0 !important;border-bottom:1px solid rgba(200,168,75,.15) !important}.agbz-risco.agbz-risco .agbz-risco-coment, .agbz-risco.agbz-risco .agbz-risco-recs{margin-left:14px !important;margin-right:14px !important}.agbz-risco.agbz-risco .agbz-risco-stale{margin-left:14px !important;margin-right:14px !important}.agbz-risco.agbz-risco .agbz-risco-head{padding:11px 14px !important}.agbz-risco.agbz-risco .agbz-risco-rodape{padding:9px 14px !important;flex-direction:column !important;gap:4px !important}
}

/* v175 — Higiene de herança: neutraliza estilos do tema WP em elementos
   primitivos dentro do card (margens de p, box model, line-height de
   headings de tema aplicados a spans etc.). */
.agbz-risco.agbz-risco.agbz-risco, .agbz-risco.agbz-risco.agbz-risco * { box-sizing: border-box !important; }
.agbz-risco.agbz-risco.agbz-risco p { margin: 0 !important; padding: 0 !important; text-shadow: none !important; }
.agbz-risco.agbz-risco.agbz-risco span, .agbz-risco.agbz-risco.agbz-risco em { text-shadow: none !important; }
.agbz-risco.agbz-risco.agbz-risco svg { display: block !important; max-width: none !important; }
.agbz-risco.agbz-risco.agbz-risco button.agbz-risco-tab { text-transform: none !important; box-shadow: none !important; text-shadow: none !important; margin: 0 !important; }
