/* =====================================================================
   Gestão Financeira — tema (claro / escuro) e layout
   Cores definidas como tokens; o modo escuro redefine os mesmos tokens.
   ===================================================================== */
:root{
  color-scheme: light;
  --bg:#f3f5f9; --card:#ffffff; --card2:#f7f8fb; --hover:#f1f3f8;
  --line:#e6e9f0; --line2:#eef0f5;
  --ink:#0f1729; --ink2:#475069; --muted:#7a8399;
  --accent:#3346d3; --accent-ink:#ffffff; --accent-soft:#eceffd;
  --brand:linear-gradient(135deg,#18204a 0%,#3346d3 100%);
  --ent:#12876f; --sai:#c8372e; --dia:#b36a08;           /* validados (daltonismo) no gráfico */
  --ent-soft:#e6f4ef; --sai-soft:#fbeceb; --dia-soft:#fbf1e2;
  --warn-soft:#fff7e3; --warn-ink:#8a6516; --warn-line:#f1e2b8;
  --s5-bg:#3f9a5c; --s5-fg:#ffffff; --s4-bg:#d3ecdd; --s4-fg:#14532d; --s3-bg:#eaf3de; --s3-fg:#3f6212;
  --s2-bg:#f9dcda; --s2-fg:#7f1d1d; --s1-bg:#d9362a; --s1-fg:#ffffff;
  --shadow:0 1px 2px rgba(15,23,41,.05), 0 6px 20px rgba(15,23,41,.05);
  --shadow-lg:0 18px 50px rgba(15,23,41,.18);
  --overlay:rgba(12,17,32,.5);
  --r:16px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme: dark;
    --bg:#0c111d; --card:#141a2a; --card2:#1a2134; --hover:#1e263b;
    --line:#252d43; --line2:#1f2638;
    --ink:#e9ecf5; --ink2:#b4bbd0; --muted:#8a93ab;
    --accent:#8395ff; --accent-ink:#0c111d; --accent-soft:#232b4f;
    --brand:linear-gradient(135deg,#2a3576 0%,#5465e6 100%);
    --ent:#26a887; --sai:#ea5a4f; --dia:#e09a3a;
    --ent-soft:#12302a; --sai-soft:#3a1d20; --dia-soft:#372814;
    --warn-soft:#2f2712; --warn-ink:#e8c66a; --warn-line:#4a3d1a;
    --s5-bg:#2f7d4f; --s5-fg:#ffffff; --s4-bg:#1b3a2b; --s4-fg:#9fe0bd; --s3-bg:#233220; --s3-fg:#c5e0a0;
    --s2-bg:#40202a; --s2-fg:#f4b4ae; --s1-bg:#b3261e; --s1-fg:#ffffff;
    --shadow:0 1px 2px rgba(0,0,0,.3); --shadow-lg:0 18px 50px rgba(0,0,0,.55);
    --overlay:rgba(0,0,0,.6);
  }
}
:root[data-theme="dark"]{
  color-scheme: dark;
  --bg:#0c111d; --card:#141a2a; --card2:#1a2134; --hover:#1e263b;
  --line:#252d43; --line2:#1f2638;
  --ink:#e9ecf5; --ink2:#b4bbd0; --muted:#8a93ab;
  --accent:#8395ff; --accent-ink:#0c111d; --accent-soft:#232b4f;
  --brand:linear-gradient(135deg,#2a3576 0%,#5465e6 100%);
  --ent:#26a887; --sai:#ea5a4f; --dia:#e09a3a;
  --ent-soft:#12302a; --sai-soft:#3a1d20; --dia-soft:#372814;
  --warn-soft:#2f2712; --warn-ink:#e8c66a; --warn-line:#4a3d1a;
  --s5-bg:#2f7d4f; --s5-fg:#ffffff; --s4-bg:#1b3a2b; --s4-fg:#9fe0bd; --s3-bg:#233220; --s3-fg:#c5e0a0;
  --s2-bg:#40202a; --s2-fg:#f4b4ae; --s1-bg:#b3261e; --s1-fg:#ffffff;
  --shadow:0 1px 2px rgba(0,0,0,.3); --shadow-lg:0 18px 50px rgba(0,0,0,.55);
  --overlay:rgba(0,0,0,.6);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0}
body{font-family:'Inter',-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink);
     -webkit-font-smoothing:antialiased;font-size:14px}
button{font-family:inherit;color:inherit}
a{color:var(--accent)}
.muted{color:var(--muted)} .hidden{display:none!important}
.ico{display:inline-block;vertical-align:middle;flex:0 0 auto}
.num{font-variant-numeric:tabular-nums}
.c-ent{color:var(--ent)} .c-sai{color:var(--sai)} .c-dia{color:var(--dia)} .c-sal{color:var(--ink)}

/* ---------- avatar / marca ---------- */
.av{border-radius:50%;background:var(--accent-soft);display:inline-flex;align-items:center;justify-content:center;
    font-weight:700;color:var(--accent);flex:0 0 auto;overflow:hidden}
.av img{width:100%;height:100%;object-fit:cover;display:block}
.brand{display:flex;align-items:center;gap:10px}
.brand .logo{width:36px;height:36px;border-radius:11px;background:var(--brand);display:flex;align-items:center;
     justify-content:center;color:#fff;flex:0 0 auto}
.brand h1,.brand b{font-size:16px;margin:0;letter-spacing:-.01em;font-weight:800}

/* =====================================================================
   Estrutura: menu lateral (PC) · barra de abas embaixo (celular)
   ===================================================================== */
.app{min-height:100vh}
.side{display:none}
.content{padding:14px 16px 150px;max-width:1180px;margin:0 auto;min-width:0}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:12;display:grid;grid-template-columns:repeat(4,1fr);
        background:var(--card);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
.tabbar button{border:none;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;
        font-size:11px;font-weight:600;color:var(--muted);cursor:pointer;border-radius:12px}
.tabbar button.on{color:var(--accent)}
.tabbar button.on .ico{transform:translateY(-1px)}

@media (min-width:900px){
  .app{display:grid;grid-template-columns:232px minmax(0,1fr)}
  .side{display:flex;flex-direction:column;gap:22px;position:sticky;top:0;height:100vh;padding:22px 16px;
        background:var(--card);border-right:1px solid var(--line)}
  .side .brand{padding:0 6px}
  .menu{display:flex;flex-direction:column;gap:4px}
  .menu button{display:flex;align-items:center;gap:12px;border:none;background:none;padding:11px 12px;border-radius:12px;
        font-size:14px;font-weight:600;color:var(--ink2);cursor:pointer;text-align:left}
  .menu button:hover{background:var(--hover)}
  .menu button.on{background:var(--accent-soft);color:var(--accent)}
  .side-foot{margin-top:auto;display:flex;flex-direction:column;gap:6px}
  .side-foot .menu button{font-size:13px;padding:9px 12px}
  .content{padding:26px 36px 90px;width:100%}
  .tabbar{display:none}
}

/* ---------- topo ---------- */
.top{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.top .who{min-width:0;flex:1}
.top .hi,.top .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .hi{font-size:12px;color:var(--muted);line-height:1.1}
.top .nm{font-size:17px;font-weight:800;letter-spacing:-.01em}
.top .tools{margin-left:auto;display:flex;gap:8px;align-items:center}
.avbtn{position:relative;border:none;background:none;padding:0;cursor:pointer;border-radius:50%;flex:0 0 auto}
.avbtn .av{width:42px;height:42px;font-size:15px}
.avcam{position:absolute;right:-2px;bottom:-2px;width:19px;height:19px;border-radius:50%;background:var(--accent);color:var(--accent-ink);
       display:flex;align-items:center;justify-content:center;border:2px solid var(--bg)}
.avbtn:hover .avcam{transform:scale(1.08)}
.ibtn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:12px;border:1px solid var(--line);
      background:var(--card);color:var(--ink2);cursor:pointer}
.ibtn:hover{background:var(--hover)}
.scope{display:flex;background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:3px}
.scope button{white-space:nowrap;border:none;background:none;padding:6px 11px;border-radius:9px;font-weight:600;font-size:12.5px;color:var(--muted);cursor:pointer}
.scope button.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}
@media (min-width:900px){ .top .only-m{display:none} }

/* ---------- navegação de período (título da página) ---------- */
.nav{display:flex;align-items:center;gap:10px;margin:0 0 16px}
.nav .center{min-width:0}
.nav .lbl{font-size:24px;font-weight:800;letter-spacing:-.02em;line-height:1.1}
.nav .sub{font-size:12.5px;color:var(--muted);margin-top:2px}
.nav .arrows{display:flex;gap:6px;margin-left:auto}
.nav .arrow{width:38px;height:38px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink2);
       cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.nav .arrow:hover{background:var(--hover)}
.nav .hoje{border:1px solid var(--line);background:var(--card);color:var(--ink2);border-radius:12px;padding:0 12px;height:38px;
       font-weight:600;font-size:13px;cursor:pointer}

/* ---------- cards genéricos ---------- */
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
h2{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:22px 2px 10px;font-weight:700}
.sec-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:22px 2px 10px}
.sec-h h2{margin:0}

/* ---------- destaque do mês (saldo + gráfico) ---------- */
.hero{display:grid;gap:6px;padding:18px 18px 10px;margin-bottom:12px}
.hero .hl{font-size:12.5px;color:var(--muted);font-weight:600}
.hero .hv{font-size:38px;font-weight:800;letter-spacing:-.03em;line-height:1.05;margin-top:4px}
.hero .hd{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:13px;font-weight:600;color:var(--ink2)}
.hero .hd b{padding:2px 8px;border-radius:999px;font-size:12.5px}
.hero .hd b.pos{background:var(--ent-soft);color:var(--ent)} .hero .hd b.neg{background:var(--sai-soft);color:var(--sai)}
.hero .chart{min-height:170px;margin:4px -6px 0}
@media (min-width:900px){
  .hero{grid-template-columns:260px 1fr;align-items:stretch;gap:18px;padding:20px 20px 12px}
  .hero .hv{font-size:44px}
  .hero .chart{margin:0}
}

/* ---------- indicadores ---------- */
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:13px 14px;box-shadow:var(--shadow);position:relative}
.stat .lab{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--muted)}
.stat .lab i.dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.stat .val{font-size:20px;font-weight:800;margin-top:6px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat[data-dt]:hover{border-color:var(--accent);cursor:pointer}
@media (min-width:700px){ .stats{grid-template-columns:repeat(4,1fr)} }

/* ---------- alternador calendário / tabela ---------- */
.seg{display:inline-flex;background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:3px}
.seg button{border:none;background:none;padding:6px 12px;border-radius:9px;font-size:12.5px;font-weight:600;color:var(--muted);
       cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.seg button.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}

/* ---------- calendário do mês ---------- */
.cal{padding:10px}
.cal-h,.cal-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.cal-h div{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;text-align:center;padding:4px 0 6px}
.cd{border-radius:12px;background:var(--card2);border:1px solid transparent;min-height:92px;padding:7px 8px;display:flex;flex-direction:column;
    gap:2px;cursor:pointer;position:relative;min-width:0;transition:border-color .12s}
.cd:hover{border-color:var(--accent)}
.cd.vazio{background:none;cursor:default}
.cd.vazio:hover{border-color:transparent}
.cd .n{font-size:12.5px;font-weight:700;color:var(--ink2);display:flex;align-items:center;justify-content:space-between}
.cd.hoje .n span{background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:1px 7px}
.cd .v{font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
       border-radius:6px;padding:0 3px;margin:0 -3px}
.cd .v:hover{background:var(--hover)}
.cd .s{margin-top:auto;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;border-radius:7px;padding:2px 6px;
       align-self:flex-start;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd .s .ss{display:none}
@media (max-width:640px){
  .cal{padding:8px}
  .cal-h,.cal-g{gap:4px}
  .cd{min-height:58px;padding:5px;align-items:center}
  .cd .v{display:none}
  .cd .n{justify-content:center}
  .cd .s{align-self:stretch;text-align:center;font-size:10px;padding:2px 1px}
  .cd .s .sl{display:none} .cd .s .ss{display:inline}
  .cd .pd{top:5px;right:5px}
}

/* faixas de saldo (mesmas da formatação condicional da planilha) */
.s5{background:var(--s5-bg);color:var(--s5-fg)} .s4{background:var(--s4-bg);color:var(--s4-fg)} .s3{background:var(--s3-bg);color:var(--s3-fg)}
.s2{background:var(--s2-bg);color:var(--s2-fg)} .s1{background:var(--s1-bg);color:var(--s1-fg)}

/* ---------- tabela do mês ---------- */
.mtable{overflow:hidden}
table{width:100%;border-collapse:collapse}
thead th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;
         padding:10px 8px;background:var(--card2);border-bottom:1px solid var(--line);text-align:right}
thead th:first-child{text-align:center}
tbody td{font-size:13px;padding:8px;border-bottom:1px solid var(--line2);text-align:right;font-variant-numeric:tabular-nums}
tbody tr:last-child td{border-bottom:none}
tbody tr{cursor:pointer}
tbody tr:hover{background:var(--hover)}
td.dia{text-align:center;font-weight:700;color:var(--ink2);width:34px}
td.saldo{font-weight:700}
td.saldo span{display:inline-block;border-radius:7px;padding:2px 8px;min-width:80px}
td.det:hover{text-decoration:underline dotted;text-underline-offset:3px}
.zero{color:var(--line)}
.mfoot{display:flex;justify-content:space-between;gap:8px;padding:12px 14px;background:var(--card2);border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.mfoot b{display:block;font-size:14px;margin-top:2px}

/* ---------- resumo (categorias / pessoas) ---------- */
.resumo{display:grid;gap:12px}
.rcard{padding:8px 16px}
.rrow{display:grid;grid-template-columns:1fr auto;gap:5px 10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line2);font-size:13.5px}
.rrow:last-child{border-bottom:none}
.rrow .v{font-weight:700;font-variant-numeric:tabular-nums}
.bar{grid-column:1 / -1;height:6px;background:var(--line2);border-radius:99px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--sai);border-radius:99px}
.prow{display:flex;align-items:center;gap:10px}
.prow .av{width:28px;height:28px;font-size:11px}
@media (min-width:900px){ .resumo{grid-template-columns:1.3fr 1fr} }

/* ---------- gráficos ---------- */
.chart{position:relative;width:100%}
.chart svg{display:block;width:100%;overflow:visible}
.chart .g-grid{stroke:var(--line2);stroke-width:1}
.chart .g-zero{stroke:var(--muted);stroke-width:1;opacity:.5}
.chart .g-axis{fill:var(--muted);font-size:11px;font-family:inherit}
.chart .g-line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .g-area{fill:var(--accent);opacity:.10}
.chart .g-end{fill:var(--accent);stroke:var(--card);stroke-width:2}
.chart .g-endlbl{fill:var(--ink);font-size:12px;font-weight:700;font-family:inherit}
.chart .g-hoje{stroke:var(--accent);stroke-width:1;opacity:.35}
.chart .g-hojelbl{fill:var(--muted);font-size:10.5px;font-family:inherit}
.chart .g-cross{stroke:var(--ink2);stroke-width:1;opacity:.5}
.chart .g-dot{fill:var(--accent);stroke:var(--card);stroke-width:2}
.chart .b-ent{fill:var(--ent)} .chart .b-sai{fill:var(--sai)}
.chart .b-col:hover{opacity:.85}
.chart .b-hit{fill:transparent;cursor:pointer}
.chart .b-hit:hover{fill:var(--hover);opacity:.6}
.ch-tip{position:absolute;pointer-events:none;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);
        padding:9px 11px;font-size:12px;min-width:150px;z-index:3;transform:translate(-50%,-100%);white-space:nowrap}
.ch-tip .t{color:var(--muted);font-size:11.5px;margin-bottom:4px}
.ch-tip .r{display:flex;align-items:center;justify-content:space-between;gap:14px;color:var(--ink2);margin-top:2px}
.ch-tip .r b{color:var(--ink);font-variant-numeric:tabular-nums}
.ch-tip .k{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--ink2);margin:2px 2px 8px}
.legend span{display:inline-flex;align-items:center;gap:7px}
.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.ychart{padding:16px 16px 8px}

/* ---------- grade anual ---------- */
.yearwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px}
.yeargrid{display:flex;gap:12px;min-width:min-content}
.ymonth{flex:0 0 auto;width:300px;overflow:hidden}
.ymhead{background:var(--card2);color:var(--ink);font-weight:700;text-align:center;padding:9px;font-size:13px;border-bottom:1px solid var(--line);cursor:pointer}
.ymhead:hover{color:var(--accent)}
.ymonth thead th{font-size:9.5px;padding:6px 5px}
.ymonth tbody td{font-size:11px;padding:4px 5px}
.ymonth td.dia{width:22px}
.ymonth td.saldo span{min-width:0;padding:1px 5px;border-radius:5px}
.ymfoot{padding:8px;background:var(--card2);border-top:1px solid var(--line);font-size:11px;text-align:right;color:var(--muted)}

/* ---------- itens (fatura, contas) ---------- */
.item{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
      border-radius:14px;padding:11px 12px;margin-bottom:8px}
.item .av{width:38px;height:38px;font-size:13px}
.item .info{flex:1;min-width:0}
.item .desc{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .sub{font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .right{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.item .amt{font-weight:700;white-space:nowrap;font-size:14.5px;font-variant-numeric:tabular-nums}
.amt.Entrada{color:var(--ent)} .amt.Saída{color:var(--sai)} .amt.Diário{color:var(--dia)} .amt.Cartão{color:var(--ink)}
.item .acts{display:flex;gap:12px;margin-top:2px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.lnk{border:none;background:none;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--accent);padding:0;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.lnk.del{color:var(--sai)}
.chk{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:3px 9px;font-size:11.5px;
     font-weight:600;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.chk.on{background:var(--ent-soft);border-color:transparent;color:var(--ent)}
.tag{font-size:10.5px;font-weight:700;background:var(--warn-soft);color:var(--warn-ink);padding:1px 7px;border-radius:999px;vertical-align:middle}
.tag.ok{background:var(--ent-soft);color:var(--ent)} .tag.bad{background:var(--sai-soft);color:var(--sai)} .tag.info{background:var(--accent-soft);color:var(--accent)}
.empty{text-align:center;color:var(--muted);padding:34px 12px;background:var(--card);border:1px dashed var(--line);border-radius:14px}

/* contas */
.acct{display:flex;align-items:center;gap:12px;padding:14px;margin-bottom:10px}
.acct .av{width:46px;height:46px;font-size:16px}
.acct .nm{font-weight:700;font-size:15.5px}
.acct .sub{font-size:12px;color:var(--muted);margin-top:3px}
.acct .bal{margin-left:auto;font-weight:800;font-size:18px;text-align:right;font-variant-numeric:tabular-nums}
.prev{font-size:11.5px;font-weight:600;color:var(--muted)}
.btn2{width:100%;padding:12px;border:1px dashed var(--line);background:var(--card);border-radius:13px;
      font-weight:600;color:var(--accent);cursor:pointer;margin-bottom:12px;font-size:14px;display:flex;align-items:center;justify-content:center;gap:8px}
.btn2:hover{background:var(--hover)}
.tot-card{padding:16px}
.tot-card .lab{font-size:12.5px;color:var(--muted);font-weight:600}
.tot-card .val{font-size:30px;font-weight:800;letter-spacing:-.02em;margin-top:4px}
@media (min-width:900px){ #contasList{display:grid;grid-template-columns:repeat(2,1fr);gap:12px} .acct{margin-bottom:0} }

/* ---------- cartões ---------- */
.cards{display:flex;gap:12px;overflow-x:auto;padding:2px 2px 12px;margin-bottom:4px;-webkit-overflow-scrolling:touch}
.ccard{flex:0 0 auto;width:250px;border-radius:18px;padding:14px 15px;color:#fff;cursor:pointer;position:relative;
       box-shadow:var(--shadow);border:2px solid transparent;text-align:left;overflow:hidden}
.ccard::after{content:'';position:absolute;right:-40px;top:-60px;width:170px;height:170px;border-radius:50%;background:rgba(255,255,255,.08);pointer-events:none}
.ccard.on{outline:2px solid var(--accent);outline-offset:2px}
.ccard .cn{font-weight:700;font-size:15px}
.ccard .cd{font-size:11.5px;opacity:.85;margin-top:2px}
.ccard .cv{font-size:20px;font-weight:800;margin-top:16px;letter-spacing:-.01em}
.ccard .cl{font-size:11px;opacity:.85}
.ccard .ctop{display:flex;align-items:center;gap:9px}
.ccard .ctop .blogo{box-shadow:0 0 0 2px rgba(255,255,255,.5)}
.ccard .ctop > div{min-width:0}
.ccard .cn,.ccard .cd{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ccard .cfoot{display:flex;align-items:flex-end;justify-content:space-between;gap:6px}
.ccard .bflag{margin-bottom:2px}
.ccard.add{background:var(--card);color:var(--accent);border:2px dashed var(--line);display:flex;align-items:center;justify-content:center;
       font-weight:700;width:140px;box-shadow:none;gap:6px}
.ccard.add::after{display:none}
.fhead{padding:16px;margin-bottom:14px}
.fhead .top{display:flex;align-items:flex-start;gap:10px;margin:0}
.fhead .tot{font-size:30px;font-weight:800;letter-spacing:-.02em;margin-top:4px}
.fhead .meta{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 14px;margin-top:14px;font-size:12.5px;color:var(--muted)}
.fhead .meta b{display:block;color:var(--ink);font-size:13.5px;margin-top:1px}
@media (min-width:700px){ .fhead .meta{grid-template-columns:repeat(3,1fr)} }
.limbar{height:8px;background:var(--line2);border-radius:99px;overflow:hidden;margin-top:14px}
.limbar i{display:block;height:100%;background:var(--accent);border-radius:99px}
.fhead .acts{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.fhead .acts .btn{flex:1;padding:11px;font-size:14px}

/* logos de banco e bandeira */
.blogo{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;flex:0 0 auto;overflow:hidden;
       font-weight:800;letter-spacing:-.04em;line-height:1;white-space:nowrap;font-family:'Inter',Arial,sans-serif}
.blogo img{width:100%;height:100%;object-fit:contain;display:block}
.lmask{display:block;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
       -webkit-mask-position:center;mask-position:center}
.bflag{display:inline-flex;align-items:center;flex:0 0 auto}
.bflag svg{display:block}

/* ---------- pop-up de lançamentos ---------- */
[data-dt]{cursor:pointer}
.pop{position:fixed;z-index:15;width:min(370px,calc(100vw - 16px));background:var(--card);border:1px solid var(--line);border-radius:16px;
     box-shadow:var(--shadow-lg);padding:14px 14px 8px;animation:popin .12s ease}
.pop.fixo{width:min(440px,calc(100vw - 16px))}
@keyframes popin{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.pop-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:0 2px 10px;border-bottom:1px solid var(--line);font-size:14px;position:relative}
.pop-h span{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.pop-h > b{font-size:15px;white-space:nowrap;font-variant-numeric:tabular-nums}
.pop-x{border:none;background:var(--card2);color:var(--ink2);width:28px;height:28px;border-radius:8px;cursor:pointer;
       display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.pop-x .ico{transform:rotate(45deg)}
.pop-tot{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:10px 2px;border-bottom:1px solid var(--line);font-size:11.5px;color:var(--muted)}
.pop-tot b{display:block;font-size:13.5px;margin-top:2px;font-variant-numeric:tabular-nums}
.pop-l{max-height:300px;overflow-y:auto;margin:0 -6px}
.pop.fixo .pop-l{max-height:min(420px,55vh)}
.pop-i{display:flex;align-items:flex-start;gap:10px;padding:9px 6px;border-bottom:1px solid var(--line2);border-radius:10px}
.pop-i:last-child{border-bottom:none}
.pop-i.pend{background:var(--warn-soft)}
.pop-i .av,.pop-i .blogo{width:30px;height:30px;font-size:11px;margin-top:1px}
.pop-t{flex:1;min-width:0}
.pop-d{font-weight:600;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pop-s{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.pop-val{font-weight:700;font-size:13.5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.pop-v{font-size:12.5px;color:var(--muted);padding:10px 2px 4px;text-align:center}
.pop-a{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin-top:7px}
.pop-a .lnk{font-size:12px}
.pop-a .chk{font-size:11px;padding:2px 8px}
.pop-f{display:flex;gap:8px;padding:10px 0 4px;border-top:1px solid var(--line);margin-top:4px}
.pop-f .btn{padding:10px;font-size:14px;display:inline-flex;align-items:center;justify-content:center;gap:5px}

/* ---------- botão flutuante ---------- */
.fab{position:fixed;right:16px;bottom:calc(76px + env(safe-area-inset-bottom));z-index:13;height:56px;min-width:56px;padding:0 18px;
     display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:15px;font-weight:700;color:#fff;border:none;
     border-radius:18px;cursor:pointer;background:var(--brand);box-shadow:0 10px 26px rgba(40,58,190,.35)}
.fab:hover{filter:brightness(1.08)}
@media (max-width:899px){ .fab .fab-t{display:none} .fab{width:56px;padding:0;border-radius:50%} }
@media (min-width:900px){ .fab{right:32px;bottom:28px} }

/* ---------- modais ---------- */
.overlay{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:flex-end;justify-content:center;z-index:20;backdrop-filter:blur(2px)}
.sheet{background:var(--card);width:100%;max-width:540px;border-radius:22px 22px 0 0;padding:20px 18px 28px;animation:up .2s ease;
       max-height:92vh;overflow-y:auto}
@keyframes up{from{transform:translateY(28px)}to{transform:translateY(0)}}
.grip{width:40px;height:4px;background:var(--line);border-radius:99px;margin:0 auto 14px}
.sheet h3{margin:0 0 16px;font-size:18px}
.sheet h4{margin:24px 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}
@media (min-width:760px){
  .overlay{align-items:center}
  .sheet{max-width:480px;border-radius:20px;animation:none;box-shadow:var(--shadow-lg)}
  .grip{display:none}
}
.seg3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:6px}
.seg3 button{padding:12px;border:2px solid var(--line);background:var(--card);border-radius:12px;font-weight:700;cursor:pointer;color:var(--muted)}
.seg3 button.sel[data-t="Entrada"]{border-color:var(--ent);color:var(--ent);background:var(--ent-soft)}
.seg3 button.sel[data-t="Saída"]{border-color:var(--sai);color:var(--sai);background:var(--sai-soft)}
.seg3 button.sel[data-t="Diário"]{border-color:var(--dia);color:var(--dia);background:var(--dia-soft)}
.seg3.two{grid-template-columns:1fr 1fr}
.seg3 label{display:flex;align-items:center;gap:8px;padding:11px 12px;border:2px solid var(--line);border-radius:12px;font-weight:600;font-size:14px;cursor:pointer}
.seg3 label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
label.fl{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin:14px 2px 6px}
.in{width:100%;padding:12px 13px;font-size:16px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font-family:inherit}
.in:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}
textarea.in{min-height:150px;resize:vertical;line-height:1.45}
input[type=color].in{padding:4px;height:48px}
.row2{display:flex;gap:10px;margin-top:20px}
.row2.col{flex-direction:column}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.btn{flex:1;padding:13px;border:none;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit}
.btn .ico{margin-right:6px;vertical-align:-3px}
.btn.primary{background:var(--brand);color:#fff}
.btn.ghost{background:var(--card2);color:var(--ink);border:1px solid var(--line)}
.btn.danger{background:var(--sai-soft);color:var(--sai)}
.btn.ok{background:var(--ent-soft);color:var(--ent)}
.btn.full{width:100%;margin-top:20px}
.hint{font-size:12px;color:var(--ent);font-weight:600;margin:6px 2px 0;min-height:1px}
.small{font-size:12px;color:var(--muted);margin:6px 2px 0}
.switch{display:flex;align-items:center;gap:10px;margin-top:16px;font-size:14px;font-weight:600;color:var(--ink);cursor:pointer}
.switch input{width:44px;height:26px;appearance:none;background:var(--line);border-radius:999px;position:relative;cursor:pointer;transition:.15s;flex:0 0 auto}
.switch input:checked{background:var(--ent)}
.switch input::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;transition:.15s}
.switch input:checked::after{left:21px}
.code{font-family:ui-monospace,Consolas,monospace;font-size:22px;font-weight:800;letter-spacing:.14em;
      background:var(--card2);border:1px dashed var(--line);border-radius:12px;padding:12px;text-align:center;color:var(--ink)}
.membros{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.membros span.m{display:flex;align-items:center;gap:6px;background:var(--card2);border:1px solid var(--line);border-radius:999px;padding:4px 10px 4px 4px;font-size:13px;font-weight:600}
.fotorow{display:flex;align-items:center;gap:12px;margin-top:10px}
.fotorow .av{width:56px;height:56px;font-size:18px}
.pill{background:var(--card);border:1px solid var(--line);color:var(--accent);text-decoration:none;font-weight:600;font-size:13px;
      padding:8px 12px;border-radius:999px;cursor:pointer}

/* forma de pagamento (lançamento) */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.popt{display:flex;align-items:center;gap:10px;padding:9px 10px;border:2px solid var(--line);background:var(--card);border-radius:12px;
      cursor:pointer;text-align:left;font-family:inherit;color:var(--ink);min-width:0}
.popt.sel{border-color:var(--accent);background:var(--accent-soft)}
.popt .pt{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.popt .pt b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.popt .pt small{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pconta{background:var(--card2);color:var(--accent)}

/* cadastro de cartão */
.bgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px;max-height:236px;overflow-y:auto;padding:2px}
.bopt,.fopt{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 4px;border:2px solid var(--line);
       background:var(--card);border-radius:12px;cursor:pointer;font-size:11px;font-weight:600;color:var(--ink);font-family:inherit}
.bopt span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.bopt.sel,.fopt.sel{border-color:var(--accent);background:var(--accent-soft)}
.fgrid{display:flex;flex-wrap:wrap;gap:8px}
.fopt{flex-direction:row;padding:8px 10px;gap:7px}
.fopt .fbox{background:#243a73;border-radius:6px;padding:4px 6px;display:inline-flex}
.cprev{display:flex;justify-content:center;margin:-4px 0 6px}
.cprev .ccard{cursor:default;width:260px}

/* ---------- login / cadastro ---------- */
.auth{max-width:420px;margin:0 auto;padding:48px 16px}
.auth .brand{justify-content:center;margin-bottom:24px}
.auth .brand h1{font-size:20px}
.auth .seg2{display:flex;background:var(--card2);border:1px solid var(--line);border-radius:14px;padding:4px;margin-bottom:14px}
.auth .seg2 a{flex:1;text-align:center;text-decoration:none;padding:10px;border-radius:11px;font-weight:600;color:var(--muted);font-size:14px}
.auth .seg2 a.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:6px 18px 20px;box-shadow:var(--shadow)}
.erro{margin-top:14px;padding:11px 12px;border-radius:12px;background:var(--sai-soft);color:var(--sai);font-size:14px;font-weight:600}
#bNova,#bConv{margin-top:10px}

/* ---------- carregando / aviso ---------- */
#load{position:fixed;top:0;left:0;right:0;height:3px;z-index:60;overflow:hidden;background:transparent}
#load .spin{height:100%;width:40%;background:var(--accent);border-radius:99px;animation:carrega 1s ease-in-out infinite}
@keyframes carrega{from{transform:translateX(-100%)}to{transform:translateX(260%)}}
.toast{position:fixed;bottom:calc(150px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:11px 18px;
       border-radius:12px;font-size:14px;font-weight:600;z-index:70;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap}
.toast.show{opacity:1}
@media (min-width:900px){ .toast{bottom:100px} }

@media (max-width:520px){
  .item{flex-wrap:wrap;row-gap:6px}
  .item .right{flex-direction:row;align-items:center;justify-content:space-between;width:100%;min-width:0;gap:8px}
  .item .acts{margin-top:0;gap:9px;flex-wrap:nowrap}
  .top .nm{font-size:15px}
  .nav .lbl{font-size:21px}
  .scope button{padding:6px 8px}
  .hero .hv{font-size:32px}
}
