:root{--paper:#f4f2ec;--tape:#fffefb;--ink:#16130f;--ink-soft:#6d6459;--rule:#ddd6c9;--go:#0b6b3a;--go-deep:#084f2b;--stop:#a8342a;--highlight:#fff3c4;--font-ui:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-num:ui-monospace,"SF Mono","Cascadia Mono","Roboto Mono",Menlo,Consolas,monospace;--touch:88px}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;overflow:hidden;background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased}body{-moz-user-select:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer}:focus-visible{outline:4px solid var(--go);outline-offset:3px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}}.screen{height:100dvh;display:flex;flex-direction:column}.welcome{height:100dvh;display:grid;grid-template-rows:auto 1fr auto;padding:48px;text-align:center}.welcome__brand{display:flex;align-items:center;justify-content:center;gap:16px;font-size:28px;font-weight:600;letter-spacing:-.01em}.welcome__logo{height:56px;width:auto}.welcome__main{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:40px}.welcome__title{font-size:clamp(48px,6vw,84px);font-weight:700;letter-spacing:-.03em;line-height:1.05}.welcome__instruction{font-size:clamp(24px,2.6vw,36px);color:var(--ink-soft);max-width:20ch;line-height:1.35}.scanner{position:relative;width:260px;height:150px;display:flex;align-items:center;justify-content:center;gap:7px;padding:0 24px;border:3px solid var(--ink);border-radius:10px;background:var(--tape);overflow:hidden}.scanner__bar{background:var(--ink);height:78px;border-radius:1px}.scanner__beam{position:absolute;left:0;right:0;height:5px;background:var(--stop);box-shadow:0 0 22px 5px rgba(168,52,42,.45);animation:beam 2.6s ease-in-out infinite}@keyframes beam{0%,to{top:14%;opacity:.35}50%{top:82%;opacity:1}}.welcome__footer{display:flex;justify-content:space-between;align-items:flex-end;font-size:17px;color:var(--ink-soft)}.status{display:inline-flex;align-items:center;gap:10px;font-weight:500}.status__dot{width:11px;height:11px;border-radius:50%;background:var(--go)}.status__dot--off{background:var(--stop)}.cart{height:100dvh;display:grid;grid-template-columns:1fr 440px;grid-gap:0;gap:0}@media (max-width:1100px){.cart{grid-template-columns:1fr 360px}}.cart__list{overflow-y:auto;padding:32px 32px 32px 40px;-webkit-overflow-scrolling:touch}.cart__header{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:20px;margin-bottom:8px;border-bottom:2px solid var(--ink)}.cart__title{font-size:30px;font-weight:700;letter-spacing:-.02em}.cart__count{font-size:20px;color:var(--ink-soft);font-family:var(--font-num)}.tape{background:var(--tape);border-radius:4px;box-shadow:0 1px 0 var(--rule),0 8px 24px rgba(22,19,15,.05);padding:6px 0}.line{display:grid;grid-template-columns:1fr auto auto;align-items:center;grid-gap:20px;gap:20px;padding:18px 24px;border-bottom:1px dashed var(--rule)}.line:last-child{border-bottom:none}.line--new{animation:print .42s cubic-bezier(.2,.8,.3,1)}@keyframes print{0%{opacity:0;transform:translateY(-14px);background:var(--highlight)}to{opacity:1;transform:none;background:transparent}}.line__info{min-width:0}.line__name{font-size:23px;font-weight:500;line-height:1.25;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.line__unit{margin-top:5px;font-family:var(--font-num);font-size:17px;color:var(--ink-soft)}.stepper{gap:4px}.stepper,.stepper__btn{display:flex;align-items:center}.stepper__btn{width:var(--touch);height:var(--touch);border:2px solid var(--ink);border-radius:8px;background:var(--paper);font-size:34px;font-weight:500;line-height:1;justify-content:center;transition:background .12s,transform 80ms}.stepper__btn:active{background:var(--ink);color:var(--tape);transform:scale(.94)}.stepper__value{min-width:76px;text-align:center;font-size:30px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.line__total,.stepper__value{font-family:var(--font-num);font-weight:600}.line__total{min-width:132px;text-align:right;font-size:27px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.summary{background:var(--tape);border-left:2px solid var(--ink);padding:40px 32px;display:flex;flex-direction:column;justify-content:flex-end;gap:24px}.summary__label{font-size:20px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em}.summary__total{font-family:var(--font-num);font-size:clamp(56px,6vw,84px);font-weight:700;letter-spacing:-.03em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1}.summary__currency{font-size:.5em;margin-left:8px;color:var(--ink-soft)}.btn{width:100%;min-height:104px;border-radius:12px;font-size:28px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:12px;transition:transform 80ms,background .12s}.btn:active{transform:scale(.985)}.btn--pay{background:var(--go);color:#fff}.btn--pay:active{background:var(--go-deep)}.btn--pay:disabled{background:var(--rule);color:var(--ink-soft)}.btn--ghost{min-height:76px;font-size:21px;font-weight:500;border:2px solid var(--rule);color:var(--ink-soft)}.btn--ghost:active{background:var(--paper)}.btn__amount{font-family:var(--font-num);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:60%;gap:14px;color:var(--ink-soft);font-size:24px;text-align:center}.toast{position:fixed;left:50%;bottom:56px;transform:translateX(-50%);min-width:460px;max-width:82vw;padding:26px 34px;border-radius:12px;background:var(--ink);color:var(--tape);box-shadow:0 14px 40px rgba(22,19,15,.3);animation:rise .24s cubic-bezier(.2,.8,.3,1);z-index:60}.toast--error{background:var(--stop)}.toast__title{font-size:27px;font-weight:600}.toast__hint{margin-top:7px;font-size:19px;opacity:.85}@keyframes rise{0%{opacity:0;transform:translate(-50%,24px)}to{opacity:1;transform:translate(-50%)}}.overlay{position:fixed;inset:0;background:rgba(22,19,15,.62);display:flex;align-items:center;justify-content:center;padding:32px;z-index:80;animation:fade .18s ease-out}@keyframes fade{0%{opacity:0}to{opacity:1}}.dialog{background:var(--tape);border-radius:16px;padding:52px;max-width:720px;width:100%;text-align:center;box-shadow:0 28px 70px rgba(22,19,15,.35)}.dialog__title{font-size:42px;font-weight:700;letter-spacing:-.02em;line-height:1.15}.dialog__text{margin-top:18px;font-size:24px;color:var(--ink-soft);line-height:1.4}.dialog__countdown{margin-top:26px;font-family:var(--font-num);font-size:76px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dialog__actions{margin-top:40px;display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px}.dialog__actions--single{grid-template-columns:1fr}.dialog .btn--confirm{background:var(--go);color:#fff}.dialog .btn--danger{background:var(--stop);color:#fff}.closed{height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;text-align:center;padding:40px;background:var(--ink);color:var(--paper)}.closed__title{font-size:54px;font-weight:700;letter-spacing:-.02em}.closed__text{font-size:25px;opacity:.75;max-width:24ch;line-height:1.4}.offline{position:fixed;top:0;left:0;right:0;padding:16px;background:var(--stop);color:#fff;font-size:20px;font-weight:500;z-index:90}.offline,.pay{text-align:center}.pay{height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:40px}.pay__order{font-size:20px;color:var(--ink-soft)}.pay__amount,.pay__order{font-family:var(--font-num)}.pay__amount{font-size:clamp(64px,8vw,108px);font-weight:700;letter-spacing:-.03em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1}.pay__terminal{position:relative;width:260px;height:200px;display:flex;align-items:center;justify-content:center;margin:26px 0 8px}.pay__card{width:132px;height:84px;border:4px solid var(--ink);border-radius:10px;background:var(--tape);position:relative;z-index:2}.pay__card:after{content:"";position:absolute;left:16px;top:22px;width:30px;height:24px;border:3px solid var(--ink);border-radius:4px}.pay__wave{position:absolute;border:4px solid var(--go);border-radius:50%;opacity:0;animation:wave 2.1s ease-out infinite}.pay__wave--1{width:150px;height:150px;animation-delay:0s}.pay__wave--2{width:150px;height:150px;animation-delay:.5s}.pay__wave--3{width:150px;height:150px;animation-delay:1s}@keyframes wave{0%{transform:scale(.7);opacity:0}35%{opacity:.75}to{transform:scale(1.65);opacity:0}}.pay__title{font-size:clamp(34px,4vw,52px);font-weight:700;letter-spacing:-.02em;max-width:18ch;line-height:1.15}.pay__hint{font-size:24px;color:var(--ink-soft)}.done{height:100dvh;flex-direction:column;gap:12px;text-align:center;padding:40px}.done,.done__mark{display:flex;align-items:center;justify-content:center}.done__mark{width:132px;height:132px;border-radius:50%;background:var(--go);color:#fff;margin-bottom:14px;animation:pop .46s cubic-bezier(.2,1.3,.4,1)}.done__mark--fail{background:var(--stop)}@keyframes pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.08);opacity:1}to{transform:scale(1)}}.done__title{font-size:clamp(38px,4.4vw,56px);font-weight:700;letter-spacing:-.02em}.done__thanks{font-size:25px;color:var(--ink-soft);max-width:26ch;line-height:1.35}.done__amount{margin-top:12px;font-family:var(--font-num);font-size:clamp(48px,5.5vw,76px);font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1}.done__order{font-family:var(--font-num);font-size:20px;color:var(--ink-soft)}.done__receipt{margin-top:26px;min-height:200px;display:flex;flex-direction:column;align-items:center;gap:12px}.done__qr{width:168px;height:168px;border:2px solid var(--rule);border-radius:8px;background:var(--tape);padding:6px}.done__receipt-label{font-size:19px;color:var(--ink-soft)}.done__finish{max-width:420px;margin-top:18px}.done__actions{margin-top:34px;display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px;width:100%;max-width:720px}body,html{overscroll-behavior:none;touch-action:manipulation}.cart__list{overscroll-behavior:contain}.pin-display{display:flex;justify-content:center;gap:12px;margin:26px 0 8px}.pin-dot{width:16px;height:16px;border-radius:50%;border:2px solid var(--rule);background:transparent}.pin-dot--filled{background:var(--ink);border-color:var(--ink)}.pin-error{color:var(--stop);font-size:17px;margin-bottom:6px}.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px;margin-top:18px}.pin-key{height:68px;border:2px solid var(--rule);border-radius:10px;font-size:26px;font-family:var(--font-num);font-weight:600;background:var(--paper);transition:background .12s,transform 80ms}.pin-key:active{background:var(--ink);color:var(--tape);transform:scale(.95)}.pin-key--muted{color:var(--ink-soft);font-size:20px}.pin-key--go{background:var(--go);color:#fff;border-color:var(--go);font-size:20px}.service-corner{position:fixed;top:0;left:0;width:90px;height:90px;z-index:5;pointer-events:none}.service-corner:after{content:"";position:absolute;top:10px;left:10px;width:6px;height:6px;border-radius:50%;background:var(--rule);opacity:.5}.customer-chip{padding:14px 16px;border-radius:10px;background:#f1f9f4;border:2px solid #bfe0cd}.customer-chip--low{background:#fdf8ee;border-color:#ecdcb8}.customer-chip__name{font-size:17px;font-weight:600}.customer-chip__balance{margin-top:3px;font-family:var(--font-num);font-size:24px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--go);display:flex;align-items:baseline;gap:10px}.customer-chip--low .customer-chip__balance{color:var(--warn)}.customer-chip__note{font-family:var(--font-ui);font-size:15px;font-weight:500;color:var(--ink-soft)}.pay-hint{padding:18px 20px;border-radius:10px;background:var(--paper);border:2px dashed var(--rule)}.pay-hint__title{font-size:17px;font-weight:600;margin-bottom:10px}.pay-hint__steps{margin:0;padding-left:22px;font-size:16px;line-height:1.6;color:var(--ink-soft)}.code-timer{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:10px;background:#f1f9f4;border:2px solid #bfe0cd;font-size:15px}.code-timer__bar{flex:1 1;height:6px;background:#d6e9dd;border-radius:3px;overflow:hidden}.code-timer__fill{height:100%;background:var(--go);transition:width 1s linear}.code-timer--low{background:#fdf8ee;border-color:#ecdcb8}.code-timer--low .code-timer__fill{background:var(--warn)}.welcome__note{margin-top:10px;padding:14px 22px;border-radius:10px;background:var(--tape);border:2px dashed var(--rule);font-size:18px;color:var(--ink-soft);max-width:30ch;line-height:1.4}.debug{position:fixed;left:0;right:0;bottom:0;z-index:70;padding:12px 16px;background:#16130f;color:#cfc7ba;border-top:3px solid var(--go)}.debug__label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#6f675c;margin-bottom:8px}.debug__row{display:flex;gap:8px;margin-bottom:10px}.debug__input{flex:1 1;height:44px;padding:0 14px;border-radius:8px;border:2px solid #3a332b;background:#221d18;color:#fffefb;font-family:var(--font-num);font-size:18px}.debug__input:focus{outline:none;border-color:var(--go)}.debug__btn{height:44px;padding:0 20px;border-radius:8px;background:var(--go);color:#fff;font-weight:600}.debug__samples{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.debug__chip{padding:6px 11px;border-radius:6px;background:#221d18;border:1px solid #3a332b;color:#cfc7ba;font-size:13px}.debug__chip:hover{border-color:var(--go);color:#fffefb}.debug__chip--muted{font-family:var(--font-num);font-size:12px;opacity:.7}.debug__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.debug__collapse{font-size:12px;color:#6f675c;padding:4px 10px;border-radius:6px;border:1px solid #3a332b}.debug__collapse:hover{color:#fffefb;border-color:var(--go)}.debug__toggle{position:fixed;right:12px;bottom:12px;z-index:70;padding:8px 14px;border-radius:8px;background:#16130f;color:#cfc7ba;font-size:12px;opacity:.85}.debug__toggle:hover{opacity:1}body:has(.debug) .cart__list,body:has(.debug) .done,body:has(.debug) .pay,body:has(.debug) .summary,body:has(.debug) .welcome{padding-bottom:190px}body:has(.debug) .done__finish{margin-bottom:8px}