@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:400 700;font-display:swap;src:url(../fonts/noto-sans-lao-lao.woff2) format("woff2");unicode-range:U+0E81-0EDF,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:400 700;font-display:swap;src:url(../fonts/noto-sans-lao-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:400 700;font-display:swap;src:url(../fonts/noto-sans-lao-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--brand: #ea5504;--brand-deep: #cc4a03;--brand-text: #c24503;--brand-soft: #fdf1ea;--brand-grad: var(--brand);--green: #15803d;--green-soft: #f0fdf4;--red: #b91c1c;--red-soft: #fef2f2;--ink: #1c1917;--ink-2: #57534e;--ink-3: #78716c;--bg: #faf9f7;--card: #ffffff;--line: #ebe7e2;--shadow: 0 1px 2px rgba(28, 25, 23, .06);--shadow-lg: 0 8px 24px rgba(28, 25, 23, .09);--r-sm: 8px;--r-md: 12px;--r-lg: 16px;font-family:Noto Sans Lao,system-ui,sans-serif}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-size:15px;-webkit-font-smoothing:antialiased;overflow:hidden}::selection{background:var(--brand-soft)}button{font-family:inherit;font-size:inherit;border:none;background:none;cursor:pointer;color:inherit}button:focus-visible,[role=button]:focus-visible{outline:2px solid var(--brand);outline-offset:2px}input,select{font-family:inherit;font-size:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;outline:none;caret-color:var(--brand)}input::placeholder{color:var(--ink-3)}input:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3px #ea55041f}*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}*::-webkit-scrollbar-track{background:transparent}.num{font-variant-numeric:tabular-nums}.shell{display:flex;height:100%}.rail{width:84px;background:var(--card);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;padding:12px 8px;gap:6px;flex-shrink:0}.rail-logo{width:48px;height:48px;border-radius:var(--r-md);background:var(--brand-grad);color:#fff;display:grid;place-items:center;font-weight:700;font-size:18px;margin-bottom:10px;box-shadow:var(--shadow)}.rail-btn{position:relative;width:68px;padding:10px 0 8px;border-radius:var(--r-md);display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--ink-2);font-size:12px;transition:background .15s,color .15s}.rail-btn svg{width:22px;height:22px}.rail-btn:hover{background:var(--bg)}.rail-btn.active{background:var(--brand-soft);color:var(--brand-text);font-weight:600}.rail-badge{position:absolute;top:4px;right:8px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--red);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center}.rail-badge.warn{background:#d97706}.rail-badge.ok{background:var(--green)}.rail-badge.brand{background:var(--brand)}.main{flex:1;display:flex;min-width:0}.sell-left{flex:1;display:flex;flex-direction:column;min-width:0}.sell-head{display:flex;align-items:center;gap:12px;padding:14px 18px 10px}.sell-head h1{font-size:18px;font-weight:700}.sell-head .search{flex:1;max-width:340px}.cat-tabs-wrap{position:relative;flex-shrink:0}.cat-tabs{display:flex;gap:8px;padding:4px 18px 12px;overflow-x:auto;flex-shrink:0;scrollbar-width:none}.cat-tabs::-webkit-scrollbar{display:none}.tab-arrow{position:absolute;top:0;bottom:8px;width:46px;display:grid;place-items:center;font-size:26px;font-weight:700;color:var(--brand-text);z-index:2}.tab-arrow.left{left:0;background:linear-gradient(to right,var(--bg) 55%,transparent)}.tab-arrow.right{right:0;background:linear-gradient(to left,var(--bg) 55%,transparent)}.cat-tab{padding:10px 16px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--ink-2);white-space:nowrap;font-weight:500;transition:background .15s,color .15s,border-color .15s,box-shadow .15s}.cat-tab.active{background:var(--brand-deep);border-color:transparent;color:#fff;box-shadow:var(--shadow)}.grid{flex:1;overflow-y:auto;padding:4px 18px 18px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-auto-rows:max-content;gap:12px;align-content:start}.tile{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:14px;text-align:left;display:flex;flex-direction:column;gap:8px;min-height:108px;box-shadow:var(--shadow);transition:transform .08s,border-color .15s}.tile:active{transform:scale(.97)}.tile:hover{border-color:var(--brand)}.tile .t-name{font-weight:600;line-height:1.45}.tile .t-price{margin-top:auto;color:var(--brand-text);font-weight:700;font-size:16px}.tile .t-stock{font-size:12px;font-weight:600}.tile.has-img{padding:0 0 12px;overflow:hidden}.tile .t-img{width:100%;height:92px;object-fit:cover;border-radius:11px 11px 0 0;background:var(--bg)}.tile.has-img .t-name,.tile.has-img .t-price,.tile.has-img .t-stock{padding:0 12px}.tile.has-img .t-name{margin-top:8px}.cart{width:340px;background:var(--card);border-left:1px solid var(--line);display:flex;flex-direction:column;flex-shrink:0}.cart-head{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.cart-head h2{font-size:16px;font-weight:700}.chip{font-size:12px;font-weight:600;background:var(--brand-soft);color:var(--brand-text);border-radius:999px;padding:3px 10px}.cart-lines{flex:1;overflow-y:auto;padding:8px 12px;display:flex;flex-direction:column;gap:4px}.cart-empty{color:var(--ink-3);text-align:center;margin-top:48px;font-size:14px}.line{display:flex;align-items:center;gap:8px;padding:8px 6px;border-radius:var(--r-sm)}.line:hover{background:var(--bg)}.line .l-name{flex:1;min-width:0;font-weight:500;line-height:1.4}.line .l-price{color:var(--ink-2);font-size:13px}.line .l-note{color:var(--brand-text);font-size:12px;font-weight:500}.qty-btn{width:38px;height:38px;border-radius:8px;border:1px solid var(--line);display:grid;place-items:center;font-weight:700;font-size:15px;color:var(--ink-2);flex-shrink:0}.qty-btn:hover{border-color:var(--brand);color:var(--brand-text)}.qty{width:26px;text-align:center;font-weight:700}.cart-foot{border-top:1px solid var(--line);padding:14px 18px;display:flex;flex-direction:column;gap:10px}.sumrow{display:flex;justify-content:space-between;color:var(--ink-2);font-size:14px}.totalrow{display:flex;justify-content:space-between;align-items:baseline;font-weight:700}.totalrow .amount{font-size:26px;color:var(--ink)}.charge{background:var(--brand-grad);color:#fff;font-weight:700;font-size:19px;border-radius:var(--r-md);padding:15px;box-shadow:var(--shadow);transition:transform .08s,opacity .15s}.charge:active{transform:scale(.98)}.charge:disabled{opacity:.4;cursor:default}.clear-btn{color:var(--ink-3);font-size:13px;padding:6px 0}.clear-btn:hover{color:var(--red)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c191780;display:grid;place-items:center;z-index:40}.modal{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);width:min(480px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow-y:auto;padding:22px;display:flex;flex-direction:column;gap:16px}.modal h3{font-size:18px;font-weight:700}.pay-total{text-align:center;background:var(--bg);border-radius:var(--r-md);padding:14px}.pay-total .label{color:var(--ink-2);font-size:13px}.pay-total .amount{font-size:34px;font-weight:700;color:var(--brand)}.pay-total .rounding-note{font-size:12px;color:var(--ink-3)}.method-tabs{display:flex;gap:8px}.method-tab{flex:1;padding:11px;border-radius:var(--r-md);border:1.5px solid var(--line);font-weight:600;color:var(--ink-2);display:flex;align-items:center;justify-content:center;gap:8px}.method-tab.active{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-text)}.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.quick{padding:12px 4px;border-radius:var(--r-md);border:1px solid var(--line);font-weight:600;background:var(--card)}.quick:hover{border-color:var(--brand);color:var(--brand-text)}.quick.exact{background:var(--green-soft);color:var(--green);border-color:transparent}.received-row{display:flex;align-items:center;gap:10px}.received-row input{flex:1;font-size:20px;font-weight:700;text-align:right}.change-row{display:flex;justify-content:space-between;align-items:baseline;background:var(--green-soft);border-radius:var(--r-md);padding:12px 16px;font-weight:700}.change-row .amount{font-size:26px;color:var(--green)}.change-row.short{background:var(--red-soft)}.change-row.short .amount{color:var(--red)}.qr-box{display:grid;place-items:center;background:var(--bg);border:1px dashed var(--line);border-radius:var(--r-md);padding:20px;gap:8px;text-align:center;color:var(--ink-2)}.qr-box svg{width:148px;height:148px}.modal-actions{display:flex;gap:10px}.btn{flex:1;padding:13px;border-radius:var(--r-md);font-weight:700;text-align:center}.btn-ghost{border:1px solid var(--line);color:var(--ink-2)}.btn-ghost:hover{background:var(--bg)}.btn-brand{background:var(--brand-deep);color:#fff}.btn:disabled{opacity:.4;cursor:default}.btn-green{background:var(--green);color:#fff}.btn-danger{background:var(--red);color:#fff}.pay-sticky{position:sticky;bottom:-22px;background:var(--card);margin:0 -22px -22px;padding:12px 22px 18px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px;box-shadow:0 -6px 16px #1c19170d}.done-check{width:72px;height:72px;margin:0 auto;border-radius:999px;background:var(--green-soft);display:grid;place-items:center;color:var(--green)}.done-check svg{width:40px;height:40px}.done-change{text-align:center}.done-change .label{color:var(--ink-2)}.done-change .amount{font-size:40px;font-weight:700;color:var(--green)}.page{flex:1;overflow-y:auto;padding:20px 24px;min-width:0}.page>h1{font-size:20px;font-weight:700;margin-bottom:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}.card h2{font-size:15px;font-weight:700;margin-bottom:12px}.form-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.form-row input{flex:1;min-width:120px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:12px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:1px solid var(--line)}td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}tr:last-child td{border-bottom:none}td .inline-input{padding:6px 10px;width:130px}.td-actions{text-align:right;white-space:nowrap}.link-btn{color:var(--brand-text);font-weight:600;font-size:13px;padding:9px 10px}.link-btn.danger{color:var(--red)}.link-btn:hover{text-decoration:underline}.badge{font-size:12px;font-weight:600;border-radius:999px;padding:3px 10px}.badge.paid{background:var(--green-soft);color:var(--green)}.badge.void{background:var(--red-soft);color:var(--red)}.stat-row{display:flex;gap:14px;margin-bottom:16px;flex-wrap:wrap}.stat{flex:1;min-width:180px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);padding:16px 18px}.stat .s-label{color:var(--ink-2);font-size:13px}.stat .s-value{font-size:26px;font-weight:700;margin-top:2px}.stat .s-value.brand{color:var(--brand-text)}.items-sub{color:var(--ink-2);font-size:13px;line-height:1.6}.empty-note{color:var(--ink-3);text-align:center;padding:30px 0}.bill-cards{display:none}.bill-card{border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;display:flex;flex-direction:column;gap:6px}.bill-card .bc-top{display:flex;justify-content:space-between;align-items:center}.bill-card .bc-mid{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.bill-card .bc-actions{display:flex;gap:6px;justify-content:flex-end}.back-btn{font-weight:600;color:var(--ink-2);padding:10px 14px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--card);flex-shrink:0}.back-btn:hover{border-color:var(--brand);color:var(--brand-text)}.tbl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.tbl{position:relative;border-radius:var(--r-md);padding:16px 14px;min-height:104px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;border:1.5px solid var(--line);background:var(--card);box-shadow:var(--shadow);transition:transform .08s,border-color .15s}.tbl:active{transform:scale(.97)}.tbl.free:hover{border-color:var(--green)}.tbl.occupied{background:var(--brand-soft);border-color:#ea55044d}.tbl-name{font-weight:700;font-size:16px}.tbl-free-label{color:var(--ink-3);font-size:13px;margin-top:auto}.tbl-amt{color:var(--brand-text);font-weight:700;margin-top:auto}.tbl-time{color:var(--ink-2);font-size:12px}.tbl-remove{position:absolute;top:0;right:0;color:var(--red);font-weight:700;font-size:14px;padding:12px 14px;border-radius:0 var(--r-md) 0 var(--r-md)}.badge.open{background:var(--brand-soft);color:var(--brand-text)}.lock{height:100%;display:grid;place-items:center;background:var(--brand-soft);padding:20px}.lock-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:30px 28px;width:min(400px,94vw);display:flex;flex-direction:column;gap:12px;text-align:center}.lock-card h2{font-size:18px;font-weight:700}.lock-sub{color:var(--ink-2);font-size:14px;display:flex;align-items:center;justify-content:center;gap:6px}.lock-err{color:var(--red);font-weight:600;font-size:14px}.lock-hint{color:var(--ink-2);font-size:13.5px}.pin-dots.shake{animation:pin-shake .3s}@keyframes pin-shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.user-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.user-tile{border:1px solid var(--line);border-radius:var(--r-md);padding:14px 10px;display:flex;flex-direction:column;align-items:center;gap:4px;transition:border-color .15s}.user-tile:hover{border-color:var(--brand)}.u-avatar{width:44px;height:44px;border-radius:999px;background:var(--brand-grad);color:#fff;display:grid;place-items:center;font-weight:700;font-size:18px}.u-name{font-weight:600}.u-role{font-size:12px;color:var(--ink-3)}.pin-dots{display:flex;gap:10px;justify-content:center;padding:6px 0}.pin-dots .dot{width:14px;height:14px;border-radius:999px;border:1.5px solid var(--line)}.pin-dots .dot.opt{opacity:.45}.pin-dots .dot.on{background:var(--brand);border-color:var(--brand);opacity:1}.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.pin-key{padding:14px 0;font-size:20px;font-weight:700;border:1px solid var(--line);border-radius:var(--r-md);background:var(--card)}.pin-key:hover{border-color:var(--brand);color:var(--brand-text)}.pin-key:active{transform:scale(.96)}.rail-lock{margin-top:auto;color:var(--ink-3)}.z-row{display:flex;justify-content:space-between;align-items:baseline;padding:7px 0;color:var(--ink-2);border-bottom:1px dashed var(--line)}.z-row:last-child{border-bottom:none}.z-row.total{color:var(--ink);font-weight:700;border-bottom:none;padding-top:12px}@media (prefers-reduced-motion: reduce){.tile:active,.charge:active,.tbl:active,.pin-key:active{transform:none}.pin-dots.shake{animation:none}.tile,.charge,.tbl,.cat-tab,.rail-btn,.user-tile{transition-duration:0s}}@media (max-width: 900px){.cart{width:290px}.rail{width:72px}}.field-group{display:flex;flex-direction:column;gap:8px}.field-label{font-size:12.5px;font-weight:600;color:var(--ink-2)}.disc-row{display:flex;gap:8px;flex-wrap:wrap}.disc-chip{padding:9px 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);font-weight:600;font-size:13.5px}.disc-chip.active{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-text)}.money-pad .quick{padding:10px 4px;font-size:16px}.note-btn{font-size:13px}.send-kitchen{font-size:15px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:12px 22px;border-radius:999px;font-weight:600;box-shadow:var(--shadow-lg);z-index:60;animation:toast-in .18s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(10px)}}@media (prefers-reduced-motion: reduce){.toast{animation:none}}@media (max-width: 640px){.shell{flex-direction:column-reverse}.rail{flex-direction:row;width:100%;padding:4px 6px;border-right:none;border-top:1px solid var(--line);justify-content:space-around;gap:0}.rail-logo{display:none}.rail-btn{width:auto;min-width:52px;padding:6px 8px 5px;font-size:11px}.rail-btn svg{width:20px;height:20px}.rail-lock{margin-top:0}.main{flex-direction:column;min-height:0}.sell-left{min-height:0;flex:1.2}.cart{width:100%;flex:1;min-height:0;border-left:none;border-top:2px solid var(--line)}.cart-head{padding:10px 14px}.cart-foot{padding:10px 14px;gap:8px}.cart-lines{min-height:96px}.sell-head{flex-wrap:wrap;padding:10px 12px 6px;gap:8px}.cat-tabs{padding:4px 12px 8px}.grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;padding:4px 12px 12px}.page{padding:14px 12px}input,select{font-size:16px}.toast{bottom:76px}.bills-table{display:none}.bill-cards{display:flex;flex-direction:column;gap:8px}}.pager{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;padding:10px 18px 14px;flex-shrink:0}.pager-btn{min-width:44px;height:44px;padding:0 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink-2);font-weight:700;font-size:16px}.pager-btn:hover{border-color:var(--brand);color:var(--brand-text)}.pager-btn.active{background:var(--brand-deep);border-color:transparent;color:#fff}.pager-btn:disabled{opacity:.35;cursor:default}.pager-ellipsis{color:var(--ink-3);padding:0 2px}@media (max-width: 640px){.pager{padding:6px 8px 8px;gap:4px}.pager-btn{min-width:40px;height:40px}}
