:root{font-family:system-ui,Microsoft JhengHei,sans-serif;color:#26382f;background:#f5f2e9;--brand:#254b39;--cart-space:112px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,input,select{min-height:44px}button{border:1px solid #cbd2c9;border-radius:10px;padding:10px 14px;background:#edf1e9;color:#254b39;font-weight:700;cursor:pointer}button:disabled{opacity:.5;cursor:default}button.primary{background:#254b39;border-color:#254b39;color:#fff}button.quiet{background:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #bd7510;outline-offset:3px}input,select,textarea{border:1px solid #cbd2c9;border-radius:8px;padding:10px}textarea{display:block;width:100%;min-height:94px;resize:vertical;margin-top:8px}a{color:#254b39}h1,h2,h3,p{overflow-wrap:anywhere}h1{font-size:24px;line-height:1.35;margin:0 0 6px}h2{font-size:22px;margin:0 0 12px}h3{font-size:20px;margin:0 0 8px}p{line-height:1.55;color:#58635b}small{font-size:13px;line-height:1.45}.app-header{background:#254b39;color:#fff;min-height:60px;padding:8px max(20px,calc((100vw - 1184px)/2));display:flex;gap:14px;align-items:center}.brand{color:#f7dca9;text-decoration:none;font-size:23px;font-weight:850;white-space:nowrap}.app-header>span{font-size:14px}.header-link{margin-left:auto;background:transparent;color:#fff;border-color:#fff5;padding:6px 12px;font-size:14px}.mock-warning{background:#fff0cf;color:#745619;text-align:center;font-size:12px;padding:7px 12px;line-height:1.4}main{max-width:1220px;padding:22px 20px;margin:auto}.customer-workspace{max-width:880px}.wallet-workspace{max-width:1120px}section{background:#fff;border:1px solid #dfdfd4;border-radius:16px;padding:22px}.shop-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px}.shop-heading p{margin:0;font-size:14px}.staff-label{font-size:13px;color:#52665a}.section-heading{display:flex;justify-content:space-between;align-items:start;gap:12px}.section-heading p{margin:0 0 8px;font-size:14px}.menu{border-bottom:1px solid #e6e8e0;padding:18px 0;display:flex;align-items:center;gap:14px;justify-content:space-between}.menu-description{min-width:0}.menu-description>strong{font-size:20px}.menu-description p{margin:5px 0;font-size:15px}.menu-description small{color:#52685a}.quantity-controls{display:grid;grid-template-columns:44px 52px 44px;gap:4px;flex-shrink:0;align-items:center}.quantity-controls button{padding:0;font-size:26px;width:44px;height:46px;line-height:1}.quantity-controls input{padding:8px 2px;text-align:center;font-size:19px;width:52px;appearance:textfield;-moz-appearance:textfield;background:#fff;color:#26382f}.quantity-controls input::-webkit-inner-spin-button,.quantity-controls input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.sold-out-label{margin-left:8px;background:#e8e8e4;color:#5d625b;border-radius:4px;padding:2px 5px;font-size:12px}.notes{display:block;margin-top:22px;font-size:15px;font-weight:650}.menu-note{font-size:13px;margin-bottom:0}.checkout{display:flex;gap:16px;justify-content:space-between;align-items:center;margin-top:24px;padding:16px 0 0;border-top:1px solid #e6e8e0;background:#fff;z-index:5}.checkout>strong{font-size:20px;line-height:1.3}.checkout small{display:block;font-size:12px;font-weight:400;margin-top:4px}.checkout button{min-height:48px;min-width:140px}.checkout-steps{display:flex;gap:8px;flex-wrap:wrap;padding:0;list-style:none;counter-reset:steps;margin:18px 0;font-size:13px}.checkout-steps li{counter-increment:steps;color:#63746a}.checkout-steps li:before{content:counter(steps);display:inline-grid;place-items:center;border:1px solid #b7c5b7;border-radius:50%;width:22px;height:22px;margin-right:4px}.checkout-steps li[aria-current]{color:#254b39;font-weight:750}.confirmation-items{list-style:none;padding:0}.confirmation-items li{display:flex;gap:18px;align-items:center;justify-content:space-between;padding:16px 0;border-bottom:1px solid #e6e8e0}.confirmation-items small{display:block;margin-top:6px;color:#63746a}.pending-notice{background:#fff0cf;border-left:4px solid #c89431;padding:14px;border-radius:6px;color:#6c511a}.customer-receipt{padding:22px 26px;border-top:5px solid #254b39}.receipt-shop p{margin:0;font-size:15px}.receipt-identity{display:grid;grid-template-columns:140px 1fr;gap:24px;align-items:center;margin-top:18px}.number{font-size:72px;font-weight:850;line-height:1.05;color:#254b39;letter-spacing:1px}.receipt-status h2{font-size:26px;margin:0 0 8px}.receipt-status p{margin:0;font-size:15px}.receipt-ready{background:#f3faf0;border-color:#75a364}.receipt-collected,.receipt-cancelled{border-top-color:#9aaca0}.receipt-notification{font-size:13px;margin:10px 0 16px}.payment-summary{font-size:15px;font-weight:700;padding:9px 12px;border-radius:8px;margin:14px 0 8px}.payment-summary span{font-weight:400}.payment-summary.unpaid{background:#fff0d3;color:#765816}.payment-summary.paid{background:#e8f1e5;color:#315232}.order-details,.staff-panel,.test-panel{background:#fff;border:1px solid #dfdfd4;border-radius:12px;margin-top:14px;padding:0 16px}.order-details summary,.staff-panel summary,.test-panel summary{cursor:pointer;min-height:48px;line-height:1.5;padding:13px 0;font-weight:650}.order-details[open],.staff-panel[open],.test-panel[open]{padding-bottom:16px}.order-details button{margin:8px 8px 0 0}.test-panel{font-size:13px;color:#63746a;background:transparent}.test-panel summary{font-weight:400}.test-panel p{margin:6px 0}.queue-heading{display:flex;justify-content:space-between;align-items:center;margin:20px 0 12px;gap:12px}.queue-heading h2{margin:0}.queue-heading>span{font-size:13px;color:#63746a}.order-queue{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}.queue-column{padding:14px;background:#eeefe7;border-radius:14px;min-width:0}.queue-title{display:flex;justify-content:space-between;align-items:center;padding:0 2px 12px}.queue-title h2{font-size:19px;margin:0}.queue-title>span{display:inline-grid;place-items:center;min-width:28px;height:28px;background:#fff;border-radius:14px;font-weight:750}.order{background:#fff;border:1px solid #dfe2d8;border-radius:12px;padding:15px;margin-bottom:12px}.order:last-child{margin-bottom:0}.order-heading{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.order-heading h3{font-size:29px;margin:0}.order-heading small{font-size:12px;color:#63746a;width:100%}.status-chip{font-size:12px;background:#edf1e9;color:#385640;padding:4px 8px;border-radius:5px}.order-ready{border-left:4px solid #6e9e59}.order-items{list-style:none;padding:0;margin:16px 0 10px}.order-items li{display:flex;justify-content:space-between;gap:12px;font-size:21px;font-weight:650;margin:8px 0;line-height:1.4}.order-items li strong{white-space:nowrap}.order-note{background:#fff2ce;color:#59441b;padding:12px;font-size:18px;line-height:1.5;font-weight:700;border-radius:8px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.actions button{flex:1;min-width:110px}.order>.payment-summary{font-size:14px}.empty-queue{font-size:14px;margin:8px 0;padding:14px 2px}.staff-secondary{margin-top:20px}.staff-panel>.ordering,.staff-panel>.ticket-tools{margin-top:10px}.staff-panel .menu-section,.staff-panel .confirmation{border:0;padding:8px 0}.availability-list article{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 0;border-top:1px solid #e6e8e0}.availability-list small{display:block;margin-top:5px;color:#63746a}.error{padding:14px;background:#fde5dd;color:#872b14;border-radius:8px;line-height:1.55}.payment{background:#fff;border:1px solid #e1dfce;border-radius:12px;padding:20px;margin:16px 0}.payment h3{font-size:19px}.payment label{display:block;margin-bottom:12px}.payment strong{color:#254b39}.payment p{font-size:14px}.payment button{margin:4px 6px 4px 0}.receipt{text-align:center;background:#f2f6ee;border-radius:12px;padding:20px}.ticket-tools label{display:block;margin:12px 0}.ticket-tools input{display:block;max-width:100%;width:360px;margin-top:8px}.ticket-form{display:flex;gap:18px;align-items:end;flex-wrap:wrap}.ticket-form label{flex:1}.ticket-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}.wallet img{max-width:100%;height:auto}.wallet code{overflow-wrap:anywhere}.ticket-tools .receipt{max-width:420px;margin:16px 0}footer{padding:22px 0;color:#68746b;font-size:12px;text-align:center}@media(max-width:960px){.order-queue{gap:10px}.queue-column{padding:10px}.order{padding:12px}.order-items li{font-size:19px}.actions button{width:100%;flex-basis:100%}}@media(max-width:720px){:root{--cart-space:112px}.app-header{padding:8px 14px;min-height:56px;gap:10px}.brand{font-size:21px}.mock-warning{font-size:11px;padding:7px 8px}main{padding:14px 12px}section{padding:18px}.shop-heading{margin-bottom:14px}h1{font-size:22px}h2{font-size:21px}.menu-section{padding:18px 14px}.menu{gap:10px;padding:18px 0}.menu-description>strong{font-size:18px}.menu-description p{font-size:14px}.menu-description small{font-size:12px}.quantity-controls{grid-template-columns:44px 42px 44px;gap:2px}.quantity-controls input{width:42px}.section-heading{flex-wrap:wrap}.customer-ordering{padding-bottom:calc(var(--cart-space) + env(safe-area-inset-bottom,0px))}.customer-ordering .checkout{position:fixed;left:0;right:0;bottom:0;min-height:86px;padding:12px max(18px,env(safe-area-inset-left,0px)) calc(12px + env(safe-area-inset-bottom,0px));box-shadow:0 -3px 18px #26382f18;border-radius:14px 14px 0 0;margin:0;border-top:1px solid #dedfd4}.customer-ordering .checkout>strong{font-size:18px}.customer-ordering .checkout button{min-width:136px;font-size:15px}.customer-ordering.keyboard-open{padding-bottom:16px}.customer-ordering.keyboard-open .checkout{position:static;box-shadow:none;padding:16px 0 0;margin-top:18px;min-height:auto;border-radius:0}.customer-receipt{padding:17px 18px}.receipt-identity{grid-template-columns:112px 1fr;gap:14px;margin-top:16px}.number{font-size:66px}.receipt-status h2{font-size:23px}.receipt-status p{font-size:14px}.receipt-shop p{font-size:13px}.receipt-notification{font-size:12px}.customer-receipt>.primary{width:100%}.queue-heading{align-items:start}.queue-heading>span{max-width:112px;text-align:right;line-height:1.45}.order-queue{grid-template-columns:1fr;gap:14px}.queue-column{padding:14px}.order-heading small{width:auto;margin-left:auto}.order-items li{font-size:22px}.actions button{width:auto;flex-basis:auto}.ticket-form{display:block}.payment{padding:18px}.confirmation{padding:18px 14px}.confirmation>.checkout button{max-width:60%;white-space:normal}.checkout-steps{gap:8px 12px}.order-details,.staff-panel,.test-panel{padding-left:14px;padding-right:14px}}@media(max-width:359px){.app-header>span{display:none}.quantity-controls{grid-template-columns:44px 36px 44px}.quantity-controls input{width:36px}.menu-description>strong{font-size:16px}.receipt-identity{grid-template-columns:96px 1fr;gap:10px}.number{font-size:59px}.receipt-status h2{font-size:21px}.customer-ordering .checkout{gap:8px;padding-left:12px;padding-right:12px}.customer-ordering .checkout>strong{font-size:16px}.customer-ordering .checkout button{min-width:125px}.order-items li{font-size:20px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}.payment-ux{background:#fffdf6;text-align:left;padding:18px;margin:18px 0;border-color:#e5ddc8}.payment-ux-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.payment-ux .payment-ux-heading h3{font-size:18px;margin:0}.payment-ux-heading>span{font-weight:750;white-space:nowrap;color:#254b39}.payment-ux .payment-ux-disclaimer{font-size:13px;line-height:1.5;margin:8px 0 14px;color:#6c6245}.payment-ux-state{padding:12px;border-radius:10px;background:#f2f4ee}.payment-ux .payment-ux-state strong{font-size:17px}.payment-ux-state p{margin:8px 0 0}.payment-ux-state.is-unknown,.payment-ux-state.is-queryError{background:#fff0cf;border:1px solid #e9c976}.payment-ux-state.is-confirmed,.payment-ux-state.is-paid{background:#e8f2e8}.payment-ux-steps{padding:0;margin:18px 0;list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.payment-ux-steps li{font-size:12px;display:flex;flex-direction:column;align-items:center;gap:6px;color:#6b716b;text-align:center}.payment-ux-steps span{width:27px;height:27px;border:1px solid #bfc7bc;border-radius:50%;display:grid;place-items:center;font-weight:700;background:#fff}.payment-ux-steps li[aria-current=step]{color:#254b39;font-weight:750}.payment-ux-steps li[aria-current=step] span{color:#fff;background:#254b39;border-color:#254b39}.payment-ux-steps .is-done span{background:#dce9d9;border-color:#b4c8ad}.payment-ux-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:16px}.payment-ux-actions button{min-height:48px;white-space:normal;max-width:100%}.payment-ux button.payment-ux-primary{background:#254b39;color:#fff}.payment-ux-actions small{display:block;flex-basis:100%;line-height:1.5;color:#59645b}.payment-ux-test-panel{margin-top:18px;padding-top:12px;border-top:1px solid #e5ddc8;color:#657063;font-size:13px}.payment-ux-test-panel summary{cursor:pointer;min-height:44px;display:flex;align-items:center;text-decoration:underline;text-underline-offset:3px}.payment-ux-test-panel summary:focus-visible{outline:3px solid #d18a23;outline-offset:3px}.payment-ux-test-panel select{display:block;width:100%;margin-top:6px;font-size:14px}.payment-ux-test-panel code{overflow-wrap:anywhere;word-break:break-word}@media(max-width:380px){.payment-ux{padding:12px}.payment-ux-actions button{width:100%}.payment-ux-steps{gap:2px}}.wallet{padding:16px;min-width:0}.wallet .ticket-wallet-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.wallet .ticket-wallet-heading h2{font-size:19px;line-height:1.3;margin:0}.wallet .ticket-wallet-heading>span{font-size:12px;color:#58635b;text-align:right}.wallet .ticket-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:16px;align-items:start}.wallet .ticket-card{border:1px solid #cdd9ce;border-radius:16px;background:#fff;padding:18px;min-width:0;overflow-wrap:anywhere;box-shadow:0 3px 12px #254b3908}.wallet .ticket-card[data-status=ready]{border:2px solid #2d7451;background:#f6fbf5;padding:17px}.wallet .ticket-card[data-status=collected],.wallet .ticket-card[data-status=cancelled]{background:#f4f4ef;border-color:#dce0d7}.wallet .ticket-merchant{font-size:20px;line-height:1.4;margin:0 0 5px;color:#213e2c}.wallet .ticket-location{margin:0;font-size:14px;line-height:1.5;color:#3d5545}.wallet .ticket-location>span{display:inline-block;font-size:12px;color:#58635b;margin-right:8px}.wallet .ticket-progress{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0 10px}.wallet .ticket-number-label{display:block;font-size:12px;color:#58635b}.wallet .ticket-number{font-size:68px;font-weight:800;line-height:1.08;letter-spacing:2px;color:#214c35;font-variant-numeric:tabular-nums}.wallet .ticket-status{border-radius:999px;background:#e7eee5;color:#2f5037;padding:9px 13px;font-size:18px;line-height:1.3;white-space:nowrap}.wallet [data-status=ready] .ticket-status{background:#276542;color:#fff}.wallet [data-status=cancelled] .ticket-status,.wallet [data-status=collected] .ticket-status{background:#e5e7e0;color:#58635b}.wallet .ticket-next{margin:0 0 14px;line-height:1.55;color:#2d4737;font-size:15px;font-weight:650}.wallet .ticket-payment{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-top:12px;border-top:1px solid #dce5da;font-size:13px;color:#58635b}.wallet .ticket-payment>span{white-space:nowrap}.wallet .ticket-payment>div{text-align:right;display:grid;gap:4px}.wallet .ticket-payment strong{color:#314c3a;font-size:16px}.wallet .ticket-pickup{margin:0 0 14px;border:1px solid #b6cab9;border-radius:10px;background:#fff;overflow:hidden}.wallet .ticket-pickup>summary{padding:13px 12px;color:#254b39;font-weight:700;min-height:48px;cursor:pointer}.wallet .ticket-pickup-content{padding:2px 12px 14px;text-align:center;display:grid;justify-items:center;gap:10px}.wallet .ticket-pickup-content>p{font-size:13px;margin:0}.wallet .ticket-pickup-content img{max-width:100%;height:auto}.wallet .ticket-code{width:100%;text-align:left;font-size:13px}.wallet .ticket-code summary{min-height:44px;padding:12px 0;cursor:pointer}.wallet .ticket-code code{display:block;overflow-wrap:anywhere;padding:10px;background:#eff3ec;line-height:1.5;user-select:all}.wallet .ticket-notes{margin-top:10px;font-size:13px}.wallet .ticket-notes summary{min-height:44px;display:list-item;padding:12px 0;cursor:pointer}.wallet .ticket-notes p{margin:0;padding:10px;background:#fff4d7;white-space:pre-wrap}.wallet .ticket-notification{font-size:12px;line-height:1.7;margin:14px 0 0;color:#59685d}.wallet .ticket-claim-box,.wallet .ticket-empty{padding:16px;background:#f2f6ee;border-radius:12px;margin-bottom:14px}.wallet .ticket-claim-box h3,.wallet .ticket-empty h3{font-size:18px;margin:0 0 8px}.wallet .ticket-claim-box p,.wallet .ticket-empty p{font-size:14px;margin:8px 0}.wallet .ticket-claim-box button{background:#254b39;color:#fff;margin-top:6px;min-height:48px;width:100%}.wallet .ticket-feedback,.ticket-tools .ticket-feedback,.ticket-dialog .ticket-feedback{padding:12px;border-radius:9px;line-height:1.6;font-size:14px;margin:0 0 14px}.wallet .ticket-offline{background:#fff0c9;color:#665017}.wallet .ticket-error,.ticket-tools .ticket-error,.ticket-dialog .ticket-error{background:#fde9e1;color:#872b14}.ticket-tools{padding:14px;margin:0;min-width:0}.ticket-tools .ticket-tool-buttons{display:flex;gap:10px;flex-wrap:wrap}.ticket-tools .ticket-tool-buttons button{min-height:48px}.ticket-tools .ticket-tool-notice,.ticket-dialog .ticket-tool-notice{border-radius:9px;background:#edf5e9;color:#315734;padding:12px;font-size:14px;line-height:1.6}.ticket-tools .ticket-pending,.ticket-dialog .ticket-pending{border-radius:9px;background:#fff0c9;color:#665017;padding:12px;font-size:14px;line-height:1.6}.ticket-dialog{width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 24px);border:1px solid #c4cec1;border-radius:18px;padding:22px;color:#26382f;background:#fff;overflow:auto;overscroll-behavior:contain}.ticket-dialog::backdrop{background:#162d24a6}.ticket-dialog .ticket-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.ticket-dialog .ticket-dialog-heading h2{font-size:22px;margin:0}.ticket-dialog p{font-size:14px;line-height:1.6}.ticket-dialog label{display:block;margin:16px 0;font-weight:650;line-height:1.6}.ticket-dialog input,.ticket-dialog select,.ticket-dialog textarea{display:block;width:100%;max-width:100%;min-height:48px;margin-top:6px;font-weight:400;font-size:16px}.ticket-dialog textarea{min-height:92px;resize:vertical}.ticket-dialog .ticket-help{font-size:13px;color:#5b685e;margin:8px 0 16px}.ticket-dialog .ticket-primary{width:100%;min-height:48px;background:#254b39;color:#fff;margin-bottom:max(2px,env(safe-area-inset-bottom))}.ticket-dialog .ticket-claim-result{display:grid;justify-items:center;gap:12px;background:#f3f7ef;border-radius:12px;padding:16px;margin-top:18px;text-align:center}.ticket-dialog .ticket-claim-result p{margin:0}.ticket-dialog .ticket-claim-result img{max-width:100%;height:auto}.ticket-dialog .ticket-claim-result a{color:#254b39;min-height:44px;display:flex;align-items:center;text-decoration:underline}.wallet summary:focus-visible,.ticket-dialog textarea:focus-visible,.ticket-dialog a:focus-visible{outline:3px solid #d18a23;outline-offset:3px}@media(max-width:400px){.wallet{padding:12px}.wallet .ticket-wallet-heading{gap:8px}.wallet .ticket-wallet-heading h2{font-size:18px}.wallet .ticket-card{padding:14px}.wallet .ticket-card[data-status=ready]{padding:13px}.wallet .ticket-number{font-size:60px}.wallet .ticket-status{font-size:17px;padding:8px 10px}.wallet .ticket-merchant{font-size:18px}.wallet .ticket-progress{margin-top:13px}.ticket-dialog{padding:16px}.ticket-tools .ticket-tool-buttons button{flex:1 1 120px}}
