@charset "UTF-8";:root,:root[data-theme=classic]{color-scheme:light;--bg: #f4f6f9;--surface: #ffffff;--surface-2: #f8fafc;--surface-hover: #f3f6fa;--line: #e3e7ee;--input-border: #c5cdd9;--input-bg: #ffffff;--text: #1c2430;--muted: #5f6b7d;--faint: #a3adbb;--danger: #c42f2a;--danger-soft: #fdecea;--danger-line: #efc2bf;--ok: #17794a;--ok-soft: #e5f5ec;--ok-line: #bfe3cf;--warn: #8a5c00;--warn-soft: #fff4d6;--disabled-bg: #c3cbd6;--scrim: rgba(15, 23, 42, .5);--shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 16px rgba(15,23,42,.06);--viz-grid: #e9edf2;--tooltip-bg: #1c2430;--tooltip-fg: #ffffff;--pay: #17794a;--on-pay: #ffffff;--accent: #1f6feb;--on-accent: #ffffff;--accent-ink: #1a5fcc;--accent-soft: #e6effd;--accent-soft-2: #d2e2fb;--nav-bg: #152033;--nav-fg: #dfe6f1;--nav-muted: #93a1b8;--nav-hover: rgba(255,255,255,.07);--nav-line: rgba(255,255,255,.12)}:root[data-theme=slate]{color-scheme:light;--bg: #f3f4f6;--surface: #ffffff;--surface-2: #f8fafc;--surface-hover: #f3f6fa;--line: #e3e7ee;--input-border: #c5cdd9;--input-bg: #ffffff;--text: #1c2430;--muted: #5f6b7d;--faint: #a3adbb;--danger: #c42f2a;--danger-soft: #fdecea;--danger-line: #efc2bf;--ok: #17794a;--ok-soft: #e5f5ec;--ok-line: #bfe3cf;--warn: #8a5c00;--warn-soft: #fff4d6;--disabled-bg: #c3cbd6;--scrim: rgba(15, 23, 42, .5);--shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 16px rgba(15,23,42,.06);--viz-grid: #e9edf2;--tooltip-bg: #1c2430;--tooltip-fg: #ffffff;--pay: #17794a;--on-pay: #ffffff;--accent: #047857;--on-accent: #ffffff;--accent-ink: #047857;--accent-soft: #e3f4ec;--accent-soft-2: #c9eadb;--nav-bg: #1e293b;--nav-fg: #e2e8f0;--nav-muted: #94a3b8;--nav-hover: rgba(255,255,255,.07);--nav-line: rgba(255,255,255,.12)}:root[data-theme=indigo]{color-scheme:light;--bg: #f5f5fb;--surface: #ffffff;--surface-2: #f8fafc;--surface-hover: #f3f6fa;--line: #e3e7ee;--input-border: #c5cdd9;--input-bg: #ffffff;--text: #1c2430;--muted: #5f6b7d;--faint: #a3adbb;--danger: #c42f2a;--danger-soft: #fdecea;--danger-line: #efc2bf;--ok: #17794a;--ok-soft: #e5f5ec;--ok-line: #bfe3cf;--warn: #8a5c00;--warn-soft: #fff4d6;--disabled-bg: #c3cbd6;--scrim: rgba(15, 23, 42, .5);--shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 16px rgba(15,23,42,.06);--viz-grid: #e9edf2;--tooltip-bg: #1c2430;--tooltip-fg: #ffffff;--pay: #17794a;--on-pay: #ffffff;--accent: #4f46e5;--on-accent: #ffffff;--accent-ink: #4338ca;--accent-soft: #ebeafd;--accent-soft-2: #d9d6fb;--nav-bg: #1e1b4b;--nav-fg: #e0e7ff;--nav-muted: #a5b4fc;--nav-hover: rgba(255,255,255,.08);--nav-line: rgba(255,255,255,.14)}:root[data-theme=navy]{color-scheme:light;--bg: #f5f6f8;--surface: #ffffff;--surface-2: #f8fafc;--surface-hover: #f3f6fa;--line: #e3e7ee;--input-border: #c5cdd9;--input-bg: #ffffff;--text: #1c2430;--muted: #5f6b7d;--faint: #a3adbb;--danger: #c42f2a;--danger-soft: #fdecea;--danger-line: #efc2bf;--ok: #17794a;--ok-soft: #e5f5ec;--ok-line: #bfe3cf;--warn: #8a5c00;--warn-soft: #fff4d6;--disabled-bg: #c3cbd6;--scrim: rgba(15, 23, 42, .5);--shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 16px rgba(15,23,42,.06);--viz-grid: #e9edf2;--tooltip-bg: #1c2430;--tooltip-fg: #ffffff;--pay: #17794a;--on-pay: #ffffff;--accent: #1e3a8a;--on-accent: #ffffff;--accent-ink: #1e3a8a;--accent-soft: #e6ebf6;--accent-soft-2: #cfd9ee;--nav-bg: #0f172a;--nav-fg: #e2e8f0;--nav-muted: #d6b25e;--nav-hover: rgba(255,255,255,.07);--nav-line: rgba(214,178,94,.28)}:root[data-theme=sunset]{color-scheme:light;--bg: #faf6f3;--surface: #ffffff;--surface-2: #f8fafc;--surface-hover: #f3f6fa;--line: #e3e7ee;--input-border: #c5cdd9;--input-bg: #ffffff;--text: #1c2430;--muted: #5f6b7d;--faint: #a3adbb;--danger: #c42f2a;--danger-soft: #fdecea;--danger-line: #efc2bf;--ok: #17794a;--ok-soft: #e5f5ec;--ok-line: #bfe3cf;--warn: #8a5c00;--warn-soft: #fff4d6;--disabled-bg: #c3cbd6;--scrim: rgba(15, 23, 42, .5);--shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 16px rgba(15,23,42,.06);--viz-grid: #e9edf2;--tooltip-bg: #1c2430;--tooltip-fg: #ffffff;--pay: #17794a;--on-pay: #ffffff;--accent: #c2410c;--on-accent: #ffffff;--accent-ink: #b13a0a;--accent-soft: #fdebe1;--accent-soft-2: #fad6c3;--nav-bg: #2a1a14;--nav-fg: #f6e7df;--nav-muted: #c9a596;--nav-hover: rgba(255,255,255,.07);--nav-line: rgba(255,255,255,.12)}:root[data-theme=rose]{color-scheme:light;--bg: #fbf5f7;--surface: #ffffff;--surface-2: #f8fafc;--surface-hover: #f3f6fa;--line: #e3e7ee;--input-border: #c5cdd9;--input-bg: #ffffff;--text: #1c2430;--muted: #5f6b7d;--faint: #a3adbb;--danger: #c42f2a;--danger-soft: #fdecea;--danger-line: #efc2bf;--ok: #17794a;--ok-soft: #e5f5ec;--ok-line: #bfe3cf;--warn: #8a5c00;--warn-soft: #fff4d6;--disabled-bg: #c3cbd6;--scrim: rgba(15, 23, 42, .5);--shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 16px rgba(15,23,42,.06);--viz-grid: #e9edf2;--tooltip-bg: #1c2430;--tooltip-fg: #ffffff;--pay: #17794a;--on-pay: #ffffff;--accent: #be185d;--on-accent: #ffffff;--accent-ink: #a3154f;--accent-soft: #fbe7ef;--accent-soft-2: #f6cfdf;--nav-bg: #2b1220;--nav-fg: #f6e3ec;--nav-muted: #c99bb0;--nav-hover: rgba(255,255,255,.07);--nav-line: rgba(255,255,255,.12)}:root[data-theme=midnight]{color-scheme:dark;--bg: #0b1120;--surface: #131b2e;--surface-2: #18223a;--surface-hover: #1c2742;--line: #26324d;--input-border: #3a4766;--input-bg: #0f1729;--text: #e8edf6;--muted: #9aa7bd;--faint: #5d6a85;--danger: #ff8a80;--danger-soft: #3a1717;--danger-line: #6b2a26;--ok: #5fd39a;--ok-soft: #0f2e22;--ok-line: #1d5a3f;--warn: #f5c451;--warn-soft: #33270b;--disabled-bg: #2a3550;--scrim: rgba(0, 0, 0, .6);--shadow: 0 1px 2px rgba(0,0,0,.4), 0 6px 20px rgba(0,0,0,.35);--viz-grid: #26324d;--tooltip-bg: #e8edf6;--tooltip-fg: #0b1120;--pay: #16804a;--on-pay: #ffffff;--accent: #2f6fe0;--on-accent: #ffffff;--accent-ink: #8bb4ff;--accent-soft: #16264a;--accent-soft-2: #1d3260;--nav-bg: #080d19;--nav-fg: #d5ddeb;--nav-muted: #7f8ca6;--nav-hover: rgba(255,255,255,.06);--nav-line: rgba(255,255,255,.1)}:root[data-theme=graphite]{color-scheme:dark;--bg: #0e1012;--surface: #171a1e;--surface-2: #1d2126;--surface-hover: #22272d;--line: #2c3238;--input-border: #414952;--input-bg: #121417;--text: #e8edf6;--muted: #9aa7bd;--faint: #5d6a85;--danger: #ff8a80;--danger-soft: #3a1717;--danger-line: #6b2a26;--ok: #5fd39a;--ok-soft: #0f2e22;--ok-line: #1d5a3f;--warn: #f5c451;--warn-soft: #33270b;--disabled-bg: #2a3550;--scrim: rgba(0, 0, 0, .6);--shadow: 0 1px 2px rgba(0,0,0,.4), 0 6px 20px rgba(0,0,0,.35);--viz-grid: #2c3238;--tooltip-bg: #e8edf6;--tooltip-fg: #0b1120;--pay: #16804a;--on-pay: #ffffff;--accent: #22c55e;--on-accent: #0b1a10;--accent-ink: #4ade80;--accent-soft: #12301e;--accent-soft-2: #174027;--nav-bg: #0a0b0d;--nav-fg: #d9dee4;--nav-muted: #808a96;--nav-hover: rgba(255,255,255,.06);--nav-line: rgba(255,255,255,.1)}@media(prefers-color-scheme:dark){:root[data-theme=auto]{color-scheme:dark;--bg: #0b1120;--surface: #131b2e;--surface-2: #18223a;--surface-hover: #1c2742;--line: #26324d;--input-border: #3a4766;--input-bg: #0f1729;--text: #e8edf6;--muted: #9aa7bd;--faint: #5d6a85;--danger: #ff8a80;--danger-soft: #3a1717;--danger-line: #6b2a26;--ok: #5fd39a;--ok-soft: #0f2e22;--ok-line: #1d5a3f;--warn: #f5c451;--warn-soft: #33270b;--disabled-bg: #2a3550;--scrim: rgba(0, 0, 0, .6);--shadow: 0 1px 2px rgba(0,0,0,.4), 0 6px 20px rgba(0,0,0,.35);--viz-grid: #26324d;--tooltip-bg: #e8edf6;--tooltip-fg: #0b1120;--pay: #16804a;--on-pay: #ffffff;--accent: #2f6fe0;--on-accent: #ffffff;--accent-ink: #8bb4ff;--accent-soft: #16264a;--accent-soft-2: #1d3260;--nav-bg: #080d19;--nav-fg: #d5ddeb;--nav-muted: #7f8ca6;--nav-hover: rgba(255,255,255,.06);--nav-line: rgba(255,255,255,.1)}}@media print{:root[data-theme]{color-scheme:light;--bg: #f4f6f9;--surface: #ffffff;--surface-2: #f8fafc;--surface-hover: #f3f6fa;--line: #e3e7ee;--input-border: #c5cdd9;--input-bg: #ffffff;--text: #1c2430;--muted: #5f6b7d;--faint: #a3adbb;--danger: #c42f2a;--danger-soft: #fdecea;--danger-line: #efc2bf;--ok: #17794a;--ok-soft: #e5f5ec;--ok-line: #bfe3cf;--warn: #8a5c00;--warn-soft: #fff4d6;--disabled-bg: #c3cbd6;--scrim: rgba(15, 23, 42, .5);--shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 16px rgba(15,23,42,.06);--viz-grid: #e9edf2;--tooltip-bg: #1c2430;--tooltip-fg: #ffffff;--pay: #17794a;--on-pay: #ffffff;--accent: #1f6feb;--on-accent: #ffffff;--accent-ink: #1a5fcc;--accent-soft: #e6effd;--accent-soft-2: #d2e2fb;--nav-bg: #152033;--nav-fg: #dfe6f1;--nav-muted: #93a1b8;--nav-hover: rgba(255,255,255,.07);--nav-line: rgba(255,255,255,.12)}}:root{--radius: 10px;--control-h: 36px;--ring: 0 0 0 3px var(--accent-soft-2);--ease: cubic-bezier(.2, .7, .3, 1)}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font-family:Inter,Noto Sans Lao,Phetsarath OT,system-ui,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent-ink)}::selection{background:var(--accent-soft-2);color:var(--text)}*{scrollbar-color:var(--input-border) transparent;scrollbar-width:thin}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1.page{font-size:21px;font-weight:650;letter-spacing:-.01em;margin:0 0 16px}.page-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:16px}.page-head h1{margin:0;font-size:21px;font-weight:650;letter-spacing:-.01em}.page-head>div{flex-wrap:wrap}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.card+.card{margin-top:16px}label{display:grid;gap:4px;font-size:13px;font-weight:500;color:var(--muted)}label.inline{display:flex;align-items:center;gap:6px;color:var(--text);font-weight:400}input,select,textarea{font:inherit;color:var(--text);background:var(--input-bg);border:1px solid var(--input-border);border-radius:8px;padding:7px 10px;min-width:0;width:100%;transition:border-color .15s,box-shadow .15s}input:not([type=checkbox]):not([type=radio]),select{min-height:var(--control-h)}input::placeholder,textarea::placeholder{color:var(--faint)}select option{background:var(--surface);color:var(--text)}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--accent)}input:hover:not(:focus):not(:disabled),select:hover:not(:focus):not(:disabled),textarea:hover:not(:focus){border-color:var(--muted)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}input:disabled,select:disabled{background:var(--surface-2);color:var(--muted)}input.num{text-align:right}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-weight:500;border:1px solid var(--input-border);background:var(--surface);color:var(--text);min-height:var(--control-h);padding:6px 14px;border-radius:8px;cursor:pointer;white-space:nowrap;text-decoration:none;transition:background-color .15s,border-color .15s,filter .15s,box-shadow .15s}.btn:hover{border-color:var(--muted);background:var(--surface-hover)}.btn:active:not(:disabled){filter:brightness(.96)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover{filter:brightness(1.08);background:var(--accent)}.btn.danger{color:var(--danger);border-color:var(--danger-line)}.btn.danger:hover{background:var(--danger-soft)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--surface-hover)}.btn.small{min-height:30px;padding:3px 10px;font-size:13px}.btn.block{width:100%}.btn:disabled{opacity:.55;cursor:not-allowed}.icon-btn{border:0;background:transparent;color:var(--text);font-size:20px;cursor:pointer;padding:4px 8px;border-radius:8px}.icon-btn:hover{background:var(--surface-hover)}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:14px}.toolbar>label{min-width:140px}.toolbar .grow{flex:1;min-width:180px}.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}@media(max-width:760px){.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}.span-2{grid-column:auto}}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}table.data{width:100%;border-collapse:collapse;font-size:13.5px}table.data th{text-align:left;font-weight:600;font-size:12.5px;color:var(--muted);background:var(--surface-2);position:sticky;top:0}table.data th,table.data td{padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}table.data tr:last-child td{border-bottom:0}table.data tbody tr:hover{background:var(--surface-hover)}table.data .num{text-align:right;font-variant-numeric:tabular-nums}table.data tr.clickable{cursor:pointer}table.data tfoot td{font-weight:600;background:var(--surface-2)}.empty{padding:28px;text-align:center;color:var(--muted)}.alert{padding:9px 12px;border-radius:8px;font-size:13.5px}.alert.error{background:var(--danger-soft);color:var(--danger)}.alert.ok{background:var(--ok-soft);color:var(--ok)}.alert.warn{background:var(--warn-soft);color:var(--warn)}.badge{display:inline-block;padding:1px 8px;border-radius:99px;font-size:12px;font-weight:500;background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}.badge.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}.badge.bad{background:var(--danger-soft);color:var(--danger);border-color:transparent}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:16px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}.stat .k{color:var(--muted);font-size:13px}.stat .v{font-size:22px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}.modal-backdrop{position:fixed;inset:0;background:var(--scrim);display:grid;place-items:center;z-index:50;padding:16px;animation:fade-in .15s var(--ease)}.modal{background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 64px #00000047;width:100%;max-width:720px;max-height:calc(100vh - 32px);overflow-y:auto;padding:20px;animation:pop-in .18s var(--ease)}.modal h2{margin:0 0 14px;font-size:18px}.modal .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.modal.doc-modal{max-width:920px}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px) scale(.985)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}.muted{color:var(--muted)}.right{text-align:right}@media print{body *{visibility:hidden}#receipt,#receipt *{visibility:visible}#receipt{position:fixed;left:0;top:0;width:72mm;font-size:12px}}.print-only{display:none}@media print{body.print-report *{visibility:visible!important}body.print-report .sidebar,body.print-report .topbar,body.print-report .no-print{display:none!important}body.print-report .shell{display:block}body.print-report .content{padding:0}body.print-report .print-only{display:block}body.print-report .print-title h2{margin:0 0 2px;font-size:16px}body.print-report .table-wrap{overflow:visible;border:0}body.print-report table.data th,body.print-report table.data td{white-space:normal;padding:3px 5px;font-size:11px}body.print-report .label{break-inside:avoid;border-color:#ddd}}@media print{body.print-slip .sidebar,body.print-slip .topbar,body.print-slip .no-print{display:none!important}body.print-slip .shell{display:block}body.print-slip .content{padding:0}body.print-slip .content :has(>.slip-print)>:not(.slip-print){display:none!important}body.print-slip .slip-print{display:block!important;width:72mm}body.print-slip .slip-print,body.print-slip .slip-print *{visibility:visible!important}}@media print{body.print-doc .sidebar,body.print-doc .topbar,body.print-doc .no-print{display:none!important}body.print-doc .shell{display:block}body.print-doc .content{padding:0}body.print-doc .content :not(:has(.print-host),.print-host,.print-host *){display:none!important}body.print-doc .print-host{position:static;display:block;padding:0;background:none}body.print-doc .print-host>.modal{max-width:none;max-height:none;overflow:visible;padding:0;border-radius:0}body.print-doc .print-host,body.print-doc .print-host *{visibility:visible!important}}
