/* Mesa Financeira · style.css
   Tema por módulo: html[data-mod="pf"] (verde-água) e html[data-mod="pj"] (índigo) */

:root{
  --ff:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --bg:#EEF9F6; --sf:#FFFFFF; --ink:#16233A; --mu:#5E6F86; --ln:#DDEBE8;
  --ac:#0D9488; --g1:#10B981; --g2:#0891B2; --on:#FFFFFF;
  --in:#059669; --in-s:#D9F7EA;
  --out:#E11D48; --out-s:#FFE3E8;
  --wn:#C2610C; --wn-s:#FFEFD5;
  --inf-s:#E6EEF8;
  --c1:#6366F1; --c2:#F59E0B; --c3:#EC4899; --c4:#10B981; --c5:#D3DCE6;
  --r:16px; --sh:0 1px 2px rgba(22,35,58,.05),0 12px 28px -16px rgba(22,35,58,.22);
}
html[data-mod=pj]{
  --bg:#F1F0FF; --ln:#E3E1F8; --ink:#1B1840; --mu:#625F8C;
  --ac:#4F46E5; --g1:#6366F1; --g2:#8B5CF6; --inf-s:#EAE8FB;
}
@media (prefers-color-scheme:dark){
  :root{--bg:#0A1A1E;--sf:#122A2F;--ink:#E6F4F1;--mu:#93B0AE;--ln:#1E3C42;--ac:#2DD4BF;--on:#04211D;--in:#34D399;--in-s:#0F3A2C;--out:#FB7185;--out-s:#431422;--wn:#FBBF24;--wn-s:#3D2A0A;--inf-s:#173A40;--c5:#2B4A50;--sh:0 12px 28px -16px rgba(0,0,0,.6)}
  html[data-mod=pj]{--bg:#0E0F26;--sf:#171A3D;--ink:#E9E8FF;--mu:#A4A3D6;--ln:#272B5C;--ac:#A5B4FC;--on:#12123A;--inf-s:#222659;--c5:#32376F}
}

*{box-sizing:border-box}
body{margin:0;min-height:100vh;color:var(--ink);font:400 15px/1.55 var(--ff);padding:24px 16px 56px;
  background:radial-gradient(900px 380px at 50% -120px,color-mix(in srgb,var(--g1) 22%,transparent),transparent),var(--bg)}
.w{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:16px}
h1{display:flex;align-items:center;gap:10px;margin:0;font:800 22px/1.2 var(--ff);letter-spacing:-.02em}
h1::before{content:"";width:30px;height:30px;border-radius:10px;background:linear-gradient(135deg,var(--g1),var(--g2));box-shadow:0 6px 14px -6px var(--g2)}
h2{margin:0 0 14px;font:700 16px/1.3 var(--ff);letter-spacing:-.01em}
p{margin:0}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer;min-height:44px;padding:10px 16px;border:1px solid var(--ln);border-radius:12px;background:var(--sf);font-weight:600;transition:background .15s,transform .15s}
button:hover{background:var(--inf-s)}
button:active{transform:scale(.98)}
button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid color-mix(in srgb,var(--ac) 45%,transparent);outline-offset:2px}
.pri{border:0;color:var(--on);background:linear-gradient(135deg,var(--g1),var(--g2));box-shadow:0 8px 18px -8px var(--g2)}
.pri:hover{background:linear-gradient(135deg,var(--g1),var(--g2));filter:brightness(1.06)}

/* seletor de módulo e abas */
.sw{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:14px;padding:5px;border:1px solid var(--ln);border-radius:16px;background:var(--sf);box-shadow:var(--sh)}
.sw button{min-height:46px;border:0;border-radius:12px;background:transparent;color:var(--mu)}
.sw button:hover{background:var(--inf-s)}
.sw button[aria-pressed=true]{color:#fff;background:linear-gradient(135deg,var(--g1),var(--g2));box-shadow:0 8px 16px -8px var(--g2)}
.nv{display:flex;gap:24px;border-bottom:1px solid var(--ln)}
.nv button{min-height:44px;padding:10px 2px;border:0;border-bottom:3px solid transparent;border-radius:0;background:none;color:var(--mu)}
.nv button:hover{background:none;color:var(--ink)}
.nv button[aria-pressed=true]{color:var(--ink);border-bottom-color:var(--ac)}
.tb{display:flex;align-items:center;justify-content:space-between}
.tb b{font-size:17px;text-transform:capitalize}
.tb button{width:44px;padding:0;font-size:20px;border-radius:50%}

/* cartões */
.pn{padding:20px;border:1px solid var(--ln);border-radius:var(--r);background:var(--sf);box-shadow:var(--sh)}
.cap{font-size:13px;color:var(--mu)}
.big{margin:6px 0;font:800 clamp(36px,10vw,52px)/1.05 var(--ff);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.pos{color:var(--in)}.neg{color:var(--out)}

/* destaque do mês */
.hero{border:0;color:#fff;background:linear-gradient(135deg,var(--g1),var(--g2));box-shadow:0 18px 36px -18px var(--g2)}
.hero.loss{background:linear-gradient(135deg,#F43F5E,#F97316);box-shadow:0 18px 36px -18px #F43F5E}
.hero .cap{color:rgba(255,255,255,.88)}
.hero .big{color:#fff}

/* indicadores */
.ts{display:grid;grid-template-columns:1fr;padding:8px 18px}
.ts>div{padding:14px 0}
.ts>div+div{border-top:1px solid var(--ln)}
.ts b{display:block;font-size:22px;line-height:1.35;font-weight:800;font-variant-numeric:tabular-nums}
@media (min-width:600px){
  .ts{grid-template-columns:repeat(3,1fr);padding:18px 0}
  .ts>div{padding:2px 22px}
  .ts>div+div{border-top:0;border-left:1px solid var(--ln)}
}

/* distribuição */
.bar{display:flex;gap:3px;height:26px;margin:8px 0;overflow:hidden;border-radius:10px}
.bar i{display:block;min-width:0}
.bar.ref{height:10px;border-radius:6px;opacity:.8}
.lg{display:flex;flex-direction:column;gap:8px;margin:16px 0 0;padding:0;list-style:none}
.lg li{display:grid;grid-template-columns:14px 1fr auto 44px;gap:10px;align-items:center;font-size:14px}
.lg .s{width:12px;height:12px;border-radius:4px}
.lg b,.lg em{font-style:normal;font-variant-numeric:tabular-nums}
.lg em{text-align:right;color:var(--mu)}

/* pontos de decisão */
.ins{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}
.ins li{padding:12px 14px;border-left:4px solid var(--mu);border-radius:12px;background:var(--inf-s)}
.ins .bad{border-left-color:var(--out);background:var(--out-s)}
.ins .warn{border-left-color:var(--wn);background:var(--wn-s)}
.ins .ok{border-left-color:var(--in);background:var(--in-s)}

/* maiores saídas */
.cats{display:flex;flex-direction:column;gap:14px;margin:0;padding:0;list-style:none}
.cats li{display:grid;grid-template-columns:1fr auto;gap:5px 12px;font-size:14px}
.cats b{font-variant-numeric:tabular-nums}
.cats li::after{content:"";grid-column:1/-1;height:8px;border-radius:99px;background:linear-gradient(90deg,var(--g1) var(--w),var(--c5) var(--w))}

/* formulários */
.f{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--mu)}
input,select{width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--ln);border-radius:12px;background:var(--bg);font-weight:500}
.g{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.g .full{grid-column:1/-1}
.ac{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.em p{max-width:56ch;color:var(--mu)}

/* lista de lançamentos */
.ls{margin:0;padding:0;list-style:none}
.ls li{display:grid;grid-template-columns:1fr auto auto;gap:4px 12px;align-items:center;padding:12px 0;border-top:1px solid var(--ln)}
.ls li:first-child{border-top:0}
.ls small{display:block;color:var(--mu)}
.ls .v{font-weight:800;font-variant-numeric:tabular-nums}
.ls .v:not(.pos){color:var(--out)}
.gh{min-height:36px;padding:6px 10px;border:0;background:none;color:var(--mu);font-weight:500}

.ft{display:flex;flex-direction:column;align-items:flex-start;gap:10px;font-size:13px;color:var(--mu)}
svg.ch{display:block;width:100%;height:auto}
[hidden]{display:none!important}

/* topo com usuário e botão Sair */
.top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.usr{display:flex;align-items:center;gap:10px;min-width:0}
.usr span{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.usr button{min-height:38px;padding:6px 14px}

/* tela de login */
.gate{position:fixed;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto;
  background:radial-gradient(900px 380px at 50% -120px,color-mix(in srgb,var(--g1) 22%,transparent),transparent),var(--bg)}
.gate form{display:flex;flex-direction:column;gap:14px;width:100%;max-width:380px}

/* link de comprovante */
.lk{min-height:0;padding:0;border:0;background:none;color:var(--ac);font:inherit;font-weight:600;text-decoration:underline}
.lk:hover{background:none}
input[type=file]{padding:9px 10px;font-size:13px}

.sm{min-height:38px;padding:6px 14px}

.neg-b{color:var(--out);border-color:var(--out)}

/* ambientes */
.envn{width:fit-content;margin:12px 0 0;padding:6px 14px;border-radius:99px;color:#fff;font-size:13px;font-weight:700;background:linear-gradient(135deg,var(--g1),var(--g2))}
.gate section{display:flex;flex-direction:column;gap:14px;width:100%;max-width:380px}
.envb{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;text-align:left}
.envb small{color:var(--mu);font-weight:500}
.envb[data-env=pf]{border-left:5px solid #0D9488}
.envb[data-env=pj]{border-left:5px solid #4F46E5}
.chk{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--mu)}
.chk input{width:20px;min-height:20px;margin-top:2px;flex:none}
.top{flex-wrap:wrap}
