/* 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 */
@property --w{syntax:'<percentage>';inherits:false;initial-value:0%}
.cats{display:flex;flex-direction:column;gap:18px;margin:0;padding:0;list-style:none}
.cats li{display:grid;grid-template-columns:1fr auto;gap:6px 12px;font-size:14px;font-weight:500}
.cats b{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink)}
.cats li::after{content:"";grid-column:1/-1;height:10px;border-radius:99px;background:linear-gradient(90deg,var(--g1) 0%,var(--g2) var(--w,0%),var(--c5) var(--w,0%),var(--c5) 100%);transition:background .8s cubic-bezier(.16,1,.3,1);box-shadow:inset 0 1px 2px rgba(0,0,0,.06)}
.cats li:hover::after{filter:brightness(1.08);box-shadow:0 0 8px color-mix(in srgb,var(--g2) 30%,transparent)}

/* 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)}
.plan-acao{margin-top:14px}
.plan-acao button{width:100%}
.plan-acao button:disabled{opacity:.65;cursor:wait}

/* 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}

/* planos */
.nv{overflow-x:auto;white-space:nowrap;scrollbar-width:none}
.nv small{margin-left:4px;padding:1px 7px;border-radius:99px;background:var(--inf-s);color:var(--mu);font-size:10px;font-weight:700;vertical-align:middle}
.nv .alert-count{background:var(--out);color:#fff}
.orc{display:grid!important;grid-template-columns:1fr 120px;gap:12px;align-items:center}
.orc small{display:block}

/* admin */
.adm{display:grid!important;grid-template-columns:1fr 1fr auto;gap:8px 10px;align-items:center}
.adm>div{grid-column:1/-1}
.adm small{display:block;color:var(--mu)}

.nv button{white-space:nowrap;flex:none}

/* Painel: a grade ocupa as duas colunas do layout principal. */
#app>.dashboard-sortable{grid-column:1/-1;width:100%;min-width:0;max-width:none}
.dashboard-sortable{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
.dashboard-column{display:flex;flex-direction:column;gap:18px;min-width:0}
.dashboard-sortable .pn{width:100%;min-width:0;margin:0!important}
@media(max-width:850px){.dashboard-sortable{grid-template-columns:minmax(0,1fr)}}

/* layout largo */
.w{max-width:1120px}
@media (min-width:900px){
  #app{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
  #app>:is(.tb,.hero,.ts,.ac,.em,.cap){grid-column:1/-1}
}
.ls li{flex-wrap:wrap}
h3{margin:18px 0 8px;font:700 14px/1.3 var(--ff)}

/* Login atualizado: paleta alinhada à marca azul e verde. */
#lg.login-layout{width:min(920px,100%);max-width:920px;padding:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.92fr);gap:0;overflow:hidden}
#lg .login-side{display:flex;flex-direction:column;justify-content:space-between;gap:30px;min-width:0;padding:clamp(28px,5vw,54px);background:linear-gradient(145deg,#eef8ff 0%,#edf8f2 100%)}
#lg .brand{align-self:flex-start;width:100%}
#lg .brand .logo-g{width:min(280px,100%);margin:0}
#lg .login-welcome h2{margin:8px 0 10px;color:#153b67;font-size:clamp(28px,3.5vw,38px);line-height:1.12;letter-spacing:-.04em}
#lg .login-welcome>p:last-child{max-width:34ch;color:#526b82;font-size:15px}
#lg .login-kicker{color:#087d68;font-size:11px;font-weight:800;letter-spacing:.12em}
#lg .login-carousel{padding:20px;border:1px solid #d6e9e8;border-radius:18px;background:rgba(255,255,255,.84)}
#lg .login-tip-label{color:#087d68;font-size:10px;font-weight:800;letter-spacing:.12em}
#lg .login-carousel h3{margin:8px 0 5px;color:#153b67;font-size:17px}
#lg .login-carousel p{min-height:48px;color:#526b82;font-size:14px}
#lg .login-carousel-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;color:#61768a;font-size:12px}
#lg .login-carousel-controls>div{display:flex;gap:8px}
#lg .login-carousel-controls button{width:42px;min-height:42px;padding:0;border-color:#cddfe7;color:#075c78;font-size:24px;line-height:1}
#lg .login-carousel-controls button:hover{background:#eaf6f5}
#lg .login-fields{display:flex;flex-direction:column;justify-content:center;gap:14px;min-width:0;padding:clamp(28px,5vw,54px)}
#lg .login-fields h2{margin:0;color:#183b65;font-size:24px}
#lg .login-fields>.cap{margin-top:-8px}
#lg .login-fields button{width:100%}
#lg .login-fields #lg-fg{width:auto;align-self:center}
@media(max-width:700px){
  #lg.login-layout{grid-template-columns:minmax(0,1fr);max-width:460px;max-height:calc(100dvh - 32px);overflow:auto}
  #lg .login-side{gap:18px;padding:24px 24px 18px}
  #lg .brand .logo-g{width:min(220px,72%);margin-inline:auto}
  #lg .login-welcome h2{font-size:28px}
  #lg .login-carousel{padding:15px}
  #lg .login-fields{gap:12px;padding:22px 24px 26px}
  #lg .login-fields h2{font-size:21px}
}
@media(max-width:380px){
  #lg.login-layout{max-height:calc(100dvh - 20px)}
  #lg .login-side{padding:20px 18px 14px}
  #lg .login-fields{padding:18px}
  #lg .login-carousel p{min-height:0}
}
@media(prefers-reduced-motion:reduce){#lg *{scroll-behavior:auto!important;transition:none!important}}

/* Ambiente ativo sempre visível no topo e identificado também por texto. */
.active-environment{display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 15px 6px 7px;border:1px solid #a9ddcc;border-radius:15px;background:#eaf8f2;color:#075d4b;box-shadow:0 5px 16px rgba(22,90,70,.09)}
.active-environment-mark{display:grid;place-items:center;width:38px;height:38px;flex:0 0 38px;border-radius:11px;background:linear-gradient(145deg,#087d68,#16a36a);color:#fff;font-size:13px;font-weight:800;letter-spacing:.02em}
.active-environment-copy{display:flex;flex-direction:column;gap:1px;line-height:1.15}
.active-environment-copy small{font-size:9px;font-weight:800;letter-spacing:.11em;opacity:.8}
.active-environment-copy b{font-size:14px;font-weight:800}
html[data-mod=pj] .active-environment{border-color:#c7c1fb;background:#f0efff;color:#392c91;box-shadow:0 5px 16px rgba(72,54,150,.09)}
html[data-mod=pj] .active-environment-mark{background:linear-gradient(145deg,#4f46e5,#8b5cf6)}
.sb .usr .who-env{padding:8px 10px;border:1px solid rgba(52,211,153,.38);border-left:4px solid #34d399;border-radius:10px;background:rgba(16,185,129,.12);font-size:13px}
html[data-mod=pj] .sb .usr .who-env{border-color:rgba(165,180,252,.42);border-left-color:#a5b4fc;background:rgba(99,102,241,.2)}
@media(max-width:600px){.mt-right{width:100%;justify-content:space-between}.active-environment{min-height:48px;padding-right:10px}.active-environment-mark{width:34px;height:34px;flex-basis:34px}}
/* v27 relatório de vendas */
.sale-kpis{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin:0}
.sale-kpis span{display:flex;flex-direction:column;font-size:.85rem;opacity:.9}
.sale-kpis b{font-size:1.05rem}
.table-wrap table{width:100%;min-width:760px;border-collapse:collapse;font-size:.92rem}
.table-wrap th,.table-wrap td{padding:10px 9px;border-bottom:1px solid var(--ln);text-align:left;vertical-align:top}
.table-wrap th{position:sticky;top:0;background:var(--sf);color:var(--ink);z-index:1}
.table-wrap td:last-child,.table-wrap th:last-child{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
#report-filter label[hidden]{display:none!important}
