@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base{:root{--color-bg:#f6f7f9;--color-surface:#fff;--color-primary:#1f5f52;--color-primary-hover:#194e43;--color-primary-subtle:#eaf3ef;--color-on-primary:#fff;--color-text:#172b2a;--color-text-2:#59636b;--color-border:#dde2e5;--color-border-strong:#a9b3ba;--color-muted:#eef1f3;--color-hover:#f1f4f5;--color-success:#2e7d32;--color-success-bg:#e8f3e9;--color-info:#1b5ea8;--color-info-bg:#e7eff9;--color-warning:#8a5800;--color-warning-bg:#fbf1de;--color-error:#b42318;--color-error-bg:#fbeae8;--color-focus:#1b5ea8;--color-proto:#5b3fa8;--color-proto-bg:#f1edfa;--font-sans:"Noto Sans", "Noto Sans Lao", "Noto Sans Thai", "Noto Sans SC", "Leelawadee UI", "Microsoft YaHei UI", "PingFang SC", system-ui, -apple-system, "Segoe UI", sans-serif;--lh-body:1.6;--lh-tight:1.35;--fs-caption:12.5px;--fs-small:13.5px;--fs-body:14.5px;--fs-body-lg:16px;--fs-section:18px;--fs-page:24px;--fs-figure:28px;--fs-kds:19px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--radius-control:8px;--radius-panel:12px;--elev-1:0 1px 3px #172b2a1a, 0 1px 2px #172b2a0f;--elev-2:0 8px 24px #172b2a24, 0 2px 6px #172b2a14;--h-control-sm:32px;--h-control:40px;--h-touch:44px;--h-touch-lg:48px;--h-touch-xl:56px;--sidebar-w:232px;--sidebar-rail-w:68px;--topbar-h:64px;--content-pad:24px;--content-max:1440px;--cart-w:400px;--qr-max:640px}@media (prefers-reduced-motion:reduce){:root{--motion:0s}*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}}@layer mui;@layer components{*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);text-rendering:optimizelegibility;margin:0}html[lang=zh-CN] body{line-height:1.65}img,svg{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{line-height:var(--lh-tight);font-weight:var(--fw-semibold);margin:0}h1{font-size:var(--fs-page)}h2{font-size:var(--fs-section)}h3{font-size:16px}p{margin:0}hr{border:0;border-top:1px solid var(--color-border);margin:var(--sp-4) 0}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.num,.money{font-variant-numeric:tabular-nums}.money{white-space:nowrap}.muted{color:var(--color-text-2)}.small{font-size:var(--fs-small)}.caption{font-size:var(--fs-caption);color:var(--color-text-2)}.strong{font-weight:var(--fw-semibold)}.right{text-align:right}.center{text-align:center}.nowrap{white-space:nowrap}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.hidden{display:none!important}.text-success{color:var(--color-success)}.text-error{color:var(--color-error)}.text-warning{color:var(--color-warning)}.text-info{color:var(--color-info)}.text-primary{color:var(--color-primary)}.strike{color:var(--color-text-2);text-decoration:line-through}.row{align-items:center;gap:var(--sp-2);display:flex}.row-wrap{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.row-between{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.col{gap:var(--sp-2);flex-direction:column;display:flex}.grow{flex:auto;min-width:0}.gap-1{gap:var(--sp-1)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.gap-5{gap:var(--sp-5)}.mt-1{margin-top:var(--sp-1)}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}.mb-2{margin-bottom:var(--sp-2)}.mb-3{margin-bottom:var(--sp-3)}.mb-4{margin-bottom:var(--sp-4)}.stack>*+*{margin-top:var(--sp-4)}.stack-lg>*+*{margin-top:var(--sp-5)}.grid-2{gap:var(--sp-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.grid-3{gap:var(--sp-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.split{grid-template-columns:var(--split-cols,minmax(0, 1fr) 360px);gap:var(--sp-5);align-items:start;display:grid}@media (max-width:1199px){.split{grid-template-columns:var(--split-cols,minmax(0, 1fr) 320px)}}@media (max-width:899px){.grid-2,.grid-3,.split{grid-template-columns:minmax(0,1fr)}}svg.icon{vertical-align:-.22em;display:inline-block}.icon{stroke:currentColor;fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}.icon-sm{width:16px;height:16px}.icon-lg{width:24px;height:24px}.btn{justify-content:center;align-items:center;gap:var(--sp-2);min-height:var(--h-control);padding:0 var(--sp-4);border-radius:var(--radius-control);color:var(--color-primary);font-weight:var(--fw-semibold);font-size:var(--fs-body);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #0000;line-height:1.2;text-decoration:none;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.btn:hover{background:var(--color-primary-subtle);text-decoration:none}.btn:disabled,.btn[aria-disabled=true]{cursor:not-allowed;opacity:.45}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover{background:var(--color-primary-hover)}.btn-primary:disabled:hover{background:var(--color-primary)}.btn-outline{border-color:var(--color-border-strong);color:var(--color-text);background:var(--color-surface)}.btn-outline:hover{background:var(--color-hover)}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover{background:#962015}.btn-danger-outline{border-color:var(--color-error);color:var(--color-error);background:var(--color-surface)}.btn-danger-outline:hover{background:var(--color-error-bg)}.btn-text{padding:0 var(--sp-2)}.btn-sm{min-height:var(--h-control-sm);padding:0 var(--sp-3);font-size:var(--fs-small)}.btn-lg{min-height:var(--h-touch-lg);padding:0 var(--sp-5);font-size:var(--fs-body-lg)}.btn-xl{min-height:var(--h-touch-xl);padding:0 var(--sp-5);font-size:17px}.btn-block{width:100%}.btn-icon{width:var(--h-control);color:var(--color-text-2);padding:0}.btn-icon.btn-sm{width:var(--h-control-sm)}.btn-icon:hover{color:var(--color-text);background:var(--color-hover)}.btn .badge-count{margin-left:2px}.btn.is-busy{pointer-events:none;opacity:.75}.btn.is-busy:after{content:"";border:2px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.link-btn{color:var(--color-primary);font-weight:var(--fw-semibold);cursor:pointer;background:0 0;border:0;padding:0}.link-btn:hover{text-decoration:underline}.chip{height:24px;font-size:var(--fs-caption);font-weight:var(--fw-semibold);white-space:nowrap;background:var(--color-muted);color:var(--color-text-2);border-radius:6px;align-items:center;gap:6px;padding:0 10px;line-height:1;display:inline-flex}.chip .dot{background:currentColor;border-radius:50%;width:7px;height:7px}.chip-success{background:var(--color-success-bg);color:var(--color-success)}.chip-info{background:var(--color-info-bg);color:var(--color-info)}.chip-warning{background:var(--color-warning-bg);color:var(--color-warning)}.chip-error{background:var(--color-error-bg);color:var(--color-error)}.chip-primary{background:var(--color-primary-subtle);color:var(--color-primary)}.chip-outline{background:var(--color-surface);border:1px solid var(--color-border-strong);color:var(--color-text)}.chip-lg{height:30px;font-size:var(--fs-small);padding:0 12px}.chip-p1{color:#6b3fb0;background:#f4ebff;border:1px solid #d9c5f5}.badge-count{background:var(--color-error);color:#fff;min-width:20px;height:20px;font-size:11.5px;font-weight:var(--fw-bold);border-radius:10px;justify-content:center;align-items:center;padding:0 6px;line-height:1;display:inline-flex}.badge-count.neutral{background:var(--color-muted);color:var(--color-text)}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-panel)}.panel-head{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--color-border);min-height:56px;display:flex}.panel-head h2,.panel-head h3{font-size:16px}.panel-body{padding:var(--sp-5)}.panel-body.tight{padding:0}.panel-foot{padding:var(--sp-3) var(--sp-5);border-top:1px solid var(--color-border);justify-content:flex-end;gap:var(--sp-2);flex-wrap:wrap;display:flex}.dl{gap:var(--sp-2) var(--sp-4);grid-template-columns:minmax(110px,max-content) 1fr;margin:0;display:grid}.dl dt{color:var(--color-text-2);font-size:var(--fs-small)}.dl dd{font-weight:var(--fw-medium);overflow-wrap:anywhere;min-width:0;margin:0}.dl-inline{gap:var(--sp-2) var(--sp-5);flex-wrap:wrap;display:flex}.dl-inline>div{flex-direction:column;display:flex}.dl-inline .k{font-size:var(--fs-caption);color:var(--color-text-2)}.dl-inline .v{font-weight:var(--fw-semibold)}.page{max-width:var(--content-max);padding:var(--content-pad);margin:0 auto}.page-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.page-head .titles{min-width:0}.page-head .crumbs{font-size:var(--fs-small);color:var(--color-text-2);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:2px;display:flex}.page-head .crumbs a{color:var(--color-text-2)}.page-head .subtitle{color:var(--color-text-2);font-size:var(--fs-small);margin-top:4px}.page-head .actions{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.screen-id{font-size:11px;font-weight:var(--fw-semibold);color:var(--color-proto);background:var(--color-proto-bg);letter-spacing:.02em;white-space:nowrap;border-radius:4px;flex:none;padding:1px 6px}.tabs{gap:var(--sp-1);border-bottom:1px solid var(--color-border);margin-bottom:var(--sp-5);scrollbar-width:thin;display:flex;overflow-x:auto}.tab{align-items:center;gap:var(--sp-2);padding:0 var(--sp-4);min-height:44px;color:var(--color-text-2);font-weight:var(--fw-semibold);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;text-decoration:none;display:inline-flex}.tab:hover{color:var(--color-text);text-decoration:none}.tab.is-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.tabs.compact{margin-bottom:var(--sp-3)}.seg{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);scrollbar-width:none;background:var(--color-surface);max-width:100%;display:inline-flex;overflow:auto hidden}.seg::-webkit-scrollbar{display:none}.seg>button{white-space:nowrap;flex:none}.seg button{min-height:36px;padding:0 var(--sp-3);font-weight:var(--fw-semibold);color:var(--color-text-2);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;display:inline-flex}.seg button+button{border-left:1px solid var(--color-border)}.seg button.is-active{background:var(--color-primary-subtle);color:var(--color-primary)}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>label,.field .label{font-size:var(--fs-small);font-weight:var(--fw-semibold);color:var(--color-text)}.field .req{color:var(--color-error);margin-left:2px}.field .hint{font-size:var(--fs-caption);color:var(--color-text-2)}.field .error-text{font-size:var(--fs-caption);color:var(--color-error);font-weight:var(--fw-medium);align-items:center;gap:4px;display:flex}.input,.select,.textarea{width:100%;min-height:var(--h-control);border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text);padding:8px 12px}.textarea{resize:vertical;min-height:80px;line-height:var(--lh-body)}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--color-focus);outline-offset:0;border-color:var(--color-focus)}.input[readonly]{background:var(--color-muted)}.input:disabled,.select:disabled{background:var(--color-muted);color:var(--color-text-2)}.field.has-error .input,.field.has-error .select,.field.has-error .textarea{border-color:var(--color-error)}.input-group{align-items:stretch;display:flex}.input-group .input{border-radius:var(--radius-control) 0 0 var(--radius-control)}.input-group .addon{border:1px solid var(--color-border-strong);border-radius:0 var(--radius-control) var(--radius-control) 0;background:var(--color-muted);color:var(--color-text-2);font-size:var(--fs-small);white-space:nowrap;border-left:0;align-items:center;padding:0 12px;display:flex}.input.num{text-align:right}.input-lg{min-height:var(--h-touch-lg);font-size:18px}.search{position:relative}.search .icon{color:var(--color-text-2);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search .input{padding-left:36px}.check{align-items:flex-start;gap:var(--sp-2);cursor:pointer;line-height:1.45;display:inline-flex}.check input{width:18px;height:18px;accent-color:var(--color-primary);flex:none;margin:2px 0 0}.switch{align-items:center;gap:var(--sp-2);cursor:pointer;display:inline-flex;position:relative}.switch input{appearance:none;background:var(--color-border-strong);cursor:pointer;border-radius:11px;flex:none;width:40px;height:22px;margin:0;transition:background .12s;position:relative}.switch input:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:left .12s;position:absolute;top:3px;left:3px}.switch input:checked{background:var(--color-primary)}.switch input:checked:after{left:21px}.switch input:disabled{opacity:.5;cursor:not-allowed}.form-section{padding:var(--sp-5);border-bottom:1px solid var(--color-border)}.form-section:last-child{border-bottom:0}.form-section>h3{margin-bottom:4px}.form-section>.section-desc{color:var(--color-text-2);font-size:var(--fs-small);margin-bottom:var(--sp-4)}.form-grid{gap:var(--sp-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.form-grid .span-2{grid-column:1/-1}.form-grid-3{gap:var(--sp-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}@media (max-width:699px){.form-grid,.form-grid-3{grid-template-columns:minmax(0,1fr)}}.form-actions{justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--color-border);background:var(--color-surface);flex-wrap:wrap;display:flex}.form-actions.sticky{z-index:5;border-radius:0 0 var(--radius-panel) var(--radius-panel);position:sticky;bottom:0}.opt-list{gap:var(--sp-2);flex-wrap:wrap;display:flex}.opt{align-items:center;gap:var(--sp-2);border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);cursor:pointer;min-height:44px;font-weight:var(--fw-medium);text-align:left;padding:6px 14px;display:inline-flex}.opt .price{color:var(--color-text-2);font-size:var(--fs-small)}.opt.is-selected{border-color:var(--color-primary);background:var(--color-primary-subtle);color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.opt:disabled{opacity:.45;cursor:not-allowed}.stepper{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);align-items:center;display:inline-flex;overflow:hidden}.stepper button{cursor:pointer;width:40px;height:40px;color:var(--color-text);background:0 0;border:0;justify-content:center;align-items:center;display:flex}.stepper button:hover{background:var(--color-hover)}.stepper button:disabled{opacity:.35;cursor:not-allowed}.stepper .val{text-align:center;min-width:36px;font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}.stepper.lg button{width:48px;height:48px}.stepper.lg .val{min-width:44px;font-size:18px}.filters{gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--color-border);flex-wrap:wrap;align-items:flex-end;display:flex}.filters .field{min-width:150px}.filters .field.search-field{flex:220px}.filters .spacer{flex:1}.filter-summary{padding:var(--sp-2) var(--sp-5);font-size:var(--fs-small);color:var(--color-text-2);border-bottom:1px solid var(--color-border);gap:var(--sp-3);flex-wrap:wrap;align-items:center;display:flex}.table-wrap{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}table.dt{border-collapse:collapse;width:100%;font-size:var(--fs-body)}.dt th,.dt td{border-bottom:1px solid var(--color-border);text-align:left;vertical-align:middle;padding:10px 14px}.dt th{font-size:var(--fs-small);color:var(--color-text-2);font-weight:var(--fw-semibold);white-space:nowrap;z-index:1;background:#fafbfc;position:sticky;top:0}.dt td.num,.dt th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.dt td.actions{text-align:right;white-space:nowrap}.dt tbody tr:hover{background:#fafbfc}.dt tr.is-link{cursor:pointer}.dt tr.is-muted td{color:var(--color-text-2)}.dt tr.is-selected{background:var(--color-primary-subtle)}.dt tfoot td{font-weight:var(--fw-semibold);background:#fafbfc;border-bottom:0}.dt .cell-title{font-weight:var(--fw-semibold)}.dt .cell-sub{font-size:var(--fs-caption);color:var(--color-text-2)}.dt.dense th,.dt.dense td{padding:8px 12px}.dt input.input,.dt select.select{min-height:36px;padding:6px 10px}.pager{padding:var(--sp-3) var(--sp-5);font-size:var(--fs-small);color:var(--color-text-2);justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.pager .row{gap:var(--sp-1)}@media (max-width:699px){.dt .hide-sm{display:none}}@media (max-width:1099px){.dt .hide-md{display:none}}.kpi-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));display:grid}.kpi{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-panel);padding:var(--sp-4) var(--sp-5);text-align:left;color:inherit;flex-direction:column;gap:4px;text-decoration:none;display:flex}a.kpi:hover,button.kpi:hover{border-color:var(--color-primary);text-decoration:none}button.kpi{cursor:pointer;font:inherit}.kpi .k{font-size:var(--fs-small);color:var(--color-text-2);align-items:center;gap:6px;display:flex}.kpi .v{font-size:24px;font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;line-height:1.25}.kpi .s{font-size:var(--fs-caption);color:var(--color-text-2)}.kpi.warn .v{color:var(--color-warning)}.kpi.err .v{color:var(--color-error)}.banner{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-control);font-size:var(--fs-small);border:1px solid;align-items:flex-start;display:flex}.banner .icon{margin-top:1px}.banner .b-title{font-weight:var(--fw-semibold);font-size:var(--fs-body)}.banner .b-body{flex:1;min-width:0}.banner-info{background:var(--color-info-bg);color:#123f72;border-color:#b9cfea}.banner-warning{background:var(--color-warning-bg);color:#5e3c00;border-color:#ebcf96}.banner-error{background:var(--color-error-bg);color:#7d180f;border-color:#f0b8b2}.banner-success{background:var(--color-success-bg);color:#1d5420;border-color:#b7d8b9}.banner-neutral{background:var(--color-muted);border-color:var(--color-border);color:var(--color-text)}.banner .btn{margin-left:auto}.conn-banner{justify-content:center;align-items:center;gap:var(--sp-2);padding:8px var(--sp-4);background:var(--color-warning-bg);color:#5e3c00;font-size:var(--fs-small);font-weight:var(--fw-medium);border-bottom:1px solid #ebcf96;display:flex}.state-block{text-align:center;justify-content:center;align-items:center;gap:var(--sp-3);padding:var(--sp-7) var(--sp-5);color:var(--color-text-2);flex-direction:column;display:flex}.state-block .state-icon{background:var(--color-muted);width:56px;height:56px;color:var(--color-text-2);border-radius:50%;justify-content:center;align-items:center;display:flex}.state-block .state-icon .icon{width:28px;height:28px}.state-block.error .state-icon{background:var(--color-error-bg);color:var(--color-error)}.state-block.warn .state-icon{background:var(--color-warning-bg);color:var(--color-warning)}.state-block h2{color:var(--color-text);font-size:18px}.state-block p{max-width:460px}.state-block .code{font-size:var(--fs-caption);color:var(--color-text-2);font-family:ui-monospace,Consolas,monospace}.skeleton{background:#eceff1;border-radius:6px;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.skel-line{height:14px;margin:10px 0}.skel-row{gap:var(--sp-4);padding:12px var(--sp-5);border-bottom:1px solid var(--color-border);grid-template-columns:1fr 2fr 1fr 1fr;display:grid}.overlay{z-index:80;background:#172b2a61;position:fixed;inset:0}.drawer{z-index:81;background:var(--color-surface);width:min(560px,100vw);box-shadow:var(--elev-2);flex-direction:column;animation:.16s ease-out drawer-in;display:flex;position:fixed;top:0;bottom:0;right:0}.drawer.wide{width:min(760px,100vw)}@keyframes drawer-in{0%{opacity:.6;transform:translate(24px)}to{opacity:1;transform:none}}.drawer-head{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--color-border);display:flex}.drawer-head .titles{flex:1;min-width:0}.drawer-head h2{font-size:18px}.drawer-body{padding:var(--sp-5);flex:1;overflow-y:auto}.drawer-body.flush{padding:0}.drawer-foot{justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5);border-top:1px solid var(--color-border);flex-wrap:wrap;display:flex}.dialog-wrap{z-index:90;padding:var(--sp-4);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog-wrap .overlay{z-index:0;position:absolute}.dialog{z-index:1;background:var(--color-surface);border-radius:var(--radius-panel);width:100%;max-width:520px;max-height:calc(100vh - 32px);box-shadow:var(--elev-2);flex-direction:column;animation:.14s ease-out dialog-in;display:flex;position:relative}.dialog.sm{max-width:420px}.dialog.lg{max-width:760px}.dialog.xl{max-width:1000px}@keyframes dialog-in{0%{opacity:.6;transform:translateY(8px)}to{opacity:1;transform:none}}.dialog-head{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5) var(--sp-3);display:flex}.dialog-head h2{flex:1;font-size:18px}.dialog-body{padding:0 var(--sp-5) var(--sp-4);overflow-y:auto}.dialog-foot{justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5) var(--sp-4);border-top:1px solid var(--color-border);flex-wrap:wrap;display:flex}@media (max-width:599px){.dialog-wrap{align-items:flex-end;padding:0}.dialog{border-radius:var(--radius-panel) var(--radius-panel) 0 0;max-width:none;max-height:92vh}.dialog-foot .btn{flex:auto}}.snackbar-host{z-index:120;gap:var(--sp-2);pointer-events:none;flex-direction:column;align-items:center;width:max-content;max-width:calc(100vw - 32px);display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.snackbar{pointer-events:auto;align-items:center;gap:var(--sp-3);color:#fff;border-radius:var(--radius-control);box-shadow:var(--elev-2);font-size:var(--fs-small);background:#1e2b2a;max-width:560px;padding:10px 16px;animation:.14s ease-out dialog-in;display:flex}.snackbar .icon{color:#8fd3a9}.snackbar.error .icon{color:#ff9c91}.snackbar .ref{background:#ffffff1f;border-radius:4px;padding:1px 6px;font-family:ui-monospace,Consolas,monospace}.snackbar a,.snackbar button.link-btn{color:#9fe0c3}.popover{z-index:70;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-control);min-width:200px;box-shadow:var(--elev-1);padding:4px;position:absolute}.popover button,.popover a{align-items:center;gap:var(--sp-2);cursor:pointer;text-align:left;width:100%;color:var(--color-text);background:0 0;border:0;border-radius:6px;padding:8px 12px;text-decoration:none;display:flex}.popover button:hover,.popover a:hover{background:var(--color-hover);text-decoration:none}.timeline{margin:0;padding:0;list-style:none}.timeline li{padding:0 0 var(--sp-4) 22px;position:relative}.timeline li:before{content:"";background:var(--color-border);width:2px;position:absolute;top:8px;bottom:-4px;left:5px}.timeline li:last-child:before{display:none}.timeline li:after{content:"";background:var(--color-surface);border:2px solid var(--color-primary);border-radius:50%;width:12px;height:12px;position:absolute;top:5px;left:0}.timeline .t-time{font-size:var(--fs-caption);color:var(--color-text-2)}.meter{background:var(--color-muted);border-radius:3px;min-width:60px;height:6px;overflow:hidden}.meter>span{background:var(--color-primary);height:100%;display:block}.meter.warn>span{background:var(--color-warning)}.meter.err>span{background:var(--color-error)}.food-img{background:var(--color-muted);border-radius:var(--radius-control);color:var(--color-text-2);aspect-ratio:4/3;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.food-img svg{stroke-width:1.4px;width:42%;height:42%}.food-img .ph-label{color:var(--color-text-2);background:#ffffffdb;border-radius:4px;padding:0 5px;font-size:10.5px;position:absolute;bottom:6px;left:6px}.food-img.t-salad{color:#4e7a3c;background:#eaf2e6}.food-img.t-grill{color:#8a5a2b;background:#f5eadf}.food-img.t-rice{color:#7d6a35;background:#f3efe3}.food-img.t-soup{color:#9a4a33;background:#f6e8e3}.food-img.t-drink{color:#2f6585;background:#e5eef4}.food-img.t-dessert{color:#8d4a73;background:#f3e8ef}.paper{border:1px solid var(--color-border);box-shadow:var(--elev-1);color:#111;background:#fff;margin:0 auto}.paper.mm80{width:302px;padding:14px 12px;font-size:12.5px;line-height:1.5}.paper.a4{width:100%;max-width:794px;padding:40px 48px;font-size:13px}.paper .p-center{text-align:center}.paper .p-row{justify-content:space-between;gap:8px;display:flex}.paper .p-rule{border-top:1px dashed #777;margin:8px 0}.paper .p-title{font-size:14px;font-weight:700}.paper .p-watermark{text-align:center;letter-spacing:.05em;border:1.5px solid #111;margin:6px 0;padding:2px;font-weight:700}.paper table{border-collapse:collapse;width:100%}.paper td,.paper th{vertical-align:top;text-align:left;padding:2px 0}.paper .num{text-align:right}.paper.a4 th,.paper.a4 td{border-bottom:1px solid #ddd;padding:6px 8px}.qr-box{border:1px solid var(--color-border);border-radius:var(--radius-control);background:#fff;justify-content:center;align-items:center;padding:10px;display:inline-flex}.qr-box canvas,.qr-box img,.qr-box svg{image-rendering:pixelated}.qr-fallback{border:1px dashed var(--color-border-strong);text-align:center;width:140px;height:140px;color:var(--color-text-2);justify-content:center;align-items:center;padding:8px;font-size:11px;display:flex}.chart{width:100%}.chart .bar{fill:var(--color-primary)}.chart .bar.muted{fill:#a9c8bf}.chart .axis{stroke:var(--color-border)}.chart text{fill:var(--color-text-2);font-size:11px;font-family:var(--font-sans)}.chart text.val{fill:var(--color-text);font-weight:600}.hbar{font-size:var(--fs-small);grid-template-columns:minmax(120px,38%) 1fr auto;align-items:center;gap:6px 12px;display:grid}.hbar .track{background:var(--color-muted);border-radius:5px;height:10px;overflow:hidden}.hbar .track>span{background:var(--color-primary);border-radius:5px;height:100%;display:block}.proto-note{border:1px dashed var(--color-proto);background:var(--color-proto-bg);color:#3d2a75;border-radius:var(--radius-control);font-size:var(--fs-caption);align-items:flex-start;gap:8px;padding:8px 12px;display:flex}.proto-note .icon{color:var(--color-proto);width:16px;height:16px;margin-top:2px}.perm-matrix th:first-child,.perm-matrix td:first-child{min-width:170px}.perm-matrix td{vertical-align:top}.perm-matrix th:not(:first-child),.perm-matrix td:not(:first-child){min-width:104px}@media (max-width:599px){.kpi-grid{gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr))}.kpi{padding:var(--sp-3) var(--sp-4)}.kpi .v{font-size:20px}}.app{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--color-surface);border-right:1px solid var(--color-border);z-index:30;flex-direction:column;flex:none;height:100vh;display:flex;position:sticky;top:0}.sb-brand{align-items:center;gap:var(--sp-3);height:var(--topbar-h);padding:0 var(--sp-4);border-bottom:1px solid var(--color-border);flex:none;display:flex}.sb-logo{background:var(--color-primary);color:#fff;border-radius:9px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;font-size:15px;font-weight:700;display:flex}.sb-brand .name{font-weight:var(--fw-semibold);font-size:14.5px;line-height:1.25}.sb-brand .branch{font-size:var(--fs-caption);color:var(--color-text-2)}.sb-nav{padding:var(--sp-3) var(--sp-2);flex:1;overflow-y:auto}.sb-group{margin-bottom:var(--sp-3)}.sb-group-title{font-size:11.5px;font-weight:var(--fw-semibold);color:var(--color-text-2);letter-spacing:.01em;padding:4px 12px}.sb-item{align-items:center;gap:var(--sp-3);border-radius:var(--radius-control);min-height:40px;color:var(--color-text);font-weight:var(--fw-medium);padding:0 12px;text-decoration:none;display:flex;position:relative}.sb-item:hover{background:var(--color-hover);text-decoration:none}.sb-item.is-active{background:var(--color-primary-subtle);color:var(--color-primary);font-weight:var(--fw-semibold)}.sb-item .icon{color:var(--color-text-2)}.sb-item.is-active .icon{color:var(--color-primary)}.sb-item .label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sb-item .badge-count{flex:none}.sb-item .chip-p1{height:18px;padding:0 5px;font-size:10.5px}.sb-foot{border-top:1px solid var(--color-border);padding:var(--sp-2) var(--sp-2) 56px;flex:none}.main{flex-direction:column;flex:auto;min-width:0;display:flex}.topbar{height:var(--topbar-h);align-items:center;gap:var(--sp-3);padding:0 var(--sp-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:20;flex:none;display:flex;position:sticky;top:0}.topbar .tb-context{align-items:center;gap:var(--sp-3);flex:1;min-width:0;display:flex}.topbar .tb-title{font-weight:var(--fw-semibold);font-size:15px}.topbar .tb-meta{font-size:var(--fs-small);color:var(--color-text-2);white-space:nowrap}.topbar .tb-right{align-items:center;gap:var(--sp-2);display:flex}.status-pill{border:1px solid var(--color-border);height:30px;font-size:var(--fs-caption);font-weight:var(--fw-semibold);color:var(--color-text-2);white-space:nowrap;background:var(--color-surface);border-radius:15px;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.status-pill .dot{background:var(--color-success);border-radius:50%;width:8px;height:8px}.status-pill.off .dot{background:var(--color-error)}.status-pill.warn .dot{background:var(--color-warning)}a.status-pill:hover{border-color:var(--color-border-strong);text-decoration:none}.user-btn{align-items:center;gap:var(--sp-2);border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:20px;padding:3px 10px 3px 3px;display:inline-flex}.avatar{background:var(--color-primary-subtle);width:30px;height:30px;color:var(--color-primary);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.avatar.lg{width:56px;height:56px;font-size:20px}.user-btn .u-name{font-size:var(--fs-small);font-weight:var(--fw-semibold);text-align:left;line-height:1.2}.user-btn .u-role{color:var(--color-text-2);font-size:11px;line-height:1.2}.lang-select{border-radius:var(--radius-control);border:1px solid var(--color-border);background:var(--color-surface);min-height:34px;font-size:var(--fs-small);font-weight:var(--fw-semibold);cursor:pointer;padding:4px 8px}.view{flex:auto;min-width:0}.hamburger{display:none}.app.rail .sidebar{width:var(--sidebar-rail-w)}.app.rail .sb-brand{justify-content:center;padding:0}.app.rail .sb-brand .brand-text,.app.rail .sb-group-title,.app.rail .sb-item .label,.app.rail .sb-item .chip-p1{display:none}.app.rail .sb-item{justify-content:center;padding:0}.app.rail .sb-item .badge-count{min-width:16px;height:16px;padding:0 4px;font-size:10px;position:absolute;top:2px;right:6px}.app.rail .sb-group{border-bottom:1px solid var(--color-border);padding-bottom:var(--sp-2);margin-bottom:var(--sp-2)}@media (max-width:1199px){.app:not(.expanded) .sidebar{width:var(--sidebar-rail-w)}.app:not(.expanded) .sb-brand{justify-content:center;padding:0}.app:not(.expanded) .sb-brand .brand-text,.app:not(.expanded) .sb-group-title,.app:not(.expanded) .sb-item .label,.app:not(.expanded) .sb-item .chip-p1{display:none}.app:not(.expanded) .sb-item{justify-content:center;padding:0}.app:not(.expanded) .sb-item .badge-count{min-width:16px;height:16px;padding:0 4px;font-size:10px;position:absolute;top:2px;right:6px}.app:not(.expanded) .sb-group{border-bottom:1px solid var(--color-border);padding-bottom:var(--sp-2);margin-bottom:var(--sp-2)}:root{--content-pad:20px}}@media (max-width:899px){.sidebar{box-shadow:var(--elev-2);transition:transform .16s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);width:var(--sidebar-w)!important}.app.nav-open .sidebar{transform:none}.app.nav-open .sb-brand .brand-text,.app.nav-open .sb-group-title,.app.nav-open .sb-item .label{display:initial!important}.app.nav-open .sb-item{justify-content:flex-start!important;padding:0 12px!important}.app.nav-open .sb-brand{padding:0 var(--sp-4)!important;justify-content:flex-start!important}.app.nav-open .sb-item .badge-count{position:static!important}.nav-scrim{display:none}.app.nav-open .nav-scrim{z-index:25;background:#172b2a4d;display:block;position:fixed;inset:0}.hamburger{display:inline-flex}.topbar{padding:0 var(--sp-3);gap:var(--sp-2)}.topbar .tb-meta.hide-xs{display:none}:root{--content-pad:16px}}@media (max-width:599px){.topbar .hide-sm{display:none!important}.user-btn .u-text{display:none}.user-btn{padding:3px}}.pos{height:calc(100vh - var(--topbar-h));flex-direction:column;min-height:520px;display:flex}.pos-context{align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;flex:none;display:flex}.pos-table{align-items:center;gap:var(--sp-3);display:flex}.pos-table .tno{font-size:var(--fs-figure);color:var(--color-primary);font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.pos-table .tlabel{font-size:var(--fs-caption);color:var(--color-text-2);line-height:1.2}.pos-context .ctx-item{font-size:var(--fs-small);flex-direction:column;line-height:1.3;display:flex}.pos-context .ctx-item .k{color:var(--color-text-2);font-size:var(--fs-caption)}.pos-context .ctx-item .v{font-weight:var(--fw-semibold)}.pos-context .ctx-actions{gap:var(--sp-2);margin-left:auto;display:flex}.pos-body{grid-template-columns:minmax(0, 1fr) var(--cart-w);flex:1;min-height:0;display:grid}.pos-menu{flex-direction:column;min-height:0;display:flex}.pos-menu-tools{gap:var(--sp-3);padding:var(--sp-4) var(--sp-5) var(--sp-3);flex-direction:column;flex:none;display:flex}.cat-chips{gap:var(--sp-2);scrollbar-width:thin;padding-bottom:2px;display:flex;overflow-x:auto}.cat-chip{border:1px solid var(--color-border-strong);background:var(--color-surface);min-height:40px;font-weight:var(--fw-semibold);cursor:pointer;white-space:nowrap;color:var(--color-text);border-radius:20px;flex:none;padding:0 16px}.cat-chip.is-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.pos-grid{padding:0 var(--sp-5) var(--sp-5);gap:var(--sp-3);flex:1;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));align-content:start;display:grid;overflow-y:auto}.menu-card{text-align:left;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-panel);padding:var(--sp-2);cursor:pointer;flex-direction:column;gap:6px;min-height:100%;display:flex;position:relative}.menu-card:hover{border-color:var(--color-primary)}.menu-card .food-img{aspect-ratio:16/10;flex:none}.menu-card .m-name{font-size:15.5px;font-weight:var(--fw-semibold);padding:0 4px;line-height:1.35}.menu-card .m-price{font-weight:var(--fw-semibold);color:var(--color-primary);font-variant-numeric:tabular-nums;padding:0 4px 2px}.menu-card .m-flags{flex-wrap:wrap;gap:4px;display:flex;position:absolute;top:12px;left:12px}.menu-card .m-opts{color:var(--color-text-2);padding:0 4px;font-size:11.5px}.menu-card.is-off{cursor:not-allowed}.menu-card.is-off .food-img,.menu-card.is-off .m-name,.menu-card.is-off .m-price{opacity:.45}.menu-card .low{color:var(--color-warning);padding:0 4px;font-size:11.5px;font-weight:600}.cart{border-left:1px solid var(--color-border);background:var(--color-surface);flex-direction:column;min-height:0;display:flex}.cart-tabs{border-bottom:1px solid var(--color-border);flex:none;display:flex}.cart-tabs button{min-height:48px;font-weight:var(--fw-semibold);color:var(--color-text-2);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;justify-content:center;align-items:center;gap:6px;display:inline-flex}.cart-tabs button.is-active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.cart-lines{flex:1;overflow-y:auto}.cart-line{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--color-border);gap:4px var(--sp-3);grid-template-columns:1fr auto;display:grid}.cart-line .cl-name{font-weight:var(--fw-semibold);line-height:1.35}.cart-line .cl-mods{font-size:var(--fs-small);color:var(--color-text-2)}.cart-line .cl-note{font-size:var(--fs-small);color:var(--color-warning)}.cart-line .cl-price{text-align:right;font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;white-space:nowrap}.cart-line .cl-controls{align-items:center;gap:var(--sp-2);flex-wrap:wrap;grid-column:1/-1;display:flex}.cart-line.sent{grid-template-columns:auto 1fr auto}.cart-line.sent .qty{font-variant-numeric:tabular-nums;min-width:28px;font-weight:700}.cart-line .cl-status{flex-wrap:wrap;grid-column:2/-1;gap:4px;display:flex}.order-sep{padding:6px var(--sp-4);border-bottom:1px solid var(--color-border);font-size:var(--fs-caption);color:var(--color-text-2);justify-content:space-between;gap:var(--sp-2);background:#fafbfc;display:flex}.cart-foot{border-top:1px solid var(--color-border);padding:var(--sp-3) var(--sp-4) var(--sp-4);gap:var(--sp-2);background:var(--color-surface);flex-direction:column;flex:none;display:flex}.sum-row{justify-content:space-between;gap:var(--sp-3);font-size:var(--fs-small);display:flex}.sum-row .money{font-weight:var(--fw-semibold)}.sum-row.total{font-size:17px;font-weight:700}.sum-row.total .money{font-size:20px}.pos-mobile-tabs{display:none}@media (max-width:1199px){.pos-body{grid-template-columns:minmax(0,1fr) 340px}.pos-context{padding:var(--sp-3) var(--sp-4)}}@media (max-width:899px){.pos{height:auto;min-height:calc(100vh - var(--topbar-h))}.pos-body{grid-template-columns:minmax(0,1fr);padding-bottom:76px}.pos-body[data-mtab=menu] .cart,.pos-body[data-mtab=cart] .pos-menu{display:none}.cart{border-left:0}.pos-grid{padding:0 var(--sp-4) var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));overflow:visible}.pos-menu-tools{padding:var(--sp-3) var(--sp-4)}.pos-mobile-tabs{z-index:25;background:var(--color-surface);border-top:1px solid var(--color-border);padding:var(--sp-2) var(--sp-3);gap:var(--sp-2);display:flex;position:fixed;bottom:0;left:0;right:0}.pos-mobile-tabs .btn{flex:1}.pos-context .ctx-actions{width:100%;margin-left:0}.pos-context .ctx-actions .btn{flex:1}}.table-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(190px,1fr));display:grid}.table-card{text-align:left;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-panel);min-height:132px;padding:var(--sp-3) var(--sp-4);cursor:pointer;font:inherit;color:inherit;border-left-width:5px;flex-direction:column;gap:6px;display:flex;position:relative}.table-card:hover{border-color:var(--color-primary)}.table-card .tc-head{justify-content:space-between;align-items:baseline;gap:var(--sp-2);display:flex}.table-card .tc-no{font-variant-numeric:tabular-nums;font-size:26px;font-weight:700;line-height:1}.table-card .tc-seats{font-size:var(--fs-caption);color:var(--color-text-2);align-items:center;gap:4px;display:flex}.table-card .tc-meta{font-size:var(--fs-small);color:var(--color-text-2);gap:var(--sp-3);flex-wrap:wrap;display:flex}.table-card .tc-amount{font-variant-numeric:tabular-nums;font-size:16px;font-weight:700}.table-card .tc-flags{flex-wrap:wrap;gap:4px;margin-top:auto;display:flex}.table-card.s-free{border-left-color:var(--color-border-strong)}.table-card.s-occupied{border-left-color:var(--color-primary)}.table-card.s-checkout{border-left-color:var(--color-warning)}.table-card.s-paid{border-left-color:var(--color-success)}.table-card.s-cleaning{border-left-color:var(--color-info);background:#fbfcfd}.table-card.s-inactive{opacity:.55;cursor:default}.zone-title{align-items:center;gap:var(--sp-3);margin:var(--sp-5) 0 var(--sp-3);display:flex}.zone-title h2{font-size:16px}.summary-strip{gap:var(--sp-2);flex-wrap:wrap;display:flex}.summary-strip .seg-stat{align-items:center;gap:var(--sp-2);border-radius:var(--radius-control);background:var(--color-surface);border:1px solid var(--color-border);font-size:var(--fs-small);cursor:pointer;font-weight:var(--fw-medium);padding:6px 12px;display:flex}.summary-strip .seg-stat b{font-variant-numeric:tabular-nums;font-size:16px}.summary-strip .seg-stat.is-active{border-color:var(--color-primary);background:var(--color-primary-subtle);color:var(--color-primary)}.amount-due{text-align:center;padding:var(--sp-5)}.amount-due .k{color:var(--color-text-2);font-size:var(--fs-small)}.amount-due .v{font-variant-numeric:tabular-nums;color:var(--color-text);font-size:40px;font-weight:700;line-height:1.2}.method-tabs{gap:var(--sp-2);grid-template-columns:repeat(3,1fr);display:grid}.method-tab{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);cursor:pointer;min-height:64px;font-weight:var(--fw-semibold);flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.method-tab.is-active{border-color:var(--color-primary);background:var(--color-primary-subtle);color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.quick-cash{gap:var(--sp-2);grid-template-columns:repeat(4,1fr);display:grid}.quick-cash .btn{min-height:48px}.calc-box{background:var(--color-bg);border-radius:var(--radius-control);padding:var(--sp-3) var(--sp-4)}.calc-box .sum-row{font-size:var(--fs-body)}.calc-box .change .money{color:var(--color-success);font-size:22px}@media (max-width:599px){.quick-cash{grid-template-columns:repeat(2,1fr)}}.kds{background:#eef1f2;flex-direction:column;min-height:100vh;display:flex}.kds-bar{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-wrap:wrap;min-height:64px;display:flex}.kds-bar .kds-title{align-items:center;gap:var(--sp-2);font-size:18px;font-weight:700;display:flex}.kds-bar .spacer{flex:1}.kds-cols{gap:var(--sp-3);padding:var(--sp-3);flex:1;grid-template-columns:repeat(3,minmax(0,1fr));min-height:0;display:grid}.kds-col{border-radius:var(--radius-panel);background:#e3e7e9;flex-direction:column;min-height:0;display:flex}.kds-col-head{padding:var(--sp-3) var(--sp-4);justify-content:space-between;align-items:center;font-size:17px;font-weight:700;display:flex}.kds-col-head .count{font-variant-numeric:tabular-nums;background:var(--color-surface);border-radius:12px;padding:0 10px;font-size:15px}.kds-col-body{padding:0 var(--sp-3) var(--sp-3);gap:var(--sp-3);flex-direction:column;flex:1;display:flex;overflow-y:auto}.kds-card{background:var(--color-surface);border-radius:var(--radius-panel);border:1px solid var(--color-border);border-top:6px solid var(--color-border-strong);overflow:hidden}.kds-card.q{border-top-color:#7c8a93}.kds-card.p{border-top-color:var(--color-info)}.kds-card.r{border-top-color:var(--color-success)}.kds-card.late{border-top-color:var(--color-warning)}.kds-card-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4) var(--sp-2);cursor:pointer;display:flex}.kds-card-head .where{font-size:24px;font-weight:700;line-height:1.1}.kds-card-head .meta{color:var(--color-text-2);flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;font-size:13.5px;display:flex}.kds-card-head .wait{font-variant-numeric:tabular-nums;text-align:right;font-size:20px;font-weight:700;line-height:1.1}.kds-card-head .wait.late{color:var(--color-warning)}.kds-lines{border-top:1px solid var(--color-border)}.kds-line{gap:4px var(--sp-2);padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--color-border);font-size:var(--fs-kds);grid-template-columns:44px 1fr;display:grid}.kds-line:last-child{border-bottom:0}.kds-line .q{font-variant-numeric:tabular-nums;font-weight:800}.kds-line .n{font-weight:600;line-height:1.35}.kds-line .mods{color:var(--color-text);grid-column:2;font-size:16px}.kds-line .note{color:var(--color-warning);grid-column:2;font-size:16px;font-weight:600}.kds-line .allergy{color:var(--color-error);grid-column:2;align-items:center;gap:4px;font-size:15px;font-weight:700;display:flex}.kds-line .line-actions{gap:var(--sp-2);flex-wrap:wrap;grid-column:1/-1;margin-top:4px;display:flex}.kds-line .line-actions .btn{flex:auto;min-height:48px;font-size:16px}.kds-line.cancelled .n,.kds-line.cancelled .q{color:var(--color-text-2);text-decoration:line-through}.kds-cancel{background:var(--color-error-bg);color:var(--color-error);padding:var(--sp-2) var(--sp-4);align-items:center;gap:var(--sp-2);flex-wrap:wrap;font-size:16px;font-weight:700;display:flex}.kds-card-foot{padding:var(--sp-2) var(--sp-3) var(--sp-3);gap:var(--sp-2);display:flex}.kds-card-foot .btn{min-height:var(--h-touch-xl);flex:1;font-size:17px}.kds-empty{text-align:center;color:var(--color-text-2);padding:var(--sp-6) var(--sp-3);font-size:16px}@media (max-width:1023px){.kds-cols{grid-template-columns:repeat(3,minmax(280px,1fr));overflow-x:auto}}@media (max-width:699px){.kds-cols{grid-template-columns:minmax(0,1fr)}.kds-cols[data-col] .kds-col:not(.is-shown){display:none}}.kds-col-switch{display:none}@media (max-width:699px){.kds-col-switch{width:100%;display:flex}.kds-col-switch .seg{width:100%}.kds-col-switch .seg button{flex:1;min-height:44px}}.qr-app{max-width:var(--qr-max);background:var(--color-bg);flex-direction:column;min-height:100vh;margin:0 auto;display:flex;position:relative}.qr-top{z-index:20;background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:10px var(--sp-4);align-items:center;gap:var(--sp-3);display:flex;position:sticky;top:0}.qr-top .qt-store{font-size:var(--fs-caption);color:var(--color-text-2);line-height:1.3}.qr-top .qt-table{font-size:17px;font-weight:700;line-height:1.25}.qr-top .lang-select{min-height:40px;margin-left:auto}.qr-body{flex:1;padding-bottom:150px}.qr-section{padding:var(--sp-4)}.qr-cats{z-index:15;background:var(--color-bg);padding:var(--sp-2) var(--sp-4);gap:var(--sp-2);scrollbar-width:none;border-bottom:1px solid var(--color-border);display:flex;position:sticky;top:61px;overflow-x:auto}.qr-cats::-webkit-scrollbar{display:none}.qr-item{gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--color-border);cursor:pointer;grid-template-columns:minmax(0,1fr) 104px;display:grid}.qr-item .food-img{aspect-ratio:1;border-radius:var(--radius-control)}.qr-item .qi-name{font-weight:var(--fw-semibold);font-size:16px;line-height:1.4}.qr-item .qi-desc{font-size:var(--fs-small);color:var(--color-text-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.qr-item .qi-price{font-variant-numeric:tabular-nums;margin-top:4px;font-weight:700}.qr-item .qi-tags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.qr-item .qi-img-wrap{position:relative}.qr-item .qi-add{background:var(--color-primary);color:#fff;cursor:pointer;width:40px;height:40px;box-shadow:var(--elev-1);border:0;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;bottom:6px;right:6px}.qr-item.is-off{cursor:default}.qr-item.is-off .qi-name,.qr-item.is-off .qi-price,.qr-item.is-off .food-img{opacity:.45}.qr-cat-title{margin:var(--sp-4) 0 0;scroll-margin-top:120px;font-size:17px;font-weight:700}.qr-cartbar{width:min(var(--qr-max), 100%);padding:0 var(--sp-3);z-index:30;position:fixed;bottom:68px;left:50%;transform:translate(-50%)}.qr-cartbar .btn{width:100%;min-height:52px;box-shadow:var(--elev-1);justify-content:space-between;font-size:16px}.qr-nav{width:min(var(--qr-max), 100%);z-index:30;background:var(--color-surface);border-top:1px solid var(--color-border);padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.qr-nav a,.qr-nav button{min-height:60px;font-size:12px;font-weight:var(--fw-semibold);color:var(--color-text-2);cursor:pointer;text-align:center;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 2px;line-height:1.25;text-decoration:none;display:flex;position:relative}.qr-nav .is-active{color:var(--color-primary)}.qr-nav .badge-count{min-width:18px;height:18px;font-size:10.5px;position:absolute;top:6px;left:calc(50% + 6px)}.sheet-wrap{z-index:60;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-wrap .overlay{z-index:0;position:absolute}.sheet{z-index:1;width:min(var(--qr-max), 100%);background:var(--color-surface);border-radius:16px 16px 0 0;flex-direction:column;max-height:92vh;animation:.18s ease-out sheet-in;display:flex;position:relative}@keyframes sheet-in{0%{opacity:.6;transform:translateY(40px)}to{opacity:1;transform:none}}.sheet-grip{background:var(--color-border-strong);border-radius:2px;width:40px;height:4px;margin:8px auto 0}.sheet-body{padding:var(--sp-3) var(--sp-4) var(--sp-4);overflow-y:auto}.sheet-foot{border-top:1px solid var(--color-border);padding:var(--sp-3) var(--sp-4) calc(var(--sp-3) + env(safe-area-inset-bottom));gap:var(--sp-3);align-items:center;display:flex}.sheet-foot .btn-primary{flex:1;justify-content:space-between;min-height:52px;font-size:16px}.opt-group{padding:var(--sp-3) 0;border-top:1px solid var(--color-border)}.opt-group-head{justify-content:space-between;align-items:baseline;gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.opt-group-head .t{font-weight:700}.opt-rows{flex-direction:column;display:flex}.opt-row{align-items:center;gap:var(--sp-3);cursor:pointer;border-bottom:1px dashed var(--color-border);min-height:48px;padding:4px 0;display:flex}.opt-row:last-child{border-bottom:0}.opt-row input{width:20px;height:20px;accent-color:var(--color-primary);flex:none;margin:0}.opt-row .o-name{flex:1}.opt-row .o-price{color:var(--color-text-2);font-variant-numeric:tabular-nums}.opt-row.is-disabled{opacity:.45;cursor:not-allowed}.qr-hero{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:var(--sp-6) var(--sp-5);text-align:center}.qr-hero .big-table{color:var(--color-primary);font-variant-numeric:tabular-nums;font-size:56px;font-weight:800;line-height:1.05}.lang-cards{gap:var(--sp-2);grid-template-columns:repeat(2,1fr);display:grid}.lang-cards button{border:1px solid var(--color-border-strong);border-radius:var(--radius-control);background:var(--color-surface);cursor:pointer;min-height:52px;font-size:16px;font-weight:600}.lang-cards button.is-active{border-color:var(--color-primary);background:var(--color-primary-subtle);color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.status-steps{grid-template-columns:repeat(4,1fr);gap:4px;margin-top:6px;display:grid}.status-steps span{background:var(--color-muted);border-radius:2px;height:4px}.status-steps span.on{background:var(--color-primary)}@media (max-width:359px){.qr-item{grid-template-columns:minmax(0,1fr) 84px}.qr-nav a,.qr-nav button{font-size:11px}.qr-hero .big-table{font-size:44px}}.nav-page{max-width:1280px;padding:var(--sp-5);margin:0 auto}.nav-hero{justify-content:space-between;gap:var(--sp-5);margin-bottom:var(--sp-5);flex-wrap:wrap;align-items:flex-start;display:flex}.nav-hero h1{font-size:26px}.nav-controls{gap:var(--sp-3);grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;display:grid}@media (max-width:899px){.nav-controls{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:499px){.nav-controls{grid-template-columns:minmax(0,1fr)}}.flow-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.flow-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-panel);padding:var(--sp-4);gap:var(--sp-2);flex-direction:column;display:flex}.flow-card ol{font-size:var(--fs-small);color:var(--color-text-2);margin:0;padding-left:20px}.flow-card ol li{margin:2px 0}.flow-card .flow-links{flex-wrap:wrap;gap:6px;margin-top:auto;display:flex}.reg-group{margin-top:var(--sp-5)}.reg-group-head{align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-2);display:flex}.reg-row td{vertical-align:top}.reg-samples{font-size:var(--fs-small);flex-wrap:wrap;gap:4px 10px;display:flex}.reg-id{white-space:nowrap;font-family:ui-monospace,Consolas,monospace;font-size:13px;font-weight:600}.proto-fab{z-index:110;position:fixed;bottom:12px;left:12px}.proto-fab>button.proto-toggle{border:1px dashed var(--color-proto);background:var(--color-proto-bg);min-width:36px;height:36px;color:var(--color-proto);cursor:pointer;box-shadow:var(--elev-1);opacity:.92;border-radius:18px;align-items:center;gap:6px;padding:0 9px;font-size:12.5px;font-weight:700;display:inline-flex}.proto-fab>button.proto-toggle .pt-label{display:none}.proto-fab>button.proto-toggle:hover .pt-label,.proto-fab>button.proto-toggle[aria-expanded=true] .pt-label{display:inline}.proto-fab .proto-state{background:var(--color-proto);color:#fff;border-radius:9px;padding:0 6px;font-size:11px}.proto-panel{background:var(--color-surface);border:1px dashed var(--color-proto);border-radius:var(--radius-panel);width:300px;max-width:calc(100vw - 24px);box-shadow:var(--elev-2);padding:var(--sp-3) var(--sp-4) var(--sp-4);gap:var(--sp-3);flex-direction:column;display:flex;position:absolute;bottom:44px;left:0}.proto-panel .pp-title{color:var(--color-proto);justify-content:space-between;align-items:center;font-size:12px;font-weight:700;display:flex}.proto-panel .field>label{font-size:12px}.proto-panel .select{min-height:36px;padding:4px 8px;font-size:13px}.qr-app~.proto-fab,body.qr-body-page .proto-fab{bottom:140px}@media print{.proto-fab,.snackbar-host{display:none!important}}.qr-detail-img{border-radius:var(--radius-control);flex:none;width:96px;height:96px}.qr-body-page .qr-snackbar{bottom:136px}body.sheet-open{overflow:hidden}.qr-nav .badge-count.warn{background:var(--color-warning)}.qr-cats .cat-chip{min-height:36px;padding:0 14px}.qr-cart-line{border-bottom:1px solid var(--color-border);padding:12px 16px}.qr-cart-line:last-child{border-bottom:0}.qr-top>div:not(.lang-select){flex:1}.qr-top .lang-select{flex:none;width:auto;max-width:132px}.qr-body-page .proto-fab{opacity:.8}.nav-body{background:var(--color-bg)}.nav-head{z-index:10;background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:12px var(--sp-5);justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex;position:sticky;top:0}.nav-brand{align-items:center;gap:var(--sp-3);min-width:0;display:flex}.nav-logo{background:var(--color-primary);color:#fff;border-radius:8px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;font-weight:700;display:inline-flex}.chip-proto{background:var(--color-proto-bg);color:var(--color-proto);border:1px dashed var(--color-proto)}.nav-main{max-width:1320px;padding:var(--sp-5);margin:0 auto}.nav-tools .filters{flex-wrap:wrap}.nav-stats{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--color-border);flex-wrap:wrap;align-items:center;display:flex}.nav-i18n{gap:6px var(--sp-4);padding:var(--sp-2) var(--sp-4) var(--sp-3);border-top:1px solid var(--color-border);flex-wrap:wrap;display:flex}.nav-h2{margin-bottom:4px;font-size:19px}.nav-flows{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.nav-flow .panel-body{gap:var(--sp-2);flex-direction:column;height:100%;display:flex}.nav-num{background:var(--color-primary-subtle);width:26px;height:26px;color:var(--color-primary);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:inline-flex}.nav-steps{font-size:var(--fs-small);margin:0;padding-left:20px}.nav-steps li{margin:4px 0}.nav-expect{padding-top:var(--sp-2);border-top:1px dashed var(--color-border);font-size:var(--fs-small);color:var(--color-text-2);align-items:flex-start;gap:6px;margin-top:auto;display:flex}.nav-expect svg{color:var(--color-success);flex:none;margin-top:2px}.nav-table td{vertical-align:top}@media (max-width:599px){.nav-main{padding:var(--sp-3)}.nav-head{padding:10px var(--sp-3)}}@media (max-width:899px){.proto-fab{bottom:84px}}:root{--font-sans:var(--font-noto), var(--font-noto-lao), var(--font-noto-thai), var(--font-noto-sc), "Leelawadee UI", "Microsoft YaHei UI", system-ui, sans-serif}.proto-fab,.proto-panel{display:none!important}.app-loading{min-height:60vh;color:var(--color-text-2);justify-content:center;align-items:center;display:flex}.conn-pill{border:1px solid var(--color-border);height:32px;font-size:var(--fs-small);background:var(--color-surface);border-radius:16px;align-items:center;gap:6px;padding:0 12px;display:inline-flex}.conn-pill .dot{background:var(--color-success);border-radius:50%;width:8px;height:8px}.conn-pill.off .dot{background:var(--color-error)}.conn-pill.wait .dot{background:var(--color-warning)}.spin{animation:1s linear infinite spin}.error-text{font-size:var(--fs-caption);color:var(--color-error);font-weight:var(--fw-medium)}.settings-nav .sb-item .label{display:inline!important}.settings-nav .sb-item{justify-content:flex-start!important}}@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.grow{flex-grow:1}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.break-all{word-break:break-all}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.\!filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@media print{@page{margin:8mm}body{background:#fff!important}body *{visibility:hidden!important}.print-area,.print-area *{visibility:visible!important}.print-area{width:100%;position:absolute;top:0;left:0}.print-area .paper{box-shadow:none!important;border:0!important;margin:0!important}.print-area .no-print{display:none!important}.qr-label-sheet{grid-template-columns:repeat(2,1fr)!important;gap:10mm!important;display:grid!important}.qr-label{break-inside:avoid;page-break-inside:avoid}}.qr-label-sheet{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(230px,1fr));display:grid}.qr-label{border:1px solid var(--color-border-strong);text-align:center;color:#111;background:#fff;border-radius:10px;flex-direction:column;align-items:center;gap:6px;padding:16px 14px;display:flex}.qr-label .ql-store{font-size:13px;font-weight:600}.qr-label .ql-table{font-size:34px;font-weight:800;line-height:1.05}.qr-label .ql-table small{color:#555;font-size:11px;font-weight:600;display:block}.qr-label .ql-hint{color:#333;font-size:11px;line-height:1.45}.qr-label .qr-box{border:0;padding:8px}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
