:root{color-scheme:light dark;--brand-deep: #0E5A2A;--brand: #1F8B3A;--brand-mid: #2DA44E;--brand-leaf: #8BC34A;--brand-accent: var(--brand);--bg: #F5F5F0;--bg-elev: #FFFFFF;--bg-elev-2: #EEEDE6;--fg: #1D1D1F;--fg-muted: rgba(60, 60, 67, .62);--accent: var(--brand-accent);--accent-2: var(--brand-deep);--accent-soft: rgba(31, 139, 58, .1);--accent-ink: #FFFFFF;--danger: #C9302C;--danger-soft: rgba(201, 48, 44, .1);--ok: var(--brand);--line: rgba(60, 60, 67, .08);--line-strong: rgba(60, 60, 67, .18);--bg-glow-1: rgba(31, 139, 58, .05);--bg-glow-2: rgba(139, 195, 74, .06);--bg-header: rgba(245, 245, 240, .85);--bg-cartbar: rgba(245, 245, 240, .92);--bg-fab: rgba(255, 255, 255, .95);--bg-input: rgba(60, 60, 67, .03);--bg-code: rgba(60, 60, 67, .04);--notif-overlay: rgba(15, 30, 20, .3);--spinner-track: rgba(60, 60, 67, .14);--radius-sm: 12px;--radius-input: 14px;--radius: 16px;--radius-xl: 20px;--radius-pill: 9999px;--shadow: 0 12px 28px rgba(15, 40, 20, .14), 0 4px 8px rgba(15, 40, 20, .06);--shadow-soft: 0 1px 3px rgba(15, 40, 20, .08), 0 1px 2px rgba(15, 40, 20, .04)}@media(prefers-color-scheme:dark){:root:not(.light){--bg: #0E1311;--bg-elev: #161C18;--bg-elev-2: #1F2724;--fg: #F2F4F1;--fg-muted: #9CA39B;--accent-2: #2DBE52;--accent-soft: rgba(31, 139, 58, .18);--danger: #FF5E57;--danger-soft: rgba(255, 94, 87, .16);--ok: #2DBE52;--line: rgba(255, 255, 255, .1);--line-strong: rgba(255, 255, 255, .16);--bg-glow-1: rgba(31, 139, 58, .1);--bg-glow-2: rgba(45, 190, 82, .06);--bg-header: rgba(14, 19, 17, .85);--bg-cartbar: rgba(14, 19, 17, .92);--bg-fab: rgba(22, 28, 24, .95);--bg-input: rgba(255, 255, 255, .03);--bg-code: rgba(255, 255, 255, .04);--notif-overlay: rgba(0, 0, 0, .55);--spinner-track: rgba(255, 255, 255, .18);--shadow: 0 8px 28px rgba(0, 0, 0, .45);--shadow-soft: 0 4px 16px rgba(0, 0, 0, .28)}}:root.dark{--bg: #0E1311;--bg-elev: #161C18;--bg-elev-2: #1F2724;--fg: #F2F4F1;--fg-muted: #9CA39B;--accent-2: #2DBE52;--accent-soft: rgba(31, 139, 58, .18);--danger: #FF5E57;--danger-soft: rgba(255, 94, 87, .16);--ok: #2DBE52;--line: rgba(255, 255, 255, .1);--line-strong: rgba(255, 255, 255, .16);--bg-glow-1: rgba(31, 139, 58, .1);--bg-glow-2: rgba(45, 190, 82, .06);--bg-header: rgba(14, 19, 17, .85);--bg-cartbar: rgba(14, 19, 17, .92);--bg-fab: rgba(22, 28, 24, .95);--bg-input: rgba(255, 255, 255, .03);--bg-code: rgba(255, 255, 255, .04);--notif-overlay: rgba(0, 0, 0, .55);--spinner-track: rgba(255, 255, 255, .18);--shadow: 0 8px 28px rgba(0, 0, 0, .45);--shadow-soft: 0 4px 16px rgba(0, 0, 0, .28)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Roboto,sans-serif;background:radial-gradient(1200px 600px at 80% -10%,var(--bg-glow-1),transparent 60%),radial-gradient(900px 500px at -10% 110%,var(--bg-glow-2),transparent 60%),var(--bg);background-attachment:fixed;color:var(--fg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}.app{min-height:100%;display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom)}.ng-header{position:sticky;top:0;z-index:20;background:var(--bg-header);backdrop-filter:saturate(140%) blur(10px);-webkit-backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid var(--line);padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top));display:flex;align-items:center;justify-content:space-between;gap:12px}.ng-logo{display:inline-flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.2px;color:var(--fg)}.ng-logo .mark{width:32px;height:32px;border-radius:8px;display:inline-block;box-shadow:0 4px 14px #1f8b3a59}.ng-logo .name{font-size:17px}.ng-logo .name em{font-style:normal;color:var(--accent)}.ng-logo .brand-stack{display:inline-flex;flex-direction:column;line-height:1.1;gap:2px}.ng-logo .brand-tenant{font-size:16px;font-weight:700;color:var(--fg);letter-spacing:.1px}.ng-logo .brand-powered{font-size:10.5px;font-weight:500;color:var(--fg-muted);letter-spacing:.4px;text-transform:uppercase}.ng-logo .brand-powered em{font-style:normal;color:var(--accent)}.ng-header .ctx{text-align:right;font-size:12px;color:var(--fg-muted)}.ng-header .ctx strong{color:var(--fg);font-weight:600;display:block;font-size:13px}.ng-header .ctx .ng-exit{display:inline-block;margin-top:6px;cursor:pointer;background:transparent;color:var(--fg-muted);border:1px solid var(--line-strong, rgba(255,255,255,.16));border-radius:999px;padding:4px 12px;font:inherit;font-size:12px;font-weight:600;-webkit-tap-highlight-color:transparent}.ng-header .ctx .ng-exit:hover{color:var(--fg);border-color:var(--fg-muted)}.ng-header .ctx .ng-exit:active{opacity:.7}.container{flex:1;padding:16px;max-width:720px;margin:0 auto;width:100%}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-soft)}.card+.card{margin-top:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 18px;border-radius:var(--radius-pill);border:1px solid var(--line-strong);background:var(--bg-elev-2);color:var(--fg);font-weight:600;font-size:16px;cursor:pointer;min-height:48px;width:100%;transition:transform 80ms ease,background .12s ease,border-color .12s ease}.btn:active{transform:scale(.985)}.btn-primary{background:linear-gradient(180deg,var(--brand) 0%,var(--brand-deep) 100%);color:#fff;border-color:transparent;box-shadow:0 6px 20px #1f8b3a52}.btn-primary:hover{background:linear-gradient(180deg,var(--brand-mid) 0%,var(--brand-deep) 100%)}.btn-ghost{background:transparent;border-color:var(--line);color:var(--fg-muted)}.btn-outline{background:transparent;border:1px solid var(--accent);color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.input{width:100%;padding:14px 16px;background:var(--bg-input);border:1px solid var(--line-strong);border-radius:var(--radius-input);color:var(--fg);font-size:16px;min-height:48px}.input::placeholder{color:var(--fg-muted)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.label{display:block;font-size:13px;color:var(--fg-muted);margin:14px 0 6px}.section-tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 0 12px;scrollbar-width:none}.section-tabs::-webkit-scrollbar{display:none}.section-tab{flex:0 0 auto;padding:8px 14px;border-radius:var(--radius-pill);background:var(--bg-elev);border:1px solid var(--line);color:var(--fg-muted);font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap}.section-tab.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.menu-section{margin-bottom:28px;scroll-margin-top:84px}.menu-section h2{font-size:13px;text-transform:uppercase;letter-spacing:1.2px;color:var(--fg-muted);margin:0 0 12px}.menu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media(max-width:380px){.menu-grid{grid-template-columns:1fr}}.menu-item{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;text-align:left;cursor:pointer;display:flex;flex-direction:column;transition:transform .12s ease,border-color .12s ease}.menu-item:active{transform:scale(.98)}.menu-item:hover{border-color:var(--line-strong)}.menu-item .thumb{width:100%;aspect-ratio:4 / 3;background:var(--bg-elev-2);display:flex;align-items:center;justify-content:center;color:var(--fg-muted);font-size:28px;font-weight:700;letter-spacing:.5px;overflow:hidden}.menu-item .thumb img{width:100%;height:100%;object-fit:cover}.menu-item .body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:4px}.menu-item .name{font-weight:600;font-size:14.5px;line-height:1.25;color:var(--fg)}.menu-item .desc{font-size:12px;color:var(--fg-muted);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.menu-item .price{color:var(--accent-2);font-size:14px;font-weight:600;margin-top:4px}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.row+.row{margin-top:12px}.row .grow{flex:1}.muted{color:var(--fg-muted);font-size:13px}.danger{color:var(--danger)}.ok{color:var(--ok)}.cart-bar{position:sticky;bottom:0;background:var(--bg-cartbar);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:12px 16px;padding-bottom:calc(12px + env(safe-area-inset-bottom));display:flex;gap:12px;align-items:center;z-index:15}.cart-bar .grow{flex:1}.guest-actions{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));right:16px;display:flex;flex-direction:column;gap:10px;z-index:30}.guest-actions.above-cart-bar{bottom:calc(84px + env(safe-area-inset-bottom))}.guest-actions .fab{display:inline-flex;align-items:center;gap:8px;padding:11px 16px;border-radius:var(--radius-pill);background:var(--bg-fab);border:1px solid var(--line-strong);color:var(--fg);font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.guest-actions .fab.accent{color:var(--accent);border-color:var(--accent)}.guest-actions .fab:disabled{opacity:.5;cursor:not-allowed}.guest-actions .toast{background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent);padding:10px 14px;border-radius:var(--radius);font-size:13px;font-weight:600}.guest-actions .toast.danger-toast{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.notif-sheet-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--notif-overlay);display:flex;align-items:flex-end;justify-content:center;z-index:60;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.notif-sheet{width:100%;max-width:480px;background:var(--bg-elev);border:1px solid var(--line-strong);border-bottom:none;border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:10px 18px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow);animation:notif-sheet-up .18s ease-out}@keyframes notif-sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.notif-sheet__handle{width:36px;height:4px;border-radius:var(--radius-pill);background:var(--line-strong);margin:4px auto 8px}.notif-sheet__title{margin:0;font-size:16px;font-weight:700;color:var(--fg)}.notif-sheet__sub{margin:0 0 6px;font-size:12.5px;color:var(--fg-muted)}.notif-sheet__grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.notif-topic{display:flex;flex-direction:column;gap:2px;text-align:left;padding:11px 12px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--bg-elev-2);color:var(--fg);cursor:pointer}.notif-topic.is-selected{border-color:var(--accent);background:var(--accent-soft)}.notif-topic__icon{font-size:20px}.notif-topic__label{font-size:13.5px;font-weight:600}.notif-topic__hint{font-size:11px;color:var(--fg-muted)}.notif-sheet__note{width:100%;margin-top:4px;background:var(--bg-elev-2);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:9px 11px;font-size:13px;color:var(--fg);resize:none;font-family:inherit}.notif-sheet__note:focus{outline:none;border-color:var(--accent)}.notif-sheet__actions{display:flex;gap:8px;margin-top:8px}.notif-sheet__btn{flex:1;padding:11px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;cursor:pointer;border:1px solid var(--line-strong)}.notif-sheet__btn.ghost{background:transparent;color:var(--fg-muted)}.notif-sheet__btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.notif-sheet__btn:disabled{opacity:.5;cursor:not-allowed}.qty{display:inline-flex;align-items:center;gap:8px;background:var(--bg-elev-2);border-radius:var(--radius-pill);padding:4px}.qty button{width:36px;height:36px;border-radius:var(--radius-pill);border:none;background:var(--bg-elev);color:var(--fg);font-size:18px;cursor:pointer}.qty button:hover{background:var(--accent-soft);color:var(--accent)}.qty span{min-width:22px;text-align:center;font-weight:600}.status-pill{display:inline-flex;padding:5px 12px;border-radius:var(--radius-pill);font-size:11px;background:var(--bg-elev-2);color:var(--fg-muted);text-transform:uppercase;letter-spacing:.8px;font-weight:700}.status-pill.ready{background:var(--accent-soft);color:var(--accent)}.status-pill.preparing{background:#ff950024;color:#b8780b}.status-pill.sent{background:var(--accent-soft);color:var(--accent)}@media(prefers-color-scheme:dark){:root:not(.light) .status-pill.preparing{color:#ffc400}}:root.dark .status-pill.preparing{color:#ffc400}.footer{text-align:center;padding:24px 16px;color:var(--fg-muted);font-size:11px;letter-spacing:.5px}.footer em{color:var(--accent);font-style:normal;font-weight:600}.welcome{display:flex;flex-direction:column;align-items:center;text-align:center;padding:28px 20px}.welcome .big-logo{width:64px;height:64px;border-radius:var(--radius-xl);display:inline-block;box-shadow:0 12px 36px #1f8b3a59;margin-bottom:16px}.welcome h1{font-size:22px;margin:4px 0 6px;font-weight:700}.welcome h1 em{font-style:normal;color:var(--accent)}.welcome p{color:var(--fg-muted);margin:0 0 16px;max-width:28ch}.welcome .table-chip{display:inline-flex;padding:6px 14px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent);border-radius:var(--radius-pill);font-size:13px;font-weight:700;margin-bottom:18px}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--spinner-track);border-top-color:var(--accent);animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loyalty-card{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.loyalty-card--prompt,.loyalty-card--earned{border-color:var(--accent);background:linear-gradient(180deg,var(--accent-soft) 0%,transparent 100%)}.loyalty-card__badge{flex:0 0 auto;width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent);font-size:18px;font-weight:700}.loyalty-card .loyalty-field{display:block;margin-top:8px}.loyalty-card .loyalty-field>span{display:block;font-size:12px;color:var(--fg-muted);margin-bottom:4px}.loyalty-card .loyalty-field .input{width:100%}.join-card{width:100%;text-align:center;border-color:var(--accent);background:linear-gradient(180deg,var(--accent-soft) 0%,transparent 100%)}.join-card .join-eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:700;margin-bottom:10px}.join-code{font-family:SF Mono,ui-monospace,Cascadia Mono,Menlo,Consolas,monospace;font-size:38px;font-weight:800;letter-spacing:.22em;color:var(--fg);padding:14px 8px 14px 18px;background:var(--bg-code);border:1px dashed var(--accent);border-radius:var(--radius-input);margin:6px 0 12px;-webkit-user-select:all;user-select:all}.join-card .join-hint{font-size:13px;color:var(--fg-muted);margin:0 auto 14px;max-width:30ch}.code-input{text-align:center;font-family:SF Mono,ui-monospace,Cascadia Mono,Menlo,Consolas,monospace;font-size:30px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;text-indent:.2em}.code-error{color:var(--danger);font-size:13px;margin:10px 0 0;min-height:1em}.share-code-card{padding:0;overflow:hidden}.share-code-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;background:transparent;border:0;color:var(--fg);font-size:14px;cursor:pointer;text-align:left}.share-code-inline{font-family:SF Mono,ui-monospace,Menlo,Consolas,monospace;font-weight:800;letter-spacing:.12em;color:var(--accent)}.share-code-chevron{display:inline-flex;align-items:center;gap:6px;flex:none;padding:6px 12px;border-radius:999px;background:var(--accent-soft, rgba(63,185,80,.14));color:var(--accent);font-size:13px;font-weight:700;line-height:1}.share-code-chevron .chev{font-size:11px;line-height:1;display:inline-block;transition:transform .15s ease}.share-code-toggle[aria-expanded=true] .share-code-chevron .chev{transform:rotate(180deg)}.loyalty-reentry{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 12px;border:1px dashed var(--border, rgba(255,255,255,.14));border-radius:12px;background:transparent;color:var(--fg-muted);font-size:13px;font-weight:600;cursor:pointer}.loyalty-reentry:hover{color:var(--fg);border-color:var(--accent)}.scroll-top-btn{position:fixed;right:16px;bottom:84px;z-index:40;width:44px;height:44px;border-radius:999px;border:1px solid var(--border, rgba(255,255,255,.12));background:var(--bg-elevated, #1c1f1d);color:var(--fg);font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 20px #00000059}.scroll-top-btn:active{transform:translateY(1px)}.share-code-body{padding:0 16px 16px;border-top:1px solid var(--line)}.share-code-body .muted{margin:12px 0}.pay-step{border:1px solid var(--line-strong);background:var(--bg-elev);border-radius:var(--radius);box-shadow:var(--shadow-soft)}.pay-step__eyebrow{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--fg-muted);font-weight:700;margin-bottom:4px}.pay-step__title{margin:2px 0 6px;font-size:19px;font-weight:700;color:var(--fg)}.pay-step__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:2px}.pay-step__back{background:transparent;border:1px solid var(--line);color:var(--fg-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:6px 10px;cursor:pointer;border-radius:var(--radius-sm)}.pay-step__back:hover{color:var(--fg);border-color:var(--line-strong)}.pay-methods{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.pay-method{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px 12px;background:var(--bg-elev-2);border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--fg);cursor:pointer;min-height:110px;transition:background .12s ease,border-color .12s ease,transform 80ms ease}.pay-method:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.pay-method:hover .pay-method__icon{color:var(--bg);border-color:var(--bg)}.pay-method:active{transform:scale(.985)}.pay-method:disabled{opacity:.45;cursor:not-allowed}.pay-method__icon{font-family:SF Mono,ui-monospace,Menlo,Consolas,monospace;font-size:22px;font-weight:800;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line-strong);color:var(--accent);border-radius:var(--radius-sm)}.pay-method__label{font-size:16px;font-weight:700;letter-spacing:.02em}.pay-actions{display:flex;flex-direction:column;gap:10px;margin-top:14px}.pay-action{display:flex;align-items:flex-start;gap:14px;padding:16px;background:var(--bg-elev-2);border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--fg);cursor:pointer;text-align:left;transition:background .12s ease,border-color .12s ease,transform 80ms ease}.pay-action:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.pay-action:hover .pay-action__icon{color:var(--bg);border-color:var(--bg)}.pay-action:hover .pay-action__hint{color:var(--bg);opacity:.78}.pay-action:active{transform:scale(.99)}.pay-action:disabled{opacity:.5;cursor:not-allowed}.pay-action__icon{flex:0 0 auto;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;color:var(--accent);border:1px solid var(--line-strong);border-radius:var(--radius-sm)}.pay-action__body{display:flex;flex-direction:column;gap:3px;min-width:0}.pay-action__label{font-size:16px;font-weight:700;letter-spacing:.02em}.pay-action__hint{font-size:13px;color:var(--fg-muted);line-height:1.35}.pay-confirm{text-align:center;border:1px solid var(--accent);background:linear-gradient(180deg,var(--accent-soft) 0%,transparent 100%);border-radius:var(--radius);box-shadow:var(--shadow-soft)}.pay-confirm__eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:700;margin-bottom:6px}.pay-confirm__method{font-size:13px;color:var(--fg);font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-bottom:10px}.pay-confirm__folio{font-family:SF Mono,ui-monospace,Cascadia Mono,Menlo,Consolas,monospace;font-size:34px;font-weight:800;letter-spacing:.18em;color:var(--fg);padding:14px 8px 14px 18px;background:var(--bg-code);border:1px dashed var(--accent);border-radius:var(--radius-input);margin:0 auto 14px;display:inline-block;-webkit-user-select:all;user-select:all}.pay-confirm__hint{font-size:13px;color:var(--fg-muted);margin:0 auto 12px;max-width:36ch;line-height:1.45}.pay-confirm__hint--err{color:var(--danger)}.pay-confirm__actions{display:flex;gap:10px;margin-top:8px}.pay-confirm__actions .btn{flex:1}
