:root{--bg: #f5f6f8;--surface: #ffffff;--surface-2: #f0f2f5;--border: #e3e6eb;--text: #16181d;--muted: #667085;--primary: #2563eb;--primary-ink: #ffffff;--primary-soft: #e8efff;--success: #15803d;--success-soft: #e7f6ec;--warning: #b45309;--warning-soft: #fdf3e2;--danger: #c2261d;--danger-soft: #fdecea;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08);--shadow-lg: 0 12px 32px rgba(16, 24, 40, .18);--radius: 10px;--nav-w: 216px;--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:light}:root[data-theme=dark]{--bg: #0f1115;--surface: #171a21;--surface-2: #1f232c;--border: #2a2f3a;--text: #e8eaef;--muted: #98a1b2;--primary: #5b8cff;--primary-ink: #0b1020;--primary-soft: #1c2640;--success: #4ade80;--success-soft: #13271b;--warning: #fbbf24;--warning-soft: #2b2314;--danger: #f87171;--danger-soft: #2d1616;--shadow: 0 1px 2px rgba(0, 0, 0, .4);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .55);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{font-family:var(--font);font-size:14px;line-height:1.45;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0;line-height:1.25}h1{font-size:20px;font-weight:650}h2{font-size:16px;font-weight:600}h3{font-size:14px;font-weight:600}.num,td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.muted{color:var(--muted)}.small{font-size:12px}.nowrap{white-space:nowrap}.grow{flex:1;min-width:0}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.end{justify-content:flex-end}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.grid{display:grid;gap:12px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.span-2{grid-column:span 2}kbd{font:11px/1 ui-monospace,monospace;padding:2px 5px;border:1px solid var(--border);border-bottom-width:2px;border-radius:4px;background:var(--surface);color:var(--muted)}.shell{display:flex;min-height:100vh}.sidenav{width:var(--nav-w);flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:14px 10px;gap:2px}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;font-weight:700;font-size:15px}.brand-logo{height:34px;width:auto;border-radius:6px;background:#fff;padding:2px 4px}.navlink{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--text);font-weight:500}.navlink:hover{background:var(--surface-2);text-decoration:none}.navlink.active{background:var(--primary-soft);color:var(--primary)}.navlink svg{width:18px;height:18px;flex-shrink:0}.navsection{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:14px 10px 4px}.sidenav .spacer{flex:1}.user-box{display:flex;align-items:center;gap:8px;padding:10px 8px 2px;border-top:1px solid var(--border);margin-top:6px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login-card{width:100%;max-width:380px;padding:28px 24px}.login-logo{height:64px;width:auto;background:#fff;border-radius:10px;padding:4px 8px}.input-prefix{display:flex}.input-prefix span{display:flex;align-items:center;padding:0 12px;border:1px solid var(--border);border-right:0;border-radius:8px 0 0 8px;background:var(--surface-2);color:var(--muted);font-size:15px}.input-prefix .input{border-radius:0 8px 8px 0}.input.pin{letter-spacing:.3em;font-size:20px}.main{flex:1;min-width:0;padding:20px 24px 40px;max-width:1280px}.page-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.page-head h1{flex:1;min-width:160px}.bottomnav,.mobile-top{display:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:16px}.card-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}.card-head h2{flex:1}.stat{padding:14px 16px}.stat .label{color:var(--muted);font-size:12px;font-weight:500}.stat .value{font-size:22px;font-weight:650;margin-top:4px;font-variant-numeric:tabular-nums}.stat .sub{font-size:12px;color:var(--muted);margin-top:2px}.stat.accent{border-left:3px solid var(--primary)}.stat.warn{border-left:3px solid var(--warning)}.stat.good{border-left:3px solid var(--success)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 14px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-weight:550;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s}.btn:hover{background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.btn.primary:hover{filter:brightness(1.07)}.btn.success{background:var(--success);border-color:var(--success);color:#fff}.btn.danger{color:var(--danger)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--surface-2)}.btn.sm{height:30px;padding:0 10px;font-size:13px}.btn.icon{width:36px;padding:0}.btn.sm.icon{width:30px}.btn svg{width:16px;height:16px}.field{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:550;color:var(--muted)}.input,select.input,textarea.input{height:36px;width:100%;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-size:14px;outline:none;transition:border-color .12s,box-shadow .12s}textarea.input{height:auto;min-height:64px;padding:8px 10px;resize:vertical}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.input.num{text-align:right}.input.lg{height:44px;font-size:16px}.input-group{display:flex}.input-group .input{border-top-right-radius:0;border-bottom-right-radius:0}.input-group .seg{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.seg button{border:0;background:transparent;color:var(--muted);padding:0 10px;height:34px;min-width:34px;font:inherit;font-weight:600;cursor:pointer}.seg button+button{border-left:1px solid var(--border)}.seg button.on{background:var(--primary-soft);color:var(--primary)}.checkbox{display:inline-flex;gap:8px;align-items:center;font-weight:500;color:var(--text);cursor:pointer}.checkbox input{width:16px;height:16px;accent-color:var(--primary)}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;font-weight:600;color:var(--muted);padding:9px 12px;border-bottom:1px solid var(--border);background:var(--surface-2);white-space:nowrap}.table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr.click{cursor:pointer}.table tbody tr.click:hover td{background:var(--surface-2)}.table td.c-title{font-weight:600}.table tfoot td{font-weight:650;background:var(--surface-2);border-top:2px solid var(--border)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--surface-2);color:var(--muted)}.badge.paid,.badge.applied,.badge.ok{background:var(--success-soft);color:var(--success)}.badge.partial,.badge.open,.badge.low{background:var(--warning-soft);color:var(--warning)}.badge.unpaid{background:var(--primary-soft);color:var(--primary)}.badge.overdue,.badge.out{background:var(--danger-soft);color:var(--danger)}.badge.void{text-decoration:line-through}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:12px;border-bottom:1px solid var(--border)}.toolbar .input{max-width:280px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:4px 12px;font:inherit;font-size:13px;font-weight:500;cursor:pointer}.chip.on{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}.empty{padding:40px 16px;text-align:center;color:var(--muted)}.error-box{padding:10px 12px;border-radius:8px;background:var(--danger-soft);color:var(--danger)}.hint-bar{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted)}.hint-bar span{display:inline-flex;gap:4px;align-items:center}.list-row{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border)}.list-row:last-child{border-bottom:0}.list-row.click-row{cursor:pointer}.list-row.click-row:hover{background:var(--surface-2)}.bar-track{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}.bar-fill{height:100%;background:var(--primary);border-radius:3px}.divider{height:1px;background:var(--border);margin:8px 0}.toasts{position:fixed;z-index:100;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px}.toast{background:var(--text);color:var(--bg);padding:10px 14px;border-radius:8px;box-shadow:var(--shadow-lg);font-weight:500;max-width:360px;animation:pop .16s ease-out}.toast.error{background:var(--danger);color:#fff}@keyframes pop{0%{transform:translateY(6px);opacity:0}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#0a0c1273;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px;overflow-y:auto}.modal{width:100%;max-width:520px;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-lg);animation:pop .16s ease-out}.modal.wide{max-width:760px}.modal-head{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border)}.modal-head h2{flex:1}.modal-body{padding:18px}.modal-foot{display:flex;gap:8px;justify-content:flex-end;padding:12px 18px;border-top:1px solid var(--border)}.combo{position:relative}.combo-list{position:fixed;z-index:95;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-lg);max-height:320px;overflow-y:auto;padding:4px}.combo-opt{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:7px;cursor:pointer}.combo-opt.active{background:var(--primary-soft)}.combo-opt .meta{margin-left:auto;text-align:right;font-size:12px;color:var(--muted);white-space:nowrap}.combo-opt mark{background:transparent;color:var(--primary);font-weight:700}.combo-empty{padding:10px;color:var(--muted);font-size:13px}.editor{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}.editor-side{position:sticky;top:16px}.lines-table td{padding:6px}.lines-table th{padding:8px 6px}.lines-table .input{height:34px;padding:0 8px}.lines-table td.idx{color:var(--muted);width:28px;text-align:center;font-size:12px}.line-desc{font-weight:550}.line-warn{font-size:11px;color:var(--warning)}.totals{display:flex;flex-direction:column;gap:6px}.totals .t-row{display:flex;justify-content:space-between;gap:8px}.totals .t-row span:last-child{font-variant-numeric:tabular-nums}.totals .t-grand{font-size:22px;font-weight:700;padding-top:8px;border-top:1px dashed var(--border)}.line-cards,.mobile-bar{display:none}.adj-note{padding:10px 12px;border-radius:8px;font-weight:550}.adj-note.write_off{background:var(--warning-soft);color:var(--warning)}.adj-note.donation{background:var(--success-soft);color:var(--success)}.adj-note.exact{background:var(--surface-2);color:var(--muted)}.doc{background:#fff;color:#1a1a1a;max-width:820px;margin:0 auto;padding:40px 44px;border-radius:6px;box-shadow:var(--shadow);font-size:13px;--accent: #1f2937}.doc table{width:100%;border-collapse:collapse}.doc th,.doc td{padding:8px 6px;text-align:left}.doc .r{text-align:right;font-variant-numeric:tabular-nums}.doc .logo{max-height:64px;max-width:200px;object-fit:contain}.doc h1{font-size:26px;letter-spacing:.02em}.doc .muted{color:#666}.doc table.meta td{border:0!important;padding:2px 0 2px 16px}.doc .doc-totals{width:300px;margin-left:auto;margin-top:12px}.doc .doc-totals td{padding:4px 6px}.doc .doc-totals .grand td{font-size:16px;font-weight:700;border-top:2px solid var(--accent);padding-top:8px}.doc .foot{margin-top:32px;padding-top:14px;border-top:1px solid #ddd;font-size:12px;color:#555;white-space:pre-wrap}.doc .stamp{display:inline-block;border:2px solid;padding:2px 10px;border-radius:6px;font-weight:800;letter-spacing:.1em;transform:rotate(-4deg)}.doc .stamp.paid{color:#15803d}.doc .stamp.void{color:#c2261d}.doc.classic .head{display:flex;justify-content:space-between;gap:24px;padding-bottom:18px;border-bottom:2px solid var(--accent)}.doc.classic th{border-bottom:1px solid var(--accent);border-top:1px solid var(--accent);font-size:12px;text-transform:uppercase}.doc.classic td{border-bottom:1px solid #eee}.doc.modern{padding:0;overflow:hidden}.doc.modern .band{background:var(--accent);color:#fff;padding:28px 44px;display:flex;justify-content:space-between;align-items:center;gap:24px}.doc.modern .band .logo{background:#fff;padding:6px;border-radius:6px}.doc.modern .inner{padding:28px 44px 40px}.doc.modern th{background:color-mix(in srgb,var(--accent) 10%,white);color:var(--accent);font-size:12px}.doc.modern td{border-bottom:1px solid #f0f0f0}.doc .meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0}.doc .meta-grid.three{grid-template-columns:1.1fr 1.1fr auto}.doc .c{text-align:center}.doc-lines{overflow-x:auto}.doc table.gst{font-size:11.5px}.doc table.gst th,.doc table.gst td{padding:6px 5px}.doc table.gst th{white-space:nowrap}.doc table.gst th.sub{font-size:10px;padding-top:2px}.doc table.gst td:nth-child(3){white-space:nowrap}.doc table.gst tfoot td{font-weight:700;border-top:2px solid var(--accent);border-bottom:0}.doc table.gst tfoot tr.tax-row td{font-weight:600;border-top:1px solid #ddd}.doc.modern table.gst thead tr+tr th{background:color-mix(in srgb,var(--accent) 6%,white)}.doc .doc-bottom{display:flex;gap:24px;justify-content:space-between;align-items:flex-start;margin-top:14px}.doc .doc-bottom .words{flex:1;max-width:380px;padding-top:6px}.doc .doc-bottom .doc-totals{margin-top:0}.doc .sign{margin-top:28px;text-align:right}.doc .label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#888;margin-bottom:4px}.chart{width:100%;height:auto;display:block}.chart text{fill:var(--muted);font-size:11px;font-family:var(--font)}.chart .grid-line{stroke:var(--border)}.chart .bar{fill:var(--primary)}.chart .bar.alt{fill:var(--success)}.chart .bar:hover{filter:brightness(1.15)}.legend{display:flex;gap:14px;font-size:12px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}.print-only{display:none}@media (max-width: 1100px){.editor{grid-template-columns:1fr}.editor-side{position:static}.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 760px){body{font-size:15px}.sidenav{display:none}.main{padding:12px 12px calc(84px + env(safe-area-inset-bottom))}.mobile-top{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:40;padding:10px 12px;background:var(--surface);border-bottom:1px solid var(--border);font-weight:700}.mobile-top .grow{font-size:16px}.bottomnav{display:flex;position:fixed;z-index:40;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 6px;font-size:11px;color:var(--muted);font-weight:550}.bottomnav a.active{color:var(--primary)}.bottomnav a svg{width:22px;height:22px}.bottomnav a.fab svg{background:var(--primary);color:var(--primary-ink);border-radius:12px;padding:5px;width:34px;height:34px;margin-top:-8px}.shell{display:block}.shell>.shell-body{display:block}.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-2.stack-sm,.grid.cols-3.stack-sm{grid-template-columns:1fr}.span-2{grid-column:auto}.stat .value{font-size:18px}.input,select.input{height:42px;font-size:16px}.btn{height:40px}.btn.sm{height:34px}.page-head h1{font-size:18px}.page-head .hide-sm,.hide-sm{display:none!important}.toolbar .input{max-width:none;flex:1 1 100%}.modal-backdrop{padding:0;align-items:flex-end}.modal{border-radius:16px 16px 0 0;max-height:92vh;overflow-y:auto}.modal-foot{position:sticky;bottom:0;background:var(--surface);padding-bottom:calc(12px + env(safe-area-inset-bottom))}.modal-foot .btn{flex:1}.lines-table{display:none}.line-cards{display:flex;flex-direction:column}.line-card{padding:12px;border-bottom:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.line-card .lc-head{grid-column:1 / -1;display:flex;gap:8px;align-items:flex-start}.mobile-bar{display:flex;align-items:center;gap:10px;position:fixed;z-index:45;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--border);padding:10px 12px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -6px 16px #00000014}.mobile-bar .amt{font-size:18px;font-weight:700}.editor-page .bottomnav{display:none}.editor-actions{display:none!important}.doc{padding:20px 16px;font-size:12px}.doc.modern .band,.doc.modern .inner{padding-left:16px;padding-right:16px}.doc .meta-grid,.doc .meta-grid.three{grid-template-columns:1fr}.doc .doc-bottom{flex-direction:column}.doc .doc-totals{width:100%}.doc .hide-sm-doc,.hint-bar,.table-cards thead{display:none}.table-cards tr{display:grid;grid-template-columns:1fr auto;padding:10px 12px;border-bottom:1px solid var(--border);gap:2px 12px}.table-cards td{border:0;padding:0;display:none}.table-cards td.c-title{display:block;grid-column:1;grid-row:1;font-weight:600}.table-cards td.c-amt{display:block;grid-column:2;grid-row:1;text-align:right;font-weight:600}.table-cards td.c-sub{display:block;grid-column:1;grid-row:2}.table-cards td.c-badge{display:block;grid-column:2;grid-row:2;text-align:right}.table-cards td.c-meta{display:block;grid-column:1 / -1;grid-row:3;font-size:12px;color:var(--muted)}.table-cards tfoot tr{background:var(--surface-2)}}@media print{@page{margin:12mm}:root{--bg: #fff;--surface: #fff;--surface-2: #f4f4f4;--text: #000;--muted: #555;--border: #ccc;color-scheme:light}body{background:#fff;font-size:11px}.sidenav,.bottomnav,.mobile-top,.mobile-bar,.no-print,.toasts,.toolbar,.hint-bar,.page-head .btn{display:none!important}.print-only{display:block!important}.main{padding:0;max-width:none}.page-head{display:none!important}.editor{display:block}.modal-backdrop{display:none!important}.card{box-shadow:none;border-color:#ccc;break-inside:avoid}.table th{background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.table td,.table th{padding:5px 8px}.table-wrap{overflow:visible}.table-cards thead{display:table-header-group!important}.table-cards tr{display:table-row!important}.table-cards td{display:table-cell!important;padding:5px 8px!important;border-bottom:1px solid #ddd!important}tr{break-inside:avoid}.doc{box-shadow:none;max-width:none;padding:0}.doc-lines{overflow:visible}.doc.modern .band{padding:20px 24px}.doc.modern .inner{padding:20px 0}.doc,.doc *,.chart .bar{-webkit-print-color-adjust:exact;print-color-adjust:exact}.grid.cols-4{grid-template-columns:repeat(4,1fr)!important}.grid.cols-2{grid-template-columns:repeat(2,1fr)!important}a{color:inherit}}.doc table.gst .rates{font-size:10.5px;color:#666;margin-top:1px}.doc .payto{margin-top:14px;padding:10px 12px;border:1px solid #e3e3e3;border-radius:6px;break-inside:avoid}.doc .payto-body{display:flex;gap:14px;align-items:flex-start}.doc .payto-qr{text-align:center;flex-shrink:0}.doc .payto-caption{font-size:10.5px;color:#555;margin-top:3px;line-height:1.3}.doc table.payto-bank td{padding:1px 8px 1px 0;border:0;font-size:11.5px}@media (max-width: 760px){.doc .payto-body{flex-direction:column}}
