@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap');
:root{--bg:#f6f5fb;--card:#fff;--ink:#1c1a2e;--mute:#6a6782;--line:#e6e3f0;--roxo:#373083;--roxo2:#4b43a8;--ouro:#c9a24a;
--ok:#e2f3e7;--okt:#1d6a39;--falta:#fde3e2;--faltat:#b42318;--parc:#fff3d4;--parct:#875800;--extra:#e5edff;--extrat:#23509d;--pf:#efeef4;--pft:#6a6782;--conf:#fde9d2;--conft:#9a4b00;
--sombra:0 1px 2px rgba(20,16,60,.06),0 4px 16px rgba(20,16,60,.06);color-scheme:light}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121120;--card:#1b1a2b;--ink:#ecebf6;--mute:#a3a0bb;--line:#2c2a40;--roxo:#8f87ff;--roxo2:#a59fff;
--ok:#17361f;--okt:#8ad8a3;--falta:#43191a;--faltat:#ff9c94;--parc:#3a2e0e;--parct:#f2cb70;--extra:#1a2846;--extrat:#9dbbf5;--pf:#222136;--pft:#a3a0bb;--conf:#3d2710;--conft:#f5b46f;--sombra:none;color-scheme:dark}}
:root[data-theme=dark]{--bg:#121120;--card:#1b1a2b;--ink:#ecebf6;--mute:#a3a0bb;--line:#2c2a40;--roxo:#8f87ff;--roxo2:#a59fff;
--ok:#17361f;--okt:#8ad8a3;--falta:#43191a;--faltat:#ff9c94;--parc:#3a2e0e;--parct:#f2cb70;--extra:#1a2846;--extrat:#9dbbf5;--pf:#222136;--pft:#a3a0bb;--conf:#3d2710;--conft:#f5b46f;--sombra:none;color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 Montserrat,system-ui,'Segoe UI',sans-serif}
[hidden]{display:none!important}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--roxo)}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);border-radius:8px;padding:7px 12px;cursor:pointer;white-space:nowrap}
.btn:hover{border-color:var(--roxo)}
.btn.prim{background:var(--roxo);border-color:var(--roxo);color:#fff}
.btn.prim:hover{background:var(--roxo2)}
.btn.perigo{color:var(--faltat)}
.btn:disabled{opacity:.5;cursor:wait}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:8px 10px;width:100%}
input:focus-visible,select:focus-visible,textarea:focus-visible,.btn:focus-visible,td.cel:focus-visible{outline:2px solid var(--roxo);outline-offset:1px}
label{display:block;font-size:12px;color:var(--mute);margin:10px 0 4px}

/* login */
.entrada{min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.entrada form,.entrada .caixa{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:var(--sombra)}
.marca{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.marca b{font-size:18px;color:var(--roxo)}
.marca span{display:block;width:28px;height:3px;background:var(--ouro);border-radius:2px}
.entrada h1{font-size:20px;margin:6px 0 4px}
.entrada p{color:var(--mute);margin:0 0 8px}
.entrada .btn.prim{width:100%;justify-content:center;margin-top:16px;padding:10px}
.erro{color:var(--faltat);min-height:20px;margin-top:10px;font-size:13px}
.qr{display:block;margin:12px auto;width:200px;height:200px;background:#fff;border-radius:8px;padding:6px}
.segredo{font-family:ui-monospace,Consolas,monospace;font-size:12px;word-break:break-all;color:var(--mute);text-align:center}

/* app */
header.topo{position:sticky;top:0;z-index:5;background:var(--card);border-bottom:1px solid var(--line)}
.topo .linha{display:flex;align-items:center;gap:12px;padding:10px 20px;flex-wrap:wrap}
.topo nav{display:flex;gap:2px;margin-left:8px;flex-wrap:wrap}
.topo nav a{text-decoration:none;color:var(--mute);padding:7px 12px;border-radius:8px;font-weight:500}
.topo nav a.ativo{color:var(--roxo);background:color-mix(in srgb,var(--roxo) 10%,transparent)}
.topo .dir{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.topo select{width:auto}
.quem{color:var(--mute);font-size:12px}
main{padding:20px;max-width:1600px;margin:0 auto}
.faixa{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:14px}
.faixa .info{color:var(--mute);font-size:12px}
.faixa.aviso{border-color:var(--ouro)}
.cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-bottom:14px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.kpi small{display:block;color:var(--mute);font-size:12px}
.kpi b{font-size:20px;font-variant-numeric:tabular-nums}
.kpi.ruim b{color:var(--faltat)}
.alertas{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:14px}
.alertas h2{font-size:14px;margin:0 0 6px}
.alertas ul{margin:0;padding-left:18px}.alertas li{margin:4px 0}
.alertas .t{font-size:11px;font-weight:600;border-radius:99px;padding:1px 7px;margin-right:6px;background:var(--falta);color:var(--faltat)}
.alertas .t.arquivo{background:var(--parc);color:var(--parct)}
.alertas .t.sem_cliente{background:var(--extra);color:var(--extrat)}
.grade-wrap{overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:12px;max-height:calc(100vh - 150px)}
table.grade{border-collapse:separate;border-spacing:0;width:100%;min-width:1000px}
.grade th,.grade td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.grade thead th{position:sticky;top:0;z-index:2;background:var(--card);font-size:11px;color:var(--mute);text-transform:uppercase;letter-spacing:.04em}
.grade tbody th{position:sticky;left:0;z-index:1;background:var(--card);text-align:left;font-weight:600;min-width:220px}
.grade thead th:first-child{left:0;z-index:3;text-align:left}
.grade .sub{display:block;font-size:11px;font-weight:400;color:var(--mute)}
.tag{display:inline-block;font-size:10px;font-weight:600;border-radius:99px;padding:1px 7px;margin:2px 4px 0 0}
.tag.v{background:var(--falta);color:var(--faltat)}.tag.a{background:var(--parc);color:var(--parct)}
td.cel{cursor:pointer;font-size:13px}
td.cel small{display:block;font-size:10px;opacity:.8}
td.ok{background:var(--ok);color:var(--okt)}
td.falta{background:var(--falta);color:var(--faltat);font-weight:600}
td.parcial{background:var(--parc);color:var(--parct)}
td.extra{background:var(--extra);color:var(--extrat)}
td.pf{background:var(--pf);color:var(--pft)}
td.confirmar{background:var(--conf);color:var(--conft)}
td.sempdf{box-shadow:inset 0 0 0 2px var(--extrat)}
td.sel{outline:2px solid var(--roxo);outline-offset:-2px}
td.tot{font-weight:600}td.neg{color:var(--faltat)}td.pos{color:var(--extrat)}
.legenda{display:flex;flex-wrap:wrap;gap:14px;margin:10px 2px;color:var(--mute);font-size:12px}
.legenda i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-2px}
.legenda i.ok{background:var(--ok)}.legenda i.parcial{background:var(--parc)}.legenda i.falta{background:var(--falta)}.legenda i.extra{background:var(--extra)}.legenda i.pf{background:var(--pf)}.legenda i.confirmar{background:var(--conf)}.legenda i.sempdf{box-shadow:inset 0 0 0 2px var(--extrat)}

/* painel lateral (não modal) */
.com-painel main,.com-painel header.topo{margin-right:420px}
aside.painel{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:100vw;background:var(--card);border-left:1px solid var(--line);z-index:10;display:flex;flex-direction:column;box-shadow:-8px 0 24px rgba(20,16,60,.08)}
.painel header{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line)}
.painel header h2{font-size:16px;margin:0;flex:1}
.painel .corpo{padding:14px 16px;overflow:auto;flex:1}
.painel h3{font-size:13px;margin:16px 0 6px;color:var(--mute);text-transform:uppercase;letter-spacing:.04em}
.lista{list-style:none;margin:0;padding:0}
.lista li{border:1px solid var(--line);border-radius:10px;padding:9px 11px;margin-bottom:6px}
.lista li .l1{display:flex;justify-content:space-between;gap:8px;font-weight:600}
.lista li .l2{font-size:12px;color:var(--mute)}
.campo-copia{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.campo-copia code{flex:1;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:12px;overflow-wrap:anywhere}
.confirmar-faixa{border:1px solid var(--ouro);background:color-mix(in srgb,var(--ouro) 12%,var(--card));border-radius:10px;padding:10px 12px;margin-top:10px}
.confirmar-faixa .acoes{display:flex;gap:8px;margin-top:8px}

/* tabelas simples */
table.simples{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.simples th,.simples td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.simples th{font-size:11px;color:var(--mute);text-transform:uppercase}
.simples td.num{text-align:right;font-variant-numeric:tabular-nums}
.chips{display:flex;flex-wrap:wrap;gap:4px}
.chip{background:var(--bg);border:1px solid var(--line);border-radius:99px;padding:1px 8px;font-size:12px}
.mute{color:var(--mute)}
.passos{counter-reset:p;list-style:none;padding:0}
.passos li{counter-increment:p;position:relative;padding:10px 12px 10px 44px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:var(--card)}
.passos li::before{content:counter(p);position:absolute;left:12px;top:10px;width:22px;height:22px;border-radius:50%;background:var(--roxo);color:#fff;font-size:12px;display:grid;place-items:center}

#avisos{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:20;display:flex;flex-direction:column;gap:8px;align-items:center}
.aviso-t{background:var(--ink);color:var(--bg);border-radius:10px;padding:9px 14px;font-size:13px;box-shadow:var(--sombra);max-width:90vw}
.aviso-t.erro{background:var(--faltat);color:#fff}

@media (max-width:900px){.com-painel main{margin-right:0}aside.painel{width:100vw}main{padding:12px}.topo .linha{padding:10px 12px}}
label.btn{font-size:inherit;color:inherit;margin:0}
.marca small{color:var(--mute);font-weight:500}
.marca-linha{display:block;width:28px;height:3px;background:var(--ouro);border-radius:2px;margin-top:2px}
.faixa select{width:auto}
td.cel .pg{display:block;font-size:10px;font-weight:600;margin-top:2px}
.pg.pago{color:var(--okt)}.pg.parcial{color:var(--parct)}.pg.atrasado{color:var(--faltat)}.pg.aberto{color:var(--parct)}.pg.perdido{color:var(--mute)}
.pg-env{font-size:10px;opacity:.8}
.msg-cob{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:8px 0}
.msg-cob .cab{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--mute);margin-bottom:6px}
.msg-cob textarea{min-height:160px;font-size:13px}
.selo{display:inline-block;font-size:11px;font-weight:600;border-radius:99px;padding:2px 8px}
.selo.sim{background:var(--parc);color:var(--parct)}.selo.real{background:var(--ok);color:var(--okt)}.selo.off{background:var(--pf);color:var(--pft)}
.interruptor{display:inline-flex;align-items:center;gap:6px;cursor:pointer;margin:0;color:var(--ink);font-size:13px}
.grid2{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.bloco{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:14px}
.bloco h2{font-size:15px;margin:0 0 8px}
.simples td input[type=checkbox]{width:18px;height:18px}

.chip.inter{background:var(--ok);color:var(--okt);border-color:transparent}
.chip.ca{background:var(--extra);color:var(--extrat);border-color:transparent}
.chip.sem{background:var(--falta);color:var(--faltat);border-color:transparent}
.vinc-form{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:6px}
.vinc-form select,.vinc-form input{width:auto;padding:5px 8px}
