:root{
  --bg:#EDF0F5; --surface:#FFFFFF; --ink:#16213B; --muted:#5B6781; --line:#D6DCE6;
  --paid:#2B7A63; --pend:#A86E12; --late:#BF3A2B; --accent:#2F4B8F; --share:#7348A0; --soft:#E3E8F2;
  box-sizing:border-box; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]){
  --bg:#0F141D; --surface:#171F2C; --ink:#E6EBF3; --muted:#97A3BA; --line:#283244;
  --paid:#52B795; --pend:#E0A84A; --late:#EC6B5C; --accent:#93AAE9; --share:#BD9DE0; --soft:#1F2938; color-scheme:dark;
}}
:root[data-theme="dark"]{
  --bg:#0F141D; --surface:#171F2C; --ink:#E6EBF3; --muted:#97A3BA; --line:#283244;
  --paid:#52B795; --pend:#E0A84A; --late:#EC6B5C; --accent:#93AAE9; --share:#BD9DE0; --soft:#1F2938; color-scheme:dark;
}
*,*::before,*::after{box-sizing:inherit}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:16px;line-height:1.45;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wrap{max-width:640px;margin:0 auto;padding:12px 16px 110px}

/* month nav */
.nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0 14px}
.nav h1{margin:0;font-size:1.35rem;font-weight:800;letter-spacing:-.01em;text-transform:capitalize}
.nav .arrows{display:flex;gap:6px}
.icon{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;font-size:1.2rem}
.sync{font-size:.78rem;color:var(--muted);margin-top:2px}

/* hero */
.hero{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px 18px 16px}
.hero .big{font-size:2.3rem;font-weight:800;letter-spacing:-.02em;line-height:1.05}
.hero .cap{color:var(--muted);font-size:.9rem}
.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.stats div{min-width:0}
.stats b{display:block;font-size:1.05rem}
.stats span{color:var(--muted);font-size:.82rem}
.stats .share b{color:var(--share)}
.stats .late b{color:var(--late)}

/* timeline — linha do mês */
.line{position:relative;height:54px;margin:18px 6px 6px}
.line .rail{position:absolute;left:0;right:0;top:22px;height:4px;border-radius:4px;background:var(--soft)}
.line .done{position:absolute;left:0;top:22px;height:4px;border-radius:4px;background:var(--ink);opacity:.25}
.line .dot{position:absolute;top:16px;width:16px;height:16px;margin-left:-8px;border-radius:50%;border:3px solid var(--bg)}
.line .dot.pago{background:var(--paid)} .line .dot.pend,.line .dot.antes{background:var(--pend)} .line .dot.late{background:var(--late)}
.line .tick{position:absolute;top:38px;font-size:.72rem;color:var(--muted);transform:translateX(-50%)}
.line .today{position:absolute;top:6px;width:2px;height:36px;background:var(--accent);margin-left:-1px}
.line .today::after{content:"hoje";position:absolute;top:-4px;left:6px;font-size:.7rem;color:var(--accent);font-weight:700}

/* rows */
h2{font-size:1rem;font-weight:700;margin:22px 2px 8px;color:var(--muted)}
.list{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.row{display:flex;align-items:center;gap:12px;padding:12px 12px 12px 14px;border-top:1px solid var(--line)}
.row:first-child{border-top:0}
.row .tap{flex:1;min-width:0;display:flex;align-items:center;gap:12px;background:none;border:0;padding:0;text-align:left}
.day{width:34px;flex:none;text-align:center;font-weight:800;font-size:1.05rem;line-height:1}
.day small{display:block;font-size:.66rem;font-weight:600;color:var(--muted);margin-top:3px}
.main{flex:1;min-width:0}
.main b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.main small{display:block;color:var(--muted);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.val{text-align:right;font-weight:700;white-space:nowrap}
.val small{display:block;font-weight:500;font-size:.74rem;color:var(--muted)}
.val small.sh{color:var(--share)}
.chk{flex:none;width:34px;height:34px;border-radius:50%;border:2px solid var(--line);background:transparent;display:grid;place-items:center}
.chk svg{width:16px;height:16px;opacity:0}
.s-pago .chk{background:var(--paid);border-color:var(--paid);color:#fff}
.s-pago .chk svg{opacity:1}
.s-late .chk{border-color:var(--late)}
.s-late .day{color:var(--late)}
.s-pago .main b,.s-pago .val{opacity:.55}
.tag{display:inline-block;font-size:.7rem;font-weight:700;padding:1px 7px;border-radius:99px;background:var(--soft);color:var(--muted);vertical-align:1px;margin-left:4px}
.tag.sh{color:var(--share)}
.tag.late{color:var(--late)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 16px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-weight:600}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--surface)}
.btn.danger{color:var(--late)}
.btn.block{width:100%}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.empty{background:var(--surface);border:1px dashed var(--line);border-radius:16px;padding:22px 18px;color:var(--muted)}
.empty p{margin:0 0 12px}

/* cards grid */
.cards{display:grid;gap:10px}
.ccard{display:block;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px;position:relative;overflow:hidden}
.ccard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--accent)}
.ccard.shared::before{background:var(--share)}
.ccard .top{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.ccard .name{font-weight:700;font-size:1.05rem}
.ccard .amt{font-weight:800;font-size:1.2rem}
.ccard .meta{color:var(--muted);font-size:.84rem;margin-top:2px}
.mini{display:flex;gap:6px;margin-top:10px;overflow-x:auto}
.mini div{flex:1 0 64px;background:var(--soft);border-radius:10px;padding:6px 8px;font-size:.74rem;color:var(--muted)}
.mini div b{display:block;color:var(--ink);font-size:.82rem}

.back{background:none;border:0;padding:6px 0;color:var(--accent);font-weight:600}

/* progress */
.bar{height:6px;border-radius:6px;background:var(--soft);margin-top:6px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--accent);border-radius:6px}

/* forecast */
.fc{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 12px 10px}
.fc .col{display:flex;align-items:center;gap:10px;padding:6px 2px}
.fc .m{width:52px;flex:none;font-size:.82rem;color:var(--muted);font-weight:600}
.fc .track{flex:1;display:flex;height:18px;border-radius:5px;overflow:hidden;background:var(--soft)}
.fc .track i{display:block;height:100%}
.fc .track .a{background:var(--accent)} .fc .track .b{background:var(--share)} .fc .track .c{background:var(--pend)}
.fc .t{width:92px;flex:none;text-align:right;font-weight:700;font-size:.88rem}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.78rem;color:var(--muted);margin:10px 4px 0}
.legend span::before{content:"";display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px;background:var(--c)}

/* tab bar */
.tabs{position:fixed;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px);z-index:5}
.tabs .in{max-width:640px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr)}
.tabs button{background:none;border:0;padding:10px 4px 12px;font-size:.8rem;font-weight:600;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px}
.tabs button svg{width:22px;height:22px}
.tabs button[aria-current="page"]{color:var(--accent)}

/* sheet */
.veil{position:fixed;inset:0;background:rgba(10,15,25,.45);z-index:10;display:none}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:11;background:var(--surface);border-radius:20px 20px 0 0;max-height:88%;overflow:auto;padding:18px 18px calc(22px + env(safe-area-inset-bottom,0px));display:none;max-width:640px;margin:0 auto}
.open .veil,.open .sheet{display:block}
.sheet h3{margin:0 0 4px;font-size:1.2rem}
.sheet .sub{color:var(--muted);font-size:.9rem;margin:0 0 14px}
.f{display:block;margin:12px 0}
.f > span{display:block;font-size:.85rem;font-weight:600;color:var(--muted);margin-bottom:5px}
.f input[type=text],.f input[type=month],.f input[type=number],.f select{width:100%;min-height:46px;border:1px solid var(--line);border-radius:12px;background:var(--bg);padding:0 12px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.two .f{margin:6px 0}
.sw{display:flex;align-items:center;gap:10px;margin:14px 0;font-weight:600}
.sw input{width:22px;height:22px;accent-color:var(--accent)}
.hint{font-size:.8rem;color:var(--muted);margin:-4px 0 8px}
form[data-tipo="mensal"] .only-parc,form[data-tipo="mensal"] .only-anual{display:none}
form[data-tipo="parcelado"] .only-anual,form[data-tipo="parcelado"] .only-mensal{display:none}
form[data-tipo="anual"] .only-mensal{display:none}
form:not([data-shared="1"]) .only-shared{display:none}
.plist{margin:10px 0;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.plist .row{padding:10px 12px}

.toast{position:fixed;left:50%;bottom:86px;transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:10px 16px;border-radius:12px;font-size:.9rem;z-index:20;display:none;max-width:90%}
@media (prefers-reduced-motion:no-preference){ .open .sheet{animation:up .22s ease-out} @keyframes up{from{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}} }

/* variações de valor e estimativa */
form:not([data-var="1"]) .only-var{display:none}
.est{color:var(--pend)}

/* login e cadastro */
body.auth{display:grid;place-items:center;min-height:100%;padding:24px 16px}
.auth-box{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:26px 22px}
.auth-box h1{margin:0 0 4px;font-size:1.5rem;font-weight:800}
.auth-box .sub{color:var(--muted);margin:0 0 12px}
.auth-box input{width:100%;min-height:46px;border:1px solid var(--line);border-radius:12px;background:var(--bg);padding:0 12px}
.auth-box .btn{margin-top:8px}
.erro{background:color-mix(in srgb,var(--late) 12%,transparent);color:var(--late);border-radius:10px;padding:10px 12px;font-weight:600;font-size:.92rem}
.alt{text-align:center;margin:16px 0 0}
.alt a{color:var(--accent);font-weight:600}
.f input[type=password]{width:100%;min-height:46px;border:1px solid var(--line);border-radius:12px;background:var(--bg);padding:0 12px}
.busy .btn.pri,.busy .chk{opacity:.6;pointer-events:none}
