:root{--r-sm: 10px;--r-md: 12px;--r-lg: 14px;--bg: #0f1115;--panel: #1a1d24;--panel-2: #232733;--text: #e8eaed;--muted: #9aa0ab;--line: #2c313c;--pending: #3b82f6;--preparing: #f59e0b;--ready: #22c55e;--stale: #ef4444;--accent: #6366f1;--t-yellow: #c2a53c;--t-orange: #c07b3c;--t-red: #bd5b54;--stale-bg: #dc2626;--t-red-bg: #b35149;--accent-bg: #4f46e5;--accent-text: #818cf8;--text-xs: 13px;--text-sm: 15px;--text-md: 17px;--text-lg: 19px;--text-xl: 22px;--text-2xl: 26px;--touch: 44px;--control: 46px;--control-lg: 52px;--control-primary: 72px}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:var(--text-md)}.kds{block-size:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px;background:var(--panel);border-block-end:1px solid var(--line);position:sticky;inset-block-start:0;z-index:10}.topbar h1{font-size:var(--text-xl);margin:0;white-space:nowrap}.conn-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.field{background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:var(--r-sm);padding:8px 10px;font-size:var(--text-sm);min-block-size:var(--touch);inline-size:220px;text-align:start}.field.venue{inline-size:320px}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 14px;min-block-size:var(--control);font-size:var(--text-md);font-weight:600;cursor:pointer}.btn:hover{filter:brightness(1.15)}.btn.primary{background:var(--accent-bg);border-color:var(--accent-bg)}.btn.ready{background:var(--ready);border-color:var(--ready);color:#05210f}.btn.ghost{background:transparent}.btn.block{inline-size:100%}.status-dot{inline-size:12px;block-size:12px;border-radius:50%;background:var(--muted)}.status-dot.connected{background:var(--ready);box-shadow:0 0 8px var(--ready)}.status-dot.connecting{background:var(--preparing)}.status-dot.disconnected{background:var(--stale)}.fifo-grid{flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;padding:16px;align-items:start;overflow-y:auto;min-block-size:0;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.empty{flex:1;display:grid;place-items:center;color:var(--muted);font-size:var(--text-xl)}.muted-btn{opacity:.5}select.field,.station-pick{background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:var(--r-sm);padding:8px 10px;font-size:var(--text-sm);min-block-size:var(--touch)}.station-tag{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--line);border-radius:var(--r-sm);padding:1px 7px}.station-tag.warm{color:var(--preparing);border-color:color-mix(in srgb,var(--preparing) 45%,transparent)}.recall-wrap{position:relative}.recall-pop{position:absolute;inset-block-start:calc(100% + 6px);inset-inline-end:0;inline-size:340px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:10px;box-shadow:0 12px 32px #00000073;z-index:50;display:flex;flex-direction:column;gap:8px}.recall-search{background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:var(--r-sm);padding:8px 10px;font-size:var(--text-md);min-block-size:var(--touch);inline-size:100%}.recall-list{max-block-size:320px;overflow:auto;display:flex;flex-direction:column;gap:4px}.recall-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px;background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:var(--r-sm);padding:8px 10px;min-block-size:var(--touch);cursor:pointer;text-align:start}.recall-row:hover{border-color:var(--accent)}.rr-no{font-weight:800}.rr-meta{color:var(--muted);font-size:var(--text-sm)}.settings-pop{inline-size:300px}.set-label{font-size:var(--text-sm);color:var(--muted)}.set-msg{font-size:var(--text-sm);color:var(--ready)}.recall-empty{color:var(--muted);font-size:var(--text-sm);text-align:center;padding-block:8px}.settings-page{padding:24px;max-inline-size:720px;margin-inline:auto;inline-size:100%;display:flex;flex-direction:column;gap:16px}.set-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:18px}.set-card h3{margin:0 0 14px;font-size:var(--text-md);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-block:8px;font-size:var(--text-lg)}.set-controls{display:flex;align-items:center;gap:8px}.set-hint{color:var(--muted);font-size:var(--text-sm)}.set-muted{color:var(--muted);font-size:var(--text-sm);font-family:ui-monospace,monospace}.set-actions{display:flex;align-items:center;gap:12px;margin-block-start:8px}.set-saved{color:var(--ready);font-size:var(--text-md)}.ticket{animation:ticketIn .25s ease}@keyframes ticketIn{0%{opacity:0;transform:translateY(-6px) scale(.98)}}.ticket{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:14px;display:flex;flex-direction:column;gap:10px;border-inline-start:6px solid var(--line)}.ticket.pending{border-inline-start-color:var(--pending)}.ticket.preparing{border-inline-start-color:var(--preparing)}.ticket.ready{border-inline-start-color:var(--ready)}.paper-hint{background:color-mix(in srgb,var(--preparing) 18%,var(--panel));border-block-end:1px solid var(--preparing);color:var(--text);padding:10px 16px;font-size:var(--text-md)}.ticket.warn{border-inline-start-color:var(--t-yellow)}.ticket.urgent{border-inline-start-color:var(--t-orange)}.ticket.late{border-inline-start-color:var(--t-red);box-shadow:0 0 0 1px color-mix(in srgb,var(--t-red) 40%,transparent) inset}.ticket.shake{animation:nudge 2.4s ease-in-out infinite}@keyframes nudge{0%,86%,to{transform:translate(0)}88%{transform:translate(-2px)}90%{transform:translate(2px)}92%{transform:translate(-2px)}94%{transform:translate(2px)}96%{transform:translate(-1px)}}.chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.late-badge{background:var(--t-red-bg);color:#fff}.badge.chan{background:var(--panel-2);color:var(--text);border:1px solid var(--line)}.badge.chan.delivery{border-color:var(--accent);color:var(--accent-text)}.badge.chan.takeaway{border-color:var(--preparing);color:var(--preparing)}.target{color:var(--muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.unmatched{color:var(--muted);cursor:help;font-weight:700}.unmatched-tap{background:none;border:none;padding:10px 8px;margin-block:-10px;color:var(--muted);font:inherit;font-weight:700;cursor:pointer}.unmatched-hint{font-size:var(--text-xs);color:var(--muted)}.unmatched-hint-bar{padding:6px 16px;background:var(--panel);border-block-end:1px solid var(--line);color:var(--muted);font-size:var(--text-sm)}.ticket-head{display:flex;align-items:center;justify-content:space-between;cursor:pointer;min-block-size:var(--touch);-webkit-tap-highlight-color:transparent}.ticket-head:active{background:#ffffff0f}.order-no{font-size:var(--text-xl);font-weight:800}.age{font-variant-numeric:tabular-nums;color:var(--muted);font-size:var(--text-md)}.badge{align-self:start;font-size:var(--text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 10px;border-radius:var(--r-sm);color:#0b0d12}.badge.pending{background:var(--pending)}.badge.preparing{background:var(--preparing)}.badge.ready{background:var(--ready)}.lines{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.line{display:flex;flex-direction:column;gap:4px;font-size:var(--text-lg)}.line-main{display:flex;gap:8px;align-items:baseline}.qty{font-weight:800;color:var(--accent-text);min-inline-size:32px}.name{flex:1}.note{color:var(--preparing);font-style:italic;font-size:var(--text-md)}.order-note{color:var(--preparing);font-style:italic;font-size:var(--text-md);font-weight:700;border:1px dashed color-mix(in srgb,var(--preparing) 45%,transparent);border-radius:var(--r-sm);padding:6px 10px}.contents{display:flex;flex-wrap:wrap;gap:4px;padding-inline-start:40px}.chip{font-size:var(--text-sm);padding:1px 8px;border-radius:var(--r-sm);background:var(--panel-2);color:var(--muted);border:1px solid var(--line)}.chip.extra{background:color-mix(in srgb,var(--ready) 22%,transparent);color:var(--ready);border-color:transparent;font-weight:700}.chip.removed{background:color-mix(in srgb,var(--stale) 18%,transparent);color:var(--t-red);border-color:transparent;text-decoration:line-through}.chip.allergen{background:color-mix(in srgb,var(--stale) 25%,transparent);color:var(--stale);border-color:var(--stale);font-weight:800}.alerts{display:flex;flex-wrap:wrap;gap:6px;padding-inline-start:40px}.alert-chip{background:var(--stale-bg);color:#fff;font-size:var(--text-sm);font-weight:900;letter-spacing:.03em;padding:4px 12px;border-radius:var(--r-sm);animation:alertPulse 1.6s ease-in-out infinite}@keyframes alertPulse{50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--stale) 45%,transparent)}}.updated-badge{background:var(--preparing);color:#1a1200;animation:alertPulse 1.6s ease-in-out infinite}.rush-badge{background:var(--stale-bg);color:#fff}.ticket.rush{border-inline-start-color:var(--stale);box-shadow:0 0 0 1px color-mix(in srgb,var(--stale) 50%,transparent) inset}.actions{margin-block-start:auto}:root{--focus: #93c5fd;--shadow-1: 0 1px 2px rgba(0, 0, 0, .3);--shadow-2: 0 8px 24px rgba(0, 0, 0, .35)}button,input,select{font-family:inherit}button{touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.btn:active,.menu-btn:active,.recall-row:active{transform:scale(.97)}.btn,.field,.recall-row{transition:border-color .15s ease,background-color .15s ease,transform .08s ease,filter .15s ease}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-sm)}.conn-pill{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border-radius:var(--r-sm);font-size:var(--text-sm);font-weight:700;border:1px solid var(--line);background:var(--panel-2);color:var(--muted);white-space:nowrap}.conn-pill .dot{inline-size:9px;block-size:9px;border-radius:50%;background:var(--muted)}.conn-pill.connected{border-color:color-mix(in srgb,var(--ready) 45%,transparent);color:var(--ready)}.conn-pill.connected .dot{background:var(--ready);box-shadow:0 0 8px var(--ready)}.conn-pill.connecting{border-color:color-mix(in srgb,var(--preparing) 45%,transparent);color:var(--preparing)}.conn-pill.connecting .dot{background:var(--preparing);animation:connPulse 1.2s ease-in-out infinite}.conn-pill.disconnected,.conn-pill.idle{border-color:color-mix(in srgb,var(--stale) 45%,transparent);color:var(--stale)}.conn-pill.disconnected .dot,.conn-pill.idle .dot{background:var(--stale)}@keyframes connPulse{50%{opacity:.35}}.progress{block-size:5px;border-radius:999px;background:var(--panel-2);overflow:hidden}.progress>i{display:block;block-size:100%;border-radius:inherit;background:var(--ready);transition:inline-size 1s linear}.progress>i.warn{background:var(--t-yellow)}.progress>i.urgent{background:var(--t-orange)}.progress>i.late{background:var(--t-red)}.age{font-size:var(--text-lg);font-weight:700}.age.warn{color:var(--t-yellow)}.age.urgent{color:var(--t-orange)}.age.late{color:var(--t-red)}.age.age-5{color:var(--preparing)}.age.age-10{color:var(--t-orange)}.age.age-15{background:var(--stale-bg);color:#fff;border-radius:var(--r-sm);padding:1px 8px}.actions .btn{min-block-size:var(--control-lg);font-size:var(--text-lg);border-radius:var(--r-sm)}.btn.primary{background:var(--pending);border-color:var(--pending);color:#fff}.ticket{box-shadow:var(--shadow-1)}.ticket.late{box-shadow:var(--shadow-1),0 0 0 1px color-mix(in srgb,var(--t-red) 40%,transparent) inset}.empty{flex-direction:column;display:flex;align-items:center;justify-content:center;gap:10px}.empty-icon{opacity:.5}@media(max-width:900px){.kds{block-size:auto;min-block-size:100vh}.fifo-grid{grid-template-columns:1fr;overflow:visible}}@media(prefers-reduced-motion:reduce){.ticket.shake,.alert-chip,.updated-badge,.conn-pill.connecting .dot,.ticket{animation:none}.progress>i{transition:none}}.expo-chip{display:inline-flex;align-items:center;padding:6px 13px;border-radius:var(--r-sm);font-size:var(--text-sm);font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-text);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 12%,transparent);white-space:nowrap}.ready-strip{font-size:var(--text-md);font-weight:800;font-variant-numeric:tabular-nums;color:var(--muted);border:1px solid var(--line);border-radius:var(--r-sm);padding:2px 10px;white-space:nowrap}.ready-strip.all{color:var(--ready);border-color:color-mix(in srgb,var(--ready) 45%,transparent)}.line-done{opacity:.6}.line-done .name{text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--text) 45%,transparent)}.line-check{color:var(--ready);font-weight:800}.snackbar{position:fixed;inset-block-end:20px;inset-inline:0;margin-inline:auto;inline-size:fit-content;max-inline-size:calc(100vw - 32px);display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding-block:10px;padding-inline:16px 10px;box-shadow:var(--shadow-2);z-index:60;animation:snackIn .2s ease}.snack-msg{font-weight:700;white-space:nowrap}@keyframes snackIn{0%{opacity:0;transform:translateY(8px)}}@media(prefers-reduced-motion:reduce){.snackbar{animation:none}}.counts-strip{flex:none;display:flex;align-items:center;gap:8px;padding-block:8px;padding-inline:16px;background:var(--panel);border-block-end:1px solid var(--line);max-inline-size:100%;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.count-chip{flex:none;display:inline-flex;align-items:baseline;gap:6px;background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:var(--r-sm);padding:6px 12px;min-block-size:var(--touch);font-size:var(--text-md);font-weight:700;white-space:nowrap;cursor:pointer}.count-chip:hover{border-color:var(--accent)}.count-chip.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent-text)}.count-qty{font-variant-numeric:tabular-nums;color:var(--accent-text)}.count-chip.active .count-qty{color:inherit}.ticket.hl-hit{outline:2px solid var(--accent);outline-offset:1px}.ticket.hl-dim{opacity:.35}
