:root{--bg: #0d1117;--surface: #161b22;--surface-2: #1f2530;--line: #2c3441;--ink: #e6edf3;--ink-soft: #8b949e;--accent: #2ea043;--warn: #d29922;--danger: #f85149;--info: #388bfd;--radius: 12px;font-family:-apple-system,BlinkMacSystemFont,Inter,system-ui,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg)}button{font-family:inherit;cursor:pointer}.kds-shell{min-height:100vh;display:flex;flex-direction:column}.kds-header{background:var(--surface);border-bottom:1px solid var(--line);padding:.75rem 1.25rem;display:flex;align-items:center;justify-content:space-between}.kds-brand{font-weight:700;font-size:1.1rem;letter-spacing:.02em}.kds-brand .dot{color:var(--accent)}.kds-meta{display:flex;gap:1rem;align-items:center;font-size:.85rem;color:var(--ink-soft)}.kds-meta .live{display:inline-flex;align-items:center;gap:.4rem}.kds-meta .live .indicator{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 #2ea04399;animation:pulse 2s infinite}.kds-meta .live.offline .indicator{background:var(--danger);animation:none}@keyframes pulse{0%{box-shadow:0 0 #2ea04399}70%{box-shadow:0 0 0 8px #2ea04300}to{box-shadow:0 0 #2ea04300}}.logout-btn{background:transparent;color:var(--ink-soft);border:1px solid var(--line);padding:.4rem .8rem;border-radius:6px;font-size:.85rem}.logout-btn:hover{color:var(--ink);border-color:var(--ink-soft)}.kds-board{flex:1;display:grid;gap:1rem;grid-template-columns:repeat(4,minmax(0,1fr));padding:1rem;overflow:hidden}@media (max-width: 1100px){.kds-board{grid-template-columns:repeat(2,1fr)}}@media (max-width: 700px){.kds-board{grid-template-columns:1fr}}.kds-column{background:var(--surface);border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line)}.kds-column-head{padding:.75rem 1rem;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-weight:700;text-transform:uppercase;font-size:.85rem;letter-spacing:.06em}.kds-column-head .count{background:var(--surface-2);padding:.15rem .55rem;border-radius:999px;color:var(--ink-soft);font-size:.8rem}.kds-column-body{flex:1;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.75rem}.kds-column[data-status=queued] .kds-column-head{color:var(--warn)}.kds-column[data-status=confirmed] .kds-column-head{color:var(--info)}.kds-column[data-status=in_prep] .kds-column-head{color:#ff9b3d}.kds-column[data-status=ready] .kds-column-head{color:var(--accent)}.order-card{background:var(--surface-2);border-radius:10px;padding:.6rem .75rem .7rem;border-left:6px solid var(--ink-soft);cursor:pointer;transition:transform .15s,box-shadow .15s;position:relative}.order-card:hover{transform:translateY(-1px);box-shadow:0 6px 14px #00000059}.order-card.u-fresh{border-left-color:var(--accent)}.order-card.u-warm{border-left-color:var(--warn)}.order-card.u-late{border-left-color:#ff7043;background:#ff704314}.order-card.u-critical{border-left-color:var(--danger);background:#f851491f;animation:critPulse 1.6s ease-in-out infinite}@keyframes critPulse{0%,to{box-shadow:0 0 #f8514900}50%{box-shadow:0 0 0 4px #f8514959}}.order-card.fresh{animation:flash 1.4s ease-out}@keyframes flash{0%{background:#2ea04359}to{background:var(--surface-2)}}.order-card .rush-ribbon{position:absolute;top:-8px;right:10px;background:var(--danger);color:#fff;font-weight:900;font-size:.68rem;letter-spacing:.14em;padding:.15rem .55rem;border-radius:4px;box-shadow:0 2px 6px #0006;animation:rushPulse 1.4s ease-in-out infinite}@keyframes rushPulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.order-card .top.compact{display:flex;justify-content:space-between;align-items:center;gap:.4rem;margin-bottom:.4rem}.order-card .top.compact .num{font-weight:800;font-size:1rem;color:var(--ink-soft);letter-spacing:.02em;font-variant-numeric:tabular-nums}.order-card .top-right{display:inline-flex;align-items:center;gap:.35rem}.order-card .age{font-size:.75rem;color:var(--ink-soft)}.order-card .countdown{font-weight:800;font-size:.9rem;padding:.1rem .45rem;border-radius:999px;letter-spacing:.01em}.order-card .countdown.cd-ok{background:#2ea04326;color:var(--accent)}.order-card .countdown.cd-soon{background:#d299222e;color:var(--warn)}.order-card .countdown.cd-now{background:#ff704338;color:#ff7043}.order-card .countdown.cd-late{background:#f8514938;color:var(--danger)}.order-card .src-chip{font-size:.65rem;font-weight:700;padding:.12rem .4rem;border-radius:3px;background:#ffffff0f;color:var(--ink-soft)}.order-card .src-chip.src-pos{background:#f59e0b2e;color:#fbbf24}.order-card .src-chip.src-online{background:#388bfd2e;color:var(--info)}.order-card .src-chip.src-phone{background:#d299222e;color:var(--warn)}.order-card .prep-items{list-style:none;padding:0;margin:0 0 .35rem;display:flex;flex-direction:column;gap:.25rem}.order-card .prep-item{display:flex;gap:.5rem;align-items:baseline;font-size:1.02rem;line-height:1.3;color:var(--ink);padding:.25rem .35rem;border-radius:4px;background:#ffffff06}.order-card .prep-item .qty{font-weight:900;font-size:1.15rem;color:var(--ink);min-width:1.8rem;flex-shrink:0;font-variant-numeric:tabular-nums}.order-card .prep-item .name{font-weight:600;flex:1}.order-card .prep-item .station{display:inline-block;margin-left:.4rem;font-size:.65rem;font-weight:700;padding:.05rem .35rem;border-radius:3px;background:#388bfd2e;color:var(--info);text-transform:uppercase;letter-spacing:.04em;vertical-align:middle}.order-card .prep-item .mods-inline{font-size:.82rem;font-weight:500;color:var(--ink-soft)}.order-card .prep-item .line-note{display:block;font-size:.78rem;font-style:italic;color:var(--warn);margin-top:.1rem}.order-card .prep-item.placeholder{opacity:.65}.order-card .prep-item.more{font-size:.78rem;color:var(--ink-soft);font-style:italic;background:transparent;padding:.1rem .35rem}.order-card .callout-mini{font-size:.8rem;padding:.3rem .5rem;border-radius:5px;margin-top:.3rem;line-height:1.3}.order-card .callout-mini.cust{background:#388bfd1a;color:#79b8ff;border-left:3px solid var(--info)}.order-card .callout-mini.kitchen{background:#d299221a;color:var(--warn);border-left:3px solid var(--warn)}.order-card .who-line{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.45rem;padding-top:.35rem;border-top:1px dashed var(--line);font-size:.72rem;color:var(--ink-soft)}.order-card .who-line .who-name{font-style:italic}.order-card .who-line .who-phone-mini{color:var(--info);text-decoration:none;font-size:.9rem}.order-card .actions{display:flex;gap:.4rem;margin-top:.7rem;flex-wrap:nowrap}.action-btn{flex:1;min-width:0;padding:.75rem .6rem;border:none;border-radius:6px;font-weight:700;font-size:.9rem;color:#fff;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.action-btn.small{flex:0 0 auto;padding:.75rem .85rem;font-size:1rem}.action-btn.primary{background:var(--accent)}.action-btn.primary:hover{background:#2c8b3d}.action-btn.warn{background:var(--warn);color:#1a1a1a}.action-btn.warn:hover{background:#e1ad2c}.action-btn.ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--line)}.action-btn.ghost:hover{color:var(--ink);border-color:var(--ink-soft)}.action-btn:disabled{opacity:.5;cursor:wait}.chip{display:inline-block;background:var(--surface);border:1px solid var(--line);color:var(--ink-soft);padding:.15rem .55rem;border-radius:999px;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;margin-left:.4rem}.kds-toolbar{display:flex;gap:1rem;padding:.65rem 1rem;background:var(--surface);border-bottom:1px solid var(--line);align-items:center;flex-wrap:wrap;justify-content:space-between}.filter-group{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.filter-label{color:var(--ink-soft);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.pill{background:transparent;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:.4rem .85rem;font-size:.85rem;font-weight:600}.pill:hover{color:var(--ink);border-color:var(--ink-soft)}.pill.on{background:var(--info);border-color:var(--info);color:#fff}.batch-bar{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding:1rem;background:var(--surface);border-bottom:1px solid var(--line)}@media (max-width: 700px){.batch-bar{grid-template-columns:1fr}}.batch-col{background:var(--surface-2);border-radius:8px;padding:.75rem 1rem}.batch-head{font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--info);margin-bottom:.5rem}.batch-col ul{margin:0;padding-left:1.1rem;font-size:.95rem}.batch-col li{margin:.2rem 0}.subtle{color:var(--ink-soft)}.small{font-size:.8rem}.hide-sm{display:inline}@media (max-width: 600px){.hide-sm{display:none}}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:2rem;width:min(380px,100%)}.login-card h1{margin:0 0 .5rem;font-size:1.3rem}.login-card p{color:var(--ink-soft);margin:0 0 1.5rem;font-size:.9rem}.login-card label{display:block;font-size:.85rem;margin-bottom:.4rem;color:var(--ink-soft)}.login-card input{width:100%;padding:.7rem .85rem;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;font-family:inherit;font-size:.95rem;margin-bottom:1rem}.login-card input:focus{outline:2px solid var(--info);outline-offset:-1px;border-color:transparent}.login-card button[type=submit]{width:100%;padding:.8rem;background:var(--info);color:#fff;border:none;border-radius:6px;font-weight:700;font-size:1rem}.login-card .err{background:#f8514926;color:#ff8b87;padding:.7rem;border-radius:6px;font-size:.85rem;margin-bottom:1rem}.empty-col{text-align:center;color:var(--ink-soft);padding:2rem .5rem;font-size:.85rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:var(--surface);border-radius:var(--radius);border:1px solid var(--line);width:min(560px,100%);max-height:90vh;overflow-y:auto;padding:1.5rem}.modal h2{margin:0 0 .5rem;font-family:Inter,sans-serif}.modal .item-row{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid var(--line)}.modal .item-row .qty{color:var(--accent);font-weight:700;min-width:2rem}.modal .item-row .item-notes{font-size:.85rem;color:var(--warn);margin-top:.2rem}.modal .close-btn{position:sticky;top:0;float:right;background:transparent;border:none;color:var(--ink-soft);font-size:1.5rem}.modal .items{border-top:1px solid var(--line);padding-top:.75rem;margin-top:1rem}.modal .mods{margin:.2rem 0 0 1.25rem;padding:0;font-size:.85rem;color:var(--ink-soft)}.modal .callout{padding:.6rem .8rem;border-radius:6px;margin:0 0 1rem}.modal .callout.warn{background:#d299221a;color:var(--warn)}.modal .actions-stack{margin-top:1.25rem;display:flex;flex-direction:column;gap:.5rem}.notes-block{margin-top:1.25rem;padding:.85rem;border:1px dashed var(--line);border-radius:8px;display:flex;flex-direction:column;gap:.5rem}.notes-block label{font-size:.85rem;color:var(--ink);font-weight:600}.notes-block textarea{width:100%;resize:vertical;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:.55rem .65rem;font-family:inherit;font-size:.9rem}.notes-block textarea:focus{outline:2px solid var(--info);outline-offset:-1px;border-color:transparent}.src-chip{font-size:.7rem;padding:2px 8px;border-radius:99px;background:#ffffff14;margin-left:.5rem}.src-chip.src-pos{background:#f59e0b33;color:#fbbf24}.src-chip.src-online{background:#3b82f633;color:#60a5fa}.order-card[data-source=pos]{border-left:3px solid #f59e0b}.order-card[data-source=online]{border-left:3px solid #3b82f6}.card-header{display:flex;flex-direction:column;gap:.15rem;margin-bottom:.55rem}.card-header .hero-row,.card-header .normal-row,.card-header .small-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}.card-header .small-row{gap:.4rem;opacity:.78}.fld-hero{font-size:1.55rem;font-weight:800;line-height:1.05;letter-spacing:-.01em;color:var(--ink)}.fld-normal{font-size:1rem;font-weight:600;color:var(--ink)}.fld-small{font-size:.78rem;font-weight:500;color:var(--ink-soft)}.fld-num{font-variant-numeric:tabular-nums;opacity:.85}.fld-name{word-break:break-word}.fld-phone{color:var(--info);text-decoration:none}.fld-phone:hover{text-decoration:underline}.fld-reg{font-style:italic}.countdown.fld-hero{padding:0;background:transparent}.countdown.fld-normal{padding:2px 8px;border-radius:6px}.countdown.fld-small{padding:0 4px}.src-chip.fld-small{margin-left:0}.profile-pill{background:var(--surface-2);color:var(--ink);border:1px solid var(--line);padding:.35rem .7rem;border-radius:999px;font-size:.8rem;font-weight:600;cursor:pointer}.profile-pill:hover{border-color:var(--info);color:var(--info)}.hb{display:inline-flex;align-items:center;gap:.4rem;font-size:.8rem}.hb-dot{width:9px;height:9px;border-radius:50%;box-shadow:0 0 0 0 currentColor}.hb-green{color:var(--accent)}.hb-green .hb-dot{background:var(--accent);animation:pulse 2s infinite}.hb-yellow{color:var(--warn)}.hb-yellow .hb-dot{background:var(--warn)}.hb-red{color:var(--danger)}.hb-red .hb-dot{background:var(--danger);animation:critPulse 1.6s infinite}.offline-banner{background:#f851492e;color:#ff8b87;border-bottom:1px solid var(--danger);padding:.7rem 1rem;font-weight:600;font-size:.9rem;text-align:center}.offline-banner.subtle-banner{background:#388bfd1f;color:#79b8ff;border-bottom-color:var(--info);font-weight:500}.line-check{flex:0 0 auto;width:28px;height:28px;border-radius:50%;border:2px solid var(--ink-soft);background:transparent;color:var(--ink-soft);font-weight:800;font-size:.95rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .12s}.line-check:hover{border-color:var(--accent);color:var(--accent)}.line-check.on{background:var(--accent);border-color:var(--accent);color:#fff}.line-check:disabled{opacity:.4;cursor:not-allowed}.prep-item.line-done .name{opacity:.5;text-decoration:line-through}.prep-item.line-done{background:#2ea0430f}.rollup-row{display:flex;flex-wrap:wrap;gap:.35rem;margin:0 0 .4rem}.rollup-chip{font-size:.7rem;font-weight:700;padding:.15rem .5rem;border-radius:4px;letter-spacing:.02em}.rollup-chip.pending{background:#ff9b3d2e;color:#ff9b3d}.rollup-chip.done{background:#2ea0432e;color:var(--accent)}
