/* =============================================================
 * Vista explodida pelo PDF (vista-v2-ui.js) — 21/10/2026
 * Árvore | desenho com balões | coluna de peças, na identidade do portal (tokens da portal-2026.css, Manrope).
 * Só tokens: o modo escuro vem de :root[data-theme="dark"]. Exceção de propósito: o desenho é papel branco nos dois
 * temas (--photo), então os balões usam cores fixas pensadas para o branco (--v2-balao*).
 * ============================================================= */
.v2-app{
  --v2-arvore:236px; --v2-pecas:300px;
  /* cor do balão também fora da folha (o P/M/G escolhido no zoom usava var(--v2-balao) sem ela e ficava invisível) */
  --v2-balao:#0a9492; --v2-balao-ativo:#17221e;
  container-type:inline-size;
  display:flex; flex-direction:column; gap:10px;
  height:var(--v2-altura, calc(100vh - var(--topbar-height, 71px) - 64px)); min-height:520px;
  font-family:var(--font-body, 'Manrope', system-ui, sans-serif); font-size:13px; color:var(--ink);
}
.v2-app *, .v2-pop *{ box-sizing:border-box; }
.v2-app [hidden]{ display:none !important; }
:where(.v2-app) button{ font:inherit; color:inherit; }
.v2-app :focus-visible, .v2-pop :focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.v2-esp{ flex:1 1 0; }
.v2-sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* ---------- botões ---------- */
.v2-btn{ appearance:none; display:inline-flex; align-items:center; gap:6px; height:32px; padding:0 12px; border:1px solid var(--line); border-radius:9px; background:var(--panel); color:var(--ink); font-weight:700; font-size:12.5px; cursor:pointer; white-space:nowrap; }
.v2-btn:hover:not(:disabled){ background:var(--accent-50); border-color:var(--accent-line); color:var(--accent-ink); }
.v2-btn-prim{ background:var(--brand-strong, var(--accent)); border-color:var(--brand-strong, var(--accent)); color:var(--on-accent); } /* D9 */
.v2-btn-prim:hover:not(:disabled){ background:var(--accent-deep); border-color:var(--accent-deep); color:var(--on-accent); }
.v2-btn:disabled{ opacity:.45; cursor:not-allowed; }
.v2-btn-p{ height:28px; padding:0 10px; font-size:12px; }
.v2-ib{ appearance:none; display:inline-grid; place-items:center; width:30px; height:30px; border:1px solid transparent; border-radius:8px; background:transparent; color:var(--ink-2); cursor:pointer; flex:none; }
.v2-ib:hover:not(:disabled){ background:var(--hover); color:var(--ink); border-color:var(--line); }
.v2-ib:disabled{ opacity:.35; cursor:not-allowed; }
.v2-link{ appearance:none; border:0; background:none; padding:0; color:var(--accent-ink); font-weight:700; font-size:12px; cursor:pointer; text-decoration:underline; text-underline-offset:2px; display:inline-flex; align-items:center; gap:4px; white-space:nowrap; }
.v2-link:hover{ color:var(--accent-deep); }
.v2-perigo, .v2-link.v2-perigo{ color:var(--red); }

/* ---------- pílulas ---------- */
.v2-pill{ display:inline-flex; align-items:center; gap:4px; border-radius:var(--r-pill, 999px); padding:2px 8px; font-size:11px; font-weight:700; white-space:nowrap; line-height:1.5; }
.v2-pill-ok{ background:var(--accent-soft); color:var(--accent-ink); }
.v2-pill-neutra{ background:var(--chip); color:var(--ink-2); }
.v2-pill-amb{ background:var(--amber-soft); color:var(--amber); }
.v2-pill-verm{ background:var(--red-soft); color:var(--red); }
.v2-badge{ display:inline-grid; place-items:center; min-width:18px; height:18px; padding:0 5px; border-radius:9px; font-size:10.5px; font-weight:800; }
.v2-badge-verm{ background:var(--red-soft); color:var(--red); }

/* ---------- barra do painel (sem título de tela: filtros e ações) ---------- */
.v2-barra{ flex:none; display:flex; align-items:center; gap:8px; flex-wrap:wrap; min-height:46px; padding:6px 8px; background:var(--panel); border:1px solid var(--line); border-radius:var(--r, 12px); }
.v2-album{ min-width:180px; flex:0 1 270px; }
.v2-album-fixo{ display:flex; flex-direction:column; line-height:1.25; padding:0 6px; }
.v2-album-fixo b{ font-size:13px; }
.v2-album-fixo small{ color:var(--ink-3); font-size:11.5px; }
.v2-caminho{ display:flex; align-items:center; gap:4px; min-width:0; color:var(--ink-2); font-size:12.5px; font-weight:600; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; flex:1 1 0; }
.v2-cam-item{ overflow:hidden; text-overflow:ellipsis; }
@container (max-width:1300px){ .v2-app.v2-editando .v2-caminho{ display:none; } }
.v2-cam-sep{ color:var(--ink-3); margin:0 2px; }
.v2-cam-item:last-child{ color:var(--ink); font-weight:700; }
.v2-buscapeca{ display:flex; align-items:center; gap:6px; height:32px; padding:0 10px; border:1px solid var(--line); border-radius:var(--r-pill, 999px); background:var(--search, var(--input)); color:var(--ink-3); flex:0 1 230px; min-width:130px; }
.v2-buscapeca:focus-within{ border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); background:var(--input); }
.v2-app .v2-buscapeca input, .v2-app .v2-filtro input{ border:0 !important; outline:0; background:transparent !important; box-shadow:none !important; border-radius:0 !important; padding:0; height:100%; font:inherit; font-size:12.5px; color:var(--ink); width:100%; min-width:0; }
.v2-app .v2-buscapeca input:focus, .v2-app .v2-filtro input:focus{ box-shadow:none !important; }
.v2-edicao{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.v2-grupo-ib{ display:inline-flex; gap:2px; }
.v2-salvo{ font-size:11.5px; color:var(--ink-3); white-space:nowrap; min-width:80px; }
.v2-salvo-erro{ color:var(--red); font-weight:700; }
.v2-status{ appearance:none; display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 10px; border-radius:var(--r-pill, 999px); border:1px solid var(--line); background:var(--bg-2); font-size:12px; font-weight:600; cursor:pointer; white-space:nowrap; color:var(--ink-2); }
.v2-status b{ color:var(--red); }
.v2-status .v2-dot{ width:8px; height:8px; border-radius:50%; background:var(--amber); }
.v2-status-pub .v2-dot{ background:var(--accent); }
.v2-status:hover{ border-color:var(--accent-line); }
.v2-pub-wrap{ display:inline-flex; }
.v2-seg{ display:inline-flex; padding:3px; border-radius:10px; background:var(--chip); }
.v2-seg button{ appearance:none; border:0; background:transparent; padding:0 14px; height:26px; border-radius:7px; font-weight:700; font-size:12.5px; color:var(--ink-2); cursor:pointer; }
.v2-seg button[aria-pressed="true"]{ background:var(--panel); color:var(--ink); box-shadow:var(--shadow-soft); }

/* ---------- três colunas ---------- */
.v2-corpo{ flex:1 1 auto; min-height:0; display:grid; grid-template-columns:var(--v2-arvore) minmax(0, 1fr) var(--v2-pecas); gap:10px; }
@container (min-width:1500px){ .v2-corpo{ --v2-arvore:264px; --v2-pecas:360px; } }
@container (max-width:1080px){ .v2-corpo{ --v2-arvore:190px; --v2-pecas:270px; } }
@container (max-width:860px){ .v2-corpo{ grid-template-columns:minmax(0, 1fr); grid-auto-rows:minmax(0, auto); overflow:auto; } .v2-arvore{ max-height:220px; } .v2-palco{ min-height:440px; } .v2-pecas{ max-height:520px; } }
.v2-recolhida .v2-corpo{ --v2-arvore:44px; }
.v2-recolhida .v2-arvore .v2-arvore-lista, .v2-recolhida .v2-arvore .v2-arvore-rodape, .v2-recolhida .v2-arvore .v2-rotulo, .v2-recolhida .v2-arvore [data-slot="arvore-acoes"]{ display:none; }
.v2-recolhida .v2-arvore .v2-col-topo{ padding:6px; justify-content:center; }
.v2-col{ background:var(--panel); border:1px solid var(--line); border-radius:var(--r, 12px); min-height:0; min-width:0; display:flex; flex-direction:column; overflow:hidden; }
.v2-col-topo{ display:flex; align-items:center; gap:6px; padding:8px 8px 6px 12px; min-height:42px; }
.v2-rotulo{ font-size:11px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-3); }
.v2-rotulo-p{ display:block; font-size:11.5px; font-weight:700; color:var(--ink-2); margin-bottom:6px; }
.v2-vazio-mini{ margin:10px 12px; font-size:12px; color:var(--ink-3); }
.v2-erro-txt{ color:var(--red); font-size:12px; margin:6px 0 0; }

/* ---------- árvore ---------- */
.v2-arvore-lista{ flex:1 1 auto; overflow:auto; padding:0 6px 8px; }
.v2-no-linha{ display:flex; align-items:center; border-radius:8px; }
.v2-no-linha:hover{ background:var(--hover); }
.v2-no-linha.v2-solta-aqui{ outline:2px dashed var(--accent); outline-offset:-2px; background:var(--accent-50); }
.v2-no-btn, .v2-folha-btn{ appearance:none; flex:1 1 auto; min-width:0; display:flex; align-items:center; gap:6px; border:0; background:transparent; text-align:left; cursor:pointer; padding:6px 8px 6px calc(6px + var(--nivel, 0) * 14px); border-radius:8px; font-size:12.5px; }
.v2-no-btn{ font-weight:800; color:var(--ink); }
.v2-no-seta{ display:inline-grid; place-items:center; color:var(--ink-3); flex:none; }
.v2-no-nome{ flex:1 1 auto; min-width:0; overflow:hidden; overflow-wrap:anywhere; line-height:1.3;
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; } /* 2 linhas: o nome do conjunto não some a 1366 (21/10) */
.v2-no-n{ font-size:11px; color:var(--ink-3); font-variant-numeric:tabular-nums; }
.v2-folha-btn{ width:100%; font-weight:600; color:var(--ink-2); padding-left:calc(26px + (var(--nivel, 0) - 1) * 14px); }
.v2-folha-btn:hover{ background:var(--hover); color:var(--ink); }
.v2-folha-btn.v2-atual{ background:var(--accent-soft); color:var(--accent-ink); font-weight:700; }
.v2-folha-btn[draggable="true"], .v2-no-linha[draggable="true"]{ cursor:grab; }
.v2-st{ width:7px; height:7px; border-radius:50%; flex:none; background:var(--amber); }
.v2-st-publicada{ background:var(--accent); }
.v2-no-menu{ width:26px; height:26px; opacity:.55; }
.v2-no-linha:hover .v2-no-menu, .v2-no-menu:focus-visible{ opacity:1; }
.v2-no-in{ flex:1 1 auto; min-width:0; height:26px; border:1px solid var(--accent); border-radius:6px; padding:0 6px; font:inherit; font-size:12.5px; background:var(--input); color:var(--ink); }
.v2-arvore-rodape{ padding:6px; border-top:1px solid var(--line-soft); }
.v2-arvore-rodape:empty{ display:none; }
.v2-importar{ appearance:none; width:100%; display:flex; align-items:center; gap:8px; padding:8px 10px; border:1.5px dashed var(--line-2); border-radius:10px; background:transparent; cursor:pointer; text-align:left; color:var(--ink-2); }
.v2-importar span{ display:flex; flex-direction:column; line-height:1.3; }
.v2-importar b{ font-size:12px; color:var(--ink); }
.v2-importar small{ font-size:11px; color:var(--ink-3); }
.v2-importar:hover{ border-color:var(--accent); background:var(--accent-50); }
.v2-soltando .v2-importar, .v2-soltando .v2-drop{ border-color:var(--accent); background:var(--accent-50); }
.v2-sk{ display:flex; flex-direction:column; gap:8px; padding:8px; }
.v2-sk i{ display:block; height:14px; border-radius:6px; background:var(--chip); }
.v2-sk i:nth-child(2n){ width:70%; }

/* ---------- palco ---------- */
.v2-palco{ position:relative; }
.v2-palco-topo{ display:flex; align-items:baseline; gap:10px; padding:8px 12px; border-bottom:1px solid var(--line-soft); min-height:42px; flex-wrap:wrap; }
.v2-palco-topo:empty{ display:none; }
.v2-app .v2-titulo{ color:var(--ink); margin:0; font-size:15px; font-weight:800; letter-spacing:-.01em; line-height:1.3; }
.v2-titulo-in{ flex:1 1 260px; min-width:0; height:30px; border:1px solid var(--line); border-radius:8px; padding:0 8px; font:inherit; font-size:14px; font-weight:800; color:var(--ink); background:var(--input); }
.v2-titulo-in:focus{ outline:0; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.v2-sub{ color:var(--ink-3); font-size:12px; }
.v2-dica{ padding:6px 12px; font-size:12px; color:var(--ink-2); background:var(--bg-2); border-bottom:1px solid var(--line-soft); }
.v2-tela{ position:relative; flex:1 1 auto; min-height:0; overflow:auto; display:grid; padding:12px; background:var(--bg-2); outline:0; cursor:grab; overscroll-behavior:contain; }
.v2-tela.v2-pan{ cursor:grabbing; user-select:none; }
.v2-tela-vazio{ margin:auto; }
.v2-folha{
  --v2-balao:#0a9492; --v2-balao-ativo:#17221e; --v2-balao-tinta:#06716f; --v2-amb:#c47a16; --v2-verm:#c43d3d; --v2-lima:#bbe52a;
  position:relative; margin:auto; background:var(--photo, #fff); border-radius:4px; box-shadow:0 1px 3px rgba(0,0,0,.12); width:600px;
}
.v2-folha img{ display:block; width:100%; height:auto; aspect-ratio:1 / var(--prop, 1.25); user-select:none; -webkit-user-drag:none; pointer-events:none; }
.v2-editando .v2-tela{ cursor:default; }
.v2-folha.v2-posicionando, .v2-folha.v2-posicionando *{ cursor:crosshair !important; }
.v2-b{
  position:absolute; transform:translate(-50%, -50%); padding:0; border-radius:50%;
  /* tamanho fixo na tela (21/10/2026): não cresce com o zoom nem com o raio detectado; a pessoa escolhe P/M/G no canto do desenho */
  width:var(--v2-bpx, 24px); height:var(--v2-bpx, 24px);
  border:2.5px solid var(--v2-balao); background:rgba(10,148,146,.08); color:transparent;
  display:grid; place-items:center; font:800 11px/1 var(--font-body, 'Manrope', sans-serif); cursor:pointer; z-index:2;
}
.v2-app .v2-b{ color:transparent; font:800 var(--v2-bfont, 11px)/1 var(--font-body, 'Manrope', sans-serif); }
.v2-app[data-balao="p"]{ --v2-bpx:18px; --v2-bfont:9.5px; }
.v2-app[data-balao="m"]{ --v2-bpx:24px; --v2-bfont:11px; }
.v2-app[data-balao="g"]{ --v2-bpx:32px; --v2-bfont:13px; }
/* P/M/G só no modo Editar (Pablo, 21/10): quem só consulta vê sempre o tamanho médio */
.v2-app:not(.v2-editando) .v2-zoom .v2-ib-tam, .v2-app:not(.v2-editando) .v2-zoom .v2-sep{ display:none; }
.v2-app:not(.v2-editando)[data-balao]{ --v2-bpx:24px; --v2-bfont:11px; }
.v2-zoom .v2-ib-tam{ font:800 11px/1 var(--font-body, 'Manrope', sans-serif); min-width:26px; }
.v2-zoom .v2-ib-tam[aria-pressed="true"], .v2-zoom .v2-ib-tam[aria-pressed="true"]:hover:not(:disabled){
  background:var(--v2-balao, #0a9492); border-color:var(--v2-balao, #0a9492); color:#fff; border-radius:7px; }
.v2-zoom .v2-sep{ width:1px; background:var(--line); margin:3px 2px; }
.v2-app .v2-b:hover, .v2-app .v2-b.v2-hover, .v2-app .v2-b.v2-ativo{ background:var(--v2-balao-ativo); border-color:var(--v2-balao-ativo); color:#fff; z-index:3; }
.v2-b.v2-esmaecido{ opacity:.25; }
.v2-app.v2-editando .v2-b{ background:#fff; color:var(--v2-balao-tinta); cursor:grab; }
.v2-app.v2-editando .v2-b:hover, .v2-app.v2-editando .v2-b.v2-hover, .v2-app.v2-editando .v2-b.v2-ativo{ background:var(--v2-balao-ativo); color:#fff; }
.v2-app.v2-editando .v2-b.v2-incerto{ border-style:dashed; border-color:var(--v2-amb); color:var(--v2-amb); }
.v2-app.v2-editando .v2-b.v2-orfao{ border-color:var(--v2-verm); color:var(--v2-verm); }
.v2-editando .v2-b.v2-sel{ box-shadow:0 0 0 3px var(--v2-lima); z-index:4; }
.v2-b.v2-arrastando{ cursor:grabbing; z-index:5; box-shadow:0 4px 12px rgba(0,0,0,.3); }
@media (prefers-reduced-motion:no-preference){
  .v2-b{ transition:background .12s, color .12s, border-color .12s; }
  .v2-b.v2-pulsa{ animation:v2-pulsa .55s ease-out 3; }
}
.v2-b.v2-pulsa{ box-shadow:0 0 0 4px var(--v2-lima); }
@keyframes v2-pulsa{ 0%{ box-shadow:0 0 0 0 rgba(187,229,42,.95); } 100%{ box-shadow:0 0 0 14px rgba(187,229,42,0); } }
.v2-bchip, .v2-novo{
  position:absolute; transform:translate(-50%, 18px); z-index:6; display:flex; align-items:center; gap:6px; padding:5px 6px 5px 8px; white-space:nowrap;
  background:var(--panel); color:var(--ink); border:1px solid var(--line); border-radius:9px; box-shadow:var(--shadow); font-size:12px; cursor:default;
}
.v2-bchip label, .v2-novo label{ display:flex; align-items:center; gap:5px; font-weight:700; }
.v2-bchip input, .v2-novo input{ width:58px; height:26px; border:1px solid var(--line); border-radius:6px; padding:0 6px; font:inherit; background:var(--input); color:var(--ink); }
.v2-zoom{ position:absolute; right:10px; bottom:10px; display:flex; gap:2px; padding:3px; border-radius:10px; background:var(--panel); border:1px solid var(--line); box-shadow:var(--shadow-soft); z-index:7; }
.v2-carregando{ display:flex; align-items:center; gap:10px; color:var(--ink-3); font-weight:600; }
.v2-anel-mini{ width:18px; height:18px; border-radius:50%; border:2.5px solid var(--line); border-top-color:var(--accent); animation:v2-giro .8s linear infinite; }
@keyframes v2-giro{ to{ transform:rotate(360deg); } }
.v2-vazio{ max-width:380px; text-align:center; color:var(--ink-2); padding:24px; display:flex; flex-direction:column; align-items:center; gap:6px; }
.v2-vazio h3{ margin:4px 0 0; font-size:15px; color:var(--ink); }
.v2-vazio p{ margin:0 0 8px; font-size:12.5px; line-height:1.5; }
.v2-vazio-ico{ width:48px; height:48px; border-radius:50%; display:grid; place-items:center; background:var(--accent-50); color:var(--accent-ink); }

/* ---------- coluna de peças ---------- */
.v2-filtro{ display:flex; align-items:center; gap:6px; margin:0 10px 8px; height:32px; padding:0 10px; border:1px solid var(--line); border-radius:9px; background:var(--input); color:var(--ink-3); }
.v2-filtro:focus-within{ border-color:var(--accent); }
.v2-lista{ flex:1 1 auto; min-height:0; overflow:auto; padding:0 10px 12px; display:flex; flex-direction:column; gap:6px; overscroll-behavior:contain; }
.v2-secao{ font-size:11px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-3); padding:6px 2px 0; }
.v2-secao-verm{ color:var(--red); }
.v2-card{ display:grid; grid-template-columns:28px minmax(0, 1fr); column-gap:10px; row-gap:2px; padding:8px 10px; border:1px solid var(--line-soft); border-radius:10px; background:var(--panel); cursor:pointer; position:relative; }
.v2-card > :not(.v2-num){ grid-column:2; }
.v2-card:hover, .v2-card.v2-hover{ border-color:var(--accent-line-2); }
.v2-card.v2-ativo{ border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-soft); }
.v2-card.v2-cancelado .v2-desc, .v2-card.v2-cancelado .v2-cod{ text-decoration:line-through; color:var(--ink-3); }
.v2-num{ grid-row:1 / span 3; width:26px; height:26px; border-radius:50%; border:2px solid var(--accent); display:grid; place-items:center; font-weight:800; font-size:11px; color:var(--accent-ink); font-variant-numeric:tabular-nums; }
.v2-sem-pos .v2-num{ border-style:dashed; border-color:var(--amber); color:var(--amber); }
.v2-num-verm{ border-color:var(--red); color:var(--red); }
.v2-c1{ display:flex; align-items:baseline; gap:8px; min-width:0; }
.v2-cod{ font-family:'JetBrains Mono', ui-monospace, monospace; font-weight:700; font-size:12.5px; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.v2-cod2{ font-family:'JetBrains Mono', ui-monospace, monospace; font-size:11px; color:var(--ink-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.v2-qtd{ margin-left:auto; font-size:11.5px; color:var(--ink-2); white-space:nowrap; font-weight:600; }
.v2-desc{ font-weight:700; line-height:1.3; font-size:12.5px; }
.v2-orig{ color:var(--ink-3); font-size:11.5px; line-height:1.3; }
.v2-c3{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:4px; }
.v2-estq{ font-size:11px; font-weight:700; color:var(--ink-3); }
.v2-estq-ok{ color:var(--good); }
.v2-card-orfao{ border-color:var(--red-line); background:var(--red-soft); cursor:default; }
.v2-card-orfao .v2-c1 b{ font-size:12px; }
.v2-cotar{ display:grid; grid-template-columns:90px 1fr; gap:6px 8px; margin-top:8px; padding-top:8px; border-top:1px solid var(--line-soft); cursor:default; }
.v2-cotar label{ display:flex; flex-direction:column; gap:3px; font-size:11px; font-weight:700; color:var(--ink-2); }
.v2-cotar input{ height:28px; border:1px solid var(--line); border-radius:7px; padding:0 8px; font:inherit; font-size:12.5px; background:var(--input); color:var(--ink); width:100%; }
.v2-cotar-acoes{ grid-column:1 / -1; display:flex; align-items:center; gap:10px; }

/* formulário da linha (modo Editar, cartão aberto) */
.v2-card.v2-aberto{ cursor:default; border-color:var(--accent); }
.v2-form{ display:flex; flex-direction:column; gap:8px; margin-top:8px; padding-top:8px; border-top:1px solid var(--line-soft); }
.v2-form label{ display:flex; flex-direction:column; gap:3px; font-size:11px; font-weight:700; color:var(--ink-2); min-width:0; }
.v2-form input:not([type="checkbox"]){ height:28px; border:1px solid var(--line); border-radius:7px; padding:0 8px; font:inherit; font-size:12.5px; background:var(--input); color:var(--ink); width:100%; min-width:0; }
.v2-form input:focus{ outline:0; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.v2-form input[aria-invalid="true"]{ border-color:var(--red); }
.v2-form-g3{ display:grid; grid-template-columns:56px 64px minmax(0, 1fr); gap:6px; align-items:end; }
.v2-form-g3 .v2-tipos{ grid-column:1 / -1; }
@container (min-width:1500px){ .v2-form-g3 .v2-tipos{ grid-column:auto; } }
.v2-form-g2{ display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.v2-tipos{ display:flex; gap:2px; padding:2px; border-radius:8px; background:var(--chip); }
.v2-tipos button{ flex:1; appearance:none; border:0; background:transparent; border-radius:6px; height:24px; font-size:11px; font-weight:700; color:var(--ink-2); cursor:pointer; padding:0 4px; }
.v2-tipos button[aria-pressed="true"]{ background:var(--panel); color:var(--ink); box-shadow:var(--shadow-soft); }
.v2-vinc{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-bottom:6px; }
.v2-vinc-nome{ font-size:12px; color:var(--ink-2); }
.v2-vinc-rot{ width:100%; font-size:11.5px; color:var(--red); font-weight:700; }
.v2-cand{ appearance:none; display:block; width:100%; text-align:left; border:1px solid var(--line); border-radius:7px; background:var(--panel); padding:5px 8px; font-size:12px; cursor:pointer; color:var(--ink-2); }
.v2-cand b{ font-family:'JetBrains Mono', ui-monospace, monospace; color:var(--ink); margin-right:4px; }
.v2-cand small{ color:var(--ink-3); }
.v2-cand:hover{ border-color:var(--accent); background:var(--accent-50); }
.v2-prodres{ display:flex; flex-direction:column; gap:4px; margin-top:4px; max-height:180px; overflow:auto; }
.v2-prodres:empty{ display:none; }
.v2-form-pe{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.v2-chk{ flex-direction:row !important; align-items:center; gap:6px !important; font-size:12px !important; cursor:pointer; }

/* ---------- popover (portado para o body) ---------- */
.v2-pop{ position:fixed; z-index:10060; min-width:200px; max-width:min(420px, calc(100vw - 16px)); max-height:min(360px, 70vh); overflow:auto; padding:4px; border-radius:12px; background:var(--panel) !important; border:1px solid var(--line); box-shadow:0 12px 30px -8px rgba(20,40,32,.28); font-family:var(--font-body, 'Manrope', system-ui, sans-serif); color:var(--ink); backdrop-filter:none !important; }
.v2-pop button{ appearance:none; display:flex; align-items:flex-start; gap:8px; width:100%; padding:8px 11px; border:0; border-radius:8px; background:transparent; text-align:left; font:inherit; font-size:12.5px; color:var(--ink); cursor:pointer; }
.v2-pop button:hover:not(:disabled), .v2-pop button:focus-visible{ background:var(--hover); }
.v2-pop button:disabled{ opacity:.45; cursor:not-allowed; }
.v2-pop button.v2-perigo{ color:var(--red); }
.v2-pop hr{ border:0; border-top:1px solid var(--line-soft); margin:4px 6px; }
.v2-pop-vazio{ margin:10px 12px; font-size:12px; color:var(--ink-3); }
.v2-res-n{ flex:none; width:24px; height:24px; border-radius:50%; border:2px solid var(--accent); display:grid; place-items:center; font-size:10.5px; font-weight:800; color:var(--accent-ink); }
.v2-res-t{ display:flex; flex-direction:column; min-width:0; line-height:1.35; }
.v2-res-t b{ font-family:'JetBrains Mono', ui-monospace, monospace; }
.v2-res-t small{ color:var(--ink-3); font-size:11px; }

/* ---------- importação (mesmo painel) ---------- */
.v2-import{ flex:1 1 auto; min-height:0; overflow:auto; background:var(--panel); border:1px solid var(--line); border-radius:var(--r, 12px); display:flex; flex-direction:column; }
.v2-imp-cab{ display:flex; align-items:center; gap:10px; padding:12px 16px; border-bottom:1px solid var(--line-soft); }
.v2-imp-cab h3{ margin:2px 0 0; font-size:15px; font-weight:800; }
.v2-imp-corpo{ padding:18px 20px; display:flex; flex-direction:column; gap:18px; max-width:900px; }
.v2-imp-passos{ display:flex; flex-direction:column; gap:18px; }
.v2-imp-passo{ display:flex; gap:12px; }
.v2-imp-n{ flex:none; width:26px; height:26px; border-radius:50%; background:var(--accent-soft); color:var(--accent-ink); display:grid; place-items:center; font-weight:800; font-size:12px; }
.v2-imp-campos{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:8px; }
.v2-imp-dd{ display:flex; gap:8px; flex-wrap:wrap; }
.v2-imp-links{ display:flex; gap:16px; flex-wrap:wrap; }
.v2-imp-mini{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; padding:10px; border:1px solid var(--line); border-radius:10px; background:var(--bg-2); }
.v2-imp-mini input{ height:34px; border:1px solid var(--line); border-radius:9px; padding:0 10px; font:inherit; font-size:12.5px; background:var(--input); color:var(--ink); min-width:200px; }
.v2-drop{ display:flex; align-items:center; gap:14px; width:100%; max-width:640px; padding:18px; border:1.5px dashed var(--line-2); border-radius:12px; cursor:pointer; color:var(--ink-2); background:var(--bg-2); }
.v2-drop span{ display:flex; flex-direction:column; gap:3px; }
.v2-drop b{ color:var(--ink); font-size:13px; }
.v2-drop small{ font-size:12px; color:var(--ink-3); line-height:1.4; }
.v2-drop:hover{ border-color:var(--accent); background:var(--accent-50); }
.v2-drop-off{ opacity:.55; cursor:not-allowed; }
.v2-imp-andamento{ display:flex; align-items:center; gap:20px; }
.v2-imp-andamento h3{ margin:0; font-size:15px; }
.v2-imp-andamento p{ margin:4px 0 0; color:var(--ink-2); font-size:12.5px; }
.v2-anel{ --p:0; flex:none; position:relative; width:96px; height:96px; border-radius:50%; background:conic-gradient(var(--accent) calc(var(--p) * 1%), var(--line) 0); display:grid; place-items:center; }
.v2-anel::before{ content:''; position:absolute; inset:9px; border-radius:50%; background:var(--panel); }
.v2-anel span{ position:relative; font-weight:800; font-size:18px; font-variant-numeric:tabular-nums; }
.v2-imp-perfil{ margin:0; font-size:12.5px; color:var(--ink-2); }
.v2-imp-nota{ margin:0; font-size:12px; color:var(--ink-3); }
.v2-imp-erro h3{ margin:0 0 4px; font-size:15px; color:var(--red); }
.v2-imp-erro p{ margin:0 0 10px; color:var(--ink-2); }
.v2-imp-acoes{ display:flex; gap:8px; }
.v2-imp-aviso{ padding:10px 12px; border-radius:10px; background:var(--amber-soft); color:var(--ink); font-size:12.5px; }
.v2-imp-aviso-erro{ background:var(--red-soft); }
.v2-imp-hist table{ width:100%; border-collapse:collapse; font-size:12.5px; }
.v2-imp-hist th{ text-align:left; font-size:11px; color:var(--ink-3); font-weight:700; padding:6px 8px; border-bottom:1px solid var(--line); }
.v2-imp-hist td{ padding:7px 8px; border-bottom:1px solid var(--line-soft); }
.v2-imp-hist td:last-child{ text-align:right; }

/* ---------- integração nas telas ---------- */
.bt-v2-barra{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 14px; padding:8px 10px; background:var(--panel); border:1px solid var(--line); border-radius:var(--r, 12px); }
.bt-v2-barra .bt-v2-rot{ font-size:12.5px; font-weight:700; color:var(--ink-2); }
.bt-v2-barra .bt-v2-nota{ font-size:12px; color:var(--ink-3); }
.v2-no-folha .v2-folha-btn{ flex:1 1 auto; width:auto; }

/* ---------- importações em andamento (chip; 21/10/2026) ----------
 * Fora da .v2-app também: a barra da Biblioteca e a Busca Chassi usam o mesmo chip. Só tokens. */
.v2-and{ display:inline-flex; flex-wrap:wrap; align-items:center; gap:6px; min-width:0; font-family:var(--font-body, 'Manrope', system-ui, sans-serif); }
.v2-and[hidden]{ display:none !important; }
.v2-and-chip{ appearance:none; display:inline-flex; align-items:center; gap:7px; min-width:0; max-width:100%; height:30px; padding:0 11px; border:1px solid var(--line); border-radius:var(--r-pill, 999px); background:var(--panel); color:var(--ink-2); font:inherit; font-size:12px; font-weight:600; cursor:pointer; white-space:nowrap; }
.v2-and-chip span{ overflow:hidden; text-overflow:ellipsis; min-width:0; }
.v2-and-chip b{ flex:none; color:var(--accent-ink); font-weight:800; }
.v2-and-chip b::before{ content:'·'; margin-right:7px; color:var(--ink-3); font-weight:600; }
.v2-and-chip:hover{ border-color:var(--accent-line); background:var(--accent-50); color:var(--ink); }
.v2-and-chip:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.v2-and-lendo{ border-color:var(--accent-line); }
.v2-and-pulso{ flex:none; width:8px; height:8px; border-radius:50%; background:var(--accent); box-shadow:0 0 0 0 var(--accent); animation:v2-and-pulso 1.6s ease-out infinite; }
@keyframes v2-and-pulso{ 0%{ box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent); } 100%{ box-shadow:0 0 0 7px transparent; } }
@media (prefers-reduced-motion: reduce){ .v2-and-pulso{ animation:none; } }
.v2-and-erro{ border-color:color-mix(in srgb, var(--red) 35%, var(--line)); }
.v2-and-erro b{ color:var(--red); }
.v2-and-item{ display:flex; flex-direction:column; gap:1px; text-align:left; line-height:1.3; min-width:0; }
.v2-and-item b{ font-size:12.5px; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.v2-and-item small{ font-size:11px; color:var(--ink-3); }
/* no pé da árvore da VistaV2: um chip por linha, na largura da coluna */
.v2-and-host.v2-and{ display:flex; flex-direction:column; align-items:stretch; padding:6px 6px 0; border-top:1px solid var(--line-soft); }
.v2-and-host .v2-and-chip{ display:grid; grid-template-columns:1fr; justify-items:start; gap:1px 8px; width:100%; height:auto; min-height:30px; padding:6px 10px; border-radius:10px; white-space:normal; text-align:left; line-height:1.35; }
.v2-and-host .v2-and-lendo{ grid-template-columns:8px 1fr; }
.v2-and-host .v2-and-lendo b{ grid-column:2; }
.v2-and-host .v2-and-chip span{ overflow:visible; }
.v2-and-host .v2-and-pulso{ margin-top:5px; }
.v2-and-host .v2-and-chip b::before{ content:none; }
.v2-recolhida .v2-arvore .v2-and-host{ display:none !important; }
.v2-anel-espera{ background:conic-gradient(var(--accent) 25%, var(--line) 0); animation:v2-giro 1s linear infinite; }

/* ---------- remover página e páginas removidas (21/10/2026) ----------
 * "Remover esta página" no "..." da vista e do item da árvore (modo Editar), confirmação junto do botão, aviso
 * "Página removida · Desfazer" e a lista "Páginas removidas (n)" no pé da árvore, rolando junto com ela. Só tokens. */
.v2-app{ position:relative; }
.v2-folha-linha .v2-folha-btn{ flex:1 1 auto; width:auto; }
.v2-folha-btn.v2-saindo{ opacity:.45; pointer-events:none; }
/* a linha a que a confirmação "Remover" se refere */
.v2-no-linha.v2-alvo{ background:var(--red-soft); box-shadow:inset 0 0 0 1px var(--red-line); }
.v2-no-linha.v2-alvo .v2-no-menu{ color:var(--red); }
.v2-pop button svg{ flex:none; margin-top:1px; }
.v2-removidas{ position:sticky; bottom:-8px; z-index:2; margin:8px -6px 0; padding:6px 6px 4px; border-top:1px solid var(--line-soft); background:var(--panel); }
/* fica presa no pé da árvore (mesmo com dezenas de páginas); aberta, a lista rola por dentro */
.v2-removidas .v2-rem-lista{ max-height:min(260px, 40vh); overflow:auto; overscroll-behavior:contain; }
.v2-rem-topo{ appearance:none; display:flex; align-items:center; gap:6px; width:100%; padding:6px 8px; border:0; border-radius:8px; background:transparent; cursor:pointer; text-align:left; font-size:12px; font-weight:700; color:var(--ink-3); }
.v2-rem-topo:hover{ background:var(--hover); color:var(--ink); }
.v2-rem-nota{ margin:2px 8px 6px; font-size:11px; line-height:1.4; color:var(--ink-3); }
.v2-rem-lista{ list-style:none; margin:0; padding:0 0 4px; }
.v2-rem-item{ display:grid; grid-template-columns:minmax(0, 1fr) auto auto; align-items:start; gap:2px 8px; padding:6px 8px; border-radius:8px; }
/* título na largura toda; embaixo: pág. · por | data | Restaurar */
.v2-rem-tit{ grid-column:1 / -1; font-size:12px; font-weight:600; color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.v2-rem-item:hover{ background:var(--hover); }
.v2-rem-txt{ display:flex; flex-direction:column; min-width:0; line-height:1.35; }
.v2-rem-txt b{ font-size:12px; font-weight:600; color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.v2-rem-txt small{ font-size:11px; color:var(--ink-3); overflow:hidden; overflow-wrap:anywhere; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; }
.v2-rem-motivo{ font-style:italic; }
.v2-rem-data{ font-size:11px; line-height:1.5; color:var(--ink-3); font-variant-numeric:tabular-nums; }
.v2-rem-item .v2-link{ font-size:11.5px; line-height:1.5; }
.v2-rem-item .v2-link:disabled{ opacity:.6; cursor:progress; text-decoration:none; }
/* confirmação (popover portado para o body; não é modal) */
.v2-pop.v2-pop-conf{ width:300px; max-height:none; padding:12px; }
.v2-conf{ display:flex; flex-direction:column; gap:8px; }
.v2-conf-tit{ font-size:13px; font-weight:800; color:var(--ink); overflow-wrap:anywhere; }
.v2-conf p{ margin:0; font-size:12px; line-height:1.45; color:var(--ink-2); }
.v2-conf-motivo{ display:flex; flex-direction:column; gap:4px; font-size:11.5px; font-weight:700; color:var(--ink-2); }
.v2-conf-motivo input{ height:32px; border:1px solid var(--line); border-radius:8px; padding:0 9px; font:inherit; font-size:12.5px; font-weight:500; background:var(--input); color:var(--ink); }
.v2-conf-motivo input:focus{ border-color:var(--accent); }
.v2-conf-acoes{ display:flex; justify-content:flex-end; gap:6px; margin-top:2px; }
.v2-pop .v2-conf-acoes .v2-btn{ width:auto; display:inline-flex; align-items:center; height:30px; padding:0 12px; border:1px solid var(--line); border-radius:9px; background:var(--panel); color:var(--ink); font-weight:700; font-size:12.5px; }
.v2-pop .v2-conf-acoes .v2-btn:hover{ background:var(--hover); }
.v2-pop .v2-conf-acoes .v2-btn-perigo{ background:var(--red-soft); border-color:var(--red-line); color:var(--red); }
.v2-pop .v2-conf-acoes .v2-btn-perigo:hover, .v2-pop .v2-conf-acoes .v2-btn-perigo:focus-visible{ background:var(--red); border-color:var(--red); color:var(--panel); }
/* aviso "Página removida · Desfazer" (invertido: tinta como fundo, nos dois temas) */
.v2-desfazer{ position:absolute; left:12px; bottom:10px; z-index:20; display:flex; align-items:center; gap:8px; max-width:calc(100% - 260px); min-width:min(220px, calc(100% - 24px)); padding:5px 5px 5px 14px; border-radius:var(--r-pill, 999px); background:var(--ink); color:var(--panel); box-shadow:var(--shadow); font-size:12.5px; font-weight:600; white-space:nowrap; }
.v2-desf-txt{ min-width:0; overflow:hidden; text-overflow:ellipsis; }
.v2-desf-sep{ opacity:.6; }
.v2-desf-btn{ appearance:none; border:0; background:transparent; color:inherit; font:inherit; font-weight:800; text-decoration:underline; text-underline-offset:2px; cursor:pointer; padding:4px 2px; }
.v2-desfazer .v2-desf-x{ width:26px; height:26px; color:inherit; opacity:.75; border-radius:50%; }
.v2-desfazer .v2-desf-x:hover:not(:disabled){ background:transparent; border-color:transparent; color:inherit; opacity:1; }
.v2-desfazer :focus-visible{ outline-color:var(--panel); }

/* dados da peça sem cadastro, abertos no cartão (21/10) */
.v2-dados{ display:grid; grid-template-columns:auto 1fr; gap:3px 12px; margin:8px 0 0; padding:8px 10px; background:var(--bg-2, #f7faf9); border-radius:8px; font-size:12px; }
.v2-dados dt{ color:var(--ink-3); }
.v2-dados dd{ margin:0; color:var(--ink); font-weight:600; overflow-wrap:anywhere; }
