:root{--bg:#f4f1ec;--card:#fff;--ink:#27221c;--muted:#7a7165;--line:#e7e1d8;--brand:#8a5a2b;--brand-d:#6d4520;--brand-l:#f3e7d8;--ok:#2f7d4f;--warn:#c27a10;--bad:#b3392f;--info:#2b6cb0;--r:10px}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font:14px/1.45 "Segoe UI","Nirmala UI","Noto Sans Bengali","Kalpurush",system-ui,-apple-system,Roboto,sans-serif;background:var(--bg);color:var(--ink)}
.hidden{display:none!important}
.muted{color:var(--muted)}.grow{flex:1}.right{text-align:right}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
h1,h2,h3{margin:0}
a{color:var(--brand-d);text-decoration:none;cursor:pointer}a:hover{text-decoration:underline}
input,select,textarea,button{font:inherit;color:inherit}
input,select,textarea{width:100%;padding:8px 10px;border:1px solid #d6cfc4;border-radius:8px;background:#fff;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px #8a5a2b22}
textarea{resize:vertical;min-height:60px}
label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:10px}
label>input,label>select,label>textarea{margin-top:4px;font-weight:400;color:var(--ink);font-size:14px}
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid #d6cfc4;border-radius:8px;background:#fff;cursor:pointer;font-weight:600;white-space:nowrap}
.btn:hover{background:#faf7f2}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-d)}
.btn.danger{color:var(--bad);border-color:#e6bcb7}.btn.danger:hover{background:#fbeeec}
.btn.ghost{border-color:transparent;background:transparent}
.btn.sm{padding:4px 10px;font-size:12px}.btn.block{width:100%;justify-content:center;padding:10px}
.btn:disabled{opacity:.5;cursor:not-allowed}
/* login */
.login{min-height:100%;display:grid;place-items:center;background:linear-gradient(135deg,#3b2a1a,#8a5a2b)}
.login-card{background:#fff;width:340px;padding:32px;border-radius:16px;box-shadow:0 20px 60px #0005}
.login-card .logo{font-size:40px}.login-card h1{font-size:22px;margin:4px 0}.login-card p{margin:0 0 18px}
.err{color:var(--bad);min-height:20px;margin-bottom:8px;font-size:13px}
/* layout */
.app{display:flex;min-height:100vh}
.side{width:230px;background:#2b2118;color:#d9cdbd;padding:14px 10px;position:fixed;top:0;bottom:0;overflow:auto;z-index:20}
.side .brand{display:flex;gap:10px;align-items:center;padding:6px 10px 14px;color:#fff;font-weight:700;font-size:16px}
.side .brand small{display:block;font-weight:400;font-size:11px;color:#b9a994}
.side .grp{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:#8f7f6b;margin:14px 10px 4px}
.side a{display:flex;gap:9px;align-items:center;padding:7px 10px;border-radius:8px;color:#d9cdbd;text-decoration:none}
.side a:hover{background:#3a2d21}.side a.on{background:var(--brand);color:#fff}
.main{margin-left:230px;flex:1;min-width:0}
.top{position:sticky;top:0;z-index:10;display:flex;gap:12px;align-items:center;background:#fffdf9;border-bottom:1px solid var(--line);padding:10px 22px}
.search{width:min(420px,50%)}.search input{background:#f7f3ed}
.menu-btn{display:none}
.who{display:flex;gap:10px;align-items:center;font-size:13px}
.view{padding:22px;max-width:1500px}
.page-h{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.page-h h2{font-size:22px}.page-h .sub{color:var(--muted)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:16px}
.card h3{font-size:14px;margin-bottom:10px}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar input,.toolbar select{width:auto;min-width:130px}
.toolbar input[type=search],.toolbar input.q{min-width:220px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:14px;flex-wrap:wrap}
.tabs a{padding:8px 14px;border-bottom:2px solid transparent;color:var(--muted);font-weight:600;text-decoration:none}
.tabs a.on{color:var(--brand-d);border-color:var(--brand)}
/* grid */
.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g6{grid-template-columns:repeat(6,1fr)}
.fgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:0 14px}.fgrid .s2{grid-column:span 2}.fgrid .s4{grid-column:span 4}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;display:block;color:inherit;text-decoration:none}
a.kpi:hover{border-color:var(--brand);text-decoration:none}
.kpi .l{font-size:12px;color:var(--muted);font-weight:600}.kpi .v{font-size:22px;font-weight:700;margin-top:2px}.kpi .s{font-size:12px;color:var(--muted)}
.kpi.warn .v{color:var(--warn)}.kpi.bad .v{color:var(--bad)}.kpi.ok .v{color:var(--ok)}
/* table */
.tbl-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--r);background:#fff}
table{border-collapse:collapse;width:100%}
th{background:#faf6f0;text-align:left;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0}
td{padding:9px 12px;border-bottom:1px solid #f0ebe3;vertical-align:middle}
tbody tr:hover{background:#fdfaf5}tbody tr:last-child td{border-bottom:0}
tfoot td{font-weight:700;background:#faf6f0}
th.num{text-align:right}
td.act{text-align:right;white-space:nowrap}
.empty{padding:36px;text-align:center;color:var(--muted)}
.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11.5px;font-weight:700;background:#eee;color:#555}
.b-ok{background:#dff3e6;color:#1f6b3f}.b-warn{background:#fcefd2;color:#8f5b05}.b-bad{background:#f8dedb;color:#962b22}.b-info{background:#dce9f8;color:#1d4f8a}.b-mute{background:#ece8e1;color:#6d655a}
/* modal */
.overlay{position:fixed;inset:0;background:#1d150d99;display:grid;place-items:start center;padding:5vh 16px;overflow:auto;z-index:50}
.modal{background:#fff;border-radius:14px;width:min(760px,100%);box-shadow:0 20px 60px #0006}
.modal.wide{width:min(1000px,100%)}.modal.narrow{width:min(460px,100%)}
.modal-h{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line)}
.modal-h h3{font-size:17px}.modal-b{padding:18px 20px}.modal-f{padding:12px 20px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end}
#toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:99}
.toast{background:#2b2118;color:#fff;padding:10px 16px;border-radius:10px;box-shadow:0 6px 20px #0004;max-width:420px}
.toast.err{background:var(--bad)}.toast.ok{background:var(--ok)}
/* doc editor */
.lines input,.lines select{padding:6px 8px}
.lines td{padding:5px 6px}.lines th{padding:8px 6px}
.lines .c-prod{min-width:260px}.lines .c-n{width:100px}.lines .c-s{width:76px}
.totals{margin-left:auto;width:340px}
.totals div{display:flex;justify-content:space-between;padding:4px 0}
.totals .grand{font-size:18px;font-weight:700;border-top:2px solid var(--ink);margin-top:6px;padding-top:8px}
.steps{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:6px 0}
.chain{display:flex;gap:8px;flex-wrap:wrap}
.chain a{background:var(--brand-l);padding:3px 10px;border-radius:99px;font-weight:600;font-size:12px}
.bars{display:flex;align-items:flex-end;gap:8px;height:170px;padding-top:10px}
.bars .bar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font-size:11px;color:var(--muted)}
.bars .bar i{display:block;width:100%;background:linear-gradient(var(--brand),#b98650);border-radius:5px 5px 0 0;min-height:2px}
.bars .bar b{font-size:10px;color:var(--ink);font-weight:600;margin-bottom:2px}
/* print */
.paper{background:#fff;max-width:880px;margin:0 auto;padding:36px 40px;border:1px solid var(--line);box-shadow:0 2px 12px #0001;color:#111}
.paper h1{font-size:26px;letter-spacing:.02em}
.paper .hd{display:flex;justify-content:space-between;gap:24px;border-bottom:3px solid var(--brand);padding-bottom:14px;margin-bottom:16px}
.paper .meta{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:16px}
.paper table th{background:#f3e7d8;color:#333;position:static}
.paper table td{padding:7px 10px}
.paper .sig{display:flex;justify-content:space-between;margin-top:64px;gap:30px}
.paper .sig div{flex:1;border-top:1px solid #444;text-align:center;padding-top:4px;font-size:12px}
.paper .stamp{font-size:34px;font-weight:800;color:#b3392f55;border:4px solid #b3392f55;display:inline-block;padding:0 14px;transform:rotate(-8deg);border-radius:8px}
@media (max-width:1100px){.g4,.g6{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(2,1fr)}.fgrid{grid-template-columns:repeat(2,1fr)}.fgrid .s4{grid-column:span 2}}
@media (max-width:820px){.side{transform:translateX(-100%);transition:.2s}.nav-open .side{transform:none}.main{margin-left:0}.menu-btn{display:inline-flex}.g2,.g3,.g4,.g6,.fgrid{grid-template-columns:1fr}.fgrid .s2,.fgrid .s4{grid-column:auto}.view{padding:14px}.totals{width:100%}.search{width:auto;flex:1}}
@media print{body{background:#fff}.side,.top,.noprint,#toasts{display:none!important}.main{margin:0}.view{padding:0;max-width:none}.paper{border:0;box-shadow:none;padding:0;max-width:none}}
/* ---- print formats ---- */
.paper th{-webkit-print-color-adjust:exact;print-color-adjust:exact}
.paper .box{border:1px solid #bbb;border-radius:6px;padding:8px 10px}
.paper .ttl{color:var(--brand-d)}.paper .foot{text-align:center;color:#777;margin-top:26px;font-size:12px}
.paper .copytag{display:inline-block;border:1px solid #444;padding:0 8px;font-size:11px;font-weight:700;margin-top:2px}
.paper.compact{padding:14px 18px;font-size:12px;max-width:none;box-shadow:none}
.paper.compact h1{font-size:18px}.paper.compact .hd{padding-bottom:8px;margin-bottom:8px}.paper.compact .meta{gap:10px;margin-bottom:8px}
.paper.compact table td,.paper.compact table th{padding:3px 8px;font-size:12px}.paper.compact .sig{margin-top:26px}.paper.compact .totals{width:260px;margin-top:6px}.paper.compact .totals .grand{font-size:14px}
.f-half .paper{max-width:880px}
.dbl{max-width:880px;margin:0 auto;background:#fff;border:1px solid var(--line)}.dbl .paper{border:0;box-shadow:none;break-inside:avoid;page-break-inside:avoid;margin:0}
.cut{text-align:center;color:#888;font-size:11px;border-top:1px dashed #888;border-bottom:0;padding:3px 0;margin:6px 0}
.pos{background:#fff;margin:0 auto;padding:8px;font:12px/1.35 "Courier New",monospace;color:#000;border:1px solid var(--line)}
.pos.w80{width:80mm}.pos.w58{width:58mm;font-size:11px}
.pos .pc{text-align:center}.pos .pn{font-size:15px}.pos hr{border:0;border-top:1px dashed #000;margin:6px 0}
.pos .pr{display:flex;justify-content:space-between;gap:8px}.pos .pl{margin-bottom:3px}.pos .ptot{font-size:15px;font-weight:700;border-top:1px solid #000;margin-top:3px;padding-top:3px}
.fmts{display:flex;gap:4px;flex-wrap:wrap}.fmts a{padding:6px 11px;border:1px solid #d6cfc4;border-radius:8px;background:#fff;color:var(--ink);font-weight:600;font-size:13px;text-decoration:none}.fmts a.on{background:var(--brand);border-color:var(--brand);color:#fff}
@media print{.pos{border:0;margin:0;padding:0}.dbl{border:0}.sheet{margin:0}}

/* ---- global search dropdown ---- */
.search{position:relative}
.sres{position:absolute;top:46px;left:0;right:0;min-width:min(520px,92vw);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 34px #0003;max-height:72vh;overflow:auto;z-index:60}
.sr-h{padding:8px 14px 4px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:#faf6f0;position:sticky;top:0}
.sr-row{display:flex;gap:10px;align-items:center;padding:8px 14px;cursor:pointer;border-bottom:1px solid #f3eee6;color:var(--ink);text-decoration:none}
.sr-row:hover,.sr-row.on{background:var(--brand-l);text-decoration:none}
.sr-ic{font-size:18px;width:24px;text-align:center}.sr-m{flex:1;min-width:0;display:flex;flex-direction:column}.sr-m small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sr-r{text-align:right;white-space:nowrap;font-size:13px}
.sr-all{display:block;text-align:center;padding:10px;font-weight:700;background:#faf6f0;cursor:pointer}.sr-none{padding:18px;text-align:center;color:var(--muted)}
mark{background:#ffe08a;color:inherit;border-radius:3px;padding:0 1px}
.sr-list .sr-row:last-child{border-bottom:0}
