@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,700&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600&display=swap');

:root {
  --b950:#060F09;--b900:#0C1B12;--b800:#132919;--b700:#1B3D26;
  --b600:#245233;--b500:#2D6A4F;--b400:#3D8A68;--b300:#52B788;
  --b200:#95D5B2;--b100:#C8EEDD;--b50:#E8F5F0;--b25:#F2FAF6;
  --n900:#111B17;--n800:#1C2B24;--n600:#3F5A50;--n500:#5A7A6E;
  --n400:#7A9E92;--n300:#A8C4BA;--n200:#CFDFD9;--n100:#E8F0ED;
  --n50:#F5F8F7;--n0:#FFFFFF;
  --ok-bg:#E8F5F0;--ok-fg:#1A5C43;
  --warn-bg:#FEF9E7;--warn-fg:#8B6914;
  --err-bg:#FEF2F2;--err-fg:#B91C1C;
  --info-bg:#EFF6FF;--info-fg:#1D4ED8;
  --sh-xs:0 1px 2px rgba(6,15,9,.06);
  --sh-sm:0 2px 6px rgba(6,15,9,.08),0 1px 2px rgba(6,15,9,.04);
  --sh-md:0 4px 14px rgba(6,15,9,.09),0 2px 4px rgba(6,15,9,.05);
  --sh-lg:0 10px 28px rgba(6,15,9,.11),0 4px 8px rgba(6,15,9,.05);
  --sh-xl:0 24px 56px rgba(6,15,9,.14),0 8px 16px rgba(6,15,9,.07);
  --r4:4px;--r8:8px;--r12:12px;--r16:16px;--r24:24px;--rfull:999px;
  --t1:100ms ease;--t2:200ms ease;--t3:320ms ease;
  --fd:'Bricolage Grotesque',system-ui,sans-serif;
  --fb:'DM Sans',system-ui,sans-serif;
}

*{box-sizing:border-box;margin:0;padding:0;}

body{
  font-family:var(--fb);
  font-size:14px;
  color:var(--n900);
  background:var(--n50);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}

/* ── UTILS ── */
.hidden{display:none!important;}

/* ── BUTTONS ── */
.btn{
  display:inline-flex;align-items:center;gap:6px;
  padding:9px 18px;border-radius:var(--r8);border:none;
  font-family:var(--fb);font-size:13.5px;font-weight:600;
  cursor:pointer;transition:all var(--t2);white-space:nowrap;
  letter-spacing:-.01em;
}
.btn:active{transform:scale(.98);}
.btn-primary{
  background:var(--b500);color:#fff;
  box-shadow:0 2px 6px rgba(45,106,79,.35);
}
.btn-primary:hover{background:var(--b600);box-shadow:0 4px 12px rgba(45,106,79,.4);transform:translateY(-1px);}
.btn-secondary{
  background:var(--n0);color:var(--n800);
  border:1.5px solid var(--n200);box-shadow:var(--sh-xs);
}
.btn-secondary:hover{border-color:var(--n300);background:var(--n50);}
.btn-full{width:100%;justify-content:center;padding:13px;font-size:14.5px;}

/* ── BADGES ── */
.badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 10px;border-radius:var(--rfull);
  font-size:11.5px;font-weight:600;letter-spacing:.01em;
}
.badge::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.65;}
.badge-green{background:var(--ok-bg);color:var(--ok-fg);}
.badge-gray{background:var(--n100);color:var(--n600);}
.badge-red{background:var(--err-bg);color:var(--err-fg);}
.badge-blue{background:var(--info-bg);color:var(--info-fg);}

/* ── CARD ── */
.card{
  background:var(--n0);border:1px solid var(--n100);
  border-radius:var(--r16);padding:24px;box-shadow:var(--sh-sm);
}

/* ── FORM ── */
.input{
  width:100%;padding:11px 14px;
  border:1.5px solid var(--n200);border-radius:var(--r8);
  font-family:var(--fb);font-size:14px;color:var(--n900);
  background:var(--n0);transition:border-color var(--t2),box-shadow var(--t2);
  outline:none;
}
.input:focus{border-color:var(--b400);box-shadow:0 0 0 3px rgba(82,183,136,.15);}
label{display:block;font-size:12px;font-weight:600;color:var(--n600);margin-bottom:6px;letter-spacing:.02em;}
.form-group{margin-bottom:18px;}

.erro-msg{
  background:var(--err-bg);color:var(--err-fg);
  border-radius:var(--r8);padding:11px 14px;font-size:13px;margin-bottom:16px;
  border-left:3px solid var(--err-fg);
}

/* ══════════════════════════
   LOGIN
══════════════════════════ */
.login-page{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:var(--b900);
  background-image:
    radial-gradient(ellipse at 25% 60%,rgba(45,106,79,.18) 0%,transparent 55%),
    radial-gradient(ellipse at 75% 20%,rgba(82,183,136,.1) 0%,transparent 50%);
  padding:24px;
}
.login-box{width:100%;max-width:400px;}
.login-card{
  background:var(--n0);border-radius:var(--r24);padding:36px;
  box-shadow:var(--sh-xl);
}
.login-logo{text-align:center;margin-bottom:30px;}
.login-logo h1{
  font-family:var(--fd);font-size:32px;font-weight:700;
  color:var(--b500);letter-spacing:-1px;
}
.login-logo p{font-size:13px;color:var(--n400);margin-top:5px;}
.login-footer{text-align:center;margin-top:18px;font-size:11.5px;color:rgba(255,255,255,.35);}

/* ══════════════════════════
   PAINEL
══════════════════════════ */
.painel-layout{display:flex;min-height:100vh;}

/* Sidebar */
.sidebar{
  width:228px;
  background:var(--b950);
  display:flex;flex-direction:column;flex-shrink:0;
  position:fixed;top:0;left:0;bottom:0;
  border-right:1px solid rgba(255,255,255,.05);
}
.sidebar-logo{padding:22px 18px 18px;border-bottom:1px solid rgba(255,255,255,.06);}
.sidebar-logo h2{
  font-family:var(--fd);font-size:21px;font-weight:700;
  color:var(--b300);letter-spacing:-.4px;
}
.sidebar-logo p{font-size:11px;color:rgba(255,255,255,.3);margin-top:3px;line-height:1.4;}
.sidebar-nav{padding:12px 10px;flex:1;}
.sidebar-nav a{
  display:flex;align-items:center;gap:9px;
  padding:9px 12px;border-radius:var(--r8);
  color:rgba(255,255,255,.4);font-size:13.5px;font-weight:500;
  text-decoration:none;margin-bottom:2px;
  transition:all var(--t2);position:relative;
}
.sidebar-nav a::before{
  content:'';position:absolute;left:-10px;top:50%;transform:translateY(-50%);
  width:3px;height:0;background:var(--b300);border-radius:0 3px 3px 0;
  transition:height var(--t2);
}
.sidebar-nav a.active{background:rgba(82,183,136,.12);color:var(--b200);}
.sidebar-nav a.active::before{height:22px;}
.sidebar-nav a:hover:not(.active){background:rgba(255,255,255,.05);color:rgba(255,255,255,.6);}
.sidebar-nav svg{opacity:.7;flex-shrink:0;}
.sidebar-nav a.active svg{opacity:1;}
.sidebar-footer{
  padding:14px 18px;border-top:1px solid rgba(255,255,255,.06);
  font-size:11px;color:rgba(255,255,255,.25);
}

/* Main */
.main-content{margin-left:228px;flex:1;padding:28px 32px;max-width:1000px;}
.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;}
.page-header h1{font-family:var(--fd);font-size:22px;font-weight:700;color:var(--n900);letter-spacing:-.3px;}
.page-header p{font-size:12px;color:var(--n400);margin-top:3px;}
.breadcrumb{font-size:12px;color:var(--n400);margin-bottom:12px;}
.breadcrumb a{color:var(--n400);text-decoration:none;}
.breadcrumb a:hover{color:var(--b500);}
.breadcrumb span{color:var(--n900);font-weight:500;}

/* Stats */
.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px;}
.stat-card{
  background:var(--n0);border:1px solid var(--n100);
  border-radius:var(--r12);padding:16px 18px;
  box-shadow:var(--sh-xs);position:relative;overflow:hidden;
}
.stat-card::after{
  content:'';position:absolute;top:0;right:0;
  width:56px;height:56px;border-radius:0 var(--r12) 0 56px;
  background:var(--b25);
}
.stat-card .label{font-size:11px;color:var(--n400);font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-bottom:6px;}
.stat-card .value{font-family:var(--fd);font-size:20px;font-weight:700;color:var(--n900);letter-spacing:-.3px;}
.stat-card .icon{
  position:absolute;top:12px;right:14px;
  width:28px;height:28px;border-radius:var(--r8);
  background:var(--b50);display:flex;align-items:center;justify-content:center;
  font-size:14px;z-index:1;
}

/* Company cards */
.empresa-card{
  background:var(--n0);border:1px solid var(--n100);
  border-radius:var(--r12);padding:14px 18px;margin-bottom:8px;
  display:flex;align-items:center;gap:14px;
  cursor:pointer;transition:all var(--t2);box-shadow:var(--sh-xs);
}
.empresa-card:hover{border-color:var(--b300);box-shadow:var(--sh-md);transform:translateY(-2px);}
.empresa-avatar{
  width:42px;height:42px;border-radius:var(--r8);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--fd);font-size:17px;font-weight:700;flex-shrink:0;
}
.empresa-info{flex:1;}
.empresa-nome{font-size:14.5px;font-weight:600;color:var(--n900);}
.empresa-cnpj{font-size:11px;color:var(--n400);margin-top:2px;}
.empresa-right{display:flex;align-items:center;gap:14px;}
.empresa-stats{text-align:right;}
.empresa-stats .num{font-size:14px;font-weight:700;color:var(--n900);}
.empresa-stats .sub{font-size:11px;color:var(--n400);}
.empresa-arrow{color:var(--n300);font-size:18px;font-weight:300;}

/* Table */
.table-wrap{border:1px solid var(--n100);border-radius:var(--r12);overflow:hidden;box-shadow:var(--sh-xs);}
.table-wrap table{width:100%;border-collapse:collapse;}
.table-wrap thead tr{background:var(--n50);}
.table-wrap th{
  padding:11px 18px;text-align:left;
  font-size:10.5px;font-weight:700;color:var(--n500);
  text-transform:uppercase;letter-spacing:.07em;
  border-bottom:1px solid var(--n100);
}
.table-wrap td{padding:13px 18px;font-size:13.5px;border-bottom:1px solid var(--n100);}
.table-wrap tbody tr:last-child td{border-bottom:none;}
.table-wrap tbody tr{cursor:pointer;transition:background var(--t1);}
.table-wrap tbody tr:hover{background:var(--b25);}

/* Modals */
.modal-overlay{
  position:fixed;inset:0;background:rgba(6,15,9,.5);
  display:flex;align-items:center;justify-content:center;z-index:100;
  backdrop-filter:blur(4px);
  animation:fadeIn var(--t2) ease;
}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
.modal-box{
  background:var(--n0);border-radius:var(--r24);padding:28px;
  box-shadow:var(--sh-xl);
  animation:slideUp var(--t2) ease;
}
@keyframes slideUp{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:translateY(0);}}
.modal-box h2{font-family:var(--fd);font-size:17px;font-weight:700;margin-bottom:20px;letter-spacing:-.2px;}

/* ══════════════════════════
   FUNCIONÁRIO
══════════════════════════ */
.func-page{
  min-height:100vh;background:var(--n100);
  display:flex;justify-content:center;padding:20px 16px;
}
.func-shell{
  width:100%;max-width:400px;background:var(--n0);
  border-radius:28px;overflow:hidden;
  box-shadow:var(--sh-xl);min-height:520px;
  display:flex;flex-direction:column;
}

/* Acesso */
.acesso-body{padding:44px 26px 36px;flex:1;}
.acesso-logo{text-align:center;margin-bottom:32px;}
.acesso-logo h1{
  font-family:var(--fd);font-size:30px;font-weight:700;
  color:var(--b500);letter-spacing:-.8px;
}
.acesso-logo .empresa-nome{font-size:15px;font-weight:600;color:var(--n900);margin-top:8px;}
.acesso-logo .instrucao{font-size:12.5px;color:var(--n400);margin-top:5px;}
.acesso-dica{
  margin-top:22px;padding:13px 15px;
  background:var(--b25);border-radius:var(--r12);
  border-left:3px solid var(--b300);
  font-size:11.5px;color:var(--b600);line-height:1.6;
}

/* Header funcionário */
.func-header{
  background:linear-gradient(155deg,var(--b700) 0%,var(--b500) 100%);
  padding:22px 22px 44px;color:#fff;position:relative;flex-shrink:0;
}
.func-header::after{
  content:'';position:absolute;bottom:0;left:0;right:0;
  height:28px;background:var(--n0);border-radius:24px 24px 0 0;
}
.func-header .empresa{font-size:11px;opacity:.65;margin-bottom:5px;letter-spacing:.03em;}
.func-header .saudacao{font-size:17px;font-weight:600;}
.saldo-card{
  background:rgba(255,255,255,.12);border-radius:var(--r16);
  padding:16px;margin-top:16px;backdrop-filter:blur(8px);
}
.saldo-card .label{font-size:11px;opacity:.75;margin-bottom:6px;letter-spacing:.02em;}
.saldo-card .valor{
  font-family:var(--fd);font-size:38px;font-weight:700;letter-spacing:-1.5px;line-height:1;
}
.saldo-card .sub{font-size:11.5px;opacity:.65;margin-top:5px;}
.progress-bar{background:rgba(255,255,255,.18);border-radius:var(--rfull);height:5px;margin-top:12px;}
.progress-fill{background:#fff;border-radius:var(--rfull);height:5px;transition:width .6s ease;}

/* Body funcionário */
.func-body{padding:18px 22px;flex:1;}

/* Nav header funcional */
.func-nav-header{
  display:flex;align-items:center;gap:12px;
  padding:16px 20px;border-bottom:1px solid var(--n100);flex-shrink:0;
}
.func-nav-header .back-btn{
  background:var(--n50);border:none;border-radius:var(--r8);
  width:32px;height:32px;font-size:18px;color:var(--n600);
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:all var(--t2);flex-shrink:0;
}
.func-nav-header .back-btn:hover{background:var(--n100);}
.func-nav-header h2{font-family:var(--fd);font-size:16px;font-weight:700;letter-spacing:-.2px;}

/* Transações */
.trans-group-label{
  font-size:10.5px;font-weight:700;color:var(--n400);
  text-transform:uppercase;letter-spacing:.1em;margin:16px 0 8px;
}
.trans-item{
  display:flex;justify-content:space-between;align-items:center;
  padding:11px 0;border-bottom:1px solid var(--n100);
}
.trans-item:last-child{border-bottom:none;}
.trans-icon{
  width:38px;height:38px;border-radius:var(--r12);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;flex-shrink:0;
}
.trans-icon.aprovada{background:var(--ok-bg);color:var(--ok-fg);}
.trans-icon.descontada{background:var(--n100);color:var(--n500);}
.trans-info{flex:1;margin-left:11px;}
.trans-info .valor{font-size:14px;font-weight:600;}
.trans-info .meta{font-size:11px;color:var(--n400);margin-top:1px;}

/* Resumo */
.resumo-box{
  background:var(--n50);border:1px solid var(--n100);
  border-radius:var(--r12);padding:15px 16px;margin-bottom:18px;
}
.resumo-box h3{font-size:12px;font-weight:700;color:var(--n700);margin-bottom:10px;letter-spacing:.02em;text-transform:uppercase;}
.resumo-row{display:flex;justify-content:space-between;padding:5px 0;}
.resumo-row.divisor{border-bottom:1px dashed var(--n200);margin-bottom:5px;padding-bottom:8px;}
.resumo-row .rl{font-size:12.5px;color:var(--n600);}
.resumo-row .rr{font-size:12.5px;font-weight:500;color:var(--n600);}
.resumo-row.destaque .rl{font-weight:700;color:var(--n900);}
.resumo-row.destaque .rr{font-weight:700;color:var(--n900);}
.resumo-nota{font-size:10.5px;color:var(--n400);margin-top:6px;font-style:italic;}

/* Valor input */
.valor-input-wrap{
  border:2px solid var(--b400);border-radius:var(--r12);
  padding:14px 16px;display:flex;align-items:center;gap:8px;
  margin-bottom:6px;transition:all var(--t2);background:var(--n0);
}
.valor-input-wrap:focus-within{border-color:var(--b500);box-shadow:0 0 0 3px rgba(82,183,136,.15);}
.valor-input-wrap .prefix{font-size:15px;color:var(--n400);font-weight:500;}
.valor-input-wrap input{
  border:none;outline:none;font-family:var(--fd);
  font-size:28px;font-weight:700;color:var(--n900);
  width:100%;background:transparent;letter-spacing:-.5px;
}
.valor-hint{font-size:11px;color:var(--n400);margin-bottom:18px;}

.link-cancel{
  display:block;text-align:center;font-size:13px;
  color:var(--n400);cursor:pointer;margin-top:10px;
  background:none;border:none;width:100%;font-family:var(--fb);
  transition:color var(--t2);
}
.link-cancel:hover{color:var(--n700);}

/* Sucesso */
.sucesso-box{text-align:center;padding:48px 28px;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.sucesso-box .icone{
  width:72px;height:72px;border-radius:50%;
  background:var(--ok-bg);display:flex;align-items:center;justify-content:center;
  font-size:32px;margin-bottom:18px;
}
.sucesso-box h2{font-family:var(--fd);font-size:20px;font-weight:700;margin-bottom:8px;letter-spacing:-.3px;}
.sucesso-box p{font-size:13px;color:var(--n500);line-height:1.6;}