:root{--bg: #f4f8f9;--card: #ffffff;--sunk: #e8f0f2;--line: #d3e0e4;--ink: #1d2e35;--muted: #5b7079;--teal: #0f6a81;--teal-2: #0b5568;--teal-soft: #d8ebef;--sea: #45939c;--clay: #995041;--rose: #c2676d;--blush: #f3dcd8;--plum: #5c363a;--ok: #1f7a55;--ok-soft: #dcefe6;--warn: #a65d00;--warn-soft: #fbecd6;--bad: #b23a3f;--bad-soft: #f7dfe0;--r: 14px;--r-lg: 22px;--shadow: 0 1px 2px rgb(15 50 60 / .06), 0 6px 18px rgb(15 50 60 / .06);--ui: "Varela Round", ui-rounded, system-ui, sans-serif;--num: "Inconsolata", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.4 var(--ui);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:3px solid color-mix(in oklab,var(--teal) 55%,white);outline-offset:2px}.num{font-family:var(--num);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);font-size:15px;transition:transform .08s,background .15s,border-color .15s;white-space:nowrap}.btn:hover:not(:disabled){border-color:var(--teal)}.btn:active:not(:disabled){transform:scale(.97)}.btn.primary{background:var(--teal);border-color:var(--teal);color:#fff}.btn.primary:hover:not(:disabled){background:var(--teal-2)}.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn.ghost{border-color:transparent;background:transparent}.btn.small{min-height:34px;padding:0 12px;font-size:14px}.btn:disabled{opacity:.45}.field{display:grid;gap:6px;font-size:14px;color:var(--muted)}.input,select.input,textarea.input{width:100%;min-height:46px;padding:10px 14px;border:1.5px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);font-size:16px}.input:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px var(--teal-soft)}textarea.input{min-height:80px;resize:vertical}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:14px;background:var(--sunk);color:var(--muted);white-space:nowrap}.pill:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor;opacity:.9}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.plain:before{display:none}.banner{display:flex;gap:12px;align-items:center;padding:12px 16px;border-radius:12px;font-size:15px}.banner.bad{background:var(--bad-soft);color:var(--bad)}.banner.warn{background:var(--warn-soft);color:var(--warn)}.banner.ok{background:var(--ok-soft);color:var(--ok)}.banner .btn{margin-left:auto}.login{min-height:100%;display:grid;place-items:center;padding:24px;background:radial-gradient(1200px 600px at 10% -10%,var(--teal-soft),transparent 60%),radial-gradient(800px 500px at 110% 110%,var(--blush),transparent 60%),var(--bg)}.login-card{width:min(420px,100%);background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:34px 30px 28px;position:relative}.login-card:after{content:"";position:absolute;left:18px;right:18px;top:-7px;height:14px;background:radial-gradient(circle at 7px 7px,var(--bg) 6px,transparent 6.5px) 0 0 / 22px 14px repeat-x}.login h1{font-size:34px;letter-spacing:-.02em;margin:6px 0 2px;font-weight:400}.login .kicker{font:14px var(--num);letter-spacing:.2em;text-transform:uppercase;color:var(--teal)}.login form{display:grid;gap:14px;margin-top:22px}.login .btn.primary{min-height:54px;font-size:18px;margin-top:6px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#12242a73;display:grid;place-items:center;padding:16px;z-index:50;animation:fade .15s ease-out}.modal{background:var(--card);border-radius:var(--r-lg);width:min(560px,100%);max-height:calc(100vh - 32px);overflow:auto;box-shadow:0 20px 60px #00000040;animation:rise .2s cubic-bezier(.2,.8,.2,1)}.modal.wide{width:min(860px,100%)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px 0}.modal-head h2{margin:0;font-size:22px;font-weight:400}.modal-body{padding:18px 22px 22px;display:grid;gap:14px}.modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:0 22px 22px;flex-wrap:wrap}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(14px) scale(.98)}}.receipt{font:15px/1.45 var(--num);color:#111;background:#fff;padding:18px 18px 22px;width:100%;max-width:340px;margin:0 auto}.receipt-org{text-align:center;font-size:14px;letter-spacing:.18em;text-transform:uppercase}.receipt-no{text-align:center;font-size:22px;font-weight:700;margin:6px 0 10px;letter-spacing:.04em}.receipt-meta{margin:0;display:grid;gap:1px}.receipt-meta div{display:flex;justify-content:space-between;gap:10px}.receipt-meta dt:after{content:":"}.receipt-meta dd{margin:0;text-align:right}.receipt-rule{border-top:1.5px dashed #999;margin:10px 0}.receipt-items{list-style:none;margin:0;padding:0;display:grid;gap:3px}.receipt-items li{display:grid;grid-template-columns:1fr auto;column-gap:10px}.receipt-items small{grid-column:1;color:#555;font-size:14px;padding-left:2.2ch}.receipt-total{display:flex;justify-content:space-between;font-size:20px;font-weight:700;margin-bottom:4px}.receipt-line{display:flex;justify-content:space-between}.receipt-flag{margin-top:8px;text-align:center;border:2px solid #111;padding:4px;font-weight:700;letter-spacing:.1em}.receipt-foot{text-align:center;font-size:14px;color:#444}.toasts{position:fixed;z-index:80;bottom:18px;left:50%;transform:translate(-50%);display:grid;gap:8px;width:min(520px,calc(100% - 24px));pointer-events:none}.toast{pointer-events:auto;background:var(--ink);color:#fff;padding:12px 16px;border-radius:12px;box-shadow:var(--shadow);animation:rise .2s;font-size:15px}.toast.bad{background:var(--bad)}.toast.ok{background:var(--ok)}.top-alert{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:5}.till{height:100%;display:grid;grid-template-columns:1fr minmax(360px,420px);grid-template-rows:auto auto auto 1fr;grid-template-areas:"head ticket" "strip ticket" "cats ticket" "grid ticket"}.till-head{grid-area:head;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 22px 8px}.brand{display:flex;align-items:baseline;gap:12px;min-width:0}.brand-org{font:14px var(--num);letter-spacing:.22em;text-transform:uppercase;color:var(--teal)}.brand-event{font-size:26px;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.head-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.strip{grid-area:strip;margin:4px 22px}.cats{grid-area:cats;display:flex;gap:8px;padding:8px 22px 12px;overflow-x:auto;scrollbar-width:none}.cats button{--ink: var(--teal);flex:none;min-height:46px;padding:0 20px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);font-size:16px}.cats button.on{background:var(--ink);border-color:var(--ink);color:#fff}.grid{grid-area:grid;overflow-y:auto;padding:4px 22px 28px;display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:14px;align-content:start}.empty{grid-column:1 / -1}.card{--ink: var(--teal);position:relative;display:grid;grid-template-rows:auto 1fr auto;text-align:left;min-height:150px;padding:0 0 14px;border:0;border-radius:var(--r);background:var(--card);box-shadow:var(--shadow);overflow:hidden;transition:transform .1s,box-shadow .15s}.card:active:not(:disabled){transform:scale(.96)}.card.in{box-shadow:0 0 0 2.5px var(--ink),var(--shadow)}.card-band{height:14px;background:var(--ink);background-image:radial-gradient(circle at 7px 14px,var(--card) 4px,transparent 4.5px);background-size:14px 14px;background-position:0 0}.card img{width:100%;height:86px;object-fit:cover}.card-name{padding:12px 14px 4px;font-size:18px;line-height:1.2}.card-price{padding:0 14px;font-size:24px;font-weight:700;color:var(--ink)}.card-qty{position:absolute;top:22px;right:10px;min-width:32px;height:32px;padding:0 8px;border-radius:16px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:17px;font-weight:700;animation:pop .18s}.card.skeleton{background:linear-gradient(90deg,var(--sunk),#fff,var(--sunk));background-size:200% 100%;animation:shimmer 1.4s infinite linear;box-shadow:none}@keyframes shimmer{to{background-position:-200% 0}}@keyframes pop{0%{transform:scale(.4)}}.ticket{grid-area:ticket;display:flex;flex-direction:column;min-height:0;background:var(--card);border-left:1px solid var(--line);position:relative}.ticket:before{content:"";position:absolute;left:-7px;top:0;bottom:0;width:14px;background:radial-gradient(circle at 7px 7px,var(--bg) 5.5px,transparent 6px) 0 0 / 14px 20px repeat-y}.ticket-head{display:flex;align-items:baseline;gap:10px;padding:20px 22px 8px}.ticket-head h2{margin:0;font-size:24px;font-weight:400}.sheet-close{display:none;margin-left:auto}.lines{list-style:none;margin:0;padding:0 14px;flex:1;overflow-y:auto}.lines li{display:grid;grid-template-columns:1fr auto auto 32px;align-items:center;gap:10px;padding:10px 8px;border-bottom:1px dashed var(--line);animation:rise .15s}.lines li.gone{background:var(--bad-soft);border-radius:10px}.lines-empty{display:block!important;text-align:center;padding:40px 0!important;border:0!important}.line-name{display:grid;min-width:0}.line-name span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.line-name small{font-size:14px}.stepper{display:flex;align-items:center;gap:2px;background:var(--sunk);border-radius:999px;padding:3px}.stepper button{width:38px;height:38px;border-radius:50%;border:0;background:var(--card);font-size:20px;line-height:1}.stepper span{min-width:30px;text-align:center;font-size:18px;font-weight:700}.line-total{min-width:74px;text-align:right;font-size:17px}.line-del{width:32px;height:32px;border:0;border-radius:50%;background:transparent;color:var(--muted)}.line-del:hover{background:var(--bad-soft);color:var(--bad)}.pay{padding:14px 22px 20px;display:grid;gap:12px;border-top:2px dashed var(--line);background:linear-gradient(var(--card),var(--bg))}.total-row{display:flex;justify-content:space-between;align-items:baseline;font-size:20px}.total-row .num{font-size:40px;font-weight:700;letter-spacing:-.02em}.cash-input{position:relative}.cash-input span{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:22px;color:var(--muted)}.cash-input .input{padding-left:34px;font-size:26px;min-height:58px;font-weight:700}.quick{display:flex;gap:8px;flex-wrap:wrap}.quick .btn{flex:1;min-height:44px;font-size:16px}.change{display:flex;justify-content:space-between;align-items:baseline;padding:12px 16px;border-radius:12px;background:var(--ok-soft);color:var(--ok);font-size:17px}.change .num{font-size:30px;font-weight:700}.change.short{background:var(--bad-soft);color:var(--bad)}.complete{min-height:66px!important;font-size:21px!important;border-radius:18px!important}.sheet-bar{display:none}.done-overlay{background:#0a323c99}.stub{width:min(400px,100%);max-height:calc(100vh - 32px);overflow:auto;background:#fff;border-radius:20px;box-shadow:0 24px 70px #0000004d;animation:stubIn .35s cubic-bezier(.2,.9,.2,1.1)}@keyframes stubIn{0%{transform:translateY(40px) rotate(-2deg);opacity:0}}.stub-top{background:var(--teal);color:#fff;padding:22px 22px 26px;display:grid;justify-items:center;gap:4px}.stub-kicker{font:14px var(--num);letter-spacing:.2em;text-transform:uppercase;opacity:.85}.stub-no{font-size:46px;font-weight:700;letter-spacing:.02em}.stub-change{font-size:18px}.stub-change b{font-size:30px;margin-left:6px}.stub-perf{height:16px;margin-top:-8px;background:radial-gradient(circle at 8px 8px,rgb(10 50 60 / .6) 6px,transparent 6.5px) 0 0 / 20px 16px repeat-x}.stub-body{padding:0 8px}.stub-actions{display:flex;gap:10px;padding:8px 20px 22px}.stub-actions .btn{flex:1;min-height:54px;font-size:17px}.history{list-style:none;margin:0;padding:0;display:grid;gap:6px}.history button{width:100%;display:grid;grid-template-columns:auto 1fr auto auto;gap:12px;align-items:center;text-align:left;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--card)}@media(max-width:900px){.till{grid-template-columns:1fr;grid-template-areas:"head" "strip" "cats" "grid";padding-bottom:76px}.till-head{padding:12px 14px 6px;flex-wrap:wrap}.brand-event{font-size:21px}.cats{padding:6px 14px 10px}.grid{padding:4px 14px 20px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.card{min-height:128px}.card-name{font-size:16px}.card-price{font-size:21px}.ticket{position:fixed;inset:auto 0 0 0;height:92vh;border-radius:22px 22px 0 0;border:0;box-shadow:0 -10px 40px #0003;transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.8,.2,1);z-index:30}.ticket:before{display:none}.sheet-open .ticket{transform:none}.sheet-close{display:inline-flex}.sheet-bar{display:flex;position:fixed;left:10px;right:10px;bottom:10px;z-index:20;align-items:center;justify-content:space-between;gap:10px;min-height:60px;padding:0 20px;border:0;border-radius:18px;background:var(--teal);color:#fff;font-size:17px;box-shadow:0 8px 24px #0f6a8159}.sheet-bar strong{font-size:22px}}
