:root{
  --bg1:#ffffff;
  --bg2:#f9fafb;
  --bg3:#f3f4f6;

  --card:#ffffff;
  --text:#111827;
  --muted:#6b7280;
  --border:#e5e7eb;

  --blue:#2563eb;
  --blue2:#3b82f6;

  --ok:#10b981;
  --err:#ef4444;

  --shadow: 0 8px 24px rgba(0,0,0,.06);
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial;
  color:var(--text);
  background: linear-gradient(180deg, var(--bg1) 0%, var(--bg2) 60%, var(--bg3) 100%);
  overflow-x:hidden;
}

a{color:inherit;text-decoration:none}
.container{max-width:1100px;margin:0 auto;padding:20px}
.muted{color:var(--muted)}
hr.sep{border:0;border-top:1px solid var(--border);margin:14px 0}

/* Topbar */
.topbar{
  position:sticky; top:0; z-index:50;
  background:#fff;
  border-bottom:1px solid var(--border);
}
.topbar__inner{
  max-width:1100px;margin:0 auto; padding:14px 20px;
  display:flex; align-items:center; gap:14px;
}
.brand{display:flex;align-items:center;gap:10px;font-weight:900;letter-spacing:.2px}
.brand__dot{width:10px;height:10px;border-radius:999px;background:linear-gradient(135deg,var(--blue),var(--blue2));box-shadow:0 0 0 6px rgba(37,99,235,.10)}
.badge{
  font-size:12px; padding:3px 10px; border-radius:999px;
  background: rgba(37,99,235,.10);
  border:1px solid rgba(37,99,235,.18);
  color: rgba(37,99,235,.95);
  font-weight:700;
}
.topbar__menu{display:none}

/* Nav */
.nav{display:flex;align-items:center;gap:6px;flex:1}
.nav__link{
  font-size:14px;
  padding:9px 12px;
  border-radius:12px;
  color: var(--muted);
  border:1px solid transparent;
  display:inline-flex;align-items:center;gap:8px;
}
.nav__link:hover{background:#f3f4f6; color:var(--text)}
.nav__link.is-active{
  background: rgba(37,99,235,.10);
  border-color: rgba(37,99,235,.18);
  color: var(--blue);
  font-weight:800;
}
.nav__spacer{flex:1}
.nav__user{display:flex;align-items:center;gap:10px}
.nav__userName{font-size:13px;color:var(--muted);font-weight:700}

/* Buttons */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:10px 12px;border-radius:12px;
  border:1px solid var(--border);
  background:#fff;
  color: var(--text);
  font-weight:800; font-size:14px;
  cursor:pointer;
}
.btn:hover{background:#f8fafc}
.btn--primary{
  background: linear-gradient(135deg, var(--blue), var(--blue2));
  color:#fff;
  border:none;
  box-shadow: 0 12px 26px rgba(37,99,235,.18);
}

.btn--danger{
  background:#fee2e2;
  border-color:#fecaca;
  color:#991b1b;
}
.btn--ghost{
  background: transparent;
  border-color: transparent;
  color: var(--muted);
}
.btn--ghost:hover{background:#f3f4f6;color:var(--text)}

/* Inputs */
.input, select, textarea{
  width:100%;
  padding:11px 12px;
  border-radius:12px;
  border:1px solid var(--border);
  background:#fff;
  color: var(--text);
  outline:none;
}
textarea{min-height:90px;resize:vertical}
.input:focus, select:focus, textarea:focus{
  border-color: rgba(37,99,235,.45);
  box-shadow: 0 0 0 4px rgba(37,99,235,.10);
}
label{font-size:13px;color:var(--text);font-weight:800}
.field{display:grid;gap:8px}
.grid{display:grid;gap:14px}
.grid-2{grid-template-columns: 1fr 1fr}
@media (max-width: 860px){ .grid-2{grid-template-columns:1fr} }

/* Cards */
.card{
  background: var(--card);
  border:1px solid var(--border);
  border-radius:18px;
  box-shadow: var(--shadow);
}
.card__hd{padding:14px 16px 0 16px; display:flex; align-items:flex-start; justify-content:space-between; gap:10px}
.card__title{margin:0;font-size:16px}
.card__sub{margin:6px 0 0 0; color:var(--muted); font-size:13px}
.card__bd{padding:16px}

/* Table */
.tablewrap{overflow:auto;border-radius:14px;border:1px solid var(--border); background:#fff}
table{width:100%;border-collapse:collapse;min-width:720px}
th,td{padding:12px;border-bottom:1px solid var(--border);text-align:left;font-size:14px}
th{background:#f9fafb;font-size:12px;letter-spacing:.4px;text-transform:uppercase;color:var(--muted)}
tr:hover td{background:#f9fafb}
.td-actions{white-space:nowrap}

/* Pills */
.pill{
  display:inline-flex;align-items:center;gap:8px;
  padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800;
  border:1px solid var(--border);
  background: #f9fafb;
  color: var(--muted);
}
.pill--ok{border-color: rgba(16,185,129,.25); background: rgba(16,185,129,.10); color:#047857}
.pill--err{border-color: rgba(239,68,68,.25); background: rgba(239,68,68,.10); color:#b91c1c}
.pill--blue{border-color: rgba(37,99,235,.25); background: rgba(37,99,235,.10); color:#1e40af}

/* Toast */
.toast{
  display:flex; align-items:center; gap:10px;
  padding:12px 14px; border-radius:14px;
  border:1px solid var(--border);
  background: #fff;
  margin: 10px 0 16px 0;
  box-shadow: var(--shadow);
}
.toast__dot{width:10px;height:10px;border-radius:999px;background:var(--blue)}
.toast--ok .toast__dot{background:var(--ok)}
.toast--err .toast__dot{background:var(--err)}

/* Footer */
.footer{padding:18px 0;color:var(--muted)}
.footer__inner{display:flex;justify-content:space-between;gap:12px}
@media (max-width: 600px){ .footer__inner{flex-direction:column;align-items:flex-start} }

/* Auth page */
.auth{
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:20px;
  background:
    radial-gradient(900px 420px at 50% 8%, rgba(37,99,235,.10), transparent 65%),
    linear-gradient(180deg, var(--bg1) 0%, var(--bg2) 60%, var(--bg3) 100%);
}
.authCard{
  background:#ffffff;
  border:1px solid #e5e7eb;
  border-radius:18px;
  box-shadow:
    0 20px 40px rgba(15,23,42,.08),
    0 2px 6px rgba(15,23,42,.04);
  padding:30px;
  width:100%;
  max-width:420px;
}
.authTitle{margin:0;font-size:20px}
.authHint{margin:8px 0 0 0;color:var(--muted);font-size:13px}
.authBrand{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.authRow{display:grid;gap:10px;margin-top:14px}

/* Mobile nav */
@media (max-width: 860px){
  .topbar__menu{display:inline-flex}
  .nav{
    position:fixed; left:14px; right:14px; top:64px;
    background: #fff;
    border:1px solid var(--border);
    border-radius:18px;
    padding:10px;
    display:none;
    flex-direction:column;
    align-items:stretch;
    gap:6px;
    box-shadow: var(--shadow);
  }
  .nav.is-open{display:flex}
  .nav__spacer{display:none}
  .nav__user{width:100%; justify-content:space-between; padding-top:6px; border-top:1px solid var(--border)}
  .nav__link{width:100%}
  .topbar__inner{justify-content:space-between}
}

/* Helpers */
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.row--between{justify-content:space-between}
.kpi{display:grid;gap:6px}
.kpi__num{font-size:24px;font-weight:1000}
.kpi__lbl{font-size:13px;color:var(--muted)}

/* Mobile table -> cards */
@media (max-width: 768px){
  table{display:block;min-width:100%}
  thead{display:none}
  tbody,tr,td{display:block;width:100%}
  tr{
    background:#fff;
    margin-bottom:12px;
    border:1px solid var(--border);
    border-radius:14px;
    padding:10px 12px;
  }
  td{border:none;padding:6px 0}
}


/* ===== KPI Cards ===== */
.kpiGrid{
  display:grid;
  grid-template-columns: repeat(6, 1fr);
  gap:14px;
}
.kpiCard{
  background:#fff;
  border:1px solid var(--border);
  border-radius:18px;
  box-shadow: var(--shadow);
  padding:14px 14px;
  display:flex;
  align-items:center;
  gap:12px;
  min-height:72px;
}
.kpiIcon{
  width:42px;height:42px;
  border-radius:14px;
  display:grid;
  place-items:center;
  background: rgba(37,99,235,.10);
  border:1px solid rgba(37,99,235,.18);
  font-size:18px;
}
.kpiMeta{display:grid;gap:4px;min-width:0}
.kpiVal{font-size:20px;font-weight:1000;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpiLbl{font-size:12px;color:var(--muted);font-weight:800;letter-spacing:.2px}

@media (max-width: 1100px){
  .kpiGrid{grid-template-columns: repeat(3, 1fr);}
}
@media (max-width: 640px){
  .kpiGrid{grid-template-columns: repeat(2, 1fr);}
}

/* ===== Calendar Month View ===== */
.calHead{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 0 10px 0;
}
.calTitle{
  font-weight:1000;
  font-size:16px;
  padding:0 6px;
}
.calGrid{
  display:grid;
  grid-template-columns: repeat(7, 1fr);
  gap:10px;
}
.calDow{
  font-size:12px;
  color:var(--muted);
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.4px;
  padding:0 2px;
}
.calCell, .calCell--empty{
  background:#fff;
  border:1px solid var(--border);
  border-radius:16px;
  min-height:74px;
  padding:10px;
  position:relative;
  box-shadow: var(--shadow);
}
.calCell{display:block}
.calCell:hover{border-color: rgba(37,99,235,.35); box-shadow: 0 10px 28px rgba(0,0,0,.08)}
.calCell--empty{background: transparent; border:1px dashed rgba(229,231,235,.9); box-shadow:none}
.calDayNum{font-weight:1000;font-size:14px}
.calBadge{
  position:absolute;
  bottom:10px; right:10px;
  min-width:24px;
  height:22px;
  border-radius:999px;
  display:grid;
  place-items:center;
  font-size:12px;
  font-weight:1000;
  background: rgba(37,99,235,.12);
  border:1px solid rgba(37,99,235,.20);
  color: rgba(37,99,235,.95);
}
.calBadge--zero{
  background: transparent;
  border-color: transparent;
  color: transparent;
}
.calCell.is-selected{
  border-color: rgba(37,99,235,.55);
  box-shadow: 0 14px 34px rgba(37,99,235,.16);
}
.calCell.is-today .calDayNum::after{
  content:' •';
  color: var(--blue);
  font-weight:1000;
}

@media (max-width: 860px){
  .calGrid{gap:8px}
  .calCell, .calCell--empty{min-height:64px;padding:8px;border-radius:14px}
}


/* Modal */
.modal{position:fixed;inset:0;display:none;z-index:200}
.modal.is-open{display:block}
.modal__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.45);backdrop-filter:saturate(120%) blur(2px)}
.modal__dialog{
  position:relative;
  width:min(680px, calc(100% - 24px));
  margin:60px auto;
  background:#fff;
  border:1px solid var(--border);
  border-radius:18px;
  box-shadow: 0 30px 80px rgba(15,23,42,.25);
  overflow:hidden;
}
.modal__hd{
  padding:14px 16px;
  border-bottom:1px solid var(--border);
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  background: linear-gradient(180deg, #fff, #fafafa);
}
.modal__title{font-weight:1000;font-size:16px}
.modal__bd{padding:16px}
@media (max-width: 860px){
  .modal__dialog{margin:18px auto}
}

/* ===== PREMIUM BUTTON UPGRADE ===== */

.btn{
  transition: all .18s ease;
}

.btn--primary:hover{
  background: linear-gradient(135deg, #1e4ed8, #2563eb);
  box-shadow: 0 14px 32px rgba(37,99,235,.25);
  transform: translateY(-1px);
}

.btn--primary:active{
  transform: translateY(1px);
  box-shadow: 0 6px 16px rgba(37,99,235,.18);
}

.btn--danger{
  background: linear-gradient(135deg, #ef4444, #dc2626);
  color:#fff;
  border:none;
  box-shadow: 0 10px 24px rgba(239,68,68,.18);
}

.btn--danger:hover{
  background: linear-gradient(135deg, #dc2626, #b91c1c);
  box-shadow: 0 14px 32px rgba(239,68,68,.25);
  transform: translateY(-1px);
}

.btn--ghost{
  background: rgba(37,99,235,.05);
  border:1px solid rgba(37,99,235,.15);
  color: var(--blue);
}

.btn--ghost:hover{
  background: rgba(37,99,235,.10);
  border-color: rgba(37,99,235,.35);
  color: var(--blue);
  transform: translateY(-1px);
}


/* ===== KPI CARDS (Premium lighter + consistent) ===== */
.kpiGrid{
  gap:12px;
}

.kpiCard{
  min-height:82px;
  padding:12px 14px;
  border-radius:18px;
  border:1px solid rgba(229,231,235,.95);
  box-shadow: 0 6px 18px rgba(15,23,42,.06);
  align-items:center;
}

.kpiIcon{
  width:44px;
  height:44px;
  border-radius:16px;
  background: rgba(37,99,235,.08);
  border:1px solid rgba(37,99,235,.14);
}

.kpiMeta{
  flex:1;
  min-width:0;
}

.kpiVal{
  font-size:18px;
  font-weight:1000;
  letter-spacing:-.2px;
  line-height:1.15;
}

.kpiLbl{
  font-size:12px;
  color:var(--muted);
  font-weight:800;
  line-height:1.2;
}

/* Keep numbers tidy (e.g., "R$ 25,00") */
.kpiVal, .kpiLbl{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Hover feel: subtle, not heavy */
.kpiCard:hover{
  border-color: rgba(37,99,235,.22);
  box-shadow: 0 10px 26px rgba(15,23,42,.08);
  transform: translateY(-1px);
}

/* Reduce visual weight on small screens */
@media (max-width: 640px){
  .kpiCard{min-height:76px;padding:12px}
  .kpiIcon{width:42px;height:42px}
  .kpiVal{font-size:17px}
}
