:root{
  --fundo:#f3f1ef;--card:#fff;--card2:#faf8f7;--borda:#ebe6e2;--texto:#1c1a19;--suave:#5c5855;--mudo:#8f8a86;
  --vs:#ae4543;--vs2:#7d2c2a;--vs-claro:#f6e3e2;--on-vs:#fff;
  --ok:#1e8a3c;--ok-bg:#e3f3e7;--alerta:#9a5f00;--alerta-bg:#fbefd8;--grave:#c0302a;--grave-bg:#fbe4e2;
  --info:#2a64a8;--info-bg:#e1ecf8;--roxo:#6f45a8;--roxo-bg:#ece4f6;--neutro:#6b6762;--neutro-bg:#ece8e5;
  --sombra:0 1px 2px rgba(30,20,10,.06),0 4px 14px rgba(30,20,10,.05);
}
:root[data-theme=dark]{
  --fundo:#121110;--card:#1c1b1a;--card2:#232120;--borda:#2e2b29;--texto:#f3f1ef;--suave:#c4c0bc;--mudo:#8d8884;
  --vs:#e0716a;--vs2:#c4524c;--vs-claro:#3a2322;--on-vs:#1a0f0e;
  --ok:#4cc06c;--ok-bg:#16301d;--alerta:#e9a23b;--alerta-bg:#35290f;--grave:#f06a63;--grave-bg:#3a1d1b;
  --info:#6aa6e8;--info-bg:#18283b;--roxo:#b794e6;--roxo-bg:#2a2038;--neutro:#a3a3a3;--neutro-bg:#2a2826;
  --sombra:0 1px 2px rgba(0,0,0,.4);
}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){
  --fundo:#121110;--card:#1c1b1a;--card2:#232120;--borda:#2e2b29;--texto:#f3f1ef;--suave:#c4c0bc;--mudo:#8d8884;
  --vs:#e0716a;--vs2:#c4524c;--vs-claro:#3a2322;--on-vs:#1a0f0e;
  --ok:#4cc06c;--ok-bg:#16301d;--alerta:#e9a23b;--alerta-bg:#35290f;--grave:#f06a63;--grave-bg:#3a1d1b;
  --info:#6aa6e8;--info-bg:#18283b;--roxo:#b794e6;--roxo-bg:#2a2038;--neutro:#a3a3a3;--neutro-bg:#2a2826;--sombra:0 1px 2px rgba(0,0,0,.4);}}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--fundo);color:var(--texto);font:14px/1.45 "Segoe UI",system-ui,-apple-system,Roboto,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}
h1{font-size:22px}h2{font-size:16px}h3{font-size:14px}
a{color:var(--vs);text-decoration:none}a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--vs);outline-offset:2px}
.muted{color:var(--mudo)}.soft{color:var(--suave)}.small{font-size:12px}.right{margin-left:auto}.nowrap{white-space:nowrap}
.hidden{display:none!important}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:10px}
.grow{flex:1;min-width:0}.gap-s{gap:6px}.mt{margin-top:14px}.mb{margin-bottom:14px}

/* ---- botoes ---- */
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--borda);background:var(--card);padding:7px 13px;border-radius:8px;cursor:pointer;font-weight:550;min-height:34px;white-space:nowrap}
.btn:hover{background:var(--card2);border-color:var(--mudo)}
.btn.primary{background:var(--vs);border-color:var(--vs);color:var(--on-vs)}.btn.primary:hover{background:var(--vs2);border-color:var(--vs2)}
.btn.danger{color:var(--grave);border-color:var(--grave)}.btn.danger:hover{background:var(--grave-bg)}
.btn.sm{padding:3px 9px;min-height:26px;font-size:12px}
.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--card2)}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* ---- campos ---- */
label.f{display:flex;flex-direction:column;gap:4px;font-weight:550;font-size:13px}
label.f .hint{font-weight:400;color:var(--mudo);font-size:12px}
input[type=text],input[type=password],input[type=number],input[type=date],input[type=search],input[type=email],select,textarea{width:100%;background:var(--card);border:1px solid var(--borda);border-radius:8px;padding:8px 10px;min-height:36px}
textarea{resize:vertical;min-height:90px;line-height:1.4}
input:focus,select:focus,textarea:focus{border-color:var(--vs);outline:none;box-shadow:0 0 0 3px var(--vs-claro)}
.chk{display:flex;align-items:center;gap:8px;font-weight:500}.chk input{width:16px;height:16px;accent-color:var(--vs)}
.err{color:var(--grave);font-size:13px;background:var(--grave-bg);padding:8px 10px;border-radius:8px}

/* ---- layout ---- */
#app{min-height:100%}
.shell{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
.side{background:var(--card);border-right:1px solid var(--borda);padding:16px 12px;position:sticky;top:0;height:100vh;overflow:auto;display:flex;flex-direction:column;gap:2px}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 14px}
.logo{width:34px;height:34px;border-radius:9px;background:var(--vs);color:var(--on-vs);display:grid;place-items:center;font-weight:800;letter-spacing:-.04em}
.brand b{display:block;line-height:1.1}.brand span{font-size:11px;color:var(--mudo)}
.nav-h{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--mudo);padding:12px 10px 4px}
.nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--texto);font-weight:500}
.nav a:hover{background:var(--card2);text-decoration:none}
.nav a.on{background:var(--vs-claro);color:var(--vs);font-weight:650}
.nav a .n{margin-left:auto;font-size:11px;background:var(--vs);color:var(--on-vs);border-radius:10px;padding:0 6px}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:10px;padding:10px 22px;border-bottom:1px solid var(--borda);background:var(--card);position:sticky;top:0;z-index:20}
.top .search{max-width:440px;flex:1}
.page{padding:22px;max-width:1300px;width:100%}
.page-h{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.menu-btn{display:none}
.bell{position:relative}.bell .dot{position:absolute;top:-4px;right:-4px;background:var(--vs);color:var(--on-vs);border-radius:10px;font-size:10px;padding:0 5px;font-weight:700}
.pop{position:absolute;right:0;top:42px;width:min(380px,92vw);background:var(--card);border:1px solid var(--borda);border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.25);z-index:50;max-height:70vh;overflow:auto}
.pop .it{padding:10px 14px;border-bottom:1px solid var(--borda);cursor:pointer;display:block;color:var(--texto)}
.pop .it:hover{background:var(--card2);text-decoration:none}.pop .it.un{background:var(--vs-claro)}
@media(max-width:900px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;z-index:40;width:260px;transform:translateX(-102%);transition:transform .2s;box-shadow:0 0 40px rgba(0,0,0,.3)}
  .side.open{transform:none}
  .menu-btn{display:inline-flex}.page{padding:14px}.top{padding:8px 12px}
}

/* ---- cartoes ---- */
.card{background:var(--card);border:1px solid var(--borda);border-radius:12px;padding:16px;box-shadow:var(--sombra)}
.card.flat{box-shadow:none}
.card h2{margin-bottom:10px}
.grid{display:grid;gap:14px}
.g4{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.g3{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.g2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.stat{display:flex;flex-direction:column;gap:2px}
.stat .v{font-size:34px;font-weight:750;letter-spacing:-.03em;line-height:1.05}
.stat .l{color:var(--suave)}
.stat.vs .v{color:var(--vs)}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--borda);margin:14px 0;overflow-x:auto}
.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:9px 14px;cursor:pointer;color:var(--suave);font-weight:550;white-space:nowrap}
.tabs button.on{color:var(--vs);border-color:var(--vs)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--borda);background:var(--card);border-radius:20px;padding:4px 12px;cursor:pointer;font-size:13px}
.chip.on{background:var(--vs);border-color:var(--vs);color:var(--on-vs)}

/* ---- badges ---- */
.b{display:inline-flex;align-items:center;border-radius:20px;padding:1px 9px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--neutro-bg);color:var(--neutro)}
.b-andamento,.b-em_analise,.b-avaliando{background:var(--info-bg);color:var(--info)}
.b-validacao{background:var(--roxo-bg);color:var(--roxo)}
.b-pausado,.b-alta,.b-aberta,.b-nova{background:var(--alerta-bg);color:var(--alerta)}
.b-concluido,.b-concluida,.b-aprovada,.b-aceita,.b-virou_projeto{background:var(--ok-bg);color:var(--ok)}
.b-critica,.b-recusada,.b-rejeitada{background:var(--grave-bg);color:var(--grave)}
.b-sens{background:var(--grave-bg);color:var(--grave)}
.prog{height:6px;background:var(--neutro-bg);border-radius:6px;overflow:hidden}.prog i{display:block;height:100%;background:var(--vs)}

/* ---- listas / tabelas ---- */
table.t{width:100%;border-collapse:collapse}
table.t th{text-align:left;font-size:12px;color:var(--mudo);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--borda);white-space:nowrap}
table.t td{padding:9px 10px;border-bottom:1px solid var(--borda);vertical-align:top}
table.t tr:hover td{background:var(--card2)}
.tw{overflow-x:auto}
.item{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--borda)}
.item:last-child{border-bottom:0}
.proj{cursor:pointer;display:flex;flex-direction:column;gap:8px;transition:border-color .15s}
.proj:hover{border-color:var(--vs)}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--vs-claro);color:var(--vs);display:grid;place-items:center;font-weight:700;font-size:12px;flex:none}
.msg{padding:12px 14px;border-radius:10px;background:var(--card2);border:1px solid var(--borda)}
.msg.pin{border-color:var(--vs);background:var(--vs-claro)}
.msg.com{border-left:4px solid var(--vs)}
pre.doc{background:var(--card2);border:1px solid var(--borda);border-radius:10px;padding:14px;overflow:auto;white-space:pre-wrap;word-break:break-word;font:13px/1.5 Consolas,"Cascadia Mono",monospace;margin:0;max-height:62vh}
mark{background:var(--alerta-bg);color:var(--alerta);padding:0 2px;border-radius:3px}
.banner{padding:10px 14px;border-radius:10px;background:var(--alerta-bg);color:var(--alerta);font-size:13px}
.banner.sens{background:var(--grave-bg);color:var(--grave)}
.banner.ok{background:var(--ok-bg);color:var(--ok)}
.kv{display:grid;grid-template-columns:130px 1fr;gap:6px 12px}.kv dt{color:var(--mudo)}.kv dd{margin:0}
.secret{font:600 18px Consolas,monospace;letter-spacing:.08em;background:var(--card2);border:1px dashed var(--borda);padding:10px 14px;border-radius:8px;word-break:break-all;user-select:all}
.codes{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;font:600 15px Consolas,monospace}.codes span{background:var(--card2);border:1px solid var(--borda);padding:6px 10px;border-radius:6px;text-align:center;user-select:all}
.bars{display:flex;align-items:flex-end;gap:3px;height:80px}.bars i{flex:1;background:var(--vs);border-radius:3px 3px 0 0;min-height:2px;opacity:.85}

/* ---- kanban ---- */
.kan{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:12px;overflow-x:auto;padding-bottom:8px}
.kcol{background:var(--card2);border:1px solid var(--borda);border-radius:12px;padding:10px;min-height:200px}
.kcol.over{border-color:var(--vs);background:var(--vs-claro)}
.kcol h3{display:flex;gap:8px;align-items:center;margin:2px 4px 10px}
.kcard{background:var(--card);border:1px solid var(--borda);border-left:4px solid var(--neutro);border-radius:8px;padding:9px 10px;margin-bottom:8px;cursor:grab;box-shadow:var(--sombra)}
.kcard a{color:var(--texto)}
.kcard.p-critica{border-left-color:var(--grave)}.kcard.p-alta{border-left-color:var(--alerta)}.kcard.p-media{border-left-color:var(--info)}
.late{color:var(--grave);font-weight:600}

/* ---- modal / toast ---- */
.ov{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:flex-start;justify-content:center;padding:4vh 12px;z-index:100;overflow:auto}
.modal{background:var(--card);border-radius:14px;width:min(640px,100%);box-shadow:0 20px 60px rgba(0,0,0,.4);display:flex;flex-direction:column;max-height:92vh}
.modal.wide{width:min(860px,100%)}
.modal>header{padding:16px 20px 8px;display:flex;align-items:center;gap:10px}
.modal>.bd{padding:8px 20px 16px;overflow:auto;display:flex;flex-direction:column;gap:12px}
.modal>footer{padding:12px 20px;border-top:1px solid var(--borda);display:flex;gap:8px;justify-content:flex-end}
#toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:200}
.toast{background:var(--texto);color:var(--fundo);padding:10px 16px;border-radius:10px;box-shadow:0 6px 24px rgba(0,0,0,.3);max-width:380px}
.toast.bad{background:var(--grave);color:#fff}

/* ---- login ---- */
.auth{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(1200px 500px at 50% -10%,var(--vs-claro),transparent),var(--fundo)}
.auth .card{width:min(440px,100%);padding:28px}
.auth .logo{width:46px;height:46px;font-size:18px}
.empty{padding:34px 10px;text-align:center;color:var(--mudo)}
.perm-g td{background:var(--card2);font-weight:650;color:var(--suave)}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--borda);border-top-color:var(--vs);border-radius:50%;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
