/* ==========================================================================
   Custos · só o que o visual do Vendas não tem.
   A base (tokens, topo, cartões, tabelas .t, formulários, botões, modal) vem de
   /vendas_novo/assets/app.css + acabamento.css + fundos.css (ver cabeca.php).
   Aqui só se usa token do Vendas (var(--…)): claro, escuro e os fundos seguem sozinhos.
   ========================================================================== */

/* cores das partes do custo — as mesmas em todas as telas */
:root{--k-obra:var(--sh);--k-mat:var(--emp);--k-emb:var(--ext);--k-tampo:var(--ml-deep)}
.q-obra{background:var(--k-obra)} .q-mat{background:var(--k-mat)} .q-emb{background:var(--k-emb)} .q-tampo{background:var(--k-tampo)}
html.trava{overflow:hidden}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ----------------------------- topo ----------------------------- */
/* botão principal na altura do "Este mês" do Vendas; no celular fica só o ícone */
.topo-acoes .btn{height:40px;border-radius:12px;padding:0 15px}
@media (max-width:640px){.topo-acoes .btn{width:40px;padding:0}.topo-acoes .btn .rot{display:none}}

/* ----------------------------- cabeçalho de tela ----------------------------- */
.cab-foto{display:flex;align-items:flex-end;gap:16px;min-width:0}
.cab-foto>div{min-width:0}
.foto-peca{width:104px;height:104px;flex-shrink:0;border-radius:var(--r-md);object-fit:contain;background:var(--card);box-shadow:var(--sombra);padding:6px}
@media (max-width:640px){.foto-peca{width:72px;height:72px;border-radius:14px}.cab-foto{align-items:flex-start}}
.cab h1 em{overflow-wrap:anywhere}

/* ----------------------------- cartão colorido "custos" ----------------------------- */
/* laranja do Custos, com a torção da corda no canto (no lugar do desenho de cada plataforma) */
.cc-custos{background:var(--sh);color:var(--sh-ink);--cc-s:var(--sh-deep)}
.cc-custos::after{border-radius:0;width:240px;height:190px;top:-30px;right:-30px;
  background:repeating-linear-gradient(-55deg,rgba(255,255,255,.34) 0 5px,transparent 5px 12px);
  -webkit-mask-image:radial-gradient(circle at 100% 0,#000 18%,transparent 66%);mask-image:radial-gradient(circle at 100% 0,#000 18%,transparent 66%)}
.cc-custos .delta{background:rgba(255,255,255,.3);color:inherit}
.grade.g4>.cc{min-height:0}
/* KPI de nome (mais caro, mais barato…) */
.kpi-val.txt{font-size:20px;line-height:1.2;letter-spacing:-.02em;overflow-wrap:anywhere}
.kpi-rot>i:is(.ph-armchair,.ph-stack){--k:var(--sh)}
.kpi-rot>i:is(.ph-arrow-down,.ph-images){--k:var(--ext)}
.kpi-rot>i:is(.ph-ruler,.ph-rectangle){--k:var(--emp)}

/* ----------------------------- avisos que fecham ----------------------------- */
.aviso>div{flex:1;min-width:0}
.aviso .fecha{flex-shrink:0;width:28px;height:28px;margin:-3px -4px -3px 0;border-radius:9px;display:grid;place-items:center;color:inherit;opacity:.7}
.aviso .fecha:hover{opacity:1;background:color-mix(in srgb,currentColor 12%,transparent)}
.aviso .fecha i{font-size:17px;margin:0}

/* ----------------------------- listas e tabelas ----------------------------- */
.busca{width:min(280px,100%)}
.busca .inp{height:38px}
.inp-pre>span>i{font-size:16px;display:block}
.miniatura{width:44px;height:44px;border-radius:12px;object-fit:contain;background:var(--card);box-shadow:inset 0 0 0 1px var(--line);display:grid;place-items:center;flex-shrink:0;color:var(--faint);font-size:21px}
span.miniatura{background:var(--bg)}
.t .nome-l{display:flex;align-items:center;gap:12px;min-width:0}
.t .nome-l a{font-weight:800;text-decoration:none}
.t .nome-l a:hover{color:var(--emp-txt)}
.t .un{color:var(--muted);font-weight:600;font-size:12px}
.acoes-l{display:flex;gap:6px;justify-content:flex-end}
@media (max-width:900px){.acoes-l .btn.sec:not(.fica){width:34px;padding:0}.acoes-l .btn.sec .rot{display:none}}
.acoes-l .btn[data-excluir]:hover{background:var(--bad-bg);color:var(--bad-txt)}
/* celular: colunas de apoio saem da tabela (o essencial vai numa linha miúda embaixo do nome) */
.so-cel{display:none}
@media (max-width:640px){
  .t .so-largo{display:none}
  .so-cel{display:block;margin-top:2px}
  .t .btn.ico-cel,.acoes-l .btn.sec.fica{width:34px;padding:0}
  .t .btn .rot{display:none}
  .acoes-l{gap:4px}
  .acoes-l .btn.peq{width:32px}
  .t .nome-l{gap:8px}
  .t .nome-l .miniatura{width:36px;height:36px;font-size:18px;border-radius:10px}
  .t .nome-l a{overflow-wrap:anywhere}
  .t td:has(>.acoes-l){padding-left:4px;padding-right:4px}
  .grade.kpis{grid-template-columns:1fr 1fr;gap:10px}
  .grade.kpis>.cc{grid-column:1/-1}
  .grade.kpis>:nth-child(4):last-child{grid-column:1/-1}
  .grade.kpis>.card{padding:14px}
  .grade.kpis .kpi-val{font-size:24px}
  .grade.kpis .kpi-val.txt{font-size:16px}
}
.linha-vazia{padding:28px 10px!important}

/* ----------------------------- colunas (formulário + lista / resumo) ----------------------------- */
.lado{display:grid;gap:14px;grid-template-columns:minmax(0,1fr);align-items:start}
@media (min-width:980px){
  .lado{grid-template-columns:minmax(0,1fr) minmax(300px,360px)}
  .lado.form-esq{grid-template-columns:minmax(290px,340px) minmax(0,1fr)}
  .lado .resumo-v,.lado .fixo{position:sticky;top:130px}
}
@media (max-width:979px){.resumo-v{position:static}}
.form-col{display:grid;gap:14px}
.form-col .card h3{margin-bottom:14px}
.form-col .card h3+.sub{margin:-10px 0 14px}
.pilha{display:grid;gap:14px}

/* ----------------------------- ficha técnica (editor) ----------------------------- */
.ficha{display:grid;gap:8px}
.ficha-l{display:grid;grid-template-columns:minmax(0,1fr) 150px 112px 40px;gap:8px 10px;align-items:end}
.ficha-l .btn-ico{width:40px;height:44px;box-shadow:none;background:transparent;color:var(--muted)}
.ficha-l .btn-ico:hover{color:var(--bad-txt);background:var(--bad-bg)}
.ficha-l .inp-suf .inp{padding-right:54px}
.ficha-l .inp-suf>span{font-size:13px}
.ficha-sub b{display:flex;align-items:center;justify-content:flex-end;height:44px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.sub-v.nada::before{content:'—';color:var(--faint);font-weight:500}
@media (min-width:721px){.ficha-l+.ficha-l .campo>label{display:none}}
@media (max-width:720px){
  .ficha-l{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 40px;padding:12px;border-radius:14px;background:var(--bg)}
  .ficha-l .inp-suf .inp{padding-right:46px}
  .ficha-l .campo:first-child{grid-column:1/-1}
}
.resumo-v .lin .q,.lista-k .q{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px;flex-shrink:0}
.resumo-v .lin>span{display:inline-flex;align-items:center}
.cascata.fina{height:12px;border-radius:999px;margin:12px 0 4px;background:var(--bg2)}
.resumo-v .corte{border-top:2px dashed var(--line2);margin:10px 0}
.resumo-v .lin small{font-weight:600;margin-left:5px}
.btn.largo{width:100%;height:50px}
.btn.sec.largo{height:44px}

/* ----------------------------- custo da peça (DRE) ----------------------------- */
.dre-l>i.k-obra{color:var(--k-obra)} .dre-l>i.k-mat{color:var(--k-mat)} .dre-l>i.k-emb{color:var(--k-emb)} .dre-l>i.k-tampo{color:var(--k-tampo)}
/* total do custo: faixa de tinta (o verde do Vendas é "o que sobra", aqui é o que se gasta) */
.dre-l.total.custo{background:var(--ink);color:var(--bg)}
.dre-l.total.custo>i{color:var(--sh)}
.dre-l.total.custo .v{color:var(--bg)}
.dre-l .v small{font:600 12px var(--f-corpo);color:var(--muted);margin-right:6px}
.custo-total{font:800 clamp(38px,5vw,58px)/1 var(--f-disp);letter-spacing:-.045em;margin:12px 0 4px}
.custo-total .rs{font-size:.5em;letter-spacing:-.01em;opacity:.7}
.simular{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.simular .campo{flex:1 1 240px}
.card-tampo{box-shadow:var(--sombra),inset 0 3px 0 var(--k-tampo)}
.grade.al-topo{align-items:start}
.dre.antes{margin-bottom:10px}
/* peso de cada material no total dos materiais */
.t .parte{height:5px;max-width:220px;margin-top:6px;border-radius:999px;background:var(--bg2);overflow:hidden}
.t .parte i{display:block;height:100%;min-width:2px;border-radius:999px;background:var(--k-mat)}
.card-tampo .t .parte i{background:var(--k-tampo)}

/* ----------------------------- catálogo (acordeão) ----------------------------- */
.ferramentas{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:22px 0 12px}
.cat-lista{display:grid;gap:8px}
.cat-item{background:var(--card);border-radius:var(--r-md);box-shadow:var(--sombra)}
.cat-item>summary{list-style:none;display:grid;grid-template-columns:48px minmax(0,1fr) minmax(110px,190px) auto 18px;align-items:center;gap:14px;padding:12px 16px;cursor:pointer;border-radius:inherit;transition:background-color .15s}
.cat-item>summary::-webkit-details-marker{display:none}
@media (hover:hover){.cat-item>summary:hover{background:var(--realce)}}
.cat-item[open]>summary{border-radius:var(--r-md) var(--r-md) 0 0}
.cat-item .miniatura{width:48px;height:48px}
.cat-nome{min-width:0}
.cat-nome b{display:block;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cat-nome small{display:block;color:var(--muted);font-weight:500;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* barra: tamanho = custo perto da peça mais cara; fatias = mão de obra, materiais, embalagem */
.mini-trilho{display:flex;justify-content:flex-end;height:8px;border-radius:999px;background:var(--bg2)}
.mini-cascata{display:flex;height:100%;border-radius:999px;overflow:hidden;gap:2px}
.mini-cascata i{display:block;height:100%;min-width:2px}
.cat-val{font:800 19px var(--f-disp);letter-spacing:-.02em;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
.cat-seta{color:var(--muted);font-size:16px;transition:transform .2s}
.cat-item[open] .cat-seta{transform:rotate(180deg)}
.cat-corpo{padding:6px 16px 16px;border-top:1px dashed var(--line2)}
.cat-corpo .dre{margin-top:8px}
.dre-l .q-dot{width:8px;height:8px;border-radius:50%;justify-self:center}
@media (max-width:640px){
  .cat-item>summary{grid-template-columns:44px minmax(0,1fr) auto 14px;gap:10px;padding:10px 12px}
  .cat-item .miniatura{width:44px;height:44px}
  .cat-item .mini-trilho{display:none}
  .cat-val{font-size:16px}
  .cat-corpo{padding:4px 12px 12px}
}
.lista-k{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;font-weight:700;color:var(--ink2)}
.lista-k span{display:inline-flex;align-items:center}

/* ----------------------------- imagens ----------------------------- */
.img-barra{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.img-barra .busca{flex:1 1 220px;width:auto;max-width:340px}
.img-barra .chips{display:flex;gap:6px;flex-wrap:wrap}
.img-barra .chip{cursor:pointer;user-select:none}
.img-barra #btn-bulk{margin-left:auto}
.img-grade{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;margin-top:14px}
@media (max-width:430px){.img-grade{grid-template-columns:1fr 1fr;gap:10px}}
.pcard{background:var(--card);border-radius:var(--r-md);box-shadow:var(--sombra);overflow:hidden;display:flex;flex-direction:column;min-width:0}
.pcard .thumb{position:relative;aspect-ratio:1/1;background:var(--bg);display:grid;place-items:center;overflow:hidden}
.pcard .thumb img{width:100%;height:100%;object-fit:contain;padding:8px}
.pcard .thumb.sugerida img{opacity:.55}
.sem-img{display:grid;justify-items:center;gap:6px;color:var(--faint);font-size:12px;font-weight:700;text-align:center;line-height:1.35;padding:0 10px}
.sem-img i{font-size:28px}
.ovl{position:absolute;top:8px;left:8px;height:22px;padding:0 8px;border-radius:7px;display:inline-flex;align-items:center;font-size:11px;font-weight:800;letter-spacing:.01em}
.ovl.alta{background:var(--good);color:#fff}
.ovl.media{background:var(--ml);color:var(--ml-ink)}
.ovl.ok{background:var(--emp);color:#fff}
.pcard .nome{font-size:13.5px;font-weight:700;padding:10px 12px 4px;line-height:1.3;flex:1;overflow-wrap:anywhere}
.pcard .acts{display:flex;gap:6px;padding:6px 10px 12px}
.mini{flex:1;min-width:0;height:32px;padding:0 6px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;gap:5px;font-size:12.5px;font-weight:800;white-space:nowrap;transition:background-color .15s,color .15s}
.mini i{font-size:15px}
.mini.use{background:var(--good);color:#fff}
.mini.use:hover{background:color-mix(in srgb,var(--good) 86%,#000)}
.mini.swap{background:color-mix(in srgb,var(--emp) 12%,transparent);color:var(--emp-txt)}
.mini.swap:hover{background:var(--emp);color:#fff}
.mini.up{background:var(--bg2);color:var(--ink2)}
.mini.up:hover{background:var(--ink);color:var(--bg)}
.mini.so-ico{flex:0 0 32px;padding:0}
.mini.rm{flex:0 0 32px;padding:0;background:var(--bad-bg);color:var(--bad-txt)}
.mini.rm:hover{background:var(--bad);color:#fff}
.mini:disabled{opacity:.5;pointer-events:none}
/* galeria da bipagem (janela) */
.ggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:10px;margin-top:14px}
.gitem{display:block;width:100%;text-align:left;border-radius:14px;overflow:hidden;background:var(--card);box-shadow:var(--sombra);transition:transform .15s,box-shadow .15s}
.gitem:hover{transform:translateY(-2px);box-shadow:0 0 0 2px var(--emp),var(--sombra)}
.gthumb{aspect-ratio:1/1;background:var(--bg)}
.gthumb img{width:100%;height:100%;object-fit:cover;display:block}
.gcore{font-size:11px;font-weight:800;color:var(--emp-txt);padding:7px 9px 0}
.glabel{font-size:11px;font-weight:600;color:var(--muted);padding:2px 9px 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gupload{border:2px dashed var(--line2);border-radius:14px;min-height:122px;display:grid;place-content:center;justify-items:center;gap:6px;padding:10px;color:var(--emp-txt);font-size:12px;font-weight:800;text-align:center;transition:border-color .15s,background-color .15s}
.gupload:hover{border-color:var(--emp);background:color-mix(in srgb,var(--emp) 7%,transparent)}
.gupload i{font-size:26px}
.empty-hint{grid-column:1/-1;text-align:center;color:var(--muted);font-weight:600;font-size:13px;padding:24px 10px}

/* ----------------------------- foto ampliada ----------------------------- */
img[data-zoom]{cursor:zoom-in}
#lightbox{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(15,12,20,.8);cursor:zoom-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:aparece .15s}
#lightbox img{max-width:96vw;max-height:90vh;width:auto;height:auto;object-fit:contain;border-radius:var(--r-md);background:var(--card);box-shadow:var(--sombra-forte);cursor:default}
#lightbox .btn-ico{position:absolute;top:16px;right:16px}

/* ----------------------------- impressão (telas imprimir_*) ----------------------------- */
.chips-imp{display:flex;gap:8px;flex-wrap:wrap;margin:-4px 0 18px}
.chips-imp .chip{text-decoration:none}
.chips-imp .chip i{font-size:16px}

/* ----------------------------- entrar ----------------------------- */
body.pg-login{display:grid;place-items:center;padding:20px;min-height:100vh}
.entrar{width:min(420px,100%)}
.entrar .blocos4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:18px}
.entrar .blocos4 i{height:64px;border-radius:18px;display:grid;place-items:center;font-size:26px;color:rgba(255,255,255,.9)}
.entrar .blocos4 i:nth-child(2){color:var(--ml-ink)}
.entrar h1{font:800 34px/1.02 var(--f-disp);letter-spacing:-.04em;margin:6px 0 10px;text-wrap:balance}
.entrar h1 em{font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-weight:400;color:var(--emp-txt);font-size:1.12em;letter-spacing:-.01em}
.entrar p{color:var(--muted);font-weight:500;margin-bottom:22px}

/* ----------------------------- impressão e movimento ----------------------------- */
@media print{
  .topo,.abas-sis,.no-print,#lightbox,.modal-fundo{display:none!important}
}
@media (prefers-reduced-motion: no-preference){
  .entrar .blocos4 i{animation:entra .6s cubic-bezier(.2,.8,.2,1) both}
  .entrar .blocos4 i:nth-child(2){animation-delay:.08s} .entrar .blocos4 i:nth-child(3){animation-delay:.16s} .entrar .blocos4 i:nth-child(4){animation-delay:.24s}
  .anima .cat-lista>*,.anima .img-grade>*{animation:entra .5s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(min(var(--i,0),12) * 35ms + 120ms)}
}
@media (prefers-reduced-motion: reduce){
  #lightbox{animation:none}
  .cat-seta,.cat-item>summary,.mini,.gitem,.gupload{transition:none}
  .gitem:hover{transform:none}
}
