*{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#eef2f8;--card:#fff;--ink:#14213d;--mut:#6b7a90;--line:#e3e8f0;--blue:#1e5bd8;--blue2:#0b2f7a;--green:#12a150;--red:#d63b3b;--amber:#e39b12}
body{font-family:"Segoe UI","DejaVu Sans",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:14px}
.app{display:flex;min-height:100vh}
.side{width:220px;background:#0b1d45;color:#c9d4ea;padding:22px 14px;flex-shrink:0}
.logo{display:flex;align-items:center;gap:10px;color:#fff;font-weight:700;font-size:16px;margin-bottom:28px;padding:0 8px}
.logo i{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,#3d8bff,#1e5bd8);display:grid;place-items:center;font-style:normal;font-size:17px}
.nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;color:#c9d4ea;text-decoration:none;margin-bottom:3px;font-size:14px}
.nav a.on{background:#1e5bd8;color:#fff}
.nav .sec{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#6f80a8;margin:18px 12px 8px}
.user{margin-top:40px;padding:12px;border-top:1px solid #22356a;font-size:13px}
.user b{color:#fff;display:block}
.main{flex:1;padding:22px 26px}
.banner{background:linear-gradient(110deg,#0b2f7a 0%,#1e5bd8 60%,#3d8bff 100%);color:#fff;border-radius:14px;padding:20px 24px;display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}
.banner h1{font-size:22px;letter-spacing:.04em}
.banner p{opacity:.85;margin-top:3px}
.sel{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3);padding:8px 14px;border-radius:9px;font-weight:600}
.btn{background:#fff;color:var(--blue2);padding:9px 16px;border-radius:9px;font-weight:700;margin-left:10px;display:inline-block}
.grid{display:grid;gap:16px}
.card{background:var(--card);border-radius:14px;padding:18px;box-shadow:0 1px 2px rgba(16,30,60,.06),0 4px 14px rgba(16,30,60,.05)}
.card h3{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);margin-bottom:12px}
.kpi .v{font-size:26px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}
.kpi .s{color:var(--mut);font-size:12px;margin-top:4px}
.kpi .bar{height:6px;background:var(--line);border-radius:4px;margin-top:10px;overflow:hidden}
.kpi .bar i{display:block;height:100%;border-radius:4px}
.pos{color:var(--green)}.neg{color:var(--red)}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);text-align:left;padding:8px 6px;border-bottom:1px solid var(--line)}
td{padding:8px 6px;border-bottom:1px solid #f1f4f9}
td.r,th.r{text-align:right}
.tag{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:700}
.ok{background:#e3f6ec;color:#0e7c3e}.pend{background:#fff3dc;color:#a46a00}.late{background:#fde7e7;color:#b42323}
.cat{display:inline-flex;align-items:center;gap:7px}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.rank{display:flex;flex-direction:column;gap:11px}
.rank .row{display:grid;grid-template-columns:120px 1fr 90px;align-items:center;gap:10px}
.rank .tr{height:9px;background:#eef2f8;border-radius:5px;overflow:hidden}
.rank .tr i{display:block;height:100%;border-radius:5px}
.rank .val{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.watermark{position:fixed;right:14px;bottom:10px;font-size:11px;color:#9aa6ba}

/* ---------- sistema: complementos às telas ---------- */
a{color:var(--blue)}
.nav a{cursor:pointer}
.nav a:hover:not(.on){background:#14295c}
.side .user form{display:inline}
.side .user button{background:none;border:0;color:#c9d4ea;text-decoration:underline;cursor:pointer;font:inherit;padding:0}
.banner .acoes{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.sel{display:inline-flex;align-items:center;gap:12px;color:#fff}
.sel a{color:#fff;text-decoration:none;font-size:13px;padding:0 2px}
.btn{text-decoration:none;border:0;cursor:pointer;font:inherit;font-weight:700;margin-left:0}
.btn.azul{background:var(--blue);color:#fff}
.btn.cinza{background:#eef2f8;color:var(--ink)}
.btn.vermelho{background:#fde7e7;color:#b42323}
.btn.peq{padding:5px 10px;font-size:12px;border-radius:7px}
.link{color:var(--blue);text-decoration:none;font-size:13px}
.vazio{color:var(--mut);padding:18px 4px}
.msgs{margin-bottom:14px;display:grid;gap:8px}
.msg{padding:11px 14px;border-radius:10px;background:#e3f6ec;color:#0e7c3e;font-weight:600}
.msg.error{background:#fde7e7;color:#b42323}
.msg.warning{background:#fff3dc;color:#a46a00}
.tag{border:0;cursor:pointer;font-family:inherit}
td form{display:inline}
.aviso-mes{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#fff3dc;color:#7a5200;border-radius:12px;padding:14px 18px;margin-bottom:16px}

/* formulários */
.campo{margin-bottom:16px}
.campo label,.rot{display:block;font-size:12px;font-weight:700;color:var(--mut);margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}
.campo input[type=text],.campo input[type=date],.campo input[type=password],.campo input[type=number],.campo select,
.filtros input,.filtros select{width:100%;border:1px solid #d5dce8;border-radius:10px;padding:11px 13px;font:inherit;font-size:15px;background:#fff;color:var(--ink)}
.campo input:focus,.campo select:focus{outline:none;border:2px solid var(--blue);padding:10px 12px}
.campo .erro,.erro{color:var(--red);font-size:13px;margin-top:5px}
.check{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:16px}
.form-card{max-width:520px}
.filtros{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.filtros>*{flex:1;min-width:150px}
.filtros button{flex:0}

/* lançamento rápido */
.lancar{max-width:520px;margin:0 auto;background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 4px 20px rgba(16,30,60,.08)}
.lancar .topo{background:linear-gradient(110deg,#0b2f7a,#1e5bd8);color:#fff;padding:22px 22px 20px}
.lancar .topo h2{font-size:20px}
.lancar .topo .valor-box{display:flex;align-items:baseline;gap:8px;margin-top:12px}
.lancar .topo .valor-box span{font-size:30px;font-weight:700;opacity:.9}
.lancar .topo input.valor{background:transparent;border:0;border-bottom:2px solid rgba(255,255,255,.35);color:#fff;font-size:42px;font-weight:700;width:100%;padding:2px 0;font-family:inherit;font-variant-numeric:tabular-nums}
.lancar .topo input.valor::placeholder{color:rgba(255,255,255,.45)}
.lancar .topo input.valor:focus{outline:none;border-bottom-color:#fff}
.lancar .corpo{padding:20px 22px 24px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips label,.quando label{cursor:pointer}
.chips input,.quando input{position:absolute;opacity:0;pointer-events:none}
.chips span{display:inline-flex;align-items:center;gap:7px;padding:10px 14px;border-radius:22px;background:#eef2f8;font-weight:600;font-size:14px}
.chips input:checked+span{background:var(--c,#1e5bd8);color:#fff}
.chips input:focus-visible+span,.quando input:focus-visible+span{outline:2px solid var(--blue);outline-offset:2px}
.quando{display:flex;gap:8px}
.quando label{flex:1}
.quando span{display:block;text-align:center;padding:11px;border-radius:10px;border:1px solid #d5dce8}
.quando input:checked+span{border:2px solid var(--blue);padding:10px;font-weight:700}
.btn-grande{display:block;width:100%;background:var(--blue);color:#fff;border:0;border-radius:12px;padding:15px;font:inherit;font-weight:700;font-size:16px;cursor:pointer}
.btn-sec{display:block;width:100%;background:#eef2f8;color:var(--ink);border:0;border-radius:12px;padding:12px;font:inherit;font-weight:600;margin-top:10px;cursor:pointer;text-align:center;text-decoration:none}

/* login */
.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}
.login .arte{background:linear-gradient(135deg,#0b2f7a,#1e5bd8 65%,#3d8bff);color:#fff;padding:60px;display:flex;flex-direction:column;justify-content:center}
.login .arte .ico{width:56px;height:56px;border-radius:14px;background:rgba(255,255,255,.18);display:grid;place-items:center;font-size:28px;margin-bottom:26px}
.login .arte h1{font-size:34px;line-height:1.2}
.login .arte p{opacity:.85;margin-top:14px;font-size:16px;max-width:380px}
.login .caixa{display:flex;align-items:center;justify-content:center;background:#fff;padding:30px 20px}
.login .caixa>div{width:100%;max-width:340px}

/* barra inferior e botão flutuante no celular */
.bottom{display:none}
.fab{display:none}

@media (max-width:900px){
  .side{display:none}
  .main{padding:14px 14px 90px}
  .banner{flex-direction:column;align-items:flex-start;gap:12px;padding:18px}
  .banner h1{font-size:19px}
  .banner .acoes{justify-content:flex-start}
  .grid{grid-template-columns:1fr !important}
  .kpi .v{font-size:22px}
  .rosca-bloco{flex-direction:column}
  .rank .row{grid-template-columns:100px 1fr 86px}
  .tabela-resp{overflow-x:auto}
  .esconde-cel{display:none}
  .bottom{display:flex;position:fixed;left:0;right:0;bottom:0;background:#0b1d45;justify-content:space-around;padding:8px 4px calc(8px + env(safe-area-inset-bottom));z-index:10}
  .bottom a{color:#c9d4ea;text-decoration:none;font-size:11px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 6px}
  .bottom a b{font-size:18px;font-weight:400}
  .bottom a.on{color:#fff}
  .fab{display:grid;position:fixed;right:18px;bottom:78px;width:58px;height:58px;border-radius:50%;background:var(--blue);color:#fff;place-items:center;font-size:30px;text-decoration:none;box-shadow:0 8px 20px rgba(30,91,216,.4);z-index:11}
  .login{grid-template-columns:1fr}
  .login .arte{padding:36px 24px}
  .login .arte h1{font-size:26px}
  .lancar{border-radius:14px}
}

/* aviso de sessão */
.sessao-aviso{display:none;position:fixed;inset:0;background:rgba(11,29,69,.45);z-index:50;align-items:center;justify-content:center;padding:16px}
.sessao-aviso.on{display:flex}
.sessao-caixa{background:#fff;border-radius:16px;padding:24px;max-width:380px;width:100%;box-shadow:0 20px 50px rgba(10,30,70,.3)}
.sessao-caixa b{font-size:18px}
.sessao-caixa p{color:var(--mut);margin:8px 0 18px}
.sessao-caixa #sessao-resta{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}

/* valor editável das contas */
.valor-btn{background:none;border:0;font:inherit;color:inherit;cursor:pointer;padding:3px 6px;border-radius:7px;font-variant-numeric:tabular-nums}
.valor-btn .lapis{opacity:0;color:var(--blue);font-size:12px;margin-left:2px}
tr:hover .valor-btn .lapis,.valor-btn:focus .lapis{opacity:1}
.valor-btn:hover{background:#eef2f8}
.valor-form{display:inline-flex;gap:4px;align-items:center;justify-content:flex-end}
.valor-form input{width:100px;border:2px solid var(--blue);border-radius:8px;padding:5px 8px;font:inherit;text-align:right}
.valor-form button{border:0;border-radius:7px;width:28px;height:28px;cursor:pointer;font-weight:700}
.valor-form .ok-btn{background:var(--blue);color:#fff}
.valor-form .x-btn{background:#eef2f8;color:var(--ink)}
.total-linha td{border-top:2px solid var(--line);font-weight:700}
.dica{font-size:12px;color:var(--mut);margin-top:10px}
@media (max-width:900px){.bottom a{padding:4px 3px}}

/* linhas do tempo */
.lt-topo{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin:0 0 10px}
.seg{display:inline-flex;background:#eef2f8;border-radius:9px;padding:3px}
.seg button{border:0;background:none;padding:6px 12px;border-radius:7px;font:inherit;font-size:12px;font-weight:700;color:#6b7a90;cursor:pointer}
.seg button.on{background:#fff;color:#14213d;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.lt-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:20px;font:inherit;font-size:13px;font-weight:600;background:#eef2f8;color:#6b7a90;border:0;cursor:pointer}
.chip.on{color:#fff}
.lt-svg{width:100%}
.lt-legenda{display:flex;gap:18px;font-size:12px;color:#6b7a90;flex-wrap:wrap;margin-top:4px}
.kpis-linha{display:flex;gap:28px;flex-wrap:wrap;margin:4px 0 8px}
.kpis-linha div>span{display:block;font-size:11px;color:#6b7a90;font-weight:700;letter-spacing:.04em}
.kpis-linha b{font-size:18px}
.separador{display:flex;align-items:center;gap:12px;margin:26px 0 14px;color:#0b2f7a;font-weight:700;letter-spacing:.06em;font-size:13px}
.separador::before,.separador::after{content:"";flex:1;height:1px;background:#cfd7e4}
.tag.and{background:#e5edff;color:#1e5bd8}
@media (max-width:900px){.lt-topo{margin:0 0 10px;justify-content:flex-start}}

/* cadastros */
.lista-cad{display:grid;gap:10px}
.item-cad{display:flex;align-items:center;gap:14px;padding:14px 16px;background:#fff;border-radius:14px;box-shadow:0 1px 2px rgba(16,30,60,.06),0 4px 14px rgba(16,30,60,.05)}
.item-cad.inativa{opacity:.6}
.item-cad.sel{outline:2px solid var(--blue)}
.item-cad.arrastando{opacity:.4}
.alca{color:#b5bfd0;font-size:16px;letter-spacing:-2px;cursor:grab;user-select:none}
.mover{display:flex;flex-direction:column;gap:2px}
.mover button{border:0;background:#eef2f8;border-radius:5px;width:22px;height:16px;font-size:9px;cursor:pointer;color:#6b7a90;line-height:1}
.ico-cat{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex-shrink:0}
.ico-cat i{width:20px;height:20px;border-radius:50%;display:block}
.item-cad .info{flex:1;min-width:0}
.item-cad .info b{font-size:15px}
.item-cad .info div{font-size:12px;color:var(--mut);margin-top:2px}
.tog{width:40px;height:22px;border-radius:12px;background:#cfd7e4;position:relative;display:inline-block;border:0;cursor:pointer;vertical-align:middle;flex-shrink:0}
.tog::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:left .15s}
.tog.on{background:#12a150}.tog.on::after{left:21px}
.paleta{display:flex;flex-wrap:wrap;gap:12px}
.paleta label{cursor:pointer}
.paleta input{position:absolute;opacity:0;pointer-events:none}
.paleta span{width:30px;height:30px;border-radius:50%;display:block}
.paleta input:checked+span{box-shadow:0 0 0 3px #fff,0 0 0 5px #14213d}
.paleta input:focus-visible+span{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--blue)}
.chip-prev{padding:9px 13px;border-radius:20px;font-weight:600;font-size:13px;background:#eef2f8}
.linha-campo{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.opc{border:1px solid #d5dce8;border-radius:11px;padding:12px 14px;display:flex;gap:10px;align-items:flex-start;margin-bottom:14px;cursor:pointer}
.opc input{margin-top:3px;width:16px;height:16px;accent-color:var(--blue)}
.opc:has(input:checked){border:2px solid var(--blue);padding:11px 13px;background:#f5f8ff}
.opc small{display:block;color:var(--mut);font-size:12px;margin-top:2px}
.link-perigo{background:none;border:0;color:#b42323;font:inherit;font-size:13px;cursor:pointer;display:block;margin:12px auto 0}
.av{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;color:#fff;font-weight:700;font-size:20px;flex-shrink:0}
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700}
.badge.adm{background:#e5edff;color:#1e5bd8}.badge.com{background:#eef2f8;color:#5a6b8c}.badge.ina{background:#f1f1f1;color:#999}
.forca{display:flex;gap:4px;margin-top:8px}.forca i{flex:1;height:5px;border-radius:3px;background:#e3e8f0}
.forca-txt{font-size:12px;margin-top:5px}
.radios{display:grid;gap:8px}
.radios label{border:1px solid #d5dce8;border-radius:11px;padding:11px 14px;display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.radios label:has(input:checked){border:2px solid var(--blue);padding:10px 13px;background:#f5f8ff}
.radios input{accent-color:var(--blue);margin-top:3px}
.radios small{display:block;color:var(--mut);font-size:12px}
.perm td{padding:7px 6px}
@media (max-width:900px){.item-cad{flex-wrap:wrap}.item-cad .acoes-item{width:100%;display:flex;justify-content:flex-end;gap:8px}}

/* balões de edição e remoção (contas) */
td{position:relative}
.balao-edicao,.balao-remover{position:absolute;right:0;top:calc(100% - 6px);z-index:20;background:#fff;border:1px solid #d5dce8;border-radius:12px;padding:12px 14px;box-shadow:0 8px 24px rgba(16,30,60,.14);flex-direction:column;align-items:flex-end;gap:8px;min-width:310px;text-align:right}
.balao-remover{border-color:#f3c2c2;align-items:flex-start;text-align:left;min-width:360px}
.balao-remover b{color:#b42323}
.balao-edicao[style*="inline-flex"],.balao-remover[style*="flex"]{display:flex !important}
.linha-valor{display:flex;align-items:center;gap:10px}
.mini-rot{font-size:12px;color:var(--mut)}
.linha-botoes{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.linha-botoes button{width:auto;height:auto;padding:7px 11px;border-radius:8px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;border:0}
.bt-cl{background:#fff !important;border:1px solid #d5dce8 !important;color:var(--ink)}
.bt-az{background:var(--blue) !important;color:#fff}
.bt-vm{background:#d63b3b !important;color:#fff}
.mini-nota{font-size:11px;color:var(--mut);font-weight:400}
@media (max-width:900px){.balao-edicao,.balao-remover{position:fixed;left:12px;right:12px;top:auto;bottom:90px;min-width:0}}

/* balão das pizzas */
.balao-pizza{display:none;position:fixed;z-index:60;background:#14213d;color:#fff;border-radius:9px;padding:8px 12px;font-size:12px;pointer-events:none;box-shadow:0 6px 18px rgba(10,20,50,.25);white-space:nowrap}
.balao-pizza b{display:block;font-size:13px}
.balao-pizza span{color:#c9d4ea}
.rank .row.realce .cat,.leg-pizza .realce{font-weight:700}
.rank .row{transition:opacity .15s}
.leg-pizza div{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #f1f4f9;cursor:default}
.leg-pizza div span.n{flex:1}
