:root{--navy:#1f3d7a;--orange:#f0782d;--bg:#f4f6fb;--card:#fff;--line:#e3e7ef;--text:#1d2433;--muted:#6b7488;--green:#1f9d55;--red:#d93a3a;--r:10px}
*{box-sizing:border-box}
html{font-size:16px}
body{margin:0;font-family:var(--font),'Noto Sans Bengali','SolaimanLipi',system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.55}
a{color:var(--navy)}
h1{font-size:1.45rem;margin:0}
h2{font-size:1.1rem;margin:0 0 .7rem;color:var(--navy)}
h3{font-size:1rem;margin:.6rem 0 0;color:var(--navy)}
small,.small{font-size:.85rem}
.muted{color:var(--muted)}
.c{text-align:center}.r{text-align:right}.b{font-weight:700}.nowrap{white-space:nowrap}
.neg{color:var(--red)}
.ok-text{color:var(--green);font-weight:600}
code{background:#eef1f7;padding:2px 6px;border-radius:4px;word-break:break-all}

/* ---- layout ---- */
.topbar{position:fixed;top:0;left:0;right:0;height:58px;background:var(--navy);color:#fff;display:flex;align-items:center;gap:12px;padding:0 16px;z-index:30}
.topbar .brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-weight:600;font-size:1.05rem;flex:1;min-width:0}
.topbar .brand span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar .brand img{height:38px;background:#fff;border-radius:8px;padding:3px}
.topbar .logout{color:#fff;opacity:.85;text-decoration:none;font-size:.95rem}
.menu-btn{display:none;background:none;border:0;color:#fff;font-size:1.6rem;cursor:pointer}
.sidebar{position:fixed;top:58px;left:0;bottom:0;width:230px;background:#fff;border-right:1px solid var(--line);padding:12px 10px;overflow:auto;z-index:20}
.sidebar a{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:8px;color:var(--text);text-decoration:none;margin-bottom:2px;font-weight:500}
.sidebar a:hover{background:#f1f4fa}
.sidebar a.on{background:var(--navy);color:#fff}
.sidebar .ic{width:22px;text-align:center}
.side-foot{margin-top:18px;padding:10px;font-size:.82rem;color:var(--muted);border-top:1px solid var(--line)}
.side-foot a{display:inline;padding:0;color:var(--orange)}
main{padding:20px;max-width:1300px;margin:0 auto}
main.with-nav{margin-left:230px;margin-top:58px;max-width:none}
.nav-shade{display:none}
@media (max-width:900px){
  .menu-btn{display:block}
  .sidebar{transform:translateX(-100%);transition:transform .2s}
  body.nav-open .sidebar{transform:none}
  body.nav-open .nav-shade{display:block;position:fixed;inset:58px 0 0 0;background:#0005;z-index:15}
  main.with-nav{margin-left:0}
  main{padding:14px}
}

.page-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:16px}
.page-head .actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;margin-bottom:16px;box-shadow:0 1px 2px #0000000a}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cols>.card{margin-bottom:16px}
@media (max-width:900px){.cols{grid-template-columns:1fr}}
@media (max-width:600px){.stats,.stats.big{grid-template-columns:1fr 1fr;gap:8px}.stat{padding:10px}.stat .val,.stats.big .val{font-size:1.15rem}}
.inline-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.inline-head h2{margin:0}

/* ---- stats ---- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;border-top:4px solid #c9d0de}
.stat .lbl{color:var(--muted);font-size:.9rem}
.stat .val{font-size:1.45rem;font-weight:700;margin-top:2px}
.stat .sub{font-size:.8rem;color:var(--muted)}
.stats.big .val{font-size:1.7rem}
.stat.blue{border-top-color:var(--navy)}.stat.blue .val{color:var(--navy)}
.stat.green{border-top-color:var(--green)}.stat.green .val{color:var(--green)}
.stat.orange{border-top-color:var(--orange)}.stat.orange .val{color:#c75712}
.stat.red{border-top-color:var(--red)}.stat.red .val{color:var(--red)}

/* ---- buttons / forms ---- */
.btn{display:inline-block;border:1px solid #cdd4e1;background:#fff;color:var(--text);padding:8px 14px;border-radius:8px;font:inherit;font-size:.95rem;cursor:pointer;text-decoration:none;line-height:1.3}
.btn:hover{background:#f3f5fa}
.btn.primary{background:var(--orange);border-color:var(--orange);color:#fff;font-weight:600}
.btn.primary:hover{background:#dd6820}
.btn.danger{color:var(--red);border-color:#f0c4c4}
.btn.sm{padding:4px 10px;font-size:.85rem}
.btn.big{padding:12px 26px;font-size:1.05rem}
.btn.wide{width:100%;padding:12px}
.btns{display:flex;gap:8px;flex-wrap:wrap}
.form label{display:flex;flex-direction:column;gap:4px;font-weight:500;font-size:.95rem;margin-bottom:10px}
.form label.check{flex-direction:row;align-items:center;gap:8px}
input,select,textarea{font:inherit;padding:9px 11px;border:1px solid #cdd4e1;border-radius:8px;background:#fff;width:100%;color:var(--text)}
input:focus,select:focus,textarea:focus{outline:2px solid #f0782d55;border-color:var(--orange)}
input[type=checkbox]{width:auto}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 16px}
.span2{grid-column:span 2}.span3{grid-column:1/-1}
@media (max-width:700px){.grid2,.grid3{grid-template-columns:1fr}.span2,.span3{grid-column:auto}}
.filters{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.filters input{flex:1;min-width:200px}.filters select{width:auto}
.page-head select,.inline-head select{width:auto}
.hint{background:#f3f6fd;border-left:3px solid var(--navy);padding:8px 10px;font-size:.88rem;margin:-4px 0 10px;border-radius:4px}
.hint:empty{display:none}
.total-line{font-size:1.1rem;margin:6px 0 12px}

.flash{padding:10px 14px;border-radius:8px;margin-bottom:12px;background:#e8f6ee;border:1px solid #bfe5cf;color:#14633a}
.flash.err{background:#fdecec;border-color:#f3c4c4;color:#9b1c1c}
.flash.warn{background:#fff6e6;border-color:#f6d9a6;color:#80510b}
.flash.info{background:#eef3fc;border-color:#cfdbf3;color:#1f3d7a}
.flash ul{margin:4px 0 6px;padding-left:20px}

/* ---- tables ---- */
.table-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:.95rem}
.tbl th,.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl thead th{background:#f6f8fc;text-align:left;font-weight:600;color:#3a4459;white-space:nowrap}
.tbl thead th.r{text-align:right}
.tbl tfoot th{background:#f6f8fc;text-align:left}
.tbl tfoot th.r{text-align:right}
.tbl tbody tr:hover{background:#fafbfe}
.tbl form{margin:0}
.tbl.ledger tr.open td{background:#fffbea}
.tag{display:inline-block;padding:1px 8px;border-radius:20px;font-size:.8rem;background:#e7f6ed;color:#16703f;white-space:nowrap}
.tag.left{background:#fff3e2;color:#9a5a00}
.tag.dead{background:#fde9e9;color:#a21f1f}
.list{list-style:none;padding:0;margin:0 0 12px}
.list li{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px dashed var(--line)}
.quick{display:flex;gap:8px;flex-wrap:wrap}
dl.info{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;margin:0}
dl.info dt{color:var(--muted)}dl.info dd{margin:0}
.sum-box{border-collapse:collapse;margin-top:12px;min-width:280px}
.sum-box.wide{width:100%}
.sum-box th{text-align:left;font-weight:500;color:#3a4459;padding:6px 12px 6px 0;border-bottom:1px solid var(--line)}
.sum-box td{text-align:right;padding:6px 0;border-bottom:1px solid var(--line);font-weight:600}
.sum-box tr.hl th,.sum-box tr.hl td{color:var(--navy);font-size:1.05rem;border-top:2px solid var(--navy)}
.danger-zone{margin:6px 0 20px}
.rule-list{padding-left:18px;margin:0}.rule-list li{margin-bottom:6px}

/* ---- bars ---- */
.bar-row{display:grid;grid-template-columns:70px 1fr 150px;align-items:center;gap:8px;margin-bottom:5px;font-size:.9rem}
.bt{background:#eef1f7;border-radius:5px;height:14px;overflow:hidden}
.bf{display:block;height:100%;background:linear-gradient(90deg,var(--navy),#3c6bc4)}
.bv{text-align:right}

/* ---- months ---- */
.months{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
@media (max-width:500px){.months{grid-template-columns:repeat(4,1fr)}}
.mcell{border:1px solid var(--line);border-radius:8px;padding:6px;text-align:center;font-size:.85rem;background:#fafbfd}
.mcell .mv{font-weight:700}
.mcell.paid{background:#e7f6ed;border-color:#b9e2c8;color:#16703f}
.mcell.due{background:#fdeeee;border-color:#f3c9c9;color:#a21f1f}
.month-picks{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:8px 0}
@media (max-width:600px){.month-picks{grid-template-columns:repeat(3,1fr)}}
.month-picks label{flex-direction:row;align-items:center;justify-content:center;gap:6px;border:1px solid #cdd4e1;border-radius:8px;padding:8px 4px;margin:0;cursor:pointer;font-size:.9rem;user-select:none}
.month-picks label.sel{background:#fff1e7;border-color:var(--orange);color:#b2500f}
.month-picks label.done{background:#e7f6ed;border-color:#b9e2c8;color:#16703f;cursor:not-allowed}
.month-picks input{width:auto}

/* ---- sheet (grid entry) ---- */
.sheet-card{padding:0;overflow:hidden}
.sheet-wrap{max-height:70vh;overflow:auto}
table.sheet{border-collapse:separate;border-spacing:0;font-size:.92rem;min-width:100%}
table.sheet th,table.sheet td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:0}
table.sheet thead th{position:sticky;top:0;background:var(--navy);color:#fff;padding:8px 6px;z-index:2;white-space:nowrap;font-weight:500}
table.sheet tfoot th{position:sticky;bottom:0;background:#f0f3fa;padding:8px 6px;z-index:2}
table.sheet .sticky{position:sticky;left:0;background:#fff;z-index:1;text-align:left;padding:6px 10px;white-space:nowrap;min-width:210px;font-weight:500}
table.sheet thead .sticky{z-index:3;background:var(--navy)}
table.sheet tfoot .sticky{z-index:3;background:#f0f3fa}
table.sheet td input{border:0;border-radius:0;width:68px;text-align:right;padding:8px 6px;background:transparent}
table.sheet td input:focus{background:#fff6ee;outline:2px solid var(--orange)}
table.sheet td input.changed{background:#fff9db}
table.sheet td.rt{padding:6px 10px;background:#f8f9fc;white-space:nowrap}
table.sheet tbody tr:nth-child(even) td,table.sheet tbody tr:nth-child(even) .sticky{background:#fbfcfe}
.fill-row{border:1px solid #cdd4e1;background:#fff;border-radius:5px;cursor:pointer;font-size:.8rem;padding:0 5px;color:var(--navy)}
.sheet-actions{position:sticky;bottom:0;background:#fffffff0;padding:12px 0;display:flex;gap:16px;align-items:center;flex-wrap:wrap;border-top:1px solid var(--line)}
.sheet-actions label{display:flex;gap:6px;align-items:center}.sheet-actions select{width:auto}

/* ---- auth ---- */
body.bare{background:linear-gradient(160deg,#eef2fb,#fdf2ea)}
.auth-box{max-width:400px;margin:7vh auto;background:#fff;padding:28px;border-radius:14px;box-shadow:0 10px 40px #1f3d7a1f;text-align:center}
.auth-box .form{text-align:left;margin-top:16px}
.auth-logo{width:90px}
.auth-box h1{color:var(--navy);font-size:1.3rem;margin-top:8px}
.center{text-align:center}
.member-portal{max-width:900px;margin:0 auto}

/* ---- printable paper ---- */
.print-bar{display:flex;gap:8px;justify-content:center;align-items:center;padding:12px;flex-wrap:wrap}
.print-bar select{width:auto}
.sheet-page{background:#fff;max-width:210mm;margin:0 auto 20px;padding:14mm 14mm;box-shadow:0 2px 14px #0000001a;color:#111}
.sheet-page.landscape{max-width:297mm;padding:10mm}
.org-head{display:flex;align-items:center;gap:14px;justify-content:center}
.org-head img{height:74px}
.org-name{font-size:1.75rem;font-weight:700;color:var(--orange);line-height:1.2}
.org-addr{font-size:.92rem}
.slogan{display:inline-block;margin-left:8px;background:var(--orange);color:#fff;padding:0 10px;border-radius:3px;font-size:.82rem}
.doc-title{text-align:center;margin:-6px 0 14px}
.doc-title span{display:inline-block;background:var(--orange);color:#fff;padding:3px 26px;border-radius:0 0 12px 12px;font-weight:600;letter-spacing:.5px}
.sheet-page .org-head + .doc-title{margin-top:8px}
.form-meta{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:8px;font-size:.95rem}
.form-box{width:100%;border-collapse:collapse;border:1.5px solid var(--orange)}
.form-box tr{border-bottom:1px solid #f3b78d}
.form-box th{text-align:left;width:150px;padding:7px 10px;font-weight:600;white-space:nowrap}
.form-box td{padding:7px 6px}
.form-box td.colon{width:14px;padding:0}
.form-box tr.tall td,.form-box tr.tall th{height:52px;vertical-align:top}
.rules-title{margin:14px 0 4px;color:#111;font-size:1.05rem}
.rules{list-style:none;padding:0;margin:0;font-size:.86rem}
.rules li{border-bottom:1px solid #ddd;padding:3px 0 3px 20px;text-indent:-20px}
.rules .n{display:inline-block;width:20px;text-indent:0}
.declare{font-weight:600;margin:12px 0 0}
.sign-row{display:flex;justify-content:space-between;margin-top:48px}
.sign{border-top:1px solid #333;padding-top:3px;min-width:160px;text-align:center;font-size:.9rem}
.sec-title{color:#111;font-size:1.35rem;margin:10px 0 6px}
.grid-table{width:100%;border-collapse:collapse;font-size:.9rem;margin-bottom:12px}
.grid-table th,.grid-table td{border:1px solid #555;padding:5px 6px;height:28px}
.grid-table thead th{font-weight:600;background:#f4f4f4}
.grid-table td.small{font-size:.8rem}
.mini-head{display:flex;align-items:center;gap:8px;font-size:.9rem;border-bottom:1px solid #ccc;padding-bottom:6px;margin-bottom:6px}
.mini-head img{height:26px}
.printed-on{font-size:.8rem;color:#666;text-align:right}
.ledger-title{margin:8px 0}
.paper-ledger{width:100%;border-collapse:collapse;font-size:.8rem}
.paper-ledger th,.paper-ledger td{border:1px solid #444;padding:2px 3px;text-align:center}
.paper-ledger .nm{text-align:left;min-width:110px;font-weight:600}
.paper-ledger tr.amt td{height:22px}
.paper-ledger tr.sig td{height:20px;border-top:1px dotted #999}
.paper-ledger tbody tr:nth-child(4n+1) td,.paper-ledger tbody tr:nth-child(4n+2) td{background:#f2f2f2}
.print-only{display:none}

@media print{
  @page{size:A4;margin:8mm}
  body{background:#fff!important;font-size:13px}
  .no-print,.topbar,.sidebar,.print-bar,.flash{display:none!important}
  .print-only{display:block}
  main,main.with-nav{margin:0!important;padding:0!important;max-width:none}
  .card{box-shadow:none;border:0;padding:0}
  .stats{grid-template-columns:repeat(4,1fr)}
  .sheet-page{box-shadow:none;margin:0;padding:0;max-width:none;page-break-after:always;break-after:page}
  .sheet-page:last-child{page-break-after:auto;break-after:auto}
  .sheet-wrap{max-height:none;overflow:visible}
  .table-wrap{overflow:visible}
  .paper-ledger tbody tr:nth-child(4n+1) td,.paper-ledger tbody tr:nth-child(4n+2) td{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .org-name,.slogan,.doc-title span{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  a{text-decoration:none;color:inherit}
}
@page land{size:A4 landscape;margin:7mm}
.sheet-page.landscape{page:land}
/* ---- tabs & bulk deposit ---- */
.tabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:2px solid var(--line);flex-wrap:wrap}
.tabs a{padding:9px 16px;text-decoration:none;color:var(--muted);font-weight:600;border-radius:8px 8px 0 0;margin-bottom:-2px;border-bottom:2px solid transparent}
.tabs a.on{color:var(--orange);border-bottom-color:var(--orange);background:#fff}
.row-inline{display:flex;gap:6px}.row-inline input{flex:1}
.tbl.bulk tbody tr{cursor:pointer}
.tbl.bulk tbody tr.off td{opacity:.45}
.tbl.bulk tbody tr.done{background:#f3faf6;cursor:default}
.tbl.bulk input.bulk-amt{width:120px;text-align:right;padding:6px 8px}
.tbl.bulk input[type=checkbox]{width:18px;height:18px;cursor:pointer}
@media (max-width:600px){
  .tbl.bulk th:nth-child(2),.tbl.bulk td:nth-child(2),.tbl.bulk th:nth-child(5),.tbl.bulk td:nth-child(5){display:none}
  .tbl.bulk input.bulk-amt{width:90px}
  .sheet-actions{position:static}
}

/* ---- font chooser ---- */
.font-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.font-card{display:block!important;border:2px solid var(--line);border-radius:10px;padding:10px 12px;cursor:pointer;margin:0!important}
.font-card:has(input:checked){border-color:var(--orange);background:#fff7f1}
.font-card input{width:auto;margin-right:6px}
.font-card .fname{font-size:.85rem;color:var(--muted);font-family:system-ui,sans-serif}
.font-card .fsample{font-size:1.25rem;line-height:1.5;margin-top:4px}
.font-card .fsample small{font-size:.95rem;display:block}
.wide-box{max-width:520px}
.log-ok{color:var(--green)}.log-fail{color:var(--red)}

/* ---- batch sheet ---- */
.ref-badge{display:inline-block;background:#fff1e7;border:1px solid #f6c8a8;color:#b2500f;padding:4px 12px;border-radius:20px;margin-bottom:10px}
.batch-meta{width:100%;border-collapse:collapse;margin:4px 0 12px;font-size:.95rem}
.batch-meta th{text-align:left;font-weight:500;color:#555;padding:5px 8px;width:16%;border-bottom:1px dotted #bbb}
.batch-meta td{padding:5px 8px;border-bottom:1px dotted #bbb}
.ref-big{font-size:1.2rem;color:var(--orange);letter-spacing:.5px}
.sign-row.three .sign{min-width:140px}
a.plain{color:inherit;text-decoration:none}

.warn-card{border-color:#f3c4c4;background:#fffafa}
.del-ref{padding:12px 16px}
.del-ref label{margin-bottom:4px}

.grid2.tight,.grid3.tight{gap:0 10px}
.grid3.tight label{font-size:.88rem}
#dist-form .sheet-actions,#loanpay-form .sheet-actions{position:static}

/* ---- রসিদ ---- */
.receipts{display:flex;flex-direction:column;gap:18px;align-items:center}
.receipt{background:#fff;width:100%;max-width:190mm;padding:9mm 11mm;box-shadow:0 2px 14px #0000001a;color:#111;border-top:5px solid var(--orange)}
.rc-head{display:flex;align-items:center;gap:12px;justify-content:center}
.rc-head img{height:52px}.rc-head .org-name{font-size:1.35rem}.rc-head .org-addr{font-size:.82rem}
.rc-title{text-align:center;margin:6px 0 8px}.rc-title span{display:inline-block;background:var(--orange);color:#fff;padding:2px 22px;border-radius:12px;font-weight:600}
.rc-meta{width:100%;border-collapse:collapse;font-size:.9rem;margin-bottom:8px}
.rc-meta th{text-align:left;font-weight:500;color:#555;padding:3px 6px;width:15%}.rc-meta td{padding:3px 6px;border-bottom:1px dotted #bbb}
.receipt .sign-row{margin-top:30px}
@media print{
  .receipts{display:block}
  .receipt{box-shadow:none;max-width:none;padding:6mm 4mm;break-inside:avoid;page-break-inside:avoid;border-top:3px solid var(--orange);margin-bottom:6mm;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .receipt:nth-child(2n){break-after:page;page-break-after:always}
}
