:root{
  --brand:#1d4ed8; --brand-600:#1e40af; --brand-50:#eef2ff;
  --ink:#0f172a; --muted:#64748b; --line:#e2e8f0; --bg:#f4f6fb;
  --side:#0b1736; --side-2:#13224a; --side-ink:#c7d2fe;
  --ok:#059669; --warn:#d97706; --bad:#dc2626;
  --radius:14px;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:14.5px}
a{color:var(--brand)}
.btn-primary{--bs-btn-bg:var(--brand);--bs-btn-border-color:var(--brand);--bs-btn-hover-bg:var(--brand-600);--bs-btn-hover-border-color:var(--brand-600)}
.text-muted{color:var(--muted)!important}
/* layout */
.app{display:flex;min-height:100vh}
.sidebar{width:250px;background:linear-gradient(180deg,var(--side),#0a1430);color:var(--side-ink);position:fixed;inset:0 auto 0 0;overflow-y:auto;z-index:1040;transition:transform .2s}
.sidebar .brand{display:flex;align-items:center;gap:.7rem;padding:1.15rem 1.2rem;color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.07)}
.sidebar .brand img,.sidebar .brand .logo{width:38px;height:38px;border-radius:10px;object-fit:cover;background:#2c4bd6;display:grid;place-items:center;font-weight:800;color:#fff}
.sidebar .brand .name{font-weight:700;line-height:1.15;font-size:.98rem}
.sidebar .brand small{display:block;color:#8fa2d8;font-weight:500;font-size:.72rem}
.nav-section{font-size:.68rem;letter-spacing:.09em;text-transform:uppercase;color:#6d80b8;padding:1rem 1.25rem .35rem}
.sidebar .nav-link{color:var(--side-ink);display:flex;align-items:center;gap:.7rem;padding:.55rem 1.25rem;margin:1px .6rem;border-radius:9px;font-weight:500}
.sidebar .nav-link i{font-size:1.05rem;opacity:.85}
.sidebar .nav-link:hover{background:var(--side-2);color:#fff}
.sidebar .nav-link.active{background:#2747d0;color:#fff;box-shadow:0 6px 16px -8px rgba(39,71,208,.8)}
.sidebar .nav-link.cta{background:#10b981;color:#04281c;font-weight:700;margin-top:.6rem}
.sidebar .nav-link.cta:hover{background:#34d399}
.main{flex:1;margin-left:250px;min-width:0}
.topbar{background:#fff;border-bottom:1px solid var(--line);padding:.65rem 1.5rem;display:flex;align-items:center;gap:1rem;position:sticky;top:0;z-index:1030}
.topbar .search{position:relative;flex:1;max-width:460px}
.topbar .search input{padding-left:2.3rem;border-radius:10px;background:#f8fafc}
.topbar .search i{position:absolute;left:.8rem;top:50%;transform:translateY(-50%);color:var(--muted)}
.search-results{position:absolute;top:110%;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 40px -12px rgba(15,23,42,.25);overflow:hidden;display:none;z-index:2000}
.search-results a{display:flex;justify-content:space-between;gap:1rem;padding:.6rem .9rem;text-decoration:none;color:var(--ink);border-bottom:1px solid #f1f5f9}
.search-results a:hover,.search-results a.active{background:var(--brand-50)}
.content{padding:1.5rem}
.page-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1.25rem}
.page-head h1{font-size:1.4rem;font-weight:700;margin:0}
.page-head .sub{color:var(--muted);font-size:.88rem;margin-top:.15rem}
/* cards */
.card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 2px rgba(15,23,42,.04)}
.card-header{background:#fff;border-bottom:1px solid var(--line);font-weight:700;padding:.85rem 1.1rem;border-radius:var(--radius) var(--radius) 0 0!important}
.stat{padding:1.1rem 1.2rem;display:flex;flex-direction:row;gap:1rem;align-items:center;height:100%}
.stat .ico{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;font-size:1.3rem;flex:none}
.stat .lbl{color:var(--muted);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.stat .val{font-size:1.35rem;font-weight:800;line-height:1.2}
.ico-blue{background:#e0e7ff;color:#3730a3}.ico-green{background:#d1fae5;color:#047857}.ico-red{background:#fee2e2;color:#b91c1c}.ico-amber{background:#fef3c7;color:#b45309}.ico-sky{background:#e0f2fe;color:#0369a1}
.table{--bs-table-bg:transparent;margin:0}
.table thead th{font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;background:#f8fafc;border-bottom:1px solid var(--line);white-space:nowrap}
.table td,.table th{padding:.65rem .8rem;vertical-align:middle}
.table-hover tbody tr:hover{background:#f8fafc}
.money{font-variant-numeric:tabular-nums;white-space:nowrap}
.badge-status{font-weight:600;font-size:.72rem;padding:.38em .7em}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--brand-50);color:var(--brand);display:grid;place-items:center;font-weight:700;font-size:.8rem;flex:none}
.avatar.lg{width:64px;height:64px;font-size:1.3rem}
.form-label{font-weight:600;font-size:.85rem;margin-bottom:.3rem}
.form-control,.form-select{border-radius:9px;border-color:#d5dbe6}
.form-control:focus,.form-select:focus{border-color:#93a7f5;box-shadow:0 0 0 .2rem rgba(29,78,216,.12)}
.filters{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:.85rem;margin-bottom:1rem}
.empty{padding:3rem 1rem;text-align:center;color:var(--muted)}
.empty i{font-size:2.4rem;display:block;margin-bottom:.5rem;opacity:.5}
/* chart */
.bars{display:flex;align-items:flex-end;gap:1rem;height:300px;padding:.5rem .25rem 0}
.bars .grp{flex:1;display:flex;flex-direction:column;align-items:center;gap:.35rem;height:100%}
.bars .cols{flex:1;display:flex;align-items:flex-end;gap:4px;width:100%;justify-content:center}
.bars .bar{width:42%;max-width:28px;border-radius:6px 6px 2px 2px;min-height:2px;position:relative}
.bars .bar.b{background:#c7d2fe}.bars .bar.c{background:#10b981}
.bars .lab{font-size:.75rem;color:var(--muted)}
.legend-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:.3rem;vertical-align:-1px}
.progress{height:8px;border-radius:99px}
/* fee plan editor */
.fee-row.disabled td:not(:first-child){opacity:.45}
.net-cell{font-weight:700}
.sticky-total{position:sticky;bottom:0;background:#fff;border-top:2px solid var(--line);z-index:5}
.invoice-pick{border:1px solid var(--line);border-radius:12px;padding:.75rem .9rem;margin-bottom:.5rem;display:flex;gap:.75rem;align-items:center;cursor:pointer;background:#fff}
.invoice-pick:hover{border-color:#a5b4fc}
.invoice-pick.overdue{border-left:4px solid var(--bad)}
.kv{display:grid;grid-template-columns:140px 1fr;gap:.35rem .75rem;font-size:.9rem}
.kv dt{color:var(--muted);font-weight:500}
.kv dd{margin:0;font-weight:600}
.mobile-toggle{display:none}
@media (max-width: 991px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:none}
  .main{margin-left:0}
  .mobile-toggle{display:inline-flex}
  .content{padding:1rem}
  .topbar{padding:.6rem 1rem}
}
.backdrop{display:none;position:fixed;inset:0;background:rgba(2,6,23,.45);z-index:1035}
.backdrop.show{display:block}
@media print{.no-print{display:none!important}}
