:root{--bg: #f4f5f7;--fg: #1d2330;--muted: #6b7280;--line: #d9dde3;--primary: #1f4fd8;--danger: #c62828;--ok: #1b7f3b;--warn: #b26a00}*{box-sizing:border-box}body{margin:0;font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--fg)}h1{font-size:20px;margin:0 0 12px}h2{font-size:16px;margin:0 0 8px}.muted{color:var(--muted)}.center{display:grid;place-items:center;height:100vh}input,select,textarea,button{font:inherit}input,select,textarea{border:1px solid var(--line);border-radius:4px;padding:5px 8px;background:#fff;max-width:100%}input:focus,select:focus,textarea:focus{outline:2px solid #9db6ff;border-color:var(--primary)}button{border:1px solid var(--line);background:#fff;border-radius:4px;padding:5px 12px;cursor:pointer}button:hover:not(:disabled){background:#eef1f6}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}button.primary:hover:not(:disabled){background:#1a43b8}button.danger{color:var(--danger)}button.link{border:0;background:none;color:var(--primary);padding:0 4px}.shell{display:flex;min-height:100vh}.sidebar{width:200px;background:#14213d;color:#fff;padding:16px 12px;display:flex;flex-direction:column;gap:12px;flex-shrink:0}.sidebar .brand{font-size:18px;font-weight:700}.sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1}.sidebar nav a{color:#cdd5e5;text-decoration:none;padding:7px 10px;border-radius:4px}.sidebar nav a.active,.sidebar nav a:hover{background:#26375f;color:#fff}.sidebar .who{font-size:12px;display:flex;flex-direction:column;gap:4px}.sidebar .who button{color:#14213d}.content{flex:1;padding:20px;min-width:0}.card{background:#fff;border:1px solid var(--line);border-radius:6px;padding:16px;margin-bottom:16px}.login{display:grid;place-items:center;min-height:100vh}.login .card{width:360px}.stack{display:flex;flex-direction:column;gap:8px}.row{display:flex;align-items:center;justify-content:space-between;gap:8px}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.toolbar .grow{flex:1}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 16px}.field{display:flex;flex-direction:column;gap:3px}.field>span{font-size:12px;color:var(--muted)}.ferr{color:var(--danger);font-size:12px;font-style:normal}.alert{border:1px solid var(--line);background:#fff;padding:10px 12px;border-radius:6px;margin-bottom:12px}.alert.error{border-color:#e7a3a3;background:#fdecec;color:#7a1414}.alert.ok{border-color:#a6d6b4;background:#e9f7ee;color:#14502a}.alert.warn{border-color:#e6c98a;background:#fff6e0;color:#6b4300}.alert ul{margin:6px 0 0;padding-left:20px}table{border-collapse:collapse;width:100%;background:#fff}th,td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:middle}th{background:#f0f2f6;font-weight:600;font-size:12px;white-space:nowrap}td.num,th.num{text-align:right}.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:6px}.badge{display:inline-block;font-size:11px;padding:1px 6px;border-radius:10px;background:#e5e7eb}.badge.low{background:#fde2c4;color:#7a4300}.badge.final{background:#d5f0dd;color:#14502a}.badge.draft{background:#e5e7eb}.badge.cancelled{background:#f7d4d4;color:#7a1414}.pager{display:flex;gap:12px;align-items:center;margin-top:10px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:grid;place-items:center;z-index:50}.modal{background:#fff;border-radius:8px;padding:16px;width:min(560px,94vw);max-height:90vh;overflow:auto}.modal.wide{width:min(900px,96vw)}.modal .row{margin-bottom:8px}.actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.entry-grid input{width:100%;min-width:70px;padding:3px 5px}.entry-grid td{padding:2px}.entry-grid td.rowno{color:var(--muted);font-size:12px;padding:2px 6px}.entry-grid tr.haserr input{background:#fff4f4;border-color:#e7a3a3}.bill-head{display:grid;grid-template-columns:1fr 1fr;gap:16px}.shop-head{text-align:center}.shop-head img{max-height:60px}.strike{text-decoration:line-through;color:var(--muted);margin-right:6px}.codebar{display:flex;gap:8px;align-items:center;margin:10px 0}.codebar input{flex:1;font-size:18px;padding:8px 10px;border-width:2px;border-color:var(--primary)}.scanmsg{min-height:22px;font-weight:600}.scanmsg.err{color:var(--danger)}.scanmsg.ok{color:var(--ok)}.totals{width:340px;margin-left:auto}.totals div{display:flex;justify-content:space-between;padding:3px 0}.totals .grand{font-size:18px;font-weight:700;border-top:2px solid var(--fg);margin-top:4px;padding-top:6px}.terms{white-space:pre-wrap;font-size:12px;color:var(--muted)}.preview-frame{border:1px solid var(--line);background:#888;padding:8px;overflow:auto;max-height:70vh}.preview-frame iframe{width:210mm;height:297mm;border:0;background:#fff;display:block;margin:0 auto 8px}.err-table td,.err-table th{font-size:12px}@media (max-width: 760px){.shell{flex-direction:column}.sidebar{width:auto;flex-direction:row;flex-wrap:wrap;align-items:center}.sidebar nav{flex-direction:row;flex-wrap:wrap}.grid2,.grid3,.bill-head{grid-template-columns:1fr}}.reports-layout{display:flex;gap:16px;align-items:flex-start}.reports-nav{width:170px;flex:none;display:flex;flex-direction:column;gap:2px}.reports-nav .grp{font-size:11px;text-transform:uppercase;color:var(--muted);margin:10px 0 2px}.reports-nav button{text-align:left;border-color:transparent;background:none}.reports-nav button.active{background:#e6edff;color:var(--primary);font-weight:600}.reports-main{flex:1;min-width:0}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:12px}.kpi{margin-bottom:0}.kpi-value{font-size:22px;font-weight:600}.report-table td,.report-table th{white-space:nowrap;padding:4px 8px}.report-table tfoot td{font-weight:600;background:#f0f2f6;border-top:2px solid var(--line)}.badge.paid{background:#d5f0dd;color:#14502a}.badge.partial{background:#fde9c4;color:#7a4300}tr.diff td{background:#fff6d6;font-weight:600}.num.due,td.due{color:#7a1414;font-weight:600}.badge.unpaid{background:#f7d4d4;color:#7a1414}.paybox{display:flex;flex-direction:column;gap:8px;min-width:280px}.paybox .grid{display:flex;gap:8px;flex-wrap:wrap}
