/* =========================================================
   comercializacao.css — camada ADICIONAL da Mesa da Operação
   (js/sections/comercializacao.mesa.js). Não altera nenhuma
   regra existente: todo seletor é prefixado .ms- e vive dentro
   de #sec-comercializacao, mesmo espírito de visao-simples.css
   e confirmacoes.css (prefixo próprio, tokens de css/styles.css,
   zero cor nova fora do que já está documentado). Nenhum
   cálculo aqui: só apresentação.

   A peça central é o grid assimétrico com a coluna direita
   STICKY (.ms-col-direita) — é o comportamento que a Mesa existe
   para entregar: o payoff parado enquanto as pernas rolam.
   ========================================================= */

/* ── Barra de cotações do físico ────────────────────────── */
/* A faixa que abre a Mesa no original (market-bar.tsx): uma linha
   só, com a procedência atrás de um "de onde vêm" em vez de um
   parágrafo permanente. No celular só a cultura em simulação
   aparece: quem produz milho não decide nada olhando café, e as
   quatro cotações empurravam a primeira pergunta da tela para
   baixo da dobra. */
.ms-mkt{border-bottom:1px solid var(--borda,#e8e5da); background:#f6f5f1; border-radius:10px; margin-bottom:16px; padding:8px 14px;}
.ms-mkt-linha{display:flex; flex-wrap:wrap; align-items:center; gap:6px 20px;}
.ms-mkt-rotulo{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#5c5f54; flex-shrink:0;}
.ms-mkt-item{display:none; align-items:baseline; gap:6px;}
.ms-mkt-item.foco{display:flex;}
@media (min-width:640px){ .ms-mkt-item{display:flex;} }
.ms-mkt-nome{font-size:14px; color:#5c5f54;}
.ms-mkt-preco{font-size:15px; font-weight:600; color:var(--texto); background:none; border:0; padding:2px 0; cursor:pointer;
  font-variant-numeric:tabular-nums; text-decoration:underline dotted; text-underline-offset:4px;}
.ms-mkt-preco:hover{color:var(--verde-lavoura);}
.ms-mkt-vazio,.ms-mkt-fx{font-size:15px; font-variant-numeric:tabular-nums; color:#5c5f54;}
.ms-mkt-fx{font-weight:600; color:var(--texto);}
.ms-mkt-fim{margin-left:auto; display:flex; align-items:center; gap:12px; font-size:13px; color:#5c5f54;}
.ms-mkt-explica summary{cursor:pointer; text-decoration:underline dotted; text-underline-offset:3px;}
.ms-mkt-explica p{margin:6px 0 0; max-width:52ch; line-height:1.45; font-size:12.5px;}
.ms-mkt-btn{border:1px solid var(--borda,#d2c9b6); border-radius:6px; background:#fff; padding:4px 12px; font-size:13px; color:#5c5f54; cursor:pointer;}
.ms-mkt-btn[disabled]{opacity:.5; cursor:default;}
.ms-mkt-erro{margin:6px 0 0; font-size:13px; line-height:1.4; color:#8a6a0d;}

/* ── Catálogo de pernas (folha sobre a tela) ────────────── */
/* Porte de crop-plan/catalog-sheet.tsx + leg-picker.tsx. A folha é
   larga de propósito: na Mesa o gatilho mora numa coluna de ~380px
   cercada de tela ociosa, e um menu de nove itens não cabe ali sem
   virar lista de uma linha por item. */
.ms-cat-veu{position:fixed; inset:0; z-index:50; display:flex; align-items:flex-start; justify-content:center;
  overflow-y:auto; padding:12px; background:rgba(35,41,31,.45);}
@media (min-width:640px){ .ms-cat-veu{padding:24px;} }
.ms-cat-painel{margin:auto; display:flex; flex-direction:column; width:100%; max-width:1600px; max-height:100%; min-height:0;
  overflow:hidden; border-radius:14px; border:1px solid var(--borda,#d2c9b6); background:var(--card,#fff);
  box-shadow:0 18px 48px rgba(35,41,31,.28);}
.ms-cat-topo{display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:6px 24px;
  border-bottom:1px solid var(--borda-suave,#e8e5da); padding:12px 18px;}
.ms-cat-topo-txt{display:flex; min-width:0; flex-wrap:wrap; align-items:baseline; gap:4px 16px;}
.ms-cat-titulo{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#5c5f54; margin:0; flex-shrink:0;}
.ms-cat-resumo{font-size:14px; line-height:1.4; color:#5c5f54; margin:0;}
.ms-cat-fechar{min-height:44px; flex-shrink:0; background:none; border:0; cursor:pointer; font-size:13.5px;
  color:#5c5f54; text-decoration:underline; text-underline-offset:4px;}
.ms-cat-fechar .esc{font-size:12px;}
/* min-height:0 obrigatório: sem ele o filho flex não encolhe e o
   overflow-y nunca chega a agir. */
.ms-cat-corpo{min-height:0; flex:1; overflow-y:auto; overscroll-behavior:contain; padding:18px; container-type:inline-size;}
.ms-cat-familia{margin-top:20px; min-width:0;}
.ms-cat-familia:first-child{margin-top:0;}
.ms-cat-familia-cab{display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 12px; margin-bottom:10px;}
.ms-cat-familia-tit{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; margin:0; flex-shrink:0;}
.ms-cat-familia-lead{font-size:13.5px; line-height:1.4; color:#5c5f54; margin:0;}
.ms-cat-fio{display:none; height:1px; min-width:32px; flex:1; opacity:.35;}
.ms-cat-grade{list-style:none; margin:0; padding:0; display:grid; gap:12px;}
@container (min-width:500px){ .ms-cat-grade{grid-template-columns:repeat(2,1fr);} .ms-cat-fio{display:block;} }
@container (min-width:820px){ .ms-cat-grade{grid-template-columns:repeat(3,1fr);} }
/* Pula o 4 de propósito: com 5 colunas a família PRODUTO (5 cartões)
   fecha numa fileira só. Cartão mais largo perde para fileira a menos. */
@container (min-width:1230px){ .ms-cat-grade{grid-template-columns:repeat(5,1fr);} }
.ms-cat-grade>li{min-width:0;}
.ms-cat-cartao{display:flex; flex-direction:column; align-items:stretch; height:100%; width:100%; text-align:left;
  background:#fff; border:1.5px solid var(--borda-suave,#e8e5da); border-radius:10px; padding:14px 16px; cursor:pointer;
  transition:border-color 140ms ease, background-color 140ms ease;}
.ms-cat-cartao:hover{border-color:var(--verde-lavoura);}
.ms-cat-cartao:focus-visible{outline:2px solid var(--dourado-soja); outline-offset:2px;}
.ms-cat-cartao-topo{display:block; flex:1;}
.ms-cat-cartao-nome{display:block; font-size:15.5px; line-height:1.25; font-weight:600; color:var(--texto);}
.ms-cat-cartao-resumo{display:block; margin-top:4px; font-size:13.5px; line-height:1.45; color:#5c5f54;}
/* A contrapartida vem sempre, e vem marcada: é o que separa este menu
   de um catálogo de produto financeiro. Filete e rótulo, não tarja:
   nove cartões com tarja viram nove alertas, ou uma tarja que se
   aprende a pular. */
.ms-cat-cartao-troca{display:block; margin-top:10px; border-top:1px solid var(--borda-suave,#e8e5da); padding-top:8px;
  font-size:12.5px; line-height:1.4;}
.ms-cat-cartao-troca .rot{color:#6b6e64;}
.ms-cat-cartao-troca .txt{color:#8a6a0d;}
.ms-cat-cartao.ativa{border-color:var(--verde-lavoura); background:#eef4ec;}
.ms-cat-lead{font-size:14px; color:#5c5f54; margin:0 0 14px;}
/* No catálogo de ESTRUTURAS o título da família não é rótulo de seção:
   é o nome da pergunta ("protege da queda"), em caixa normal. */
.ms-cat-familia-tit-normal{text-transform:none; letter-spacing:0; font-size:13.5px; font-weight:600;}
@container (min-width:520px){ .ms-cat-grade-estrategias{grid-template-columns:repeat(2,1fr);} }
@container (min-width:820px){ .ms-cat-grade-estrategias{grid-template-columns:repeat(3,1fr);} }
@container (min-width:1100px){ .ms-cat-grade-estrategias{grid-template-columns:repeat(4,1fr);} }

/* ── Perna de opções: as pontas da estrutura ────────────── */
/* Cada ponta é um cartão com rótulo acima de cada campo. Na coluna de
   ~380px da Mesa uma tabela de seis colunas não tem conserto: ela vira
   cartão. Perde-se a comparação de relance entre as pontas, ganha-se
   poder ler o que cada campo é. */
.ms-opt{margin-top:4px;}
.ms-opt-vazio{font-size:13px; color:#5c5f54; margin:0 0 8px; line-height:1.4;}
.ms-opt-escolher{background:var(--verde-lavoura); color:#fff; border:0; border-radius:8px;
  padding:8px 14px; font-size:13.5px; font-weight:600; cursor:pointer; min-height:44px;}
.ms-opt-cab{display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:4px 16px; margin-bottom:10px;}
.ms-opt-nome{font-size:13.5px; color:#5c5f54; margin:0; min-width:0; line-height:1.4;}
.ms-opt-nome strong{color:var(--texto);}
.ms-opt-acoes{display:flex; flex-shrink:0; gap:16px;}
.ms-opt-acoes button{background:none; border:0; padding:0; cursor:pointer; min-height:44px;
  font-size:13px; color:#0369a1; text-decoration:underline; text-underline-offset:4px;}
.ms-opt-pontas{list-style:none; margin:0; padding:0; display:grid; gap:10px;}
.ms-opt-ponta{border:1px solid var(--borda-suave,#e8e5da); border-radius:8px; background:#fff; padding:10px 12px;}
.ms-opt-ponta-tit{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:#5c5f54; margin:0 0 8px;}
.ms-opt-grade{display:grid; grid-template-columns:repeat(2,1fr); gap:10px 12px;}
.ms-opt-campo{display:block; min-width:0;}
.ms-opt-rot{display:block; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#5c5f54;}
.ms-opt-campo input,.ms-opt-campo select{width:100%; margin-top:2px; background:transparent; border:0;
  border-bottom:2px solid var(--borda,#d2c9b6); padding:6px 2px; font-size:14px; color:var(--texto);
  font-variant-numeric:tabular-nums; outline:none;}
.ms-opt-campo input:focus,.ms-opt-campo select:focus{border-bottom-color:var(--verde-lavoura);}
.ms-opt-dica{display:block; margin-top:2px; font-size:11px; line-height:1.3; color:#6b6e64;}
.ms-opt-desembolso{margin:10px 0 0; font-size:13px; color:#5c5f54; line-height:1.4;}

/* ── Cabeçalho ──────────────────────────────────────────── */
.ms-topo{display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:12px; margin-bottom:16px;}
.ms-titulo{font-size:22px; font-weight:700; color:var(--verde-lavoura); margin:0 0 4px;}
.ms-sub{font-size:13.5px; color:#5c5f54; margin:0; max-width:62ch; line-height:1.45;}
.ms-acoes{display:flex; flex-wrap:wrap; align-items:center; gap:10px;}

/* ── Faixa de parâmetros (MesaParams) ──────────────────── */
.ms-params{background:var(--card); border:1px solid var(--borda-suave); border-radius:var(--raio);
  box-shadow:var(--sombra-1); padding:16px 18px; margin-bottom:18px;}
.ms-params-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:14px 20px;}
@media (min-width:640px){ .ms-params-grid{grid-template-columns:repeat(3,1fr);} }
@media (min-width:1024px){ .ms-params-grid{grid-template-columns:repeat(5,1fr);} }

.ms-campo{display:block; min-width:0;}
.ms-campo-rot{display:block; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  color:#5c5f54; margin-bottom:4px;}
.ms-campo input, .ms-campo select{width:100%; border:1px solid var(--borda-suave); border-radius:8px;
  padding:8px 10px; font-size:1rem; font-family:var(--fonte); background:#fff; color:var(--texto);
  min-height:38px;}
.ms-campo .ms-dica{display:block; font-size:11.5px; color:#5c5f54; margin-top:4px; line-height:1.35;}
/* O label do checkbox carrega as DUAS classes no mesmo elemento
   (`class="ms-campo ms-check"`), entao o seletor precisa ser composto:
   `.ms-campo label.ms-check` pedia um label DENTRO de .ms-campo e nunca
   casava, deixando a caixinha herdar `width:100%` e `min-height:38px`
   da regra de input acima. */
label.ms-campo.ms-check{display:flex; align-items:flex-start; gap:8px; font-size:13px; color:var(--texto);
  line-height:1.35; cursor:pointer;}
label.ms-campo.ms-check input[type="checkbox"]{width:16px; min-width:16px; height:16px; min-height:0;
  margin:2px 0 0; padding:0; border-radius:3px; flex:0 0 auto; accent-color:var(--verde-lavoura);}

.ms-premissas{margin-top:14px;}
.ms-premissas > summary{cursor:pointer; font-size:13.5px; color:#5c5f54; text-decoration:underline;
  text-underline-offset:3px; list-style:none;}
.ms-premissas > summary::-webkit-details-marker{display:none;}
.ms-premissas-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:14px 20px; margin-top:12px;}
@media (min-width:640px){ .ms-premissas-grid{grid-template-columns:repeat(3,1fr);} }
@media (min-width:1024px){ .ms-premissas-grid{grid-template-columns:repeat(6,1fr);} }

/* ── Grid principal: coluna de pernas + coluna de payoff ── */
.ms-grid{display:grid; grid-template-columns:1fr; gap:20px; align-items:start; min-width:0;}
@media (min-width:1024px){ .ms-grid{grid-template-columns:minmax(300px,380px) 1fr;} }

.ms-col-esquerda{min-width:0;}
/* A coluna do payoff gruda no topo: fica parada enquanto a lista de
   pernas rola por baixo — a razão de existir desta tela. */
.ms-col-direita{min-width:0;}
@media (min-width:1024px){ .ms-col-direita{position:sticky; top:16px;} }

/* ── Alerta de excesso ──────────────────────────────────── */
.ms-alerta{border:2px solid var(--terra); background:#fbe9e1; color:var(--terra);
  border-radius:var(--raio); padding:10px 14px; font-size:13.5px; line-height:1.45; margin-bottom:16px;}
.ms-alerta p{margin:0 0 8px;} .ms-alerta p:last-child{margin-bottom:0;}

/* ── Seções de família de perna ─────────────────────────── */
.ms-secao{margin-bottom:18px;}
.ms-secao:last-child{margin-bottom:0;}
.ms-secao-titulo{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  color:#5c5f54; margin:0 0 8px;}
.ms-vazio{background:var(--bg); color:#5c5f54; border-radius:10px; padding:9px 12px;
  font-size:13px; line-height:1.4; margin:0;}
.ms-lista{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px;}

/* ── Cartão de perna (acordeão) ─────────────────────────── */
.ms-leg{background:var(--card); border:1px solid var(--borda-suave); border-radius:12px;
  box-shadow:var(--sombra-1); overflow:hidden;}
.ms-leg-linha{display:flex; align-items:stretch; min-width:0;}

/* Punho de arraste: a faixa canelada na borda esquerda da perna.
   `touch-action:none` para o gesto no celular virar arraste em vez de
   rolagem da pagina. */
.ms-punho{display:flex; flex:0 0 24px; align-items:center; justify-content:center; align-self:stretch;
  border:0; border-right:1px solid var(--borda-suave); background:var(--bg); color:#8a8d83;
  font-size:12px; line-height:1; cursor:grab; touch-action:none; padding:0;
  transition:background-color 120ms ease, color 120ms ease;}
.ms-punho:hover{background:var(--verde-tinta); color:var(--verde-lavoura);}
.ms-punho:active{cursor:grabbing;}
.ms-punho:focus-visible{outline:2px solid var(--dourado-soja); outline-offset:-2px;}
/* Quem saiu do lugar some pela metade; quem vai receber acende a borda. */
.ms-leg.arrastando{opacity:.45;}
.ms-leg.sobre{border-color:var(--verde-lavoura);}
.ms-leg.arrastando .ms-punho{background:var(--verde-tinta); color:var(--verde-lavoura); cursor:grabbing;}

/* width:100% e obrigatorio: <button> com width auto encolhe para o
   conteudo mesmo com display:flex, entao o cartao ficava com uma faixa
   morta a direita e o numero de cada perna parava numa coluna
   diferente. O original resolve isso com `w-full`. */
.ms-leg-summary{display:flex; align-items:flex-start; gap:10px; width:100%; flex:1; min-width:0;
  padding:9px 12px; text-align:left; background:transparent; border:0; cursor:pointer;}
.ms-leg-summary:hover{background:var(--verde-tinta);}
.ms-leg-info{min-width:0; flex:1;}
.ms-leg-fam{display:block; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;}
.ms-fam-produto{color:var(--verde-lavoura);}
.ms-fam-protecao{color:#0369a1;}
.ms-fam-cambio{color:#92400e;}
.ms-leg-nome{display:block; font-weight:600; font-size:.98rem; color:var(--texto); margin-top:2px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.ms-leg-vol{display:block; font-size:.78rem; color:#5c5f54; margin-top:2px; font-variant-numeric:tabular-nums;}

.ms-leg-principal{flex:0 0 auto; text-align:right;}
.ms-leg-principal .grande{display:block; font-size:1.05rem; font-weight:700; font-variant-numeric:tabular-nums;}
.ms-leg-principal .pequeno{display:block; font-size:.76rem; font-variant-numeric:tabular-nums; margin-top:1px;}
.ms-leg-principal .custo{display:block; font-size:.76rem; font-variant-numeric:tabular-nums; margin-top:2px;}
.ms-leg-seta{flex:0 0 auto; margin-top:2px; color:#5c5f54; font-size:.8rem;}

/* Painel de rendimento da perna que só aplica o recurso. */
.ms-apl{margin-top:4px; border:1px solid var(--borda-suave); border-radius:8px; background:var(--bg); padding:10px 12px;}
.ms-apl-tit{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#5c5f54; margin:0 0 8px;}
.ms-apl-linhas{margin:0; display:grid; grid-template-columns:repeat(2,1fr); gap:8px 12px;}
.ms-apl-linhas>div{min-width:0;}
.ms-apl-linhas dt{font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#5c5f54; margin:0;}
.ms-apl-linhas dd{margin:2px 0 0; font-size:15px; font-weight:700; font-variant-numeric:tabular-nums; color:var(--texto);}
.ms-apl-linhas dd.pos{color:var(--pos);}
.ms-apl-nota{margin:8px 0 0; font-size:11.5px; line-height:1.35; color:#8a6a0d;}

.ms-leg-body{border-top:1px solid var(--borda-suave); padding:12px 14px;}
.ms-leg-body .ms-campo{margin-bottom:10px;}
.ms-leg-body .ms-campo:last-of-type{margin-bottom:12px;}
.ms-leg-body .ms-nome-perna{margin-bottom:12px;}

.ms-racional{background:rgba(47,107,52,.06); border-radius:8px; padding:8px 10px; font-size:12.5px;
  line-height:1.5; color:var(--texto);}
.ms-racional p{margin:0 0 3px;} .ms-racional p:last-child{margin-bottom:0;}

.ms-caixa-leg{margin-top:10px; border-radius:8px; padding:8px 10px; font-size:12.5px; line-height:1.45;}
.ms-caixa-leg.paga{background:#fbe9e1; color:var(--terra);}
.ms-caixa-leg.recebe{background:var(--bg); color:#5c5f54;}
.ms-caixa-leg strong{display:block; margin-bottom:2px;}

.ms-avisos-leg{margin:10px 0 0; padding:8px 10px; background:#fef3c7; color:#92400e; border-radius:8px;
  font-size:12px; line-height:1.4; list-style:none;}
.ms-avisos-leg li{margin-bottom:4px;} .ms-avisos-leg li:last-child{margin-bottom:0;}

.ms-remover-leg{margin-top:10px; font-size:12.5px; color:#5c5f54; text-decoration:underline;
  text-underline-offset:3px; background:none; border:0; cursor:pointer; padding:0; min-height:28px;}

.ms-add-leg{margin-top:4px; width:100%; border:2px dashed var(--borda-suave); border-radius:10px;
  padding:10px 12px; background:transparent; color:#5c5f54; font-size:.9rem; cursor:pointer;
  min-height:44px; transition:border-color .15s ease, color .15s ease, background-color .15s ease;}
.ms-add-leg:hover{border-color:var(--verde-lavoura); color:var(--verde-lavoura); background:var(--verde-tinta);}

/* ── Payoff: card, gráfico, tabela ───────────────────────── */
.ms-payoff-card{background:var(--card); border:1px solid var(--borda-suave); border-radius:var(--raio);
  box-shadow:var(--sombra-1); padding:16px 18px;}
.ms-payoff-titulo{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  color:#5c5f54; margin:0 0 10px;}

.ms-chart-wrap{position:relative; height:clamp(15rem,34vh,22rem); overflow-x:auto;}
.ms-chart-wrap svg{width:100%; height:100%; min-width:480px; display:block;}
.ms-chart-rodape{margin-top:8px; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between;
  gap:8px 20px; font-size:.86rem;}
.ms-legenda{display:inline-flex; align-items:center; gap:8px; border:0; background:none; cursor:pointer;
  padding:2px 4px; color:var(--texto); opacity:1; min-height:28px;}
.ms-legenda[data-ativa="0"]{opacity:.4;}
.ms-legenda svg{flex:0 0 auto;}
.ms-status-grafico{margin:0; color:#5c5f54; font-variant-numeric:tabular-nums; min-width:0;}

.ms-tabela-wrap{margin-top:14px; padding-top:12px; border-top:1px solid var(--borda-suave); overflow-x:auto;}
.ms-tabela{width:100%; border-collapse:collapse; font-size:.85rem; min-width:26rem;}
.ms-tabela th{background:var(--verde-tinta); color:var(--verde-lavoura); text-align:left; padding:6px 8px;
  font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; border-bottom:2px solid var(--verde-lavoura);}
.ms-tabela th.c{text-align:center;} .ms-tabela th.r{text-align:right;}
.ms-tabela td{padding:5px 8px; border-bottom:1px solid var(--borda-suave); font-variant-numeric:tabular-nums;}
.ms-tabela td.c{text-align:center;} .ms-tabela td.r{text-align:right;}
.ms-tabela tr.hoje{background:var(--bg);}
.ms-tabela tr.aceso{background:var(--verde-tinta);}
.ms-tabela-legenda{margin:8px 0 0; font-size:11.5px; color:#5c5f54; line-height:1.5;}

/* ── Resumo da safra ─────────────────────────────────────── */
.ms-resumo{background:var(--verde-tinta); border:1px solid #c9e0c6; border-radius:var(--raio);
  box-shadow:var(--sombra-1); padding:16px 18px; margin-top:16px;}
.ms-resumo-titulo{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  color:var(--verde-escuro); margin:0 0 12px;}
.ms-resumo-flex{display:flex; flex-wrap:wrap; align-items:stretch; gap:20px 32px;}
.ms-resumo-principal{flex:0 0 auto; min-width:0; padding-right:28px; border-right:1px solid #c9e0c6;}
@media (max-width:640px){ .ms-resumo-principal{width:100%; border-right:0; border-bottom:1px solid #c9e0c6; padding:0 0 14px; padding-right:0;} }
.ms-resumo-rot{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--verde-escuro); margin:0;}
.ms-resumo-valor{font-size:clamp(1.6rem,3.4vw,2.1rem); font-weight:700; font-variant-numeric:tabular-nums;
  color:var(--verde-escuro); margin:2px 0 0;}
.ms-resumo-frase{font-size:.88rem; color:#3d6b3f; margin:6px 0 0;}
.ms-resumo-frase strong{font-variant-numeric:tabular-nums; color:var(--verde-escuro);}
.ms-resumo-metricas{flex:1; min-width:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(7.2rem,1fr));
  gap:12px 20px;}
.ms-metrica{min-width:0;}
.ms-metrica dt{font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#3d6b3f; margin:0;}
.ms-metrica dd{font-size:1.02rem; font-weight:600; font-variant-numeric:tabular-nums; color:var(--verde-escuro); margin:2px 0 0;}

/* ── Caixa (CashPanel) ───────────────────────────────────── */
.ms-cash{background:var(--card); border:1px solid var(--borda-suave); border-radius:var(--raio);
  box-shadow:var(--sombra-1); padding:16px 18px; margin-top:20px;}
.ms-cash-frase{font-size:.92rem; line-height:1.5; margin:0 0 10px; color:var(--texto);}
.ms-cash-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(9rem,1fr)); gap:10px 20px; margin-top:6px;}
.ms-cash-item dt{font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#5c5f54; margin:0;}
.ms-cash-item dd{font-size:1rem; font-weight:600; font-variant-numeric:tabular-nums; margin:2px 0 0;}
.ms-cash-item.destaque dd{font-size:1.12rem; font-weight:700;}
.ms-cash-dolar{margin-top:12px; background:#fef3c7; color:#92400e; border-radius:8px; padding:9px 12px; font-size:.88rem; line-height:1.5;}
.ms-cash-nota{margin-top:10px; font-size:11.5px; color:#5c5f54; line-height:1.45;}

/* ── Avisos gerais ───────────────────────────────────────── */
.ms-avisos{list-style:none; margin:20px 0 0; padding:12px 16px; background:#fef3c7; color:#92400e;
  border-radius:var(--raio); font-size:.88rem; line-height:1.5;}
.ms-avisos li{margin-bottom:6px;} .ms-avisos li:last-child{margin-bottom:0;}

/* ── Panorama do plano ───────────────────────────────────── */
.ms-panorama{margin-top:20px;}
.ms-panorama-grid{display:grid; grid-template-columns:1fr; gap:16px;}
@media (min-width:1024px){ .ms-panorama-grid{grid-template-columns:repeat(3,1fr);} }
.ms-scenario{background:var(--card); border:1px solid var(--borda-suave); border-radius:var(--raio);
  box-shadow:var(--sombra-1); padding:16px 18px; min-width:0;}
.ms-scenario-titulo{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#5c5f54; margin:0;}
.ms-scenario-valor{font-size:1.55rem; font-weight:700; font-variant-numeric:tabular-nums; color:var(--verde-lavoura); margin:2px 0 0;}
.ms-scenario-unid{font-size:.85rem; color:#5c5f54; margin:0;}
.ms-scenario-linhas{margin:12px 0 0; display:flex; flex-direction:column; gap:6px; font-size:.9rem;}
.ms-scenario-linha{display:flex; align-items:baseline; justify-content:space-between; gap:10px;}
.ms-scenario-linha dt{color:#5c5f54; margin:0;}
.ms-scenario-linha dd{font-weight:600; font-variant-numeric:tabular-nums; margin:0;}
.ms-scenario-frase{margin:10px 0 0; font-size:.86rem; color:#5c5f54; line-height:1.45;}

.ms-panorama-detalhe{margin-top:16px; background:var(--card); border:1px solid var(--borda-suave);
  border-radius:var(--raio); box-shadow:var(--sombra-1); padding:16px 18px;}
.ms-panorama-detalhe > summary{cursor:pointer; font-size:1.02rem; color:var(--texto); list-style:none;}
.ms-panorama-detalhe > summary::-webkit-details-marker{display:none;}
.ms-tranche{margin-top:18px;}
.ms-tranche-titulo{font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#5c5f54; margin:0 0 8px;}
.ms-tranche-wrap{overflow-x:auto;}
.ms-tranche-table{width:100%; min-width:46rem; border-collapse:collapse; font-size:.86rem;}
/* Cabeçalho em caixa alta pequena, como todo rótulo de tabela do
   original (a classe `rule-label` que ele aplica a cada <Th>). */
.ms-tranche-table th{color:#5c5f54; text-align:right; padding:6px 8px; font-weight:700; font-size:.72rem;
  text-transform:uppercase; letter-spacing:.04em;}
.ms-tranche-table th.l{text-align:left;}
.ms-tranche-table td{padding:6px 8px; border-top:1px solid var(--borda-suave); text-align:right; font-variant-numeric:tabular-nums;}
.ms-tranche-table td.l{text-align:left;}
.ms-tranche-table tr.total td{border-top:2px solid var(--borda-suave); font-weight:600;}
.ms-tranche-avisos{margin:10px 0 0; padding-left:18px; color:var(--dourado-soja); font-size:.82rem; line-height:1.5;}

/* ── Confirmação de salvar na Carteira ───────────────────── */
.ms-salvo-ok{display:inline-block; margin-left:10px; font-size:.85rem; color:var(--pos); font-weight:600;}
