@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');
/* ============================================================
   INDEX GROUP CRM — Design System v8 "Signal"
   Identidade: Carvão (#1b1a18) + Vermelho Signal (#BA2022)
   Canvas neutro-quente · claro por padrão · escuro via [data-theme=dark]
   Drop-in: mantém os MESMOS nomes de variáveis e classes das telas
   antigas, mas com paleta e componentes novos.
   ============================================================ */

:root{
  /* ----- marca ----- */
  --brand:#ba2022; --brand-2:#9c1a1c; --brand-3:#7d1416;
  --brand-tint:#fbeceb; --brand-ink:#7d1416;
  --ink:#1b1a18; --ink-2:#282624; --ink-3:#3a3633;

  /* nomes legados (telas usam --nv / --gr) — remapeados pra marca */
  --nv:#1b1a18; --nv2:#282624; --gr:#ba2022; --gr2:#9c1a1c; --gr3:#d6282b;

  /* ----- superfícies (neutro quente / stone) ----- */
  --bg:#f4f2ef; --bg2:#ffffff; --bg3:#ece9e4; --sur:#ffffff; --sur2:#faf8f5;
  --bor:#e8e4dd; --bor2:#dbd5cc;

  /* ----- texto ----- */
  --tx:#1b1a18; --tx2:#6c675f; --tx3:#9a958b; --tx4:#bdb8ae;

  /* ----- semânticas ----- */
  --ok:#15805a; --ok-bg:#e3f3ec; --wa:#c1771a; --wa-bg:#fbeede;
  --er:#dc3b34; --er-bg:#fbe9e7; --in:#2f6fed; --in-bg:#e9f0fe;
  --pu:#7b5cff; --pu-bg:#eeeaff;

  /* ----- gradientes ----- */
  --grd:linear-gradient(135deg,var(--brand) 0%,var(--brand-2) 100%);
  --grd-br:linear-gradient(135deg,#d6282b 0%,#9c1a1c 100%);
  --grd-ink:linear-gradient(150deg,#33302c 0%,#1b1a18 100%);
  --grd-soft:linear-gradient(135deg,#fbeceb 0%,#f3ece6 100%);
  --glow-gr:0 8px 22px -8px rgba(186,32,34,.45);
  --glow-nv:0 10px 26px -10px rgba(27,26,24,.42);

  /* ----- sombras em camadas ----- */
  --sh-xs:0 1px 2px rgba(27,26,24,.05);
  --sh-sm:0 1px 3px rgba(27,26,24,.06),0 1px 2px rgba(27,26,24,.04);
  --sh:0 2px 6px rgba(27,26,24,.05),0 10px 24px -8px rgba(27,26,24,.12);
  --sh-md:0 4px 12px rgba(27,26,24,.06),0 20px 44px -14px rgba(27,26,24,.18);
  --sh-lg:0 14px 32px rgba(27,26,24,.10),0 36px 80px -24px rgba(27,26,24,.30);

  --r:12px; --rl:18px; --rx:24px; --rr:999px;
  --tr:.2s cubic-bezier(.4,0,.2,1);
  --tr-spring:.42s cubic-bezier(.34,1.56,.64,1);
  --font:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --font-d:'Space Grotesk','Plus Jakarta Sans',sans-serif;

  /* ===== ALIASES de compatibilidade (telas com nomes longos) ===== */
  --borl:var(--bor2);
  --border:var(--bor); --border-light:var(--bor2);
  --surface:var(--sur); --surface-hover:var(--bg3);
  --navy:var(--ink); --navy-light:var(--ink-2); --navy-dark:var(--ink);
  --green:var(--brand); --green-light:var(--brand-2); --green-dark:var(--brand-3);
  --primary:var(--brand); --secondary:var(--ink);
  --text:var(--tx); --text-primary:var(--tx); --text-secondary:var(--tx2); --text-tertiary:var(--tx3); --text-quaternary:var(--tx4);
  --bg-primary:var(--bg); --bg-secondary:var(--bg2); --bg-tertiary:var(--bg3);
  --success:var(--ok); --danger:var(--er); --err:var(--er); --warning:var(--wa); --warn:var(--wa); --info:var(--in); --purple:var(--pu);
  --gradient:var(--grd);
}
[data-theme=dark]{
  --brand:#d6383a; --brand-2:#b1232a; --brand-3:#8c1a1f;
  --brand-tint:rgba(214,56,58,.14); --brand-ink:#ff8f8f;
  --ink:#f1efea; --ink-2:#cfcbc3; --ink-3:#a8a39a;
  --nv:#f1efea; --nv2:#cfcbc3; --gr:#d6383a; --gr2:#b1232a; --gr3:#e85a5c;

  --bg:#141312; --bg2:#1b1917; --bg3:#221f1c; --sur:#1c1a18; --sur2:#221f1c;
  --bor:#2c2825; --bor2:#3b3631;
  --tx:#f1efea; --tx2:#a8a39a; --tx3:#7c766c; --tx4:#544f47;

  --ok:#34d399; --ok-bg:rgba(52,211,153,.14); --wa:#f0b352; --wa-bg:rgba(240,179,82,.14);
  --er:#f87171; --er-bg:rgba(248,113,113,.14); --in:#5b9bff; --in-bg:rgba(91,155,255,.14);
  --pu:#a78bfa; --pu-bg:rgba(167,139,250,.15);

  --grd-soft:linear-gradient(135deg,rgba(214,56,58,.16),rgba(214,56,58,.05));
  --grd-ink:linear-gradient(150deg,#2a2724 0%,#1b1917 100%);
  --glow-gr:0 8px 26px -8px rgba(214,56,58,.5);
  --sh-xs:0 1px 2px rgba(0,0,0,.5);
  --sh-sm:0 2px 6px rgba(0,0,0,.45);
  --sh:0 4px 14px -4px rgba(0,0,0,.55);
  --sh-md:0 16px 36px -12px rgba(0,0,0,.65);
  --sh-lg:0 30px 70px -20px rgba(0,0,0,.8);
}

*{margin:0;padding:0;box-sizing:border-box}
html{font-size:15px;-webkit-text-size-adjust:100%}
body{font-family:var(--font);background:var(--bg);color:var(--tx);min-height:100vh;line-height:1.55;-webkit-font-smoothing:antialiased;letter-spacing:-.011em;
  background-image:radial-gradient(1100px 560px at 100% -8%,rgba(186,32,34,.05),transparent 60%),radial-gradient(820px 460px at -8% 4%,rgba(27,26,24,.04),transparent 55%);
  background-attachment:fixed}
h1,h2,h3,h4,h5,.brand,.logo{font-family:var(--font-d);font-weight:700;letter-spacing:-.018em;color:var(--tx)}
a{text-decoration:none;color:inherit}
img{max-width:100%;display:block}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-thumb{background:var(--bor2);border-radius:99px;border:3px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:var(--tx4)}
::selection{background:var(--brand);color:#fff}
:focus-visible{outline:none;box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--brand)}

@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes popIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* ---------- LAYOUT ---------- */
.app,.app-wrapper{display:flex;min-height:100vh}
.mn,.main-content{flex:1;min-width:0;display:flex;flex-direction:column}
.ct{padding:1.8rem 2rem 4.5rem;max-width:1540px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:1.3rem}
.ct>*{animation:fadeUp .5s cubic-bezier(.4,0,.2,1) both}
.ct>*:nth-child(1){animation-delay:.02s}.ct>*:nth-child(2){animation-delay:.07s}
.ct>*:nth-child(3){animation-delay:.12s}.ct>*:nth-child(4){animation-delay:.17s}
.ct>*:nth-child(5){animation-delay:.22s}.ct>*:nth-child(6){animation-delay:.27s}

/* ---------- SIDEBAR ---------- */
.sb,.sidebar{width:258px;background:var(--sur);border-right:1px solid var(--bor);height:100vh;position:sticky;top:0;display:flex;flex-direction:column;transition:width .28s cubic-bezier(.4,0,.2,1);flex-shrink:0;z-index:50}
.sb.col{width:80px}
.sbh,.sidebar-header{padding:1.15rem 1.15rem;display:flex;align-items:center;justify-content:space-between;min-height:68px;border-bottom:1px solid var(--bor)}
.logo{display:flex;align-items:center;gap:.65rem;overflow:hidden;min-width:0}
/* logo em imagem (claro/escuro) */
.logo-img{height:30px;width:auto;max-width:152px;object-fit:contain}
.logo-on-dark{display:none}
[data-theme=dark] .logo-on-light{display:none}
[data-theme=dark] .logo-on-dark{display:block}
/* marca quadrada (colapsado) */
.lic,.logo-icon,.logo-mark{width:40px;height:40px;border-radius:13px;background:var(--grd-ink);color:#fff;display:grid;place-items:center;font-weight:800;font-size:.95rem;flex-shrink:0;box-shadow:var(--sh-sm);font-family:var(--font-d);overflow:hidden}
.lic img,.logo-mark img{width:100%;height:100%}
.ltx{font-weight:700;font-size:1.02rem;white-space:nowrap;letter-spacing:-.02em;font-family:var(--font-d)}
.logo-mark{display:none}
.sb.col .logo-img,.sb.col .ltx,.sb.col .un,.sb.col .uro,.sb.col .ni span,.sb.col .nav-item span,.sb.col .sb-section{display:none}
.sb.col .logo-mark{display:grid}
.sb.col .sbh{justify-content:center;padding-left:0;padding-right:0}
.tsb{background:none;border:none;color:var(--tx3);cursor:pointer;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;transition:var(--tr);font-size:1.15rem;flex-shrink:0}
.tsb:hover{background:var(--bg3);color:var(--tx)}
.sb.col .tsb{display:none}
.sbn,.sidebar-nav{flex:1;padding:.7rem .7rem;display:flex;flex-direction:column;gap:2px;overflow-y:auto;overflow-x:hidden}
.sb-section{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--tx4);padding:.9rem .85rem .35rem}
.ni,.nav-item{display:flex;align-items:center;gap:.8rem;padding:.66rem .8rem;border-radius:11px;color:var(--tx2);font-weight:600;font-size:.875rem;white-space:nowrap;transition:var(--tr);position:relative}
.ni i,.nav-item i{font-size:1.28rem;flex-shrink:0;width:24px;text-align:center;transition:var(--tr)}
.ni:hover,.nav-item:hover{background:var(--bg3);color:var(--tx)}
.ni:hover i,.nav-item:hover i{transform:translateX(1px)}
.ni.on,.nav-item.active,.nav-item.on{background:var(--brand-tint);color:var(--brand-ink);font-weight:700}
[data-theme=dark] .ni.on,[data-theme=dark] .nav-item.active{color:#fff}
.ni.on::before,.nav-item.active::before,.nav-item.on::before{content:"";position:absolute;left:-.7rem;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--brand);border-radius:0 4px 4px 0}
.sb.col .ni,.sb.col .nav-item{justify-content:center;padding-left:0;padding-right:0}
.sb.col .ni.on::before,.sb.col .nav-item.active::before{left:0}
.nd,.nav-divider{height:1px;background:var(--bor);margin:.65rem .55rem}
.sbf{padding:.7rem;border-top:1px solid var(--bor)}
.ur,.user-info{display:flex;align-items:center;gap:.65rem;padding:.5rem;border-radius:12px;transition:var(--tr);cursor:pointer}
.ur:hover{background:var(--bg3)}
.uav,.user-avatar{width:38px;height:38px;border-radius:50%;background:var(--grd-br);color:#fff;display:grid;place-items:center;font-weight:700;font-size:.9rem;flex-shrink:0;box-shadow:var(--sh-xs);font-family:var(--font-d)}
.ud,.user-details{overflow:hidden;min-width:0}
.un,.user-name{font-weight:700;font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uro,.user-email{font-size:.73rem;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- TOPBAR ---------- */
.tpb,.top-bar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 2rem;background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border-bottom:1px solid var(--bor)}
.tpl,.left-section{display:flex;align-items:center;gap:.9rem;min-width:0}
.phd h1,.page-title,.page-title h1{font-family:var(--font-d);font-size:1.38rem;font-weight:700;line-height:1.08;letter-spacing:-.02em}
.phd p,.page-title p{font-size:.82rem;color:var(--tx3);margin-top:2px;display:flex;align-items:center;gap:.4rem}
.tpr,.top-bar-actions{display:flex;align-items:center;gap:.6rem;flex-shrink:0}
.mmb,.ib2,.menu-toggle,.toggle-sidebar,.theme-toggle{background:var(--sur);border:1px solid var(--bor);color:var(--tx2);cursor:pointer;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;transition:var(--tr);font-size:1.2rem}
.mmb,.menu-toggle{display:none}
.ib2:hover,.theme-toggle:hover,.menu-toggle:hover,.toggle-sidebar:hover{background:var(--bg3);color:var(--tx);border-color:var(--bor2);transform:translateY(-1px);box-shadow:var(--sh-sm)}
.ib2:active{transform:translateY(0)}

/* ---------- BOTÕES ---------- */
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.64rem 1.15rem;border-radius:11px;font-size:.85rem;font-weight:700;font-family:var(--font);border:1px solid transparent;cursor:pointer;transition:var(--tr);white-space:nowrap;line-height:1;position:relative;overflow:hidden}
.btn i{font-size:1.1rem}
.btn::after{content:"";position:absolute;inset:0;background:rgba(255,255,255,.16);opacity:0;transition:var(--tr)}
.btn:hover::after{opacity:1}
.bpr,.btn-primary{background:var(--grd-br);color:#fff;box-shadow:var(--glow-gr);border:1px solid transparent}
.bpr:hover,.btn-primary:hover{transform:translateY(-2px);box-shadow:0 14px 28px -8px rgba(186,32,34,.55)}
.bpr:active,.btn-primary:active{transform:translateY(0)}
.bse{background:var(--sur);color:var(--tx);border-color:var(--bor)}
.bse:hover{background:var(--bg3);border-color:var(--bor2);transform:translateY(-1px);box-shadow:var(--sh-sm)}
.bsm,.btn-sm{padding:.5rem .85rem;font-size:.8rem;border-radius:10px}
.bgh{background:transparent;color:var(--tx2)}
.bgh:hover{background:var(--bg3);color:var(--tx)}
.bda,.btn-danger{background:var(--er-bg);color:var(--er);border:1px solid transparent}
.bda:hover,.btn-danger:hover{background:var(--er);color:#fff}
.bink{background:var(--grd-ink);color:#fff;box-shadow:var(--glow-nv)}
.bink:hover{transform:translateY(-2px)}

/* ---------- CARDS ---------- */
.card{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rl);box-shadow:var(--sh-sm);overflow:hidden;transition:var(--tr)}
.card:hover{box-shadow:var(--sh);border-color:var(--bor2)}
.chd{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem 1.35rem;border-bottom:1px solid var(--bor)}
.chd-t,.card-header{display:flex;align-items:center;gap:.6rem;font-family:var(--font-d);font-weight:700;font-size:1rem}
.chd-t i,.card-header i{font-size:1.22rem;color:var(--brand)}
.card-header{padding:1.1rem 1.35rem;border-bottom:1px solid var(--bor)}
.cbdy{padding:1.35rem}
.card-sm{background:var(--sur);border:1px solid var(--bor);border-radius:var(--r);padding:1.1rem;box-shadow:var(--sh-xs);transition:var(--tr)}
.card-sm:hover{box-shadow:var(--sh-sm);border-color:var(--bor2)}
.settings-card{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rl);box-shadow:var(--sh-sm);overflow:hidden;margin-bottom:1.4rem}
.sec-hd{font-family:var(--font-d);font-weight:700;font-size:1.05rem;margin-bottom:.3rem}

/* ---------- STAT CARDS ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem}
.sc{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rl);padding:1.3rem 1.35rem;box-shadow:var(--sh-sm);transition:var(--tr-spring);position:relative;overflow:hidden}
.sc::after{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--grd);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.4,0,.2,1)}
.sc:hover{transform:translateY(-4px);box-shadow:var(--sh-md);border-color:var(--bor2)}
.sc:hover::after{transform:scaleX(1)}
.sc-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:.85rem}
.sc-lb{font-size:.74rem;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.05em}
.sc-ic{width:42px;height:42px;border-radius:13px;background:var(--bg3);display:grid;place-items:center;font-size:1.3rem;transition:var(--tr-spring)}
.sc:hover .sc-ic{transform:scale(1.08)}
.sc-val{font-family:var(--font-d);font-size:1.95rem;font-weight:700;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.sc-val.ok{color:var(--ok)}.sc-val.er{color:var(--er)}.sc-val.wa{color:var(--wa)}.sc-val.pu{color:var(--pu)}.sc-val.in{color:var(--in)}.sc-val.br{color:var(--brand)}
.sc-sub{font-size:.79rem;color:var(--tx3);margin-top:.5rem}
.prog-bar{height:8px;background:var(--bg3);border-radius:99px;overflow:hidden;margin:.7rem 0 .15rem;position:relative}
.prog-fill{height:100%;background:var(--grd);border-radius:99px;transition:width .8s cubic-bezier(.34,1.56,.64,1);position:relative;overflow:hidden}
.prog-fill::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);background-size:200% 100%;animation:shimmer 2s infinite}

/* stat cards alternativos (.fsc) */
.fsc{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rl);padding:1.25rem 1.35rem;box-shadow:var(--sh-sm);transition:var(--tr-spring);position:relative;overflow:hidden}
.fsc::after{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--grd);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.4,0,.2,1)}
.fsc:hover{transform:translateY(-4px);box-shadow:var(--sh-md);border-color:var(--bor2)}
.fsc:hover::after{transform:scaleX(1)}
.fsc .lb{font-size:.74rem;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.55rem}
.fsc .vl{font-family:var(--font-d);font-size:1.85rem;font-weight:700;line-height:1;letter-spacing:-.03em;color:var(--tx);font-variant-numeric:tabular-nums}
.fscs,.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1.1rem;margin-bottom:1.4rem}
.fst{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1.1rem}

/* ---------- GRIDS ---------- */
.g2{display:grid;grid-template-columns:1.55fr 1fr;gap:1.3rem;align-items:start}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.3rem}
.col{display:flex;flex-direction:column;gap:1.3rem}

/* ---------- FINANCEIRO BAR ---------- */
.fin-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.1rem}
.fin-item{padding:1rem 1.1rem;background:var(--sur2);border:1px solid var(--bor);border-radius:var(--r);transition:var(--tr)}
.fin-item:hover{transform:translateY(-2px);box-shadow:var(--sh-sm);border-color:var(--bor2)}
.fin-lbl{font-size:.74rem;color:var(--tx3);font-weight:600;margin-bottom:.3rem}
.fin-val{font-family:var(--font-d);font-size:1.2rem;font-weight:700;font-variant-numeric:tabular-nums}

/* ---------- BADGES ---------- */
.badge,.badge-modern{display:inline-flex;align-items:center;gap:.38rem;padding:.3rem .65rem;border-radius:99px;font-size:.72rem;font-weight:700;line-height:1;white-space:nowrap}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.b-ok,.b-pg,.b-ativo{background:var(--ok-bg);color:var(--ok)}
.b-wa,.b-pe{background:var(--wa-bg);color:var(--wa)}
.b-er,.b-at,.b-inadimplente{background:var(--er-bg);color:var(--er)}
.b-in{background:var(--in-bg);color:var(--in)}
.b-pu{background:var(--pu-bg);color:var(--pu)}
.b-br{background:var(--brand-tint);color:var(--brand-ink)}
.b-cancelado,.b-ca,.b-inativo{background:var(--bg3);color:var(--tx3)}

/* ---------- LISTAS / TASKS ---------- */
.task-row,.li{display:flex;align-items:center;gap:.8rem;padding:.8rem .35rem;border-bottom:1px solid var(--bor);transition:var(--tr)}
.task-row:last-child,.li:last-child{border-bottom:none}
.task-row:hover,.li:hover{background:var(--sur2);border-radius:11px;padding-left:.7rem;padding-right:.7rem}
.task-cb{width:23px;height:23px;border-radius:8px;border:2px solid var(--bor2);cursor:pointer;flex-shrink:0;display:grid;place-items:center;transition:var(--tr-spring);color:transparent;background:var(--sur);-webkit-appearance:none;appearance:none}
.task-cb::after{content:"\2713";font-size:.8rem;font-weight:900}
.task-cb:hover{border-color:var(--brand);transform:scale(1.1)}
.task-cb:checked,.task-cb.done{background:var(--brand);border-color:var(--brand);color:#fff}
.task-inf{flex:1;min-width:0}
.task-ttl{font-weight:600;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.task-row.done .task-ttl,.task-ttl.done{text-decoration:line-through;color:var(--tx3)}
.task-meta{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap;font-size:.74rem;color:var(--tx3);margin-top:.18rem}
.li-nm{font-weight:600;font-size:.87rem}
.li-sub{font-size:.74rem;color:var(--tx3)}
.li-val{font-family:var(--font-d);font-weight:700;font-size:.95rem;margin-left:auto;font-variant-numeric:tabular-nums}
.pdot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--tx4)}
.pdot.urgente,.urgente{color:var(--er)}.pdot.urgente{background:var(--er)}
.pdot.alta,.alta{color:var(--wa)}.pdot.alta{background:var(--wa)}
.pdot.media,.media{color:var(--in)}.pdot.media{background:var(--in)}
.pdot.baixa,.baixa{color:var(--tx3)}.pdot.baixa{background:var(--tx4)}

/* ---------- EMPTY ---------- */
.empt,.empty-state{text-align:center;padding:2.6rem 1rem;color:var(--tx3)}
.empt i,.empty-state i{font-size:2.5rem;opacity:.35;display:block;margin-bottom:.6rem}

/* ---------- CALENDÁRIO ---------- */
.cal-wrap{display:flex;flex-direction:column;gap:.8rem}
.cal-nav{display:flex;align-items:center;justify-content:space-between}
.cal-nav-title,#calTitle{font-family:var(--font-d);font-weight:700;font-size:.98rem}
.cal-nav-btn{width:34px;height:34px;border-radius:10px;border:1px solid var(--bor);background:var(--sur);color:var(--tx2);cursor:pointer;display:grid;place-items:center;transition:var(--tr)}
.cal-nav-btn:hover{background:var(--bg3);color:var(--tx);transform:translateY(-1px)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-hd{text-align:center;font-size:.68rem;font-weight:700;color:var(--tx3);padding:.3rem 0}
.cal-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:11px;font-size:.84rem;font-weight:600;cursor:pointer;transition:var(--tr);position:relative;border:1px solid transparent}
.cal-day:hover{background:var(--bg3);transform:scale(1.05)}
.cal-day.other-month{color:var(--tx4)}
.cal-day.today{background:var(--brand-tint);color:var(--brand-ink);font-weight:800;border-color:color-mix(in srgb,var(--brand) 35%,transparent)}
.cal-day.selected{background:var(--grd-br);color:#fff;box-shadow:var(--glow-gr)}
.cal-day.selected .cal-dot{box-shadow:0 0 0 1px rgba(255,255,255,.6)}
.cal-dots{display:flex;gap:2px;margin-top:3px;height:5px}
.cal-dot{width:5px;height:5px;border-radius:50%;background:var(--tx4)}
.cal-dot.cd-task{background:var(--in)}.cal-dot.cd-task.urgente{background:var(--er)}.cal-dot.cd-task.alta{background:var(--wa)}
.cal-dot.cd-task-done{background:var(--ok)}
.cal-dot.cd-receita{background:var(--ok)}.cal-dot.cd-receita.atrasado{background:var(--er)}
.cal-dot.cd-projeto{background:var(--pu)}
.cal-dot.cd-contrato{background:var(--wa)}
.cal-detail{background:var(--sur2);border:1px solid var(--bor);border-radius:var(--r);padding:1rem;animation:popIn .3s ease both}
.cal-detail-date{font-family:var(--font-d);font-weight:700;font-size:.86rem;margin-bottom:.6rem;display:flex;align-items:center;gap:.4rem}
.cal-detail-row{display:flex;align-items:center;gap:.6rem;padding:.5rem 0;font-size:.81rem;border-top:1px solid var(--bor)}
.cal-detail-ic{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex-shrink:0;font-size:.95rem}
.cal-legend{display:flex;gap:.9rem;flex-wrap:wrap;font-size:.72rem;color:var(--tx3)}
.leg-item{display:flex;align-items:center;gap:.4rem}
.leg-dot{width:8px;height:8px;border-radius:50%}

.chart-wrap{position:relative;height:250px}

/* ---------- FORMULÁRIOS ---------- */
.fgp,.form-group{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.05rem}
.flb,.lb,.form-label{font-size:.8rem;font-weight:600;color:var(--tx2);letter-spacing:-.01em}
.fc,.form-control,select.fc,textarea.fc,input.search{
  width:100%;padding:.7rem .9rem;border-radius:11px;border:1px solid var(--bor);
  background:var(--sur);color:var(--tx);font-family:var(--font);font-size:.88rem;transition:var(--tr);outline:none}
.fc:hover,.form-control:hover{border-color:var(--bor2)}
.fc:focus,.form-control:focus,select.fc:focus,textarea.fc:focus{border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-tint)}
.fc::placeholder,.form-control::placeholder{color:var(--tx4)}
textarea.fc,textarea.form-control{min-height:96px;resize:vertical;line-height:1.55}
.fg{display:grid;gap:1rem}.fg.fg2{grid-template-columns:1fr 1fr}.fg.fg3{grid-template-columns:1fr 1fr 1fr}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.05rem}
.full-width,.full{grid-column:1/-1}
.vl,.value{font-weight:600;color:var(--tx)}

/* ---------- BUSCA / FILTROS ---------- */
.search-wrap,.filter-bar{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}
.search-box{position:relative;flex:1;min-width:220px}
.search-box i{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:var(--tx3);font-size:1.05rem}
.search-box input{width:100%;padding:.7rem .9rem .7rem 2.4rem;border-radius:11px;border:1px solid var(--bor);background:var(--sur);color:var(--tx);font-family:var(--font);font-size:.88rem;transition:var(--tr);outline:none}
.search-box input:focus{border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-tint)}

/* ---------- TABS / PILLS ---------- */
.tabs,.tp,.settings-tabs{display:inline-flex;align-items:center;gap:.3rem;background:var(--bg3);border:1px solid var(--bor);border-radius:13px;padding:.3rem;flex-wrap:wrap}
.tab,.tp>a,.tp>button,.tab-btn{padding:.5rem 1rem;border-radius:10px;font-size:.84rem;font-weight:600;color:var(--tx2);cursor:pointer;border:none;background:none;transition:var(--tr);font-family:var(--font);white-space:nowrap}
.tab:hover,.tp>a:hover,.tp>button:hover,.tab-btn:hover{color:var(--tx)}
.tab.active,.tab.on,.tp>a.on,.tp>button.on,.tp .active,.tab-btn.active{background:var(--grd-br);color:#fff;box-shadow:var(--glow-gr)}
.tb2{display:inline-flex;align-items:center;gap:.45rem;padding:.6rem 1rem;border-radius:11px;font-size:.84rem;font-weight:600;color:var(--tx2);cursor:pointer;border:1px solid transparent;background:none;font-family:var(--font);transition:var(--tr);white-space:nowrap}
.tb2:hover{background:var(--bg3);color:var(--tx)}
.tb2.on,.tb2.active{background:var(--brand-tint);color:var(--brand-ink);font-weight:700}
.tb2 .tc{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 .35rem;border-radius:99px;background:var(--bg3);color:var(--tx2);font-size:.7rem;font-weight:700}
.tb2.on .tc{background:var(--brand);color:#fff}

/* ---------- TABELAS ---------- */
.tb,.tw table,table.tbl,.fin-table,.items-table,.items-tbl,.cli-table{width:100%;border-collapse:separate;border-spacing:0}
.tw,.cli-table-wrap,.tb-wrap{width:100%;overflow-x:auto}
.tb th,table thead th{text-align:left;font-size:.73rem;font-weight:700;color:var(--tx3);text-transform:uppercase;letter-spacing:.05em;padding:.8rem 1rem;border-bottom:1px solid var(--bor);white-space:nowrap;background:transparent}
.tb td,table tbody td{padding:.95rem 1rem;border-bottom:1px solid var(--bor);font-size:.87rem;vertical-align:middle}
.tb tbody tr,table tbody tr{transition:var(--tr)}
.tb tbody tr:hover,table tbody tr:hover{background:var(--sur2)}
.tb tbody tr:last-child td{border-bottom:none}
.tdmain{font-weight:600;color:var(--tx)}
.tdsub{font-size:.76rem;color:var(--tx3);margin-top:.15rem}
.tc{display:flex;align-items:center;gap:.7rem}
.av-ini,.cli-av{width:40px;height:40px;border-radius:11px;background:var(--brand-tint);color:var(--brand-ink);display:grid;place-items:center;font-weight:700;font-size:.85rem;flex-shrink:0;font-family:var(--font-d)}

/* ações em linha */
.row-actions,.acts{display:flex;align-items:center;gap:.4rem}
.iconbtn,.ib{width:34px;height:34px;border-radius:9px;border:1px solid var(--bor);background:var(--sur);color:var(--tx2);display:grid;place-items:center;cursor:pointer;transition:var(--tr);font-size:1rem}
.iconbtn:hover,.ib:hover{background:var(--bg3);color:var(--tx);border-color:var(--bor2);transform:translateY(-1px)}
.iconbtn.danger:hover,.ib.danger:hover{background:var(--er);color:#fff;border-color:var(--er)}

/* ---------- MODAIS ---------- */
.mo,.modal-overlay{position:fixed;inset:0;background:rgba(18,16,14,.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:300;display:none;align-items:center;justify-content:center;padding:1.2rem}
.mo.open,.modal-overlay.open,.mo.show{display:flex;animation:fadeUp .25s ease both}
.mw,.modal,.mc{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rx);width:100%;max-width:560px;max-height:92vh;overflow:auto;box-shadow:var(--sh-lg);animation:popIn .3s cubic-bezier(.34,1.56,.64,1) both}
.mhd,.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--bor);position:sticky;top:0;background:var(--sur);z-index:2}
.mhd h3,.modal-header h3,.mhd .mhd-t{font-family:var(--font-d);font-weight:700;font-size:1.1rem}
.mbdy,.modal-body{padding:1.5rem}
.mft,.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:.7rem;padding:1.05rem 1.5rem;border-top:1px solid var(--bor);position:sticky;bottom:0;background:var(--sur)}
.mm{max-width:680px}

/* ---------- ALERTAS ---------- */
.alrt,.alert{padding:.9rem 1.1rem;border-radius:12px;font-size:.85rem;font-weight:500;display:flex;align-items:center;gap:.6rem;border:1px solid transparent}
.alrt.ok,.alert-success{background:var(--ok-bg);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 25%,transparent)}
.alrt.er,.alert-danger{background:var(--er-bg);color:var(--er);border-color:color-mix(in srgb,var(--er) 25%,transparent)}
.alrt.wa,.alert-warning{background:var(--wa-bg);color:var(--wa)}
.alrt.in,.alert-info{background:var(--in-bg);color:var(--in)}

/* ---------- SWITCH ---------- */
.switch{position:relative;display:inline-block;width:46px;height:26px}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;inset:0;background:var(--bor2);border-radius:99px;transition:var(--tr)}
.slider:before{content:"";position:absolute;height:20px;width:20px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:var(--tr)}
.switch input:checked+.slider{background:var(--brand)}
.switch input:checked+.slider:before{transform:translateX(20px)}

/* ---------- TOAST ---------- */
.toast{position:fixed;bottom:1.5rem;right:1.5rem;background:var(--ink);color:#fff;padding:.9rem 1.3rem;border-radius:12px;font-weight:600;font-size:.86rem;box-shadow:var(--sh-lg);z-index:400;opacity:0;transform:translateY(20px);transition:var(--tr);pointer-events:none}
.toast.show{opacity:1;transform:translateY(0)}
.toast.er{background:var(--er);color:#fff}
.toast.ok{background:var(--brand);color:#fff}

/* ---------- nav alias / wrappers ---------- */
.main-content>.content,.main-content .page-content{padding:1.8rem 2rem 4.5rem;max-width:1540px;width:100%;margin:0 auto}
.main-content>.top-bar{margin:0}
.main-content>:not(.top-bar){margin-left:2rem;margin-right:2rem}
.main-content>.settings-tabs,.main-content>.settings-card,.main-content>.alert{margin-left:2rem;margin-right:2rem}
.main-content>.settings-tabs:first-of-type{margin-top:1.8rem}
.settings-card{margin-bottom:1.4rem;padding:0}
.settings-card .card-header{padding:1.1rem 1.35rem}
.settings-card .form-grid,.settings-card>.card-body,.settings-card>form{padding:1.35rem}

/* ---------- utilitários ---------- */
.tp-grid,.toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.1rem}
.mw{margin-left:auto}
.rotating{animation:spin .8s linear infinite}
.muted{color:var(--tx3)}
.nowrap{white-space:nowrap}

/* ============================================================
   MOBILE
   ============================================================ */
.mob-ov,.mobile-overlay{display:none;position:fixed;inset:0;background:rgba(18,16,14,.5);z-index:45;backdrop-filter:blur(3px)}
.mob-ov.open,.mobile-overlay.open{display:block}

/* barra de navegação inferior (mobile) */
.mob-nav{display:none;position:fixed;left:0;right:0;bottom:0;z-index:60;background:color-mix(in srgb,var(--sur) 92%,transparent);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border-top:1px solid var(--bor);padding:.45rem .4rem calc(.45rem + env(safe-area-inset-bottom));grid-template-columns:repeat(5,1fr);gap:2px}
.mob-nav a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:.35rem 0;border-radius:11px;color:var(--tx3);font-size:.64rem;font-weight:600;transition:var(--tr)}
.mob-nav a i{font-size:1.42rem}
.mob-nav a.on{color:var(--brand)}
.mob-nav a.fab{margin-top:-22px}
.mob-nav a.fab .fab-ic{width:48px;height:48px;border-radius:16px;background:var(--grd-br);color:#fff;display:grid;place-items:center;font-size:1.5rem;box-shadow:var(--glow-gr)}

@media(max-width:1100px){.g2,.g3{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.fin-bar{grid-template-columns:repeat(2,1fr)}}
@media(max-width:880px){
  .sb,.sidebar{position:fixed;left:0;top:0;transform:translateX(-100%);box-shadow:var(--sh-lg);transition:transform .28s cubic-bezier(.4,0,.2,1)}
  .sb.open,.sb.mop,.sidebar.open{transform:translateX(0);width:258px}
  .sb.col{width:258px}
  .sb.col .logo-img,.sb.col .ltx,.sb.col .ni span,.sb.col .nav-item span{display:revert}
  .sb.col .logo-mark{display:none}
  .mmb,.menu-toggle{display:grid}
  .ct,.main-content .page-content,.main-content>.content{padding:1.1rem 1rem 6rem}
  .main-content>:not(.top-bar){margin-left:1rem;margin-right:1rem}
  .tpb,.top-bar{padding:.85rem 1rem}
  .phd h1,.page-title,.page-title h1{font-size:1.2rem}
  .mob-nav{display:grid}
  .tpr .hide-mob,.tpb .hide-mob{display:none}
}
@media(max-width:560px){
  .stats{grid-template-columns:1fr}.fin-bar{grid-template-columns:1fr}.fst{grid-template-columns:1fr}
  .cbdy,.modal-body,.mbdy{padding:1.1rem}
  .form-grid,.fg.fg2,.fg.fg3{grid-template-columns:1fr}
  .chd{padding:1rem 1.1rem}
}

/* ============================================================
   TELA DE LOGIN
   ============================================================ */
.login-wrapper{min-height:100vh;display:grid;place-items:center;padding:1.5rem;width:100%;
  background-image:radial-gradient(900px 500px at 50% -10%,rgba(186,32,34,.10),transparent 60%),radial-gradient(700px 420px at 50% 110%,rgba(27,26,24,.06),transparent 60%)}
.login-card{background:var(--sur);border:1px solid var(--bor);border-radius:var(--rx);box-shadow:var(--sh-lg);width:100%;max-width:420px;padding:2.6rem 2.4rem;animation:popIn .45s cubic-bezier(.34,1.56,.64,1) both}
.login-header{text-align:center;margin-bottom:1.8rem}
.logo-container{display:flex;justify-content:center;margin-bottom:1.2rem}
.login-header .logo,.login-header .logo-img{max-height:46px;width:auto;margin:0 auto}
.login-header h1{font-size:1.5rem;font-weight:700;margin-bottom:.3rem}
.login-header p{color:var(--tx3);font-size:.88rem}
.input-wrapper{position:relative}
.input-wrapper .input-icon{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:var(--tx3);font-size:1.15rem;pointer-events:none}
.input-wrapper input{width:100%;padding:.85rem 1rem .85rem 2.7rem;border-radius:12px;border:1px solid var(--bor);background:var(--sur);color:var(--tx);font-family:var(--font);font-size:.92rem;transition:var(--tr);outline:none}
.input-wrapper input:hover{border-color:var(--bor2)}
.input-wrapper input:focus{border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-tint)}
.btn-login{width:100%;padding:.9rem;border:none;border-radius:12px;background:var(--grd-br);color:#fff;font-family:var(--font);font-size:.95rem;font-weight:700;cursor:pointer;transition:var(--tr);display:flex;align-items:center;justify-content:center;gap:.5rem;box-shadow:var(--glow-gr);margin-top:.4rem}
.btn-login:hover{transform:translateY(-2px);box-shadow:0 16px 32px -8px rgba(186,32,34,.55)}
.error-message{background:var(--er-bg);color:var(--er);padding:.8rem 1rem;border-radius:11px;font-size:.85rem;font-weight:500;display:flex;align-items:center;gap:.5rem;margin-bottom:1.1rem;border:1px solid color-mix(in srgb,var(--er) 22%,transparent)}
.login-wrapper .theme-toggle{position:fixed;top:1.3rem;right:1.3rem;z-index:50;box-shadow:var(--sh-sm)}
.logo-text{font-family:var(--font-d)}
