/* ============================================================
   Book Sales Hisab — premium accounting console
   Fonts bundled locally (works fully offline on the LAN).
   ============================================================ */
@font-face{font-family:'Inter';src:url('../fonts/inter-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Inter';src:url('../fonts/inter-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Inter';src:url('../fonts/inter-600.woff2') format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:'Inter';src:url('../fonts/inter-700.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'Plex Mono';src:url('../fonts/plexmono-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Plex Mono';src:url('../fonts/plexmono-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Plex Mono';src:url('../fonts/plexmono-600.woff2') format('woff2');font-weight:600;font-display:swap}

:root{
  color-scheme:light;
  --paper:#f4f5f7;          /* app background            */
  --paper-2:#eaecf0;
  --surface:#ffffff;        /* cards                     */
  --surface-2:#f7faf9;      /* subtle raised surface     */
  --input-bg:#fbfdfc;
  --row-hover:#f9fbfa;
  --line-soft:#eef2f0;
  --ink:#12201d;            /* primary text              */
  --ink-soft:#5c6a65;       /* secondary text            */
  --ink-faint:#93a099;
  --line:#e2e8e5;           /* hairlines / borders       */
  --brand:#1f7ce8;          /* brand blue (logo)         */
  --brand-deep:#0b3a78;     /* sidebar bottom            */
  --brand-top:#1a6fd6;      /* sidebar top               */
  --brand-tint:#e8f1fd;
  --cash:#9a6b12;           /* brass — cash              */
  --cash-tint:#f6efdf;
  --digital:#a5266b;        /* magenta — digital money   */
  --digital-tint:#f7e6f0;
  --out:#a8412e;            /* clay — money out/expense  */
  --out-tint:#f6e5e0;
  --ok:#0f6d55;
  --radius:14px;
  --radius-sm:10px;
  --shadow:0 1px 2px rgba(16,32,29,.04),0 6px 20px rgba(16,32,29,.06);
  --shadow-lift:0 2px 6px rgba(16,32,29,.06),0 14px 34px rgba(16,32,29,.10);
  --sidebar-w:248px;
  --mono:'Plex Mono',ui-monospace,'Cascadia Mono','Segoe UI Mono',Menlo,Consolas,monospace;
  --sans:'Inter',system-ui,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--sans);
  color:var(--ink);
  background:
    radial-gradient(900px 520px at 100% -8%, rgba(32,128,240,.07), transparent 62%),
    radial-gradient(760px 460px at -6% 4%, rgba(154,107,18,.05), transparent 58%),
    linear-gradient(180deg,#f6f7f9 0%, #eaecf0 100%);
  background-attachment:fixed;
  letter-spacing:-.006em;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  line-height:1.5;
}
a{color:inherit;text-decoration:none}

/* ---------- Sidebar ---------- */
.sidebar{
  position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);
  background:linear-gradient(185deg,var(--brand-top) 0%,var(--brand-deep) 100%);
  color:#dce9e5;display:flex;flex-direction:column;
  padding:22px 16px 16px;z-index:40;
  border-right:1px solid rgba(255,255,255,.04);
}
.brand{display:block;padding:2px 4px 18px}
.brand-logo{display:block;width:100%;background:#fff;border-radius:12px;padding:14px 16px;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.brand-cap{display:block;text-align:center;margin:12px 2px 0;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#a9c8ee;font-weight:600}
.brand-mark{
  width:40px;height:40px;border-radius:11px;flex:0 0 auto;
  background:linear-gradient(160deg,#e8b04b,#b9832a);
  color:#2a1c05;font-weight:700;font-size:16px;letter-spacing:.02em;
  display:flex;align-items:center;justify-content:center;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 4px 10px rgba(0,0,0,.25);
}
.brand-text{display:flex;flex-direction:column;line-height:1.2}
.brand-name{font-weight:600;font-size:14.5px;color:#fff;letter-spacing:.01em}
.brand-sub{font-size:11px;color:#a9c8ee;letter-spacing:.06em;text-transform:uppercase;margin-top:2px}

.nav{display:flex;flex-direction:column;gap:2px;margin-top:6px}
.nav a{
  display:flex;align-items:center;gap:12px;
  padding:10px 12px;border-radius:10px;
  color:#c2d8f5;font-size:14px;font-weight:500;
  transition:background .15s,color .15s;
}
.nav a svg{width:19px;height:19px;flex:0 0 auto;opacity:.9}
.nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.nav a.active{background:rgba(255,255,255,.17);color:#fff;font-weight:600;box-shadow:inset 3px 0 0 #fff}
.nav a.active svg{color:#ffffff;opacity:1}
.side-foot{
  margin-top:auto;padding:14px 12px 4px;font-size:11.5px;color:#a9c8ee;
  letter-spacing:.03em;line-height:1.6;text-align:center;border-top:1px solid rgba(255,255,255,.06);
}
.side-foot span{color:#ffffff;font-weight:600}

/* ---------- Mobile top bar / drawer ---------- */
.topbar{display:none}
.scrim{display:none}
.navtoggle-cb{position:absolute}

/* ---------- Main ---------- */
.main{margin-left:var(--sidebar-w);min-height:100vh}
.main-inner{max-width:1080px;margin:0 auto;padding:34px 34px 60px}

/* ---------- Page head ---------- */
.page-head{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;margin-bottom:24px}
.eyebrow{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px}
.page-head h1{font-size:27px;line-height:1.12;font-weight:700;letter-spacing:-.028em;margin:0}
.page-head .sub{color:var(--ink-soft);font-size:13.5px;margin-top:4px}

/* ---------- Cards ---------- */
.card{
  --accent:var(--brand);
  background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--accent);
  border-radius:var(--radius);padding:20px 22px 22px;margin-bottom:18px;
  box-shadow:var(--shadow),0 7px 16px -12px color-mix(in srgb,var(--accent) 65%,transparent);
}
.card--gold{--accent:var(--cash)}
.card--green{--accent:var(--ok)}
.card--red{--accent:var(--out)}
.card--magenta{--accent:var(--digital)}
.card--blue{--accent:var(--brand)}
.card,.bal,.stat,.book-block{transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}
.card:hover,.bal:hover,.stat:hover,.book-block:hover{
  border-color:var(--line);border-top-color:var(--accent);transform:translateY(-1px);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 40%,transparent),
             0 14px 32px -6px color-mix(in srgb,var(--accent) 32%,transparent);
}
.card h2{font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0 0 14px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.card-head h2{margin:0}

/* ---------- Balance hero ---------- */
.balances{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
.bal{
  --accent:var(--brand);
  position:relative;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow),0 7px 16px -12px color-mix(in srgb,var(--accent) 60%,transparent);
  padding:20px 22px;overflow:hidden;
}
.bal.cash{--accent:var(--cash)}
.bal.digital{--accent:var(--digital)}
.bal::before{content:"";position:absolute;left:0;right:0;top:0;height:4px}
.bal.cash::before{background:linear-gradient(90deg,var(--cash),#c79a3a)}
.bal.digital::before{background:linear-gradient(90deg,var(--digital),#c74d8f)}
.bal .lab{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.bal .amt{font-family:var(--mono);font-weight:600;font-size:34px;letter-spacing:-.01em;margin-top:10px;font-variant-numeric:tabular-nums}
.bal.cash .amt{color:var(--cash)}
.bal.digital .amt{color:var(--digital)}
.bal .meta{font-size:12.5px;color:var(--ink-faint);margin-top:8px}

/* ---------- Stat strip ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.stat{--accent:var(--brand);background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:var(--radius-sm);padding:12px 16px 14px;box-shadow:var(--shadow),0 6px 14px -12px color-mix(in srgb,var(--accent) 55%,transparent)}
.stat.out{--accent:var(--out)}
.stat .k{font-size:11.5px;color:var(--ink-soft);font-weight:500;letter-spacing:.02em}
.stat .v{font-family:var(--mono);font-size:19px;font-weight:500;margin-top:6px;font-variant-numeric:tabular-nums}
.stat.out .v{color:var(--out)}

/* ---------- Figures ---------- */
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.total-rule{border-top:2px solid var(--ink);box-shadow:0 3px 0 -1px var(--ink)} /* accounting double rule */

/* ---------- Forms ---------- */
.field{margin-bottom:16px}
.field > label{display:block;font-size:13px;font-weight:600;margin-bottom:7px;color:var(--ink)}
.field .hint{font-weight:400;color:var(--ink-faint);font-size:12px}
input,select,textarea{
  width:100%;font-family:var(--sans);font-size:14.5px;color:var(--ink);
  background:var(--input-bg);border:1px solid var(--line);border-radius:10px;
  padding:11px 13px;transition:border-color .15s,box-shadow .15s;
}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(32,128,240,.16);background:var(--surface);
}
input[inputmode="decimal"],input[type="number"]{font-family:var(--mono);font-variant-numeric:tabular-nums}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.taka-input{position:relative}
.taka-input::before{content:"Tk";position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--ink-faint);font-size:13px;font-family:var(--mono)}
.taka-input input{padding-left:38px}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--sans);font-size:14px;font-weight:600;line-height:1;
  padding:11px 18px;border-radius:10px;border:1px solid transparent;cursor:pointer;
  transition:transform .05s,box-shadow .15s,background .15s,border-color .15s;
}
.btn:active{transform:translateY(1px)}
.btn-sm{padding:8px 13px;font-size:13px}
.btn-block{width:100%}
.btn-primary{background:var(--brand);color:#fff;box-shadow:0 2px 8px rgba(32,128,240,.28)}
.btn-primary:hover{background:#1668cf}
.btn-ghost{background:var(--surface);border-color:var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:var(--ink-faint);background:var(--surface-2)}
.btn-danger{background:var(--surface);border-color:var(--out-tint);color:var(--out)}
.btn-danger:hover{background:var(--out-tint)}
.btn-gold{background:linear-gradient(160deg,#d59f3c,#b9832a);color:#2a1c05;box-shadow:0 2px 8px rgba(155,107,18,.25)}

/* ---------- Badges ---------- */
.badge{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;padding:4px 9px;border-radius:999px;letter-spacing:.02em}
.badge.sale{background:var(--brand-tint);color:var(--brand)}
.badge.expense{background:var(--out-tint);color:var(--out)}
.badge.settlement{background:var(--cash-tint);color:var(--cash)}

/* ---------- Tables ---------- */
.table-wrap{overflow-x:auto;margin:0 -6px}
table{width:100%;border-collapse:collapse;font-size:13.5px}
thead th{
  text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-soft);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;
}
thead th.right{text-align:right}
tbody td{padding:12px;border-bottom:1px solid var(--line-soft);vertical-align:top}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--row-hover)}
.muted{color:var(--ink-faint);font-size:12.5px}
.book-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}
.chip{font-size:11.5px;background:var(--brand-tint);color:var(--brand);border-radius:7px;padding:2px 8px;font-weight:500}
.chip .q{font-family:var(--mono);font-weight:600}

/* per-book report */
.book-block{--accent:var(--cash);border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:12px;overflow:hidden;margin-bottom:12px;box-shadow:0 6px 16px -12px color-mix(in srgb,var(--accent) 55%,transparent)}
.book-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:var(--surface-2)}
.book-top .name{font-weight:600;font-size:15px}
.book-top .figs{display:flex;gap:22px;align-items:baseline}
.book-top .figs .q{font-family:var(--mono);font-weight:600;font-size:15px}
.book-top .figs .r{font-family:var(--mono);font-weight:600;font-size:15px;color:var(--cash)}
.book-top .figs small{display:block;font-size:10.5px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em;font-weight:600;text-align:right}
.tier-row td{font-size:13px}
.tier-row td:first-child{color:var(--ink-soft);padding-left:16px}

/* ---------- Line items editor ---------- */
.items-head,.item-row{display:grid;grid-template-columns:1fr 92px 116px 116px 40px;gap:10px;align-items:center}
.items-head{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);padding:0 2px 6px}
.items-head .r{text-align:right}
.item-row{margin-bottom:10px}
.item-row .lt{font-family:var(--mono);text-align:right;font-size:14px;color:var(--ink);padding-right:4px;font-variant-numeric:tabular-nums}
.item-row input{margin:0}
.row-del{border:none;background:none;color:var(--ink-faint);cursor:pointer;font-size:20px;line-height:1;padding:6px;border-radius:8px}
.row-del:hover{color:var(--out);background:var(--out-tint)}
.items-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:6px;padding-top:14px;border-top:1px solid var(--line)}
.grand{font-family:var(--mono);font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}
.add-line{background:var(--brand-tint);color:var(--brand);border:1px dashed rgba(32,128,240,.4);border-radius:10px;padding:9px 14px;font-weight:600;font-size:13px;cursor:pointer;width:100%}
.add-line:hover{background:#dcebe7}

/* ---------- Filters ---------- */
.filters{display:grid;grid-template-columns:1.2fr 1fr 1fr auto auto;gap:12px;align-items:end}
.filters .field{margin:0}
.quick-range{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.quick-range a{font-size:12px;color:var(--brand);background:var(--brand-tint);padding:5px 10px;border-radius:8px;font-weight:500}
.quick-range a:hover{background:#dcebe7}

/* ---------- Flash ---------- */
.flashes{margin-bottom:18px;display:flex;flex-direction:column;gap:10px}
.flash{padding:12px 15px;border-radius:11px;font-size:13.5px;font-weight:500;border:1px solid}
.flash-success{background:#e8f4ef;border-color:#c3e2d6;color:#0e6b4f}
.flash-error{background:var(--out-tint);border-color:#eccabf;color:var(--out)}

/* ---------- Expense breakdown ---------- */
.bd-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line-soft)}
.bd-row:last-child{border-bottom:none}
.bd-row .cat{font-weight:500}
.bd-row .cnt{color:var(--ink-faint);font-size:12px;margin-left:8px}
.bd-row .amt{font-family:var(--mono);color:var(--out);font-weight:500;font-variant-numeric:tabular-nums}

/* ---------- Empty ---------- */
.empty{text-align:center;color:var(--ink-faint);padding:38px 20px;font-size:14px}
.empty .big{font-family:var(--mono);font-size:15px;color:var(--ink-soft);margin-bottom:6px;letter-spacing:.04em}

/* ---------- Utility ---------- */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.right{text-align:right}
.spacer{flex:1}
.pill-note{font-size:12.5px;color:var(--ink-soft);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 13px}

/* ---------- Responsive ---------- */
@media (max-width:768px){
  .sidebar{transform:translateX(-100%);transition:transform .22s ease;box-shadow:0 0 40px rgba(0,0,0,.3)}
  .navtoggle-cb:checked ~ .sidebar{transform:translateX(0)}
  .navtoggle-cb:checked ~ .scrim{display:block;position:fixed;inset:0;background:rgba(10,20,18,.45);z-index:35}
  .main{margin-left:0}
  .topbar{
    display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:30;
    background:linear-gradient(180deg,var(--brand-top),var(--brand));color:#fff;
    padding:12px 16px;box-shadow:0 2px 10px rgba(10,46,42,.2);
  }
  .burger{display:flex;color:#fff;cursor:pointer;padding:2px}
  .topbar-brand{font-weight:600;letter-spacing:.02em}
  .main-inner{padding:20px 16px 56px}
  .balances{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr 1fr}
  .grid-2{grid-template-columns:1fr}
  .two{grid-template-columns:1fr}
  .filters{grid-template-columns:1fr 1fr}
  .page-head h1{font-size:22px}
  .items-head{display:none}
  .item-row{grid-template-columns:1fr 1fr;gap:8px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--input-bg)}
  .item-row .lt{grid-column:1 / 2;text-align:left}
  .item-row .row-del{grid-column:2 / 3;justify-self:end}
}
@media (prefers-reduced-motion:reduce){*{transition:none !important}}

/* ---------- Template helpers ---------- */
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.kv{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.kv:last-child{border-bottom:none}
.kv .k{color:var(--ink-soft);font-size:13.5px}
.kv .k .muted{margin-left:6px}
.kv .v{font-family:var(--mono);font-size:14.5px;font-weight:500;font-variant-numeric:tabular-nums}
.fig{font-family:var(--mono);font-variant-numeric:tabular-nums}
.fig.in{color:var(--ok)}
.fig.out{color:var(--out)}
.fig.dig{color:var(--digital)}
.inline-link{color:var(--brand);font-weight:600;font-size:13.5px}
.inline-link:hover{text-decoration:underline}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.dbl-rule{height:0;border-top:2px solid currentColor;opacity:.16;margin:12px 0 10px}
@media (max-width:768px){.grid-3{grid-template-columns:1fr}.actions .btn{flex:1 1 auto}}

/* ============================================================
   Theme toggle button (in sidebar)
   ============================================================ */
.theme-toggle{
  display:flex;align-items:center;gap:10px;width:100%;margin-top:10px;
  padding:10px 12px;border-radius:10px;
  border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);
  color:#eaf1fc;font-family:var(--sans);font-size:13.5px;font-weight:500;
  cursor:pointer;transition:background .15s,border-color .15s;
}
.theme-toggle:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.28)}
.theme-toggle svg{width:18px;height:18px;flex:0 0 auto}
.theme-toggle .i-sun{display:none}
.theme-toggle .i-moon{display:block}
.theme-toggle .tt-label::after{content:"Dark mode"}
:root[data-theme="dark"] .theme-toggle .i-sun{display:block}
:root[data-theme="dark"] .theme-toggle .i-moon{display:none}
:root[data-theme="dark"] .theme-toggle .tt-label::after{content:"Light mode"}

/* ============================================================
   DARK MODE  (applied when <html data-theme="dark">)
   ============================================================ */
:root[data-theme="dark"]{
  color-scheme:dark;
  --paper:#0d1524;
  --paper-2:#0a1120;
  --surface:#141d30;
  --surface-2:#1a2438;
  --input-bg:#111a2b;
  --row-hover:#1a2438;
  --line:#26324c;
  --line-soft:#20293f;
  --ink:#e8eef8;
  --ink-soft:#a6b6d0;
  --ink-faint:#6f819e;
  --brand:#3b8ef2;
  --brand-tint:#16243c;
  --cash:#e0ae4d;
  --cash-tint:#2a2213;
  --digital:#e56faa;
  --digital-tint:#2c1622;
  --out:#e57a60;
  --out-tint:#2c1a15;
  --ok:#43c78d;
  --shadow:0 1px 2px rgba(0,0,0,.40),0 8px 24px rgba(0,0,0,.45);
  --shadow-lift:0 2px 6px rgba(0,0,0,.50),0 18px 40px rgba(0,0,0,.55);
}
:root[data-theme="dark"] body{
  background:
    radial-gradient(900px 520px at 100% -8%, rgba(59,142,242,.12), transparent 62%),
    radial-gradient(760px 460px at -6% 4%, rgba(229,111,170,.07), transparent 58%),
    linear-gradient(180deg,#0d1524 0%, #0a1120 100%);
}
:root[data-theme="dark"] .flash-success{background:#122a20;border-color:#1f4a37;color:#5fd6a3}
:root[data-theme="dark"] .flash-error{background:#2c1a15;border-color:#5a2f24;color:#f0a08a}

/* Sale line-item book cell (select + manual entry) */
.b-cell{min-width:0}
.b-cell .b-sel,.b-cell .b-in{width:100%}

/* ============================================================
   Login / accounts / modal (added for the multi-user version)
   ============================================================ */
.boot,.loading{padding:60px 20px;text-align:center;color:var(--ink-faint);font-size:14px}
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--brand);border-radius:var(--radius);box-shadow:var(--shadow-lift);padding:28px 26px 22px}
.auth-card h1{font-size:23px;margin:6px 0 10px;text-align:center;letter-spacing:-.02em}
.auth-logo{display:block;width:70%;max-width:230px;margin:0 auto 14px;background:#fff;border-radius:12px;padding:12px 14px}
.auth-foot{margin-top:18px;text-align:center;font-size:11.5px;color:var(--ink-faint)}
.auth-foot span{color:var(--ink-soft);font-weight:600}
.auth-card .flash{margin-bottom:14px}
.auth-card .flash[hidden]{display:none}

.userchip{margin:auto 0 0;padding:12px;border-radius:10px;background:rgba(255,255,255,.08);color:#fff}
.userchip .uc-name{font-weight:600;font-size:14px}
.userchip .uc-role{font-size:11.5px;color:#a9c8ee;margin-top:2px}
.sidebar .nav{overflow-y:auto}
.side-foot{margin-top:12px}

.rowacts{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.btn-dangerfill{background:var(--out);color:#fff}
.btn-dangerfill:hover{filter:brightness(.92)}
.btn[disabled]{opacity:.6;cursor:progress}
.flash-warn{background:var(--cash-tint);border-color:#e6d5ae;color:var(--cash)}
.page-head .btn,.page-head a.btn{align-self:center}

.modal-back{position:fixed;inset:0;z-index:100;background:rgba(10,20,30,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.modal{width:100%;max-width:400px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lift);padding:22px}
.modal h2{margin:0 0 8px;font-size:17px}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}
.modal-err{background:var(--out-tint);color:var(--out);border-radius:9px;padding:9px 12px;font-size:13px;margin-top:4px}
.modal-err[hidden]{display:none}

.perm{display:flex;gap:11px;align-items:flex-start;padding:10px 4px;border-bottom:1px solid var(--line-soft);cursor:pointer;margin:0}
.perm:last-child{border-bottom:none}
.perm input{width:18px;height:18px;margin:2px 0 0;flex:0 0 auto;accent-color:var(--brand);padding:0}
.perm strong{font-size:13.5px;font-weight:600;display:block}
.perm small{display:block;color:var(--ink-faint);font-size:12px;margin-top:2px;line-height:1.4}
.preset-row{gap:10px}
.preset{border:1px solid var(--line);background:var(--brand-tint);color:var(--brand);font:600 13px var(--sans);padding:8px 14px;border-radius:999px;cursor:pointer}
.preset:hover{border-color:var(--brand)}
select{appearance:auto}
input[type=file]{padding:9px}
input[type=date]{font-family:var(--sans)}
[hidden]{display:none !important}
@media (max-width:768px){
  .sidebar{overflow-y:auto}
  .auth-card{padding:22px 18px}
  table.ledger-table td,table.ledger-table th{padding-left:8px;padding-right:8px}
}
