:root{
  --bg:#f6f4fa; --painel:#fff; --painel2:#f1edf8; --linha:#e4ddf0;
  --texto:#1d1530; --fraco:#6b6280; --roxo:#6d28d9; --roxo-esc:#4c1d95; --roxo-cl:#ede5fb;
  --verde:#15803d; --verde-cl:#dcfce7; --amarelo:#b45309; --amarelo-cl:#fef3c7;
  --vermelho:#c2410c; --vermelho-cl:#ffedd5; --cinza-cl:#eef0f3;
  --sombra:0 1px 2px rgba(29,21,48,.06),0 4px 14px rgba(29,21,48,.06);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--texto);font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
.app{display:flex;flex-direction:column;height:100vh}

/* topo */
.topo{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--painel);border-bottom:1px solid var(--linha);flex-wrap:wrap}
.marca{font-weight:700;color:var(--roxo-esc);font-size:16px;margin-right:auto;white-space:nowrap}
.marca small{font-weight:500;color:var(--fraco);margin-left:6px}
.busca{border:1px solid var(--linha);border-radius:8px;padding:7px 10px;min-width:200px;background:var(--painel)}
.btn{border:1px solid var(--linha);background:var(--painel);border-radius:8px;padding:7px 12px;white-space:nowrap}
.btn:hover{background:var(--painel2)}
a.btn{text-decoration:none;color:var(--roxo-esc);display:inline-block}
.btn.pri{background:var(--roxo);border-color:var(--roxo);color:#fff}
.btn.pri:hover{background:var(--roxo-esc)}
.btn.mini{padding:4px 9px;font-size:13px}
.btn.perigo{color:var(--vermelho)}

/* números */
.metricas{display:flex;gap:10px;padding:10px 16px;overflow-x:auto}
.met{background:var(--painel);border:1px solid var(--linha);border-radius:10px;padding:8px 12px;min-width:150px}
.met b{display:block;font-size:18px}
.met span{color:var(--fraco);font-size:12px}

/* quadro */
.quadro{flex:1;display:flex;gap:10px;padding:4px 16px 16px;overflow-x:auto;align-items:flex-start}
.coluna{flex:0 0 260px;background:var(--painel2);border-radius:12px;display:flex;flex-direction:column;max-height:100%}
.coluna header{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;font-weight:600;font-size:13px}
.coluna header .n{background:var(--painel);border-radius:99px;padding:1px 8px;font-weight:600;color:var(--fraco)}
.coluna .lista{padding:0 8px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:60px}
.coluna.alvo{outline:2px dashed var(--roxo);outline-offset:-2px}
.coluna.perdida{background:#f3f1f4}
.card{background:var(--painel);border:1px solid var(--linha);border-radius:10px;padding:9px 10px;box-shadow:var(--sombra);cursor:pointer}
.card:hover{border-color:var(--roxo)}
.card .t{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card .s{color:var(--fraco);font-size:12px;margin-top:2px}
.card .tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}
.tag{font-size:11.5px;border-radius:6px;padding:1px 6px;background:var(--cinza-cl);color:var(--fraco);white-space:nowrap}
.tag.boa{background:var(--verde-cl);color:var(--verde)}
.tag.media{background:var(--amarelo-cl);color:var(--amarelo)}
.tag.baixa{background:var(--vermelho-cl);color:var(--vermelho)}
.tag.parada{background:var(--vermelho);color:#fff}
.vazio{color:var(--fraco);font-size:12px;text-align:center;padding:10px 0}

/* ficha */
.fundo{position:fixed;inset:0;background:rgba(29,21,48,.35);display:none;z-index:10}
.fundo.on{display:block}
.ficha{position:fixed;top:0;right:0;bottom:0;width:min(520px,100vw);background:var(--painel);box-shadow:-8px 0 30px rgba(0,0,0,.12);z-index:11;display:none;flex-direction:column}
.ficha.on{display:flex}
.ficha .cab{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--linha)}
.ficha .cab h2{font-size:16px;margin:0;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ficha .corpo{flex:1;overflow-y:auto;padding:4px 16px 16px}
.ficha .pe{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--linha);justify-content:flex-end}
.sec{margin-top:16px}
.sec h3{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--fraco);margin:0 0 8px}
.grade{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.grade .full{grid-column:1/-1}
label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--fraco)}
input,select,textarea{border:1px solid var(--linha);border-radius:8px;padding:7px 9px;background:var(--painel);font-size:14px;width:100%}
textarea{resize:vertical;min-height:60px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--roxo-cl);border-color:var(--roxo)}
.linha-btn{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.calc{background:var(--roxo-cl);border-radius:10px;padding:10px 12px;margin-top:8px;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.calc div{font-size:12px;color:var(--fraco)}
.calc b{display:block;font-size:16px;color:var(--texto)}
.historico{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}
.historico li{font-size:13px;border-left:3px solid var(--linha);padding:2px 0 2px 8px}
.historico li.nota{border-color:var(--roxo)}
.historico small{color:var(--fraco);display:block}
.oculto{display:none!important}

/* modal */
.modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(480px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto;background:var(--painel);border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.25);z-index:12;padding:16px;display:none}
.modal.on{display:block}
.modal h2{margin:0 0 4px;font-size:17px}
.modal p{margin:0 0 12px;color:var(--fraco);font-size:13px}
.modal .acoes{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.aviso{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);background:var(--texto);color:#fff;border-radius:10px;padding:9px 14px;z-index:20;display:none;max-width:calc(100vw - 32px)}
.aviso.on{display:block}

@media (max-width:700px){
  .topo{gap:8px}
  .marca{flex-basis:100%}
  .busca{min-width:0;order:5;flex-basis:100%}
  .marca small{display:none}
  .topo .btn{padding:6px 10px;font-size:13px}
  .coluna{flex-basis:78vw}
  .grade{grid-template-columns:1fr}
  .calc{grid-template-columns:1fr 1fr}
}
