:root{--bg:#f4f6f9;--card:#fff;--ink:#1c2430;--muted:#6b7686;--line:#e2e6ec;--brand:#0f4c81;--brand2:#1f6feb;--ok:#1a7f37;--bad:#cf222e;--warn:#b7791f;--side:#12263f}
*{box-sizing:border-box}
body{margin:0;font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--brand2);text-decoration:none}a:hover{text-decoration:underline}
h1{font-size:22px;margin:4px 0 12px}h2{font-size:16px;margin:0 0 10px}h3{font-size:14px;margin:14px 0 6px}
.muted{color:var(--muted)}.center{text-align:center}.neg{color:var(--bad)}.pos{color:var(--ok)}.num{text-align:right;white-space:nowrap}
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;background:var(--brand);color:#fff;padding:8px 16px}
.top .brand{color:#fff;font-size:18px}.top .grow{flex:1}.top .who{font-size:12px;opacity:.85}.burger{display:none;background:none;border:0;color:#fff;font-size:22px}
.shell{display:flex;min-height:calc(100vh - 48px)}
.side{width:230px;flex:none;background:var(--side);padding:10px 0;overflow-y:auto}
.side a{display:block;color:#cbd5e1;padding:6px 18px}.side a:hover,.side a.on{background:rgba(255,255,255,.1);color:#fff;text-decoration:none}
.side .grp{color:#7f93ad;font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:14px 18px 4px}
main{flex:1;min-width:0;padding:18px 22px}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin-bottom:14px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:14px}
.kpi{margin:0;display:flex;flex-direction:column;gap:2px;color:inherit}.kpi:hover{text-decoration:none;border-color:var(--brand2)}
.kpi span{color:var(--muted);font-size:12px}.kpi b{font-size:20px}.kpi small{color:var(--muted)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
.pagehead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.pagehead h1,.pagehead h2{margin:0}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}.pagehead .actions{margin:0}
.inl{display:inline}.inline-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.btn{display:inline-block;background:var(--brand2);color:#fff;border:1px solid var(--brand2);border-radius:6px;padding:7px 14px;font:inherit;cursor:pointer}
.btn:hover{filter:brightness(1.08);text-decoration:none}.btn.ghost{background:#fff;color:var(--brand2)}.btn.danger{background:#fff;color:var(--bad);border-color:var(--bad)}.btn.sm{padding:3px 10px;font-size:13px}
input,select,textarea{font:inherit;border:1px solid #c4ccd8;border-radius:6px;padding:7px 9px;background:#fff;color:var(--ink);max-width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid #9ec5ff;border-color:var(--brand2)}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:10px 12px}.filters input[type=search]{min-width:220px}
.form .fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.form label{display:flex;flex-direction:column;gap:4px}.form label.wide{grid-column:1/-1}.form label span{font-size:12px;color:var(--muted)}
.form label.check{flex-direction:row;align-items:center;gap:8px}.req{color:var(--bad);font-style:normal}
.form small{font-size:12px}.form textarea{width:100%}
.tablewrap{overflow-x:auto}
table.grid{width:100%;border-collapse:collapse}.grid th{background:#f0f3f8;text-align:left;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.grid th,.grid td{padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}.grid tbody tr:hover{background:#f8fafc}
.grid tfoot td{font-weight:600;background:#f0f3f8}.grid tr.overdue td{background:#fff1f1}.rowact{white-space:nowrap;text-align:right}.rowact a{margin-left:8px}
.thumb{height:44px;border-radius:4px;border:1px solid var(--line)}
.pager{display:flex;gap:4px;flex-wrap:wrap}.pager a{padding:4px 10px;border:1px solid var(--line);border-radius:6px;background:#fff}.pager a.on{background:var(--brand2);color:#fff}
dl.kv{display:grid;grid-template-columns:minmax(150px,22%) 1fr;gap:6px 14px;margin:0}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0;word-break:break-word}
.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;background:#e8edf5;color:#334}
.b-concluida,.b-ganha,.b-aprovada,.b-aprovado,.b-pago,.b-entregue,.b-escolhida,.b-vigente,.b-ativo,.b-entrada,.b-receber,.b-faturada{background:#dcf5e3;color:#14602b}
.b-bloqueada,.b-perdida,.b-rejeitada,.b-cancelado,.b-paralisada,.b-recusada,.b-bloqueado,.b-rescindido{background:#fde4e6;color:#8f1b25}
.b-em_andamento,.b-negociacao,.b-pendente_aprovacao,.b-aberto,.b-comprada,.b-saida,.b-pagar{background:#fff0cf;color:#8a5a00}
.exp-bad{color:var(--bad);font-weight:600}.exp-warn{color:var(--warn);font-weight:600}
.flash{padding:10px 14px;border-radius:6px;margin-bottom:12px}.flash.ok{background:#dcf5e3;color:#14602b}.flash.err{background:#fde4e6;color:#8f1b25}
ul.list{list-style:none;margin:0;padding:0}ul.list li{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}
.bar{position:relative;height:12px;background:#e8edf5;border-radius:6px;overflow:hidden;margin:4px 0}.bar.big{height:20px}
.bar i{position:absolute;left:0;top:0;bottom:0}.bar .plan{background:#b9c3d3}.bar .act{background:var(--brand2);height:55%;top:22%;border-radius:0 4px 4px 0}.bar .act.late{background:var(--bad)}
.chart{margin:10px 0}.chart svg{width:100%;height:auto;display:block}
.pix{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start;margin:14px 0}.pix textarea{width:min(520px,100%);font-family:monospace}
/* autocomplete */
.ac{position:relative;display:block}.ac-text{width:100%}.ac-list{position:absolute;z-index:10;left:0;right:0;top:100%;margin:0;padding:0;list-style:none;background:#fff;border:1px solid #c4ccd8;border-radius:6px;max-height:240px;overflow:auto;display:none;box-shadow:0 6px 18px rgba(0,0,0,.12)}
.ac-list li{padding:6px 10px;cursor:pointer}.ac-list li:hover{background:#eef4ff}
/* kanban */
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(250px,1fr);gap:12px;overflow-x:auto;padding-bottom:10px;align-items:start}
.kb-col{background:#e9edf4;border-radius:8px;padding:8px;min-height:200px}.kb-col header{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:2px 4px 8px}
.kb-col header small{width:100%;color:var(--muted)}.count{background:#fff;border-radius:10px;padding:0 8px;font-size:12px}
.kb-body{display:flex;flex-direction:column;gap:8px;min-height:120px}.kb-col.over{outline:2px dashed var(--brand2)}
.kb-card{background:#fff;border:1px solid var(--line);border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:3px;cursor:grab;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.kb-card.late{border-left:4px solid var(--bad)}.kb-card small{color:var(--muted)}.kb-card.dragging{opacity:.4}.kb-move{font-size:12px;padding:2px 4px;margin-top:4px}
/* gantt */
.gantt{padding:0;overflow:auto;max-height:72vh;position:relative}
.g-wrap{display:flex;min-width:max-content}.g-left{position:sticky;left:0;z-index:5;background:#fff;border-right:2px solid var(--line);width:340px;flex:none}
.g-lh{height:44px;display:flex;align-items:flex-end;padding:0 8px 6px;font-size:12px;color:var(--muted);border-bottom:1px solid var(--line);background:#f0f3f8;position:sticky;top:0;z-index:6}
.g-row{height:30px;display:flex;align-items:center;gap:6px;padding:0 8px;border-bottom:1px solid #eef1f5;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-row:hover{background:#f3f7ff}.g-row .w{color:var(--muted);font-size:12px;min-width:34px}.g-row.parent{font-weight:600}
.g-right svg{display:block}.g-right text{font:11px system-ui,sans-serif;fill:#4b5666}
.g-bar{cursor:pointer}.g-bar:hover{filter:brightness(1.1)}
@media(max-width:860px){
  .burger{display:block}.side{position:fixed;left:0;top:48px;bottom:0;z-index:30;transform:translateX(-100%);transition:transform .2s}
  body.nav-open .side{transform:none}main{padding:12px}.top .who{display:none}.g-left{width:200px}
  table.grid.stack thead{display:none}
}
.login{display:grid;place-items:center;min-height:100vh;background:linear-gradient(160deg,#0f4c81,#12263f)}
.login-box{width:min(380px,92vw);display:flex;flex-direction:column;gap:12px;padding:26px}.login-box h1{margin:0}.login-box label{display:flex;flex-direction:column;gap:4px}
@media print{.top,.side,.actions,.filters{display:none}main{padding:0}}
