:root{
  --ink:#16222b; --ink-soft:#5b6b76; --line:#dbe2e6; --paper:#f4f6f7; --card:#ffffff;
  --petrol:#0e4f5f; --petrol-dark:#0a3844; --petrol-tint:#e4eff2;
  --income:#12704f; --expense:#a8342b; --amber:#b7791f;
  --bs-body-font-family:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --bs-body-color:var(--ink); --bs-body-bg:var(--paper); --bs-primary:#0e4f5f; --bs-primary-rgb:14,79,95;
  --bs-link-color:#0e4f5f; --bs-link-hover-color:#0a3844;
}
html,body{background:var(--paper);}
body{font-size:.925rem;font-feature-settings:"tnum" 1;}
.btn-primary{--bs-btn-bg:var(--petrol);--bs-btn-border-color:var(--petrol);--bs-btn-hover-bg:var(--petrol-dark);--bs-btn-hover-border-color:var(--petrol-dark);--bs-btn-active-bg:var(--petrol-dark);--bs-btn-active-border-color:var(--petrol-dark);}
.btn-outline-primary{--bs-btn-color:var(--petrol);--bs-btn-border-color:var(--petrol);--bs-btn-hover-bg:var(--petrol);--bs-btn-hover-border-color:var(--petrol);}
.form-control:focus,.form-select:focus{border-color:var(--petrol);box-shadow:0 0 0 .2rem rgba(14,79,95,.15);}
:focus-visible{outline:2px solid var(--petrol);outline-offset:2px;}

.app-shell{display:flex;min-height:100vh;}
.sidebar{width:248px;flex:0 0 248px;background:var(--petrol-dark);color:#dbe9ed;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;}
.brand{display:flex;gap:.7rem;align-items:center;padding:1.1rem 1.1rem .9rem;border-bottom:1px solid rgba(255,255,255,.1);}
.brand-mark{width:38px;height:38px;border-radius:9px;background:#f0c96b;color:#3b2a05;font-family:'IBM Plex Serif',serif;font-weight:600;font-size:1.35rem;display:grid;place-items:center;}
.brand-name{font-family:'IBM Plex Serif',serif;font-weight:600;color:#fff;line-height:1.1;}
.brand-org{font-size:.72rem;color:#9cbcc6;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sidebar .nav{padding:.5rem .6rem;flex:1;}
.nav-title{font-size:.72rem;color:#8fb0ba;margin:1rem .55rem .3rem;letter-spacing:.02em;}
.sidebar .nav-link{color:#cfe2e8;border-radius:7px;padding:.42rem .65rem;display:flex;align-items:center;gap:.6rem;font-size:.9rem;}
.sidebar .nav-link i{font-size:1rem;opacity:.85;}
.sidebar .nav-link:hover{background:rgba(255,255,255,.08);color:#fff;}
.sidebar .nav-link.active{background:#f0c96b;color:#2d2204;font-weight:500;}
.sidebar-foot{padding:.9rem 1rem;border-top:1px solid rgba(255,255,255,.1);}
.role-tag{background:rgba(255,255,255,.14);border-radius:4px;padding:0 .35rem;font-size:.7rem;margin-left:.2rem;}

.main{flex:1;min-width:0;display:flex;flex-direction:column;}
.topbar{display:flex;align-items:center;gap:.8rem;padding:.8rem 1.4rem;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;}
.page-title{font-family:'IBM Plex Serif',serif;font-size:1.25rem;font-weight:600;margin:0;}
.content{padding:1.3rem 1.4rem 2rem;flex:1;}
.foot{padding:.8rem 1.4rem;color:var(--ink-soft);font-size:.78rem;border-top:1px solid var(--line);background:#fff;}
.print-head{display:none;text-align:center;margin-bottom:.8rem;}
.ph-org{font-family:'IBM Plex Serif',serif;font-size:1.3rem;font-weight:600;}

.card{border:1px solid var(--line);border-radius:10px;background:var(--card);box-shadow:none;}
.card-header{background:#fff;border-bottom:1px solid var(--line);font-weight:600;border-radius:10px 10px 0 0 !important;}
.stat{padding:1rem 1.15rem;border-left:4px solid var(--line);}
.stat .lbl{color:var(--ink-soft);font-size:.8rem;}
.stat .val{font-size:1.5rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.25;}
.stat.income{border-left-color:var(--income);} .stat.expense{border-left-color:var(--expense);}
.stat.net{border-left-color:var(--petrol);} .stat.cash{border-left-color:var(--amber);}
.text-income{color:var(--income)!important;} .text-expense{color:var(--expense)!important;}

.filter-bar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:10px;padding:.8rem 1rem;margin-bottom:1rem;}
.filter-bar .form-label{font-size:.75rem;color:var(--ink-soft);margin-bottom:.15rem;}

/* ---- ledger-book tables ---- */
.table{--bs-table-bg:transparent;}
.table thead th{background:var(--petrol-tint);color:var(--petrol-dark);font-weight:600;font-size:.8rem;border-bottom:1px solid #c7dbe1;white-space:nowrap;}
.table td,.table th{vertical-align:middle;}
.amt{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
.book tfoot td,.book tr.total td{border-top:1px solid var(--ink);border-bottom:3px double var(--ink);font-weight:600;background:#fafbfb;}
.book tr.subtotal td{font-weight:600;background:#f7fafb;}
.book tr.group-row td{font-weight:600;color:var(--petrol-dark);background:#f1f6f8;}
.book tr.acct-row td:first-child{padding-left:1.6rem;}
.book .muted-amt{color:var(--ink-soft);}
.dr-cr-note{font-size:.75rem;color:var(--ink-soft);}

.t-format{table-layout:fixed;}
.t-format td.side-l{border-right:1px solid var(--line);}

.badge-type{font-weight:500;}
.voucher-paper{background:#fff;border:1px solid var(--line);border-radius:10px;padding:1.6rem 1.8rem;max-width:860px;}
.voucher-paper .vp-title{font-family:'IBM Plex Serif',serif;font-size:1.15rem;font-weight:600;}
.sign-row{display:flex;justify-content:space-between;margin-top:3.2rem;font-size:.8rem;color:var(--ink-soft);}
.sign-row div{border-top:1px solid var(--ink-soft);padding-top:.25rem;min-width:140px;text-align:center;}

.line-table td{padding:.3rem .35rem;}
.diff-ok{color:var(--income);} .diff-bad{color:var(--expense);}

.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(160deg,#0a3844 0%,#0e4f5f 60%,#14697d 100%);padding:1rem;}
.login-card{width:100%;max-width:400px;background:#fff;border-radius:14px;padding:2rem;}
.login-card .brand-mark{margin-bottom:1rem;}

@media (max-width:991.98px){
  .sidebar{position:fixed;left:-260px;z-index:50;transition:left .18s ease;height:100%;}
  .sidebar.open{left:0;box-shadow:0 0 0 100vmax rgba(0,0,0,.35);}
  .content{padding:1rem;}
}
@media (prefers-reduced-motion:reduce){.sidebar{transition:none;}}

@media print{
  @page{size:A4;margin:12mm;}
  body{background:#fff;font-size:11px;}
  .sidebar,.topbar,.foot,.no-print,.btn,.alert{display:none!important;}
  .content{padding:0;} .app-shell{display:block;}
  .print-head{display:block;}
  .card,.voucher-paper{border:none;box-shadow:none;padding:0;}
  .table thead th{background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
}
