@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-thai-400-normal-C2DaJlKK.woff2) format("woff2"),url(/assets/sarabun-thai-400-normal-CH-UbWgg.woff) format("woff")}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-thai-600-normal-3dIAQ-_s.woff2) format("woff2"),url(/assets/sarabun-thai-600-normal-DWKeTe6a.woff) format("woff")}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-thai-700-normal-CbuDipM3.woff2) format("woff2"),url(/assets/sarabun-thai-700-normal-CP2-p8e-.woff) format("woff")}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-400-normal-URPBxl-K.woff2) format("woff2"),url(/assets/sarabun-latin-400-normal-DmguIS-7.woff) format("woff")}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-600-normal-DMD3TROr.woff2) format("woff2"),url(/assets/sarabun-latin-600-normal-9FonlkKx.woff) format("woff")}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-700-normal-DQKyWxHq.woff2) format("woff2"),url(/assets/sarabun-latin-700-normal-DUuqj4Ju.woff) format("woff")}:root{--bg: #f5f8fb;--card: #fff;--ink: #163249;--muted: #647b8b;--primary: #087bb9;--primary-ink: #fff;--soft: #eef6fb;--accent: #e9f4fc;--border: #dee8ef;--input: #d6e2ec;--danger: #bf3645;--danger-soft: #fdeef0;--ok: #19805a;--ok-soft: #e7f6ef;--warn: #a94d15;--warn-soft: #fff4e8;--radius: 11px;color-scheme:light}*{box-sizing:border-box}html,body{margin:0}body{font-family:Sarabun,Leelawadee UI,Tahoma,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:16px;line-height:1.55}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:var(--primary)}h1{font-size:26px;margin:0;line-height:1.35;letter-spacing:-.3px}h2{font-size:18px;margin:0 0 10px}h3{font-size:16px;margin:0 0 8px}p{margin:0 0 8px}.muted{color:var(--muted)}.small{font-size:13.5px}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.strong{font-weight:700}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.stack{display:grid;gap:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:7px 15px;border-radius:9px;border:1px solid var(--input);background:#fff;font-weight:600;font-size:15px;text-decoration:none;color:var(--ink);white-space:nowrap}.btn:hover:not(:disabled){background:var(--soft)}.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.btn.primary:hover:not(:disabled){background:#066da5}.btn.danger{color:var(--danger);border-color:#efc4ca}.btn.danger:hover:not(:disabled){background:var(--danger-soft)}.btn.ghost{border-color:transparent;background:transparent}.btn.small{min-height:32px;padding:4px 10px;font-size:14px}.btn svg{width:18px;height:18px;flex:none}.icon-btn{border:0;background:transparent;padding:6px;border-radius:8px;color:var(--muted);display:inline-flex}.icon-btn:hover{background:var(--soft);color:var(--ink)}.icon-btn svg{width:18px;height:18px}label.field{display:grid;gap:5px;font-size:14.5px;font-weight:600}label.field>span{color:#3c566b}input[type=text],input[type=password],input[type=date],input[type=month],input[type=number],input:not([type]),select,textarea{width:100%;min-height:40px;padding:7px 11px;border:1px solid var(--input);border-radius:9px;background:#fff;font-weight:400}input:focus,select:focus,textarea:focus,.btn:focus-visible,.icon-btn:focus-visible{outline:3px solid #bfe3f5;outline-offset:1px;border-color:#30a8d9}input.amount{text-align:right;font-variant-numeric:tabular-nums}input.invalid{border-color:var(--danger);background:var(--danger-soft)}.checkbox{display:inline-flex;align-items:center;gap:8px;font-weight:500;cursor:pointer}.checkbox input{width:18px;height:18px;accent-color:var(--primary)}.form-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.alert{padding:10px 14px;border-radius:10px;border:1px solid;font-size:15px}.alert.error{background:var(--danger-soft);border-color:#f1c6cc;color:#8f1f2c}.alert.ok{background:var(--ok-soft);border-color:#bfe5d3;color:#11603f}.alert.warn{background:var(--warn-soft);border-color:#f2d3b5;color:#7d3a0f}.alert.info{background:var(--accent);border-color:#c8e3f3;color:#0b5b88}.badge{display:inline-flex;align-items:center;gap:4px;padding:1px 9px;border-radius:99px;font-size:13px;font-weight:700;white-space:nowrap}.badge.draft{background:var(--warn-soft);color:var(--warn)}.badge.closed{background:var(--ok-soft);color:var(--ok)}.badge.muted{background:#eef2f5;color:var(--muted)}.login{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.login-card{width:min(420px,100%);background:#fff;border:1px solid var(--border);border-radius:18px;padding:28px 26px;box-shadow:0 16px 40px #123c5a14;display:grid;gap:14px}.login-card img{width:190px;margin:0 auto 4px;display:block}.login-card h1{text-align:center;font-size:22px}.login-card .sub{text-align:center;color:var(--muted);margin-top:-8px}.shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}.shell>div{min-width:0}.side{background:#fff;border-right:1px solid var(--border);padding:18px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.side img{width:170px;margin:2px 10px 4px}.side .caption{font-size:11px;letter-spacing:2.5px;font-weight:700;color:#7d93a5;margin:0 12px 16px}.nav{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;color:#506579;text-decoration:none;font-weight:600}.nav svg{width:19px;height:19px}.nav:hover{background:var(--soft)}.nav.active{background:var(--accent);color:#066eaa}.side .who{margin-top:auto;padding:10px 12px;font-size:13.5px;color:var(--muted);border-top:1px solid var(--border)}.main{padding:26px 30px 60px;min-width:0}.page-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.page-head .grow{flex:1;min-width:200px}.topbar{display:none}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px}.card.flush{padding:0;overflow:hidden}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:15px}th{text-align:left;font-size:13px;color:var(--muted);font-weight:700;padding:10px 12px;border-bottom:1px solid var(--border);background:#fafcfd;white-space:nowrap}td{padding:10px 12px;border-bottom:1px solid #edf2f6;vertical-align:middle}tr:last-child td{border-bottom:0}tr.click{cursor:pointer}tr.click:hover td{background:#f7fbfd}tfoot td{font-weight:700;background:#f7fbfd;border-top:1px solid var(--border)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}.stat{background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 16px}.stat .label{font-size:13.5px;color:var(--muted);font-weight:600}.stat .value{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.stat.hl{background:var(--accent);border-color:#c8e3f3}.stat.hl .value{color:var(--primary)}.slip-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:18px;align-items:start}.lines{display:grid;gap:8px}.line{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr) 124px 104px;gap:6px;align-items:center}.line-actions{display:flex;align-items:center;gap:0}.line-actions .icon-btn:disabled{visibility:hidden}.show-sm{display:none!important}.line.head{font-size:12.5px;color:var(--muted);font-weight:700}.line input{min-height:38px;padding:6px 9px}.line-total{display:flex;justify-content:space-between;padding:10px 4px 0;border-top:1px dashed var(--border);font-weight:700;margin-top:4px}.net-box{display:flex;justify-content:space-between;align-items:center;background:var(--accent);border:1px solid #c8e3f3;border-radius:12px;padding:12px 16px}.net-box .value{font-size:24px;font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums}.preview{position:sticky;top:16px}.preview img{width:100%;border:1px solid var(--border);border-radius:10px;background:#fff;display:block}.preview .placeholder{aspect-ratio:794 / 1123;display:grid;place-items:center;color:var(--muted);border:1px dashed var(--border);border-radius:10px;background:#fff}.sticky-actions{position:sticky;bottom:0;background:linear-gradient(180deg,rgba(245,248,251,0),var(--bg) 30%);padding:14px 0 6px}.overlay{position:fixed;inset:0;background:#0c1e2d73;display:grid;place-items:center;padding:16px;z-index:50}.dialog{width:min(480px,100%);background:#fff;border-radius:16px;padding:22px;display:grid;gap:14px;box-shadow:0 20px 60px #0003;max-height:calc(100vh - 32px);overflow:auto}.footer-credit{text-align:center;font-size:12px;color:#8a9aab;padding:16px 0 4px}.qr{width:200px;height:200px;image-rendering:pixelated;border:1px solid var(--border);border-radius:10px}code.secret{font-size:14px;word-break:break-all;background:var(--soft);padding:4px 8px;border-radius:6px}@media(max-width:1100px){.slip-layout{grid-template-columns:1fr}.preview{position:static}}@media(max-width:820px){.shell{grid-template-columns:1fr}.side{display:none}.side.open{display:flex;position:fixed;inset:0 30% 0 0;z-index:40;box-shadow:0 0 40px #00000040;min-width:240px}.topbar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}.topbar img{height:34px}.main{padding:18px 16px 50px}h1{font-size:22px}.line{grid-template-columns:minmax(0,1fr) 108px auto}.line .note-input{display:none}.line.has-note .note-input{display:block;grid-column:1 / 3;grid-row:2}.line.head .note-head{display:none}.show-sm{display:inline-flex!important}.lines{gap:10px}.hide-sm{display:none!important}td,th{padding:9px 8px}}@media print{.side,.topbar,.no-print,.footer-credit{display:none!important}.shell{display:block}.main{padding:0}body{background:#fff}}.center{text-align:center}.h-icon{vertical-align:-4px;width:20px}.login-card.wide-card{width:min(520px,100%)}.btn.big{min-height:52px;padding:10px 22px;font-size:17px;border-radius:12px}.btn.attention{border-color:#f2d3b5;background:var(--warn-soft);color:var(--warn)}.btn.tick{border-color:#bfe5d3;color:var(--ok)}.btn.tick:hover:not(:disabled){background:var(--ok-soft)}.btn.ghost.danger{color:var(--danger)}.row.tight{gap:4px}.grow{flex:1;min-width:0}.hero{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:22px}.section{margin-top:22px}.empty{padding:28px 16px;text-align:center;color:var(--muted);background:#fff;border:1px dashed var(--border);border-radius:14px}.scrim{display:none}.warn-text{color:var(--warn)}.urgent-text{color:#c62f3f;font-weight:700}.badges{display:inline-flex;gap:4px;flex-wrap:wrap}.badge.urgent{background:#c62f3f;color:#fff}.badge.st-pending{background:var(--warn-soft);color:var(--warn)}.badge.st-ordered{background:var(--accent);color:#0b5b88}.badge.st-partial{background:#fff1d6;color:#8a5a00}.badge.st-received{background:var(--ok-soft);color:var(--ok)}.badge.st-cancelled{background:#eef2f5;color:var(--muted);text-decoration:line-through}.badge.st-paid{background:#efe9fb;color:#5b3aa6}.badge.os-draft{background:#eef2f5;color:var(--muted)}.badge.os-sent{background:var(--warn-soft);color:var(--warn)}.badge.os-progress{background:var(--accent);color:#0b5b88}.badge.os-await_payment{background:#efe9fb;color:#5b3aa6}.badge.os-done{background:var(--ok-soft);color:var(--ok)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chips.filter{margin-bottom:14px}.chip{border:1px solid var(--input);background:#fff;border-radius:99px;padding:6px 14px;font-weight:600;font-size:15px;min-height:38px}.chip.on{background:var(--primary);border-color:var(--primary);color:#fff}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.tab{border:1px solid var(--border);background:#fff;border-radius:10px;padding:7px 14px;font-weight:600}.tab.on{background:var(--accent);border-color:#c8e3f3;color:#066eaa}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.filters input,.filters select{width:auto;min-width:140px;flex:0 1 auto}.filters input:not([type]){flex:1 1 200px}input.search{margin-bottom:12px}.field{display:grid;gap:6px;font-size:14.5px;font-weight:600}.field>span{color:#3c566b}.radio{display:flex;align-items:center;gap:8px;font-weight:500;padding:4px 0}.radio input{width:18px;height:18px;accent-color:var(--primary)}.form-grid.tight{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}textarea{resize:vertical}.urgent-box{color:#c62f3f;font-weight:700}.subtle{border-top:1px solid var(--border);padding-top:12px}.dialog.wide{width:min(640px,100%)}tr.inactive td{opacity:.55}tr.late td{background:#fff8f0}.picker{position:relative}.suggest{position:absolute;top:100%;left:0;right:0;z-index:5;background:#fff;border:1px solid var(--input);border-radius:10px;box-shadow:0 10px 30px #0000001f;max-height:260px;overflow:auto;margin-top:2px}.suggest button{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;border:0;background:#fff;padding:9px 12px;border-bottom:1px solid #f0f4f7;font-weight:500}.suggest button:hover{background:var(--soft)}.action-row{margin-bottom:14px}.note-card{margin-bottom:14px;padding:12px 16px}.item-groups{display:grid;gap:10px;padding-bottom:80px}.select-all{margin:0 4px}.card.group{padding:10px 14px}.group-head{display:flex;align-items:center;gap:10px}.group-head.padded{padding:12px 14px;border-bottom:1px solid var(--border);background:#fafcfd}.group-head input,.line-item>input,td.check input{width:18px;height:18px;accent-color:var(--primary);flex:none}.group-head .no{min-width:26px;height:26px;border-radius:99px;background:var(--accent);color:#066eaa;display:inline-grid;place-items:center;font-weight:700;font-size:14px}.group-head .gname{font-weight:700;font-size:16.5px}.line-item{display:flex;gap:10px;align-items:flex-start;padding:8px 0 6px 36px;border-top:1px dashed #e6eef3;margin-top:6px}.line-item>input{margin-top:4px}.line-item.cancelled .li-name,.line-item.cancelled .li-qty{text-decoration:line-through;color:var(--muted)}.li-main{flex:1;min-width:0}.li-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.li-name{font-weight:600}.li-qty{font-weight:700;color:var(--primary)}.li-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:2px}.owner-meta{color:#5b3aa6}.li-actions{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.li-actions .btn.small{min-height:30px;padding:3px 9px;font-size:13.5px}.li-actions .btn svg{width:15px;height:15px}.bulk-bar{position:fixed;left:50%;transform:translate(-50%);bottom:14px;z-index:35;display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center;background:#fff;border:1px solid #c8e3f3;border-radius:14px;padding:10px 14px;box-shadow:0 10px 30px #123c5a2e;max-width:calc(100vw - 24px)}.mini-list{margin:0;padding-left:18px;max-height:220px;overflow:auto}.mini-list li{display:flex;justify-content:space-between;gap:10px}.plain-list{list-style:none;margin:0;padding:0}.plain-list li{padding:10px 14px;border-bottom:1px solid #edf2f6}.plain-list li:last-child{border-bottom:0}.items-table td{vertical-align:top}.items-table td.check{width:34px;padding-right:0}.items-table td.num{width:120px}.export-pages{display:grid;gap:12px;max-height:60vh;overflow:auto;background:var(--bg);padding:10px;border-radius:10px}.export-pages img{width:100%;display:block;border:1px solid var(--border);border-radius:8px;background:#fff}.export-pages figure{margin:0}.stat{text-decoration:none;color:inherit;display:block}.stat.warn{background:var(--warn-soft);border-color:#f2d3b5}.stat.warn .value{color:var(--warn)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:820px){.side.open{min-width:260px}.scrim{display:block;position:fixed;inset:0;background:#0c1e2d59;z-index:39}.two-col{grid-template-columns:1fr}.line-item{padding-left:4px}.hero .btn{flex:1 1 100%}.bulk-bar{bottom:8px;width:calc(100vw - 16px)}.filters input,.filters select{flex:1 1 140px}}textarea.text-export{font-family:inherit;font-size:15px;line-height:1.6;white-space:pre;overflow:auto;min-height:260px}.ok-text{color:var(--ok);font-weight:700}.bill-table td.price-cell{width:140px}.bill-table td.price-cell input{min-width:100px}.bill-table th.check,.bill-table td.check{width:34px}
