:root{
  --verde:#2F4739;--verde-2:#4A6B54;--verde-3:#6E8C77;--ouro:#C2A15A;--ouro-claro:#E7D9B4;
  --blush:#C97B6E;--blush-claro:#F3E1DC;--bg:#EEF1EC;--card:#FFFFFF;--card-2:#F7F9F5;
  --linha:#DDE4DD;--txt:#243026;--txt-2:#5B6B60;--sucesso:#3E8E5F;
  --sombra:0 6px 24px rgba(47,71,57,.10);--sombra-forte:0 14px 44px rgba(47,71,57,.20);--r:16px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:'Manrope',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);
  color:var(--txt);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 1}
h1,h2,h3{font-family:'Fraunces',Georgia,serif;font-weight:600;margin:0}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit}
.oculto{display:none !important}

/* LOGIN */
.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(120% 80% at 50% -10%, #F5F7F2 0%, var(--bg) 60%)}
.login-card{background:var(--card);width:100%;max-width:400px;border-radius:22px;padding:34px 28px;
  box-shadow:var(--sombra-forte);text-align:center}
.login-selo{width:56px;height:56px;margin:0 auto 14px}
.login-card h1{font-size:26px;color:var(--verde)}
.login-card p{color:var(--txt-2);font-size:14px;margin:6px 0 24px}
.login-card .campo{text-align:left}

.app{max-width:640px;margin:0 auto;padding:0 16px 96px;min-height:100dvh}
.topo{display:flex;align-items:center;justify-content:space-between;padding:20px 2px 12px}
.topo .casal{font-family:'Fraunces',serif;font-size:20px;color:var(--verde);line-height:1.1}
.topo .sub{font-size:12.5px;color:var(--txt-2);margin-top:2px}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--verde);color:#fff;display:grid;place-items:center;font-weight:700;font-size:15px}

.hero{background:linear-gradient(150deg,var(--verde),#3a5745);color:#fff;border-radius:20px;padding:22px;box-shadow:var(--sombra);position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;right:-30px;top:-30px;width:150px;height:150px;background:radial-gradient(circle,rgba(194,161,90,.35),transparent 70%)}
.hero .rotulo{font-size:12.5px;opacity:.8;letter-spacing:.04em;text-transform:uppercase}
.hero .grande{font-family:'Fraunces',serif;font-size:34px;font-weight:600;margin:2px 0}
.hero .linha-prog{height:9px;background:rgba(255,255,255,.22);border-radius:99px;margin:14px 0 8px;overflow:hidden}
.hero .linha-prog span{display:block;height:100%;background:linear-gradient(90deg,var(--ouro-claro),var(--ouro));border-radius:99px;transition:width .5s}
.hero .rodape{display:flex;justify-content:space-between;font-size:13px;opacity:.92}
.cards-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.mini{background:var(--card);border-radius:15px;padding:15px 16px;box-shadow:var(--sombra)}
.mini .rotulo{font-size:12px;color:var(--txt-2);font-weight:600}
.mini .valor{font-family:'Fraunces',serif;font-size:22px;margin-top:3px}
.mini.pago .valor{color:var(--sucesso)}.mini.falta .valor{color:var(--blush)}
.faixa-info{display:flex;gap:10px;margin-top:12px}
.pilula{flex:1;background:var(--card);border-radius:14px;padding:12px 14px;box-shadow:var(--sombra);display:flex;align-items:center;gap:10px}
.pilula .num{font-family:'Fraunces',serif;font-size:20px;color:var(--verde)}
.pilula .txt{font-size:12px;color:var(--txt-2);line-height:1.2}
.caixa-card{background:var(--card);border-radius:16px;padding:16px 18px;box-shadow:var(--sombra);margin-top:12px}
.caixa-card .cx-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.caixa-card .cx-rot{font-size:13px;color:var(--txt-2);font-weight:700}
.caixa-card .cx-val{font-family:'Fraunces',serif;font-size:24px;color:var(--verde)}
.caixa-card .cx-status{font-size:12.5px;margin-top:9px;padding:8px 11px;border-radius:9px;line-height:1.35}
.caixa-card .cx-status.ok{background:#e6f3ea;color:#1f5133}
.caixa-card .cx-status.alerta{background:var(--blush-claro);color:#9b4a3d}
.caixa-card .cx-status.neutro{background:var(--card-2);color:var(--txt-2)}
.secao-titulo{font-size:16px;color:var(--verde);margin:26px 2px 12px;display:flex;align-items:center;justify-content:space-between}
.secao-titulo .link{font-family:'Manrope';font-size:13px;color:var(--verde-2);font-weight:700;cursor:pointer;background:none;border:0}
.cat-item{background:var(--card);border-radius:13px;padding:13px 15px;box-shadow:var(--sombra);margin-bottom:10px}
.cat-item .cab{display:flex;justify-content:space-between;font-size:14px;margin-bottom:8px}
.cat-item .cab .v{color:var(--txt-2);font-size:13px}
.barra{height:7px;background:var(--card-2);border-radius:99px;overflow:hidden;border:1px solid var(--linha)}
.barra span{display:block;height:100%;background:linear-gradient(90deg,var(--verde-3),var(--verde));border-radius:99px}

.venc{background:var(--card);border-radius:13px;padding:12px 14px;box-shadow:var(--sombra);margin-bottom:9px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.venc .f{font-weight:700;font-size:14px}
.venc .d{font-size:12px;color:var(--txt-2);margin-top:2px}
.venc .d.atras{color:var(--blush);font-weight:700}
.venc .dir{text-align:right;white-space:nowrap}
.venc .val{font-family:'Fraunces',serif;font-size:16px;color:var(--verde)}
.venc .pg{margin-top:5px;font-size:11.5px;font-weight:700;color:#fff;background:var(--verde);border:0;border-radius:8px;padding:5px 10px;cursor:pointer}

.filtros{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 12px}
.chip{white-space:nowrap;padding:8px 14px;border-radius:99px;border:1px solid var(--linha);background:var(--card);color:var(--txt-2);font-size:13px;font-weight:700}
.chip.ativo{background:var(--verde);color:#fff;border-color:var(--verde)}
.contrato{background:var(--card);border-radius:16px;padding:16px;box-shadow:var(--sombra);margin-bottom:12px}
.contrato .cab{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.contrato .forn{font-family:'Fraunces',serif;font-size:18px;line-height:1.15}
.contrato .cat{font-size:12px;color:var(--verde-2);font-weight:700;text-transform:uppercase;letter-spacing:.03em;margin-bottom:3px}
.contrato .desc{font-size:13px;color:var(--txt-2);margin-top:3px}
.badge{font-size:11px;font-weight:700;padding:4px 9px;border-radius:99px;white-space:nowrap;height:fit-content}
.badge.contratado{background:var(--card-2);color:var(--verde-2);border:1px solid var(--linha)}
.badge.cotacao{background:#FBF3E1;color:#9a7b2e}
.badge.cancelado{background:#f3eceb;color:#9b6b63;text-decoration:line-through}
.badge.quitado{background:#e6f3ea;color:var(--sucesso)}
.valores{display:flex;justify-content:space-between;margin:14px 0 6px}
.valores .bloco{flex:1}.valores .bloco:nth-child(2){text-align:center}.valores .bloco:last-child{text-align:right}
.valores .bloco .r{color:var(--txt-2);font-size:11.5px;font-weight:700}
.valores .bloco .n{font-family:'Fraunces',serif;font-size:17px;margin-top:1px}
.valores .bloco.falta .n{color:var(--blush)}.valores .bloco.pago .n{color:var(--sucesso)}
.contrato .barra span{background:linear-gradient(90deg,var(--ouro),var(--sucesso))}
.acoes{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.det{margin-top:12px;border-top:1px dashed var(--linha);padding-top:8px}
.det-tit{font-size:12px;font-weight:700;color:var(--verde-2);margin:8px 0 2px}
.pag-linha{display:flex;justify-content:space-between;align-items:center;padding:7px 0;font-size:13.5px;border-bottom:1px solid var(--card-2)}
.pag-linha:last-child{border-bottom:0}
.pag-linha .pdata{color:var(--txt-2);font-size:12px}
.pag-linha .pforma{font-size:11px;background:var(--card-2);padding:2px 7px;border-radius:6px;color:var(--verde-2);margin-left:4px}
.pag-linha .pforma.atras{background:var(--blush-claro);color:#9b4a3d}
.pag-linha .x{background:none;border:0;color:var(--blush);font-size:16px;padding:0 3px;cursor:pointer}
.pag-linha .edit{background:none;border:0;color:var(--verde-2);font-size:14px;padding:0 3px;cursor:pointer}
.pag-valor{font-weight:700;color:var(--sucesso)}

.vazio{text-align:center;padding:50px 20px;color:var(--txt-2)}
.vazio .ic{font-size:40px;margin-bottom:10px}
.vazio h3{color:var(--verde);font-size:19px;margin-bottom:6px}
.vazio p{font-size:14px;margin-bottom:18px}

.campo{margin-bottom:14px}
.campo label{display:block;font-size:12.5px;font-weight:700;color:var(--txt-2);margin-bottom:6px}
.campo input,.campo select,.campo textarea{width:100%;padding:12px 13px;border:1px solid var(--linha);border-radius:11px;font-size:15.5px;background:#fff;color:var(--txt)}
.campo input:focus,.campo select:focus,.campo textarea:focus{outline:none;border-color:var(--verde-2);box-shadow:0 0 0 3px rgba(74,107,84,.14)}
.campo textarea{resize:vertical;min-height:60px}
.dois{display:grid;grid-template-columns:1fr 1fr;gap:12px}

.btn{width:100%;padding:13px;border:0;border-radius:12px;background:var(--verde);color:#fff;font-size:16px;font-weight:700;transition:transform .08s}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.6}
.btn-sec{background:#fff;color:var(--verde);border:1px solid var(--linha)}
.btn-perigo{background:#fff;color:var(--blush);border:1px solid #ecc9c2}
.btn-wpp{background:#128C4B;color:#fff;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:5px}
.btn-mini{width:auto;padding:8px 13px;font-size:13px;border-radius:9px}

.fab{position:fixed;right:calc(50% - 320px + 18px);bottom:84px;width:56px;height:56px;border-radius:50%;background:var(--verde);color:#fff;border:0;font-size:28px;box-shadow:var(--sombra-forte);display:grid;place-items:center;z-index:40}
@media(max-width:672px){.fab{right:18px}}
.nav{position:fixed;left:0;right:0;bottom:0;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-top:1px solid var(--linha);display:flex;z-index:30}
.nav .item{flex:1;background:none;border:0;padding:9px 0 calc(9px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--txt-2);font-size:10.5px;font-weight:700}
.nav .item svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8}
.nav .item.ativo{color:var(--verde)}

.modal-fundo{position:fixed;inset:0;background:rgba(30,42,34,.45);z-index:50;display:flex;align-items:flex-end;justify-content:center}
@media(min-width:520px){.modal-fundo{align-items:center;padding:20px}}
.modal{background:var(--card);width:100%;max-width:480px;border-radius:22px 22px 0 0;padding:22px 20px calc(22px + env(safe-area-inset-bottom));max-height:92dvh;overflow-y:auto;box-shadow:var(--sombra-forte);animation:sobe .25s ease}
@media(min-width:520px){.modal{border-radius:22px}}
@keyframes sobe{from{transform:translateY(20px);opacity:.6}to{transform:translateY(0);opacity:1}}
.modal .puxador{width:40px;height:4px;background:var(--linha);border-radius:99px;margin:-6px auto 14px}
.modal h2{font-size:21px;color:var(--verde);margin-bottom:4px}
.modal .modal-sub{font-size:13px;color:var(--txt-2);margin-bottom:18px}
.modal .rodape-modal{display:flex;gap:10px;margin-top:8px}
.rodape-modal .btn{width:auto;flex:1}

.toast{position:fixed;left:50%;bottom:100px;transform:translateX(-50%);z-index:60;background:var(--verde);color:#fff;padding:12px 20px;border-radius:12px;font-size:14px;font-weight:600;box-shadow:var(--sombra-forte);opacity:0;transition:opacity .2s,transform .2s;pointer-events:none}
.toast.mostra{opacity:1;transform:translateX(-50%) translateY(-6px)}
.toast.erro{background:var(--blush)}
.grupo-config{background:var(--card);border-radius:16px;padding:18px;box-shadow:var(--sombra);margin-bottom:14px}
.grupo-config h3{font-size:16px;color:var(--verde);margin-bottom:14px}
.dash-card{background:var(--card);border-radius:16px;padding:16px;box-shadow:var(--sombra);margin-bottom:14px}
.dash-card h3{font-size:15px;color:var(--verde);margin-bottom:2px}
.dash-card .cap{font-size:12px;color:var(--txt-2);margin-bottom:14px}
.chart-box{position:relative;height:230px}
.donut-centro{position:absolute;top:43%;left:0;right:0;transform:translateY(-50%);text-align:center;pointer-events:none}
.donut-centro .p{font-family:'Fraunces',serif;font-size:30px;color:var(--verde);line-height:1}
.donut-centro .l{font-size:12px;color:var(--txt-2);margin-top:2px}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.stat{background:var(--card);border-radius:14px;padding:14px 15px;box-shadow:var(--sombra)}
.stat .ic{font-size:20px}
.stat .rot{font-size:11.5px;color:var(--txt-2);font-weight:700;margin-top:6px}
.stat .val{font-family:'Fraunces',serif;font-size:18px;color:var(--verde);margin-top:2px;line-height:1.15}
.carregando{text-align:center;padding:60px;color:var(--txt-2)}
