:root{
  --ink:#17302A;
  --ink-soft:#254038;
  --paper:#F6F2E8;
  --card:#FFFFFF;
  --card-border:#E3DDC8;
  --brass:#B8863B;
  --brass-soft:#E7D2A6;
  --income:#2F6B4F;
  --income-bg:#E7F0EA;
  --expense:#A6402C;
  --expense-bg:#F5E6E1;
  --text:#22261F;
  --text-soft:#6E7266;
  --text-faint:#9A9D8F;
  --radius:10px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  font-family:'Inter',sans-serif;
  background:var(--paper);
  color:var(--text);
  -webkit-font-smoothing:antialiased;
}
.hidden{display:none !important;}
.app{display:flex; min-height:100vh;}
.num{font-family:'IBM Plex Mono',monospace; font-variant-numeric:tabular-nums;}
h1,h2,h3,.display{font-family:'Fraunces',serif;}

/* SIDEBAR */
.sidebar{
  width:220px; flex-shrink:0; background:var(--ink); color:#EFEAE0;
  display:flex; flex-direction:column; padding:24px 16px;
}
.brand{display:flex; align-items:baseline; gap:6px; padding:0 8px 22px 8px; border-bottom:1px solid rgba(239,234,224,0.15); margin-bottom:18px;}
.brand-mark{font-family:'Fraunces',serif; font-weight:700; font-size:22px; color:var(--brass-soft);}
.brand-sub{font-size:10px; letter-spacing:0.12em; text-transform:uppercase; color:#9FB3AA;}
nav{display:flex; flex-direction:column; gap:4px;}
.navbtn{
  display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:8px;
  color:#CFDBD3; font-size:14px; font-weight:500; cursor:pointer; border:none; background:none;
  text-align:left; width:100%; transition:background .15s;
}
.navbtn:hover{background:rgba(239,234,224,0.08);}
.navbtn.active{background:rgba(184,134,59,0.22); color:#FBF3E3;}
.navbtn .dot{width:6px;height:6px;border-radius:50%;background:var(--brass); opacity:0;}
.navbtn.active .dot{opacity:1;}
.sidebar-foot{margin-top:auto; padding:10px 8px; font-size:11px; color:#7E9389; line-height:1.5;}

/* MAIN */
.main{flex:1; padding:32px 40px; max-width:1180px;}
.topline{display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:22px; flex-wrap:wrap; gap:12px;}
.topline h1{font-size:26px; margin:0; font-weight:600;}
.topline .sub{color:var(--text-soft); font-size:13px; margin-top:2px;}
select, input, .selectlike{
  font-family:'Inter',sans-serif; font-size:13px; padding:8px 10px; border-radius:8px;
  border:1px solid var(--card-border); background:#fff; color:var(--text);
}

/* CARDS */
.cards-row{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:24px;}
.card{
  background:var(--card); border:1px solid var(--card-border); border-radius:var(--radius);
  padding:16px 18px; border-top:3px solid var(--brass);
}
.card.income-c{border-top-color:var(--income);}
.card.expense-c{border-top-color:var(--expense);}
.card .label{font-size:11.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--text-soft); margin-bottom:6px;}
.card .value{font-size:22px; font-weight:600;}
.card .value.pos{color:var(--income);}
.card .value.neg{color:var(--expense);}
.card .foot{font-size:11.5px; color:var(--text-faint); margin-top:4px;}

.panel{
  background:var(--card); border:1px solid var(--card-border); border-radius:var(--radius);
  padding:20px 22px; margin-bottom:20px;
}
.panel h3{margin:0 0 14px 0; font-size:15px; font-weight:600; letter-spacing:.01em;}
.grid2{display:grid; grid-template-columns:1.4fr 1fr; gap:18px;}

table{width:100%; border-collapse:collapse; font-size:13px;}
th{text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--text-soft); padding:8px 6px; border-bottom:1px solid var(--card-border); font-weight:600;}
td{padding:8px 6px; border-bottom:1px solid #F0ECE0;}
tr:hover td{background:#FBF9F3;}
.tag{display:inline-block; padding:2px 8px; border-radius:20px; font-size:10.5px; font-weight:600; letter-spacing:.02em;}
.tag-ganhos{background:var(--income-bg); color:var(--income);}
.tag-fixo{background:#EFE9DA; color:#7A5B22;}
.tag-variavel{background:#EAE3F2; color:#5B3E8A;}
.tag-cartao{background:var(--expense-bg); color:var(--expense);}
.tag-invest{background:#DCEDEA; color:#1E6F63;}
.amt-pos{color:var(--income); font-weight:600;}
.amt-neg{color:var(--expense); font-weight:600;}

button{ cursor:pointer; font-family:inherit; }
.btn{
  font-family:'Inter',sans-serif; font-weight:600; font-size:13px; padding:9px 16px; border-radius:8px;
  border:none; cursor:pointer; background:var(--ink); color:#F6F2E8;
  transition:transform .12s ease, background-color .15s ease, box-shadow .15s ease;
}
.btn:hover{background:var(--ink-soft);}
.btn:active{transform:scale(0.95);}
.btn-ghost{background:none; border:1px solid var(--card-border); color:var(--text); padding:7px 10px; font-size:12px; transition:transform .12s ease, background-color .15s ease, border-color .15s ease;}
.btn-ghost:hover{background:#F0ECE0; border-color:#D8D2BE;}
.btn-ghost:active{transform:scale(0.94); background:#E7E1CF;}
.btn-ghost.active{background:var(--ink); color:#F6F2E8; border-color:var(--ink);}
.btn-danger{background:none; color:var(--expense); border:1px solid var(--expense-bg); padding:6px 10px; font-size:12px; transition:transform .12s ease, background-color .15s ease;}
.btn-danger:hover{background:var(--expense-bg);}
.btn-danger:active{transform:scale(0.94); background:#EAD2CB;}
.btn-small{padding:5px 9px; font-size:12px;}
@keyframes editFlash{
  0%{ box-shadow:0 0 0 0 rgba(184,134,59,0.45); }
  100%{ box-shadow:0 0 0 10px rgba(184,134,59,0); }
}
.panel.flash-edit{ animation: editFlash 0.6s ease-out; }
.fade-remove{
  transition: opacity .2s ease, transform .2s ease;
  opacity:0; transform: translateX(6px);
}

.form-row{display:grid; grid-template-columns:repeat(6,1fr); gap:8px; align-items:end; margin-bottom:14px;}
.form-row label{font-size:11px; color:var(--text-soft); display:block; margin-bottom:4px;}
.form-row .field{display:flex; flex-direction:column;}

.filters{display:flex; gap:8px; margin-bottom:14px; flex-wrap:wrap;}

.progress-wrap{margin-bottom:16px;}
.progress-label{display:flex; justify-content:space-between; font-size:12.5px; margin-bottom:5px;}
.progress-label .muted{color:var(--text-soft);}
.progress-bar{height:8px; background:#EDE8DA; border-radius:5px; overflow:hidden;}
.progress-fill{height:100%; border-radius:5px;}
.progress-fill.ok{background:var(--income);}
.progress-fill.warn{background:var(--brass);}
.progress-fill.over{background:var(--expense);}

.empty{color:var(--text-faint); font-size:13px; padding:20px 0; text-align:center;}
.ledger-strip{
  display:flex; align-items:center; justify-content:space-between; background:var(--ink); color:#EFEAE0;
  border-radius:var(--radius); padding:16px 22px; margin-bottom:22px;
}
.ledger-strip .lbl{font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:#9FB3AA; margin-bottom:4px;}
.ledger-strip .amt{font-family:'IBM Plex Mono',monospace; font-size:24px; font-weight:600; color:#FBF3E3;}
.ledger-strip .amt.neg{color:#E7A99A;}
.ledger-seg{padding-right:24px; border-right:1px solid rgba(239,234,224,0.15);}
.ledger-seg:last-child{border-right:none; padding-right:0;}

.canvas-wrap{position:relative; height:230px;}
.debt-card{border:1px solid var(--card-border); border-radius:8px; padding:14px 16px; margin-bottom:10px; display:flex; justify-content:space-between; align-items:center;}
.debt-card .nome{font-weight:600; font-size:14px;}
.debt-card .meta{font-size:12px; color:var(--text-soft); margin-top:2px;}
.debt-actions{display:flex; gap:6px;}

::placeholder{color:var(--text-faint);}

/* tables scroll horizontally inside their panel instead of squeezing/overflowing the page */
.panel:has(table){overflow-x:auto; -webkit-overflow-scrolling:touch;}
.panel:has(table) table{min-width:560px;}
canvas{max-width:100%;}

@media (max-width:900px){
  .app{flex-direction:column; min-height:auto;}
  .sidebar{
    width:100%; flex-direction:row; align-items:center; padding:10px 12px; gap:10px;
    position:sticky; top:0; z-index:10;
  }
  .brand{border-bottom:none; margin-bottom:0; padding:0 10px 0 0; flex-shrink:0;}
  .brand-sub{display:none;}
  nav{
    flex-direction:row; gap:2px; overflow-x:auto; -webkit-overflow-scrolling:touch;
    flex:1; min-width:0;
  }
  .navbtn{width:auto; white-space:nowrap; padding:8px 10px; font-size:13px; flex-shrink:0;}
  .sidebar-foot{display:none;}
  .main{padding:16px;}
  .topline{align-items:flex-start;}
  .topline h1{font-size:21px;}
  .cards-row{grid-template-columns:repeat(2,1fr) !important; gap:10px;}
  .grid2{grid-template-columns:1fr;}
  .form-row{grid-template-columns:repeat(2,1fr) !important;}
  .ledger-strip{flex-wrap:wrap; gap:14px 20px; padding:14px 16px;}
  .ledger-seg{border-right:none; padding-right:0; min-width:42%;}
  .ledger-strip .amt{font-size:19px;}
  .canvas-wrap{height:190px !important;}
  .debt-card{flex-wrap:wrap; gap:8px;}
  .debt-actions{flex-wrap:wrap;}
}

@media (max-width:520px){
  .cards-row{grid-template-columns:1fr !important;}
  .form-row{grid-template-columns:1fr !important;}
  .card .value{font-size:19px;}
  .panel{padding:16px 14px;}
  .ledger-seg{min-width:100%;}
  .filters{flex-direction:column; align-items:stretch;}
  .filters select, .filters input{width:100%;}
  select, input, .selectlike{font-size:16px;} /* avoids iOS auto-zoom on focus */
  .debt-card{flex-direction:column; align-items:flex-start;}
  .debt-actions{width:100%;}
}

/* sidebar footer (exportar/importar/sair) becomes a compact scrollable row on mobile */
@media (max-width:900px){
  .sidebar-foot{
    display:flex !important; margin-top:0; padding:0; gap:6px; flex-shrink:0;
    overflow-x:auto; -webkit-overflow-scrolling:touch; max-width:38vw;
  }
  .sidebar-foot button{
    margin-top:0 !important; width:auto !important; white-space:nowrap; padding:8px 10px !important;
    font-size:11px !important;
  }
  .sidebar-foot br, .sidebar-note{display:none;}
}

/* ---------- LOADING / AUTH ---------- */
.loading-screen{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  color:var(--text-soft); font-family:'Inter',sans-serif; background:var(--paper);
}
#auth-screen{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  padding:20px; background:var(--paper);
}
.auth-box{
  background:var(--card); border:1px solid var(--card-border); border-radius:var(--radius);
  padding:32px; width:100%; max-width:380px;
}
.auth-box .brand-mark{font-size:26px;}
.auth-box .brand-sub{font-size:11px;}
.auth-box p.sub{ color:var(--text-soft); margin:8px 0 22px; font-size:13.5px; }
#auth-screen input{ margin-bottom:12px; width:100%; }
.auth-error{ color:var(--expense); font-size:13px; margin-top:8px; min-height:16px; }

/* ---------- MODAL / TOAST ---------- */
.modal-backdrop{
  position:fixed; inset:0; background:rgba(23,48,42,0.45);
  display:flex; align-items:center; justify-content:center; z-index:30; padding:16px;
}
.modal{
  background:var(--card); border:1px solid var(--card-border); border-radius:var(--radius);
  padding:22px; width:100%; max-width:440px; max-height:90vh; overflow-y:auto;
}
.modal h3{ margin:0 0 12px; font-size:16px; }
.modal-actions{ display:flex; gap:10px; margin-top:12px; }
.toast{
  position:fixed; bottom:24px; left:50%; transform:translateX(-50%);
  background:var(--ink); color:#EFEAE0; padding:10px 18px; border-radius:10px;
  font-size:13.5px; z-index:40; box-shadow:0 6px 18px rgba(0,0,0,0.15);
}
