:root{
  --bg:#0f1115; --card:#171a21; --card2:#1e222b; --linha:#272c37;
  --txt:#eef1f6; --txt2:#9aa3b2; --acc:#ff6b4a; --verde:#3ddc97; --vermelho:#ff6b6b;
  --safe-t:env(safe-area-inset-top,0px); --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--txt);
  font:16px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,system-ui,sans-serif}
body{padding-bottom:calc(140px + var(--safe-b))}
button,input{font:inherit;color:inherit}
h1,h2{margin:0}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}

/* ---------- login / cadastro ---------- */
.login{min-height:100dvh;display:grid;place-items:center;padding:24px}
.login-card{width:100%;max-width:340px;text-align:center}
.logo{width:64px;height:64px;margin:0 auto 16px;border-radius:20px;display:grid;place-items:center;
  background:linear-gradient(145deg,var(--acc),#ff9f6b);color:#1a0f0a;font-weight:800;font-size:22px}
.login h1{font-size:26px;letter-spacing:-.02em;margin-bottom:20px}
.abas-auth{display:flex;gap:6px;background:var(--card);padding:4px;border-radius:14px;margin-bottom:16px}
.abas-auth button{flex:1;border:0;background:none;color:var(--txt2);padding:10px;border-radius:11px;font-weight:600}
.abas-auth button.ativo{background:var(--card2);color:var(--txt)}
.form-auth{display:flex;flex-direction:column;gap:10px}
.form-auth input{width:100%;padding:15px 16px;background:var(--card);border:1px solid var(--linha);
  border-radius:14px;outline:none}
.form-auth input:focus{border-color:var(--acc)}
.form-auth button{margin-top:6px;padding:16px;border:0;border-radius:14px;font-weight:600}
.erro{color:var(--vermelho);font-size:14px;margin-top:14px}

/* ---------- topo ---------- */
.topo{padding:calc(12px + var(--safe-t)) 16px 18px;
  background:linear-gradient(180deg,#191d26,var(--bg));border-bottom:1px solid var(--linha)}
.topo-linha{position:relative;display:flex;align-items:center;gap:8px;margin-bottom:14px}
.mes-nav{flex:1;display:flex;align-items:center;justify-content:center;gap:8px}
.mes-nav button{width:36px;height:36px;border:0;border-radius:12px;background:var(--card2);
  color:var(--txt2);font-size:20px;line-height:1}
.mes-nav span{min-width:140px;text-align:center;font-weight:600;text-transform:capitalize}
.avatar{position:absolute;right:16px;width:36px;height:36px;border:0;border-radius:50%;
  background:var(--acc);color:#1a0f0a;font-weight:700;font-size:15px}
.resumo-principal{text-align:center}
.rotulo{display:block;color:var(--txt2);font-size:12px;text-transform:uppercase;letter-spacing:.06em}
#total-gastos{display:block;font-size:38px;font-weight:700;letter-spacing:-.03em;margin-top:4px}
.resumo-lado{display:flex;gap:10px;margin-top:16px}
.resumo-lado>div{flex:1;background:var(--card);border:1px solid var(--linha);border-radius:14px;padding:10px 12px}
.resumo-lado b{font-size:17px}
.verde{color:var(--verde)}.vermelho{color:var(--vermelho)}

/* ---------- blocos ---------- */
main{padding:16px;display:flex;flex-direction:column;gap:20px;max-width:640px;margin:0 auto}
.bloco h2{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--txt2);margin-bottom:10px}
.bloco-botao{display:block;text-align:center;padding:16px;border-radius:14px;font-weight:600}

.barras{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.barras li{background:var(--card);border:1px solid var(--linha);border-radius:14px;padding:12px 14px}
.barras .linha1{display:flex;justify-content:space-between;align-items:baseline;gap:8px;
  font-size:14px;margin-bottom:8px}
.barras .trilho{height:6px;border-radius:99px;background:var(--card2);overflow:hidden}
.barras .preenche{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--acc),#ff9f6b)}
.barras .linha2{display:flex;justify-content:space-between;font-size:12px;color:var(--txt2);margin-top:7px}

.lancamentos{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.dia{color:var(--txt2);font-size:12px;text-transform:uppercase;letter-spacing:.06em;margin:8px 2px 2px}
.item{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--linha);
  border-radius:14px;padding:12px 14px}
.item .icone{width:38px;height:38px;flex:0 0 38px;border-radius:12px;display:grid;place-items:center;
  background:var(--card2);font-size:16px}
.item .txt{flex:1;min-width:0}
.item .cat{font-weight:600;font-size:15px}
.item .desc{color:var(--txt2);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .val{font-weight:700;font-variant-numeric:tabular-nums}
.item .apagar{border:0;background:none;color:var(--txt2);font-size:18px;padding:4px 2px}
.vazio{color:var(--txt2);text-align:center;font-size:14px;line-height:1.7;margin:24px 0}

/* ---------- relatorios ---------- */
.cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.card{background:var(--card);border:1px solid var(--linha);border-radius:14px;padding:12px 14px}
.card b{display:block;font-size:22px;margin-top:6px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.card small{display:block;color:var(--txt2);font-size:12px;margin-top:4px}

.colunas{display:flex;align-items:flex-end;gap:8px;height:170px;background:var(--card);
  border:1px solid var(--linha);border-radius:16px;padding:14px}
.coluna{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;height:100%}
.coluna .valor{font-size:11px;color:var(--txt2);font-variant-numeric:tabular-nums}
.coluna .haste{width:100%;border-radius:8px 8px 4px 4px;background:var(--card2);min-height:4px;
  transition:height .3s ease}
.coluna.atual .haste{background:linear-gradient(180deg,#ff9f6b,var(--acc))}
.coluna .mes{font-size:11px;color:var(--txt2);text-transform:capitalize}

/* ---------- fab + tabs ---------- */
.fab{position:fixed;right:20px;bottom:calc(86px + var(--safe-b));width:60px;height:60px;border:0;
  border-radius:20px;background:var(--acc);color:#1a0f0a;font-size:30px;font-weight:600;
  box-shadow:0 8px 24px rgba(255,107,74,.35);z-index:5}
.tabs{position:fixed;left:0;right:0;bottom:0;display:flex;z-index:4;
  padding:8px 8px calc(8px + var(--safe-b));background:#12151bee;backdrop-filter:blur(12px);
  border-top:1px solid var(--linha)}
.tabs button{flex:1;border:0;background:none;color:var(--txt2);font-size:11px;font-weight:600;
  display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px}
.tabs button span{font-size:19px;line-height:1}
.tabs button.ativo{color:var(--acc)}

/* ---------- modais ---------- */
.modal{position:fixed;inset:0;z-index:10;display:flex;align-items:flex-end;justify-content:center}
.modal-fundo{position:absolute;inset:0;background:rgba(0,0,0,.6)}
.folha{position:relative;width:100%;max-width:520px;background:var(--card);
  border-radius:24px 24px 0 0;padding:10px 18px calc(20px + var(--safe-b));
  display:flex;flex-direction:column;gap:14px;max-height:92dvh;overflow:auto;
  animation:sobe .22s ease-out}
@keyframes sobe{from{transform:translateY(24px);opacity:.4}to{transform:none;opacity:1}}
.puxador{width:40px;height:4px;border-radius:99px;background:var(--linha);margin:2px auto 6px}
.tipo-toggle{display:flex;gap:6px;background:var(--card2);padding:4px;border-radius:14px}
.tipo-toggle button{flex:1;border:0;background:none;color:var(--txt2);padding:10px;border-radius:11px;font-weight:600}
.tipo-toggle button.ativo{background:var(--acc);color:#1a0f0a}
.campo-valor{display:flex;align-items:center;gap:8px;background:var(--card2);border-radius:16px;padding:14px 16px}
.campo-valor span{color:var(--txt2);font-size:20px}
.campo-valor input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:34px;font-weight:700}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips button{border:1px solid var(--linha);background:var(--card2);color:var(--txt2);
  padding:9px 13px;border-radius:99px;font-size:14px}
.chips button.ativo{background:var(--acc);border-color:var(--acc);color:#1a0f0a;font-weight:600}
#descricao,#data{background:var(--card2);border:1px solid var(--linha);border-radius:14px;
  padding:14px 16px;outline:none;width:100%}
#descricao:focus,#data:focus{border-color:var(--acc)}
.acoes{display:flex;gap:10px;margin-top:2px}
.acoes button,.folha>button{flex:1;padding:16px;border:0;border-radius:14px;font-weight:600}
.primario{background:var(--acc);color:#1a0f0a}
.secundario{background:var(--card2);color:var(--txt2)}
.perigo{background:transparent;border:1px solid var(--linha)!important;color:var(--vermelho)}
.conta-info{text-align:center;padding:6px 0 4px}
.conta-info b{display:block;font-size:18px}
.conta-info small{color:var(--txt2)}
