/* Silfite ERP — folha de estilo compartilhada
   Identidade: cinza carvão, vermelho e amarelo da logo.
   Assinatura: sombra dura deslocada (o offset preto do S) + filete de margem de caderno. */

@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Archivo+Black&family=Azeret+Mono:wght@400;500;600&display=swap');

:root{
  /* superfícies */
  --breu:#17181A;
  --painel:#1F2124;
  --sulfite:#292C30;
  --alto:#33373C;
  --linha:#31353A;
  --linha-forte:#40454B;

  /* tinta */
  --tinta:#E9E6E1;
  --grafite:#9A9EA5;
  --grafite-fraco:#6E737A;

  /* marca */
  --vermelho:#E23127;
  --vermelho-escuro:#B4231B;
  --amarelo:#F5C518;
  --preto:#0B0C0D;

  /* estados */
  --verde:#2FB57C;
  --laranja:#EE7B21;
  --azul:#4A8FD4;
  --roxo:#9B7BE0;
  --ciano:#2FB3B8;

  --r:8px;
  --r-sm:5px;
  --sombra-dura:2px 2px 0 var(--preto);
  --topo:52px;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  background:var(--breu);
  color:var(--tinta);
  font:400 13.5px/1.5 'Archivo',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--vermelho);color:#fff}

/* ---------- tipografia ---------- */
.display{font-family:'Archivo Black',system-ui,sans-serif;font-weight:400;letter-spacing:-.02em;line-height:1.05}
.mono{font-family:'Azeret Mono',ui-monospace,monospace;font-feature-settings:'tnum'}
.eyebrow{
  font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--grafite-fraco);
}
.num{font-variant-numeric:tabular-nums}
h1,h2,h3{margin:0}

/* ---------- barra superior ---------- */
.topo{
  height:var(--topo);display:flex;align-items:center;gap:22px;
  padding:0 18px;background:var(--painel);
  border-bottom:1px solid var(--linha);
  position:sticky;top:0;z-index:40;
}
.marca{display:flex;align-items:center;gap:9px;text-decoration:none;color:inherit;flex-shrink:0}
.marca-s{
  width:26px;height:26px;display:grid;place-items:center;
  background:var(--vermelho);color:#fff;border-radius:var(--r-sm);
  font-family:'Archivo Black',sans-serif;font-size:16px;
  box-shadow:var(--sombra-dura);
}
.marca-nome{font-family:'Archivo Black',sans-serif;font-size:14px;letter-spacing:-.01em}
.marca-nome::after{
  content:'';display:block;height:3px;background:var(--amarelo);
  margin-top:2px;border-radius:1px;
}
.nav{display:flex;gap:2px;margin-left:6px}
.nav a{
  padding:7px 13px;border-radius:var(--r-sm);text-decoration:none;
  color:var(--grafite);font-size:13px;font-weight:500;
  transition:background .12s,color .12s;
}
.nav a:hover{background:var(--sulfite);color:var(--tinta)}
.nav a.on{background:var(--vermelho);color:#fff}
.topo-dir{margin-left:auto;display:flex;align-items:center;gap:16px;font-size:12px}
.gateway{display:flex;align-items:center;gap:7px;color:var(--grafite)}
.pulso{
  width:7px;height:7px;border-radius:50%;background:var(--verde);
  box-shadow:0 0 0 0 rgba(47,181,124,.6);animation:pulso 2.4s infinite;
}
@keyframes pulso{70%{box-shadow:0 0 0 6px rgba(47,181,124,0)}100%{box-shadow:0 0 0 0 rgba(47,181,124,0)}}
.usuario{color:var(--amarelo);font-weight:600}

/* quem está usando o sistema */
.quem-sou{display:flex;align-items:center;gap:8px}
.quem-rotulo{color:var(--grafite)}
.quem-select{
  background:var(--sulfite);color:var(--amarelo);font:600 12px 'Archivo',sans-serif;
  border:1px solid var(--linha-forte);border-radius:var(--r-sm);padding:5px 8px;
  cursor:pointer;color-scheme:dark;
}
.quem-select:hover{border-color:var(--grafite-fraco)}
.quem-select option{background:var(--painel);color:var(--tinta)}
/* Quem está logado nesta máquina. Era um seletor; virou texto quando o login
   entrou, porque escolher quem se é deixou de ser uma opção. */
.quem-nome{color:var(--amarelo);font-weight:600}
.quem-perfis{display:flex;gap:4px}
@media (max-width:1100px){ .quem-perfis{display:none} }

/* ---------- celular ----------
   São 7 destinos na barra do topo: em tela estreita eles não cabem lado a lado.
   Em vez de quebrar linha (que comeria altura útil na bancada), a navegação
   rola na horizontal, e o que é só informativo — o status do WhatsApp, o rótulo
   "Você:" — sai da frente. */
@media (max-width:760px){
  .topo{gap:10px;padding:0 12px}
  .nav{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .nav::-webkit-scrollbar{display:none}
  .nav a{white-space:nowrap;padding:12px}
  .gateway{display:none}
  .quem-rotulo{display:none}
  .topo-dir{gap:10px}
}

/* perfis, usados na barra de cima e nas configurações */
.perfil-vendedor  {background:#2C4438;color:#6FDCA8}
.perfil-separador {background:#123E40;color:#5FD9DE}
.perfil-conferente{background:#1E3550;color:#7FB6F0}
.perfil-financeiro{background:#4A3A0D;color:var(--amarelo)}
.perfil-admin     {background:#3E2523;color:#E8877F}

/* ---------- tags ---------- */
.tag{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 8px;border-radius:4px;
  font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  white-space:nowrap;line-height:1.4;
}
/* a tag principal — a que diz onde o pedido está — leva a sombra da logo */
.tag.mestre{box-shadow:var(--sombra-dura)}

.tag-orcamento   {background:#2E3A47;color:#9FC3E8}
.tag-enviado     {background:#31384E;color:#A9B4E8}
.tag-pedido      {background:#2C4438;color:#6FDCA8}
.tag-separacao   {background:#123E40;color:#5FD9DE}
.tag-conferencia {background:#1E3550;color:#7FB6F0}
.tag-falta       {background:var(--amarelo);color:var(--preto)}
.tag-pronto      {background:var(--verde);color:#042115}
.tag-entregue    {background:#2B2E33;color:var(--grafite)}
.tag-cancelado   {background:#3E2523;color:#E8877F}

.tag-sem-pagamento{background:#2B2E33;color:var(--grafite)}
.tag-parcial      {background:#4A3A0D;color:var(--amarelo)}
.tag-pago         {background:#123528;color:#4FD69C}
.tag-vencido      {background:var(--vermelho);color:#fff}

.tag-neutra{background:var(--sulfite);color:var(--grafite)}
.tag-escola{background:var(--sulfite);color:var(--tinta)}
/* número que chegou no WhatsApp e ainda não virou cliente */
.tag-novo{background:var(--amarelo);color:var(--preto)}

/* ---------- botões ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:8px 14px;border:1px solid var(--linha-forte);border-radius:var(--r-sm);
  background:var(--sulfite);color:var(--tinta);
  font:600 12.5px/1 'Archivo',sans-serif;cursor:pointer;
  transition:background .12s,border-color .12s,transform .06s;
}
.btn:hover{background:var(--alto);border-color:var(--grafite-fraco)}
.btn:active{transform:translateY(1px)}
.btn.principal{background:var(--vermelho);border-color:var(--vermelho);color:#fff}
.btn.principal:hover{background:#F03A2F;border-color:#F03A2F}
.btn.destaque{background:var(--amarelo);border-color:var(--amarelo);color:var(--preto)}
.btn.destaque:hover{background:#FFD433;border-color:#FFD433}
.btn.fantasma{background:transparent}
.btn.pequeno{padding:5px 10px;font-size:11.5px}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--amarelo);outline-offset:2px;
}

/* ---------- campos ---------- */
.campo{
  width:100%;padding:8px 11px;border:1px solid var(--linha);border-radius:var(--r-sm);
  background:var(--breu);color:var(--tinta);font:400 13px 'Archivo',sans-serif;
}
.campo::placeholder{color:var(--grafite-fraco)}
.campo:focus{border-color:var(--grafite-fraco);outline:none;box-shadow:0 0 0 3px rgba(226,49,39,.14)}
select.campo{color-scheme:dark}
select.campo option{background:var(--painel);color:var(--tinta)}
.rotulo{display:block;font-size:11px;font-weight:600;color:var(--grafite);margin-bottom:5px}
.linha-campos{display:grid;gap:12px}

/* ---------- painéis ---------- */
.painel{background:var(--painel);border:1px solid var(--linha);border-radius:var(--r)}
.painel-topo{
  display:flex;align-items:center;gap:10px;
  padding:12px 15px;border-bottom:1px solid var(--linha);
}
.painel-corpo{padding:15px}

/* ---------- vias (a assinatura) ---------- */
/* Cada filho é uma via da compra do responsável. Empilhadas como papel carbono,
   com o filete vermelho da margem do caderno e a sombra dura do S. */
.capa{display:flex;flex-direction:column;gap:9px}
.via{
  position:relative;background:var(--sulfite);
  border:1px solid var(--linha-forte);border-radius:var(--r-sm);
  box-shadow:var(--sombra-dura);
  overflow:hidden;transition:border-color .12s;
}
.via::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--vermelho);
}
.via:hover{border-color:var(--grafite-fraco)}
.via-topo{
  display:flex;align-items:flex-start;gap:10px;
  padding:11px 13px 11px 16px;cursor:pointer;
}
.via-quem{flex:1;min-width:0}
.via-nome{font-weight:600;font-size:13.5px;letter-spacing:-.01em}
.via-escola{font-size:11.5px;color:var(--grafite);margin-top:2px}
.via-valor{text-align:right;flex-shrink:0}
.via-total{font-family:'Azeret Mono',monospace;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}
.via-itens{font-size:11px;color:var(--grafite-fraco);margin-top:2px}
/* Abre a edição do orçamento sem precisar expandir a via primeiro. */
.via-lapis{
  flex-shrink:0;align-self:center;width:28px;height:28px;
  border:1px solid var(--linha-forte);border-radius:var(--r-sm);
  background:var(--painel);color:var(--grafite);
  font-size:13px;line-height:1;cursor:pointer;
  transition:color .12s,border-color .12s;
}
.via-lapis:hover{color:var(--amarelo);border-color:var(--amarelo)}
.via-corpo{border-top:1px dashed var(--linha-forte);padding:4px 13px 10px 16px;display:none}
.via.aberta .via-corpo{display:block}
.via-item{
  display:flex;align-items:center;gap:10px;padding:6px 0;
  border-bottom:1px solid rgba(255,255,255,.04);font-size:12.5px;
}
.via-item:last-child{border-bottom:none}
.via-item-qtd{
  font-family:'Azeret Mono',monospace;font-size:11px;color:var(--grafite);
  min-width:26px;flex-shrink:0;
}
.via-item-nome{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.via-item-preco{font-family:'Azeret Mono',monospace;font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--grafite)}
.via-item.removido .via-item-nome{text-decoration:line-through;color:var(--grafite-fraco)}
.via-item.avulso .via-item-nome::after{
  content:'fora da lista';margin-left:7px;font-size:9.5px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--amarelo);
}

/* o fecho: barra amarela da logo somando as vias */
.fecho{
  display:flex;align-items:center;gap:12px;
  padding:11px 14px;border-radius:var(--r-sm);
  background:var(--amarelo);color:var(--preto);
  box-shadow:var(--sombra-dura);
}
.fecho-rotulo{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.fecho-valor{
  margin-left:auto;font-family:'Archivo Black',sans-serif;font-size:19px;
  letter-spacing:-.02em;font-variant-numeric:tabular-nums;
}
.fecho-nota{font-size:11px;font-weight:600;opacity:.7}

/* Enquanto o cliente não escolheu, as três condições convivem — é o que ele
   está olhando no PDF. A faixa amarela volta assim que uma delas for a dele. */
.fecho-condicoes{border:1.5px solid var(--amarelo);border-radius:var(--r-sm);overflow:hidden}
.fecho-cond{
  display:flex;align-items:baseline;gap:10px;padding:9px 13px;
  border-bottom:1px solid var(--linha);font-size:12px;color:var(--grafite);
}
.fecho-cond:last-child{border-bottom:none}
.fecho-cond b{
  margin-left:auto;font-family:'Azeret Mono',monospace;font-size:13.5px;
  font-weight:600;color:var(--amarelo);font-variant-numeric:tabular-nums;
}

/* ---------- utilidades ---------- */
.linha-flex{display:flex;align-items:center;gap:10px}
.espaco{flex:1}
.vazio{
  padding:34px 20px;text-align:center;color:var(--grafite-fraco);font-size:12.5px;
  border:1px dashed var(--linha-forte);border-radius:var(--r-sm);
}
.divisor{height:1px;background:var(--linha);margin:14px 0}
/* ---------- barras de rolagem ----------
   Escuras em toda parte, não só onde alguém lembrou de pôr a classe: uma
   barra branca do sistema no meio da tela de bancada entrega o truque.
   A borda do puxador é transparente com background-clip, então ele se
   encaixa em qualquer fundo — painel, breu ou sulfite. */
*{scrollbar-width:thin;scrollbar-color:var(--alto) transparent}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{
  background:var(--alto);border-radius:10px;
  border:2px solid transparent;background-clip:padding-box;
}
*::-webkit-scrollbar-thumb:hover{background:var(--linha-forte);background-clip:padding-box}
*::-webkit-scrollbar-corner{background:transparent}

.rolagem{overflow-y:auto}

/* ---------- modal ---------- */
.sobreposicao{
  position:fixed;inset:0;background:rgba(6,7,8,.72);
  display:none;align-items:center;justify-content:center;padding:20px;z-index:60;
  backdrop-filter:blur(3px);
}
.sobreposicao.on{display:flex}
.modal{
  background:var(--painel);border:1px solid var(--linha-forte);border-radius:var(--r);
  width:min(620px,100%);max-height:88vh;display:flex;flex-direction:column;
  box-shadow:0 24px 60px rgba(0,0,0,.6);
}
.modal-topo{
  display:flex;align-items:center;gap:12px;padding:15px 18px;
  border-bottom:1px solid var(--linha);
}
.modal-titulo{font-family:'Archivo Black',sans-serif;font-size:15px;letter-spacing:-.01em}
.modal-corpo{padding:18px;overflow-y:auto}
.modal-pe{
  display:flex;gap:10px;justify-content:flex-end;padding:14px 18px;
  border-top:1px solid var(--linha);
}
.fechar{
  margin-left:auto;background:none;border:none;color:var(--grafite);
  font-size:20px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:4px;
}
.fechar:hover{color:var(--tinta);background:var(--sulfite)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

/* Aviso curto de que algo deu certo ou não. Vive aqui e no topo.js porque
   toda tela que grava precisa dele, não só o atendimento. */
.toast{
  /* Canto superior direito: no centro ele cobria a última mensagem da conversa,
     que é justamente o que a pessoa estava lendo. */
  position:fixed;right:18px;top:calc(var(--topo) + 12px);left:auto;bottom:auto;
  transform:translateY(-8px);
  z-index:200;max-width:min(520px,90vw);padding:12px 18px;border-radius:var(--r-sm);
  font-size:13px;font-weight:500;box-shadow:0 10px 30px rgba(0,0,0,.5);
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;
}
.toast.on{opacity:1;transform:translateY(0)}
.toast.ok{background:#1B7A50;color:#EAFBF3;border:1px solid #2FB57C}
.toast.erro{background:#A32A21;color:#FFECEA;border:1px solid #E23127}


/* Anotação que veio do sistema antigo sobre a família. Tracejada porque é
   informação de origem duvidosa: serve de pista para quem atende, não é
   cadastro. */
.anotacao-antiga{
  margin-top:10px;padding:10px 12px;border:1px dashed var(--linha-forte);
  border-radius:var(--r-sm);background:var(--painel);
}
.anotacao-antiga b{
  display:block;font-size:9.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--grafite-fraco);margin-bottom:5px;
}
.anotacao-antiga span{font-size:12px;line-height:1.5;color:var(--tinta)}
