:root{--ke-primary:#4f46e5;--ke-accent:#0d9488;--ke-surface:#f8fafc;--ke-card:#fff;--ke-text:#0f172a;--ke-muted:#64748b;--ke-border:#e2e8f0;--ke-danger:#be123c;--ke-radius:1rem;--ke-font:"Plus Jakarta Sans", system-ui, sans-serif;color:var(--ke-text);background:var(--ke-surface);font-family:var(--ke-font)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--ke-surface);color:var(--ke-text);-webkit-font-smoothing:antialiased}button{font:inherit}.app-boot,.app-error{text-align:center;place-items:center;min-height:100vh;padding:2rem;display:grid}.app-error h1{margin:0 0 .75rem;font-size:1.5rem}.app-error p{color:var(--ke-muted);max-width:28rem;margin:0;line-height:1.5}.kiosk-shell{flex-direction:column;min-height:100vh;display:flex}.kiosk-top{z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--ke-border);background:#ffffffeb;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.1rem;display:flex;position:sticky;top:0}.kiosk-brand{gap:.15rem;min-width:0;display:grid}.kiosk-brand strong{letter-spacing:-.02em;font-size:1.15rem}.kiosk-brand span{color:var(--ke-muted);font-size:.78rem;font-weight:600}.demo-chip{color:#c2410c;letter-spacing:.04em;background:#fff7ed;border-radius:999px;margin-left:.4rem;padding:.1rem .4rem;font-size:.65rem;font-weight:800;display:inline-flex}.cart-fab{display:none}.cart-fab-float{z-index:30;color:#fff;cursor:pointer;background:#1e293b;border:0;border-radius:2rem;align-items:center;gap:.6rem;min-width:3.5rem;padding:1rem 1.5rem;font-size:1.05rem;font-weight:800;transition:transform .2s,box-shadow .2s;display:inline-flex;position:fixed;bottom:2rem;right:2rem;box-shadow:0 8px 32px #0f172a59}.cart-fab-float:hover{transform:translateY(-2px);box-shadow:0 14px 40px #0f172a66}.cart-fab-float:active{transform:translateY(0)}.cart-fab-float.has-items{background:linear-gradient(135deg, var(--ke-primary), var(--ke-accent));animation:.3s fab-pop}@keyframes fab-pop{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.cart-fab-label{font-size:1rem;font-weight:700}.cart-fab-badge{min-width:1.75rem;height:1.75rem;color:var(--ke-primary);background:#fff;border-radius:999px;justify-content:center;align-items:center;font-size:.85rem;font-weight:900;display:inline-flex}.cart-fab-total{opacity:.9;border-left:1px solid #ffffff4d;margin-left:.1rem;padding-left:.6rem;font-size:.95rem;font-weight:700}.cats{scrollbar-width:none;gap:.5rem;padding:.85rem 1.1rem .35rem;display:flex;overflow-x:auto}.cats::-webkit-scrollbar{display:none}.cat-btn{border:1px solid var(--ke-border);color:#475569;cursor:pointer;background:#fff;border-radius:999px;flex-shrink:0;padding:.55rem .95rem;font-weight:700}.cat-btn.active{background:var(--ke-primary);border-color:var(--ke-primary);color:#fff}.product-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.85rem;padding:.85rem 1.1rem 8rem;display:grid}.theme-large .product-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.theme-compact .product-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.65rem}.product-card{background:var(--ke-card);border:1px solid var(--ke-border);border-radius:var(--ke-radius);text-align:left;flex-direction:column;display:flex;overflow:hidden}.product-card.soldout{opacity:.55}.product-img{aspect-ratio:4/3;object-fit:cover;background:#e2e8f0;width:100%}.product-img.placeholder{color:#94a3b8;place-items:center;font-size:.85rem;font-weight:700;display:grid}.product-body{flex:auto;gap:.35rem;padding:.75rem;display:grid}.product-body h3{margin:0;font-size:.98rem;line-height:1.25}.product-body p{color:var(--ke-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.8rem;line-height:1.35;display:-webkit-box;overflow:hidden}.product-price{color:var(--ke-text);font-weight:800}.product-cta{cursor:pointer;color:var(--ke-primary);background:#eef2ff;border:0;border-radius:.7rem;margin-top:auto;padding:.55rem .7rem;font-weight:700}.product-cta:disabled{cursor:not-allowed;color:#94a3b8;background:#f1f5f9}.toast{z-index:50;background:linear-gradient(135deg, var(--ke-primary), var(--ke-accent));color:#fff;border-radius:999px;padding:.85rem 1.25rem;font-size:1.05rem;font-weight:700;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #0f172a40}.drawer-backdrop{z-index:40;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a80;position:fixed;inset:0}.drawer{z-index:41;background:#fff;flex-direction:column;width:min(100%,480px);animation:.28s cubic-bezier(.32,.72,0,1) slide-in-right;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-16px 0 60px #0f172a38}@keyframes slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@media (width<=640px),(orientation:portrait) and (width<=900px){.drawer{border-radius:1.5rem 1.5rem 0 0;width:100%;max-height:90vh;animation:.28s cubic-bezier(.32,.72,0,1) slide-in-bottom;inset:auto 0 0;box-shadow:0 -16px 60px #0f172a38}@keyframes slide-in-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}.cart-fab-float{justify-content:center;bottom:1.25rem;left:1rem;right:1rem}}.drawer-head{border-bottom:1px solid var(--ke-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.drawer-head h2{margin:0;font-size:1.35rem;font-weight:800}.icon-btn{cursor:pointer;color:#334155;background:#f1f5f9;border:0;border-radius:.75rem;place-items:center;width:2.75rem;height:2.75rem;transition:background .15s;display:grid}.icon-btn:hover{background:#e2e8f0}.drawer-body{overscroll-behavior:contain;flex:1;padding:1.25rem 1.5rem;overflow:auto}.cart-empty{text-align:center;color:var(--ke-muted);flex-direction:column;align-items:center;gap:.5rem;padding:3rem 1rem;display:flex}.cart-empty p{margin:0;font-size:1rem}.cart-line{border-bottom:1px solid #f1f5f9;gap:.35rem;padding:.6rem 0;display:grid}.cart-line-top{justify-content:space-between;gap:.75rem;font-weight:700;display:flex}.cart-addons{color:var(--ke-muted);margin:0;padding:0 0 0 .25rem;font-size:.85rem;list-style:none}.qty-row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.qty-row button{border:1px solid var(--ke-border);cursor:pointer;background:#fff;border-radius:.6rem;width:2.25rem;height:2.25rem;font-size:1rem;font-weight:800}.remove-btn{border-radius:.5rem;margin-left:auto;padding:0 .6rem;color:var(--ke-danger)!important;background:#fff0f0!important;border-color:#fecdd3!important;font-size:.85rem!important}.add-more-btn{border:2px dashed var(--ke-primary);width:100%;color:var(--ke-primary);cursor:pointer;background:#eef2ff;border-radius:1rem;justify-content:center;align-items:center;gap:.5rem;padding:.9rem 1rem;font-size:1rem;font-weight:800;transition:background .15s;display:flex}.add-more-btn:hover{background:#e0e7ff}.drawer-fields{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.65rem;margin-top:.75rem;display:grid}.drawer-fields label{color:#475569;gap:.3rem;font-size:.85rem;font-weight:600;display:grid}.drawer-fields input,.drawer-fields textarea{border:1px solid var(--ke-border);font:inherit;border-radius:.7rem;outline:none;width:100%;padding:.7rem .8rem;transition:border-color .15s}.drawer-fields input:focus,.drawer-fields textarea:focus{border-color:var(--ke-primary);box-shadow:0 0 0 3px #4f46e51a}.drawer-fields textarea{resize:none;line-height:1.5}.drawer-fields label:last-child{grid-column:1/-1}.drawer-foot{border-top:1px solid var(--ke-border);flex-shrink:0;gap:.65rem;padding:1rem 1.5rem;display:grid}.total-row{justify-content:space-between;padding:.25rem 0;font-size:1.15rem;font-weight:800;display:flex}.pay-btn{background:linear-gradient(135deg, var(--ke-primary), var(--ke-accent));color:#fff;cursor:pointer;border:0;border-radius:.85rem;padding:.9rem 1rem;font-size:1.05rem;font-weight:800;transition:opacity .15s}.pay-btn:disabled{opacity:.55;cursor:not-allowed}.pay-status{text-align:center;color:var(--ke-muted);font-size:.9rem;font-weight:600}.sheet-backdrop{z-index:45;background:#0f172a80;position:fixed;inset:0}.sheet{z-index:46;background:#fff;border-radius:1.25rem 1.25rem 0 0;flex-direction:column;max-height:88vh;padding:0;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 40px #0f172a33}.sheet-head{border-bottom:1px solid #f1f5f9;padding:1.1rem 1.1rem 0}.sheet h2{margin:0 0 .35rem}.sheet .muted{color:var(--ke-muted);margin:0 0 1rem}.sheet-body{padding:1rem 1.1rem;overflow-y:auto}.addon-group{border-bottom:1px solid #f1f5f9;margin-bottom:1rem;padding-bottom:.85rem}.addon-group h3{margin:0 0 .55rem;font-size:.95rem}.addon-opt{border-bottom:1px solid #f8fafc;align-items:center;gap:.75rem;padding:.75rem 0;font-weight:600;display:flex}.addon-opt:last-child{border-bottom:none}.sheet-foot{background:#fff;border-top:1px solid #f1f5f9;gap:.65rem;padding:1rem 1.1rem 1.5rem;display:grid}.success-panel{text-align:center;padding:2rem 1rem}.success-panel h2{margin:.75rem 0 .35rem}.modal-overlay{z-index:60;background:#0f172a80;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.modal-box{background:#fff;border-radius:1.25rem;width:100%;max-width:22rem;overflow:hidden;box-shadow:0 12px 40px #0f172a33}.scheme-2{--ke-primary:#0f766e;--ke-accent:#0369a1}.scheme-3{--ke-primary:#b45309;--ke-accent:#be123c}.spin{animation:.8s linear infinite ke-spin}@keyframes ke-spin{to{transform:rotate(360deg)}}.scheme-4{--ke-primary:#e11d48;--ke-accent:#881337}.scheme-5{--ke-primary:#f97316;--ke-accent:#c2410c}.scheme-6{--ke-primary:#0284c7;--ke-accent:#0c4a6e}.theme-split{grid-template-rows:auto 1fr;grid-template-columns:200px 1fr;height:100vh;min-height:0;display:grid;overflow:hidden}.theme-split .kiosk-top{grid-column:1/-1;position:sticky;top:0}.theme-split .cats{background:linear-gradient(180deg, #fff 0%, var(--ke-surface) 100%);border-right:1px solid var(--ke-border);scrollbar-width:thin;scrollbar-color:var(--ke-border) transparent;flex-direction:column;gap:.25rem;min-height:0;padding:1.25rem .75rem;overflow:hidden auto;display:flex!important}.theme-split .cats::-webkit-scrollbar{width:4px}.theme-split .cats::-webkit-scrollbar-thumb{background:var(--ke-border);border-radius:99px}.theme-split .cat-btn{text-align:left;white-space:normal;word-break:break-word;color:var(--ke-text);cursor:pointer;background:0 0;border:none;border-radius:.75rem;flex-shrink:0;align-items:center;gap:.55rem;padding:.75rem 1rem;font-size:.92rem;font-weight:600;line-height:1.3;transition:background .15s,color .15s,transform .1s;display:flex}.theme-split .cat-btn:before{content:"";opacity:.4;background:currentColor;border-radius:50%;flex-shrink:0;width:4px;height:4px;transition:opacity .15s,width .15s;display:block}.theme-split .cat-btn:hover{background:#0000000a}.theme-split .cat-btn.active{background:linear-gradient(135deg, var(--ke-primary) 0%, var(--ke-accent) 100%);color:#fff;transform:translate(2px);box-shadow:0 4px 14px #0000002e}.theme-split .cat-btn.active:before{opacity:1;background:#ffffffb3;width:6px;height:6px}.theme-split .cats:before{content:"MENU";letter-spacing:.12em;color:var(--ke-muted);border-bottom:1px solid var(--ke-border);margin-bottom:.25rem;padding:0 1rem .65rem;font-size:.65rem;font-weight:800;display:block}.theme-split .product-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));grid-auto-rows:max-content;align-content:start;min-height:0;padding:1.25rem 1.25rem 8rem;overflow-y:auto}@media (width<=768px){.theme-split{flex-direction:column;height:auto;min-height:100vh;display:flex;overflow:visible}.theme-split .cats{border-right:none;border-bottom:1px solid var(--ke-border);background:#fff;gap:.5rem;min-height:auto;padding:.85rem 1rem;overflow:auto hidden;flex-direction:row!important;display:flex!important}.theme-split .cats:before{display:none}.theme-split .cat-btn{white-space:nowrap;border:1.5px solid var(--ke-border);background:#fff;border-radius:999px;flex-shrink:0;padding:.5rem 1rem;font-size:.9rem;box-shadow:none!important;transform:none!important}.theme-split .cat-btn.active{border-color:var(--ke-primary);background:var(--ke-primary);color:#fff}.theme-split .cat-btn:before{display:none}.theme-split .product-grid{height:auto;min-height:0;padding:.85rem 1rem 8rem;overflow-y:visible}}
