:root{--bg:#101B14;--card:#18261D;--card2:#20342A;--line:rgba(255,255,255,.09);--text:#F2EFE6;--sub:#9DAA9F;--muted:#6C7A6F;--accent:#FFC53D;--on-accent:#3A2E0E;--green:#4CAF7D;--kraft:#D9A05B;--red:#E86A5E;--r:16px;--accent-text:#FFC53D;--accent-soft:#3A2E14;--accent-soft-fg:#FFC53D;--green-soft:#1E3A2B;--lime-soft-bg:#33421F;--lime-soft-fg:#C9E38A;--red-soft-bg:#42251F;--red-soft-fg:#F0A79A;--map-bg:#15251B;--hint-bg:rgba(16,27,20,.85);--tabs-bg:rgba(16,27,20,.92);--scroll:#2E4136;--scroll-hover:#3C574A;--ic-bread:#3A2E14;--ic-meal:#1E3A2B;--ic-grocery:#3A2418;--ic-sushi:#2B2438}:root[data-theme=light]{--bg:#F6F4EC;--card:#FFFFFF;--card2:#F1EDE0;--line:rgba(16,27,20,.1);--text:#1F2A22;--sub:#5C6A60;--muted:#8B968D;--green:#2E8B5F;--kraft:#C08B47;--red:#CB4A3D;--accent-text:#A87908;--accent-soft:#F7E8C2;--accent-soft-fg:#8A6A06;--green-soft:#DFF2E5;--lime-soft-bg:#E9F2D2;--lime-soft-fg:#4F7A1F;--red-soft-bg:#FBE3DF;--red-soft-fg:#C24A3B;--map-bg:#E8E6DC;--hint-bg:rgba(255,255,255,.9);--tabs-bg:rgba(250,248,240,.94);--scroll:#CFCAB8;--scroll-hover:#B8B29C;--ic-bread:#F7E8C2;--ic-meal:#DFF2E5;--ic-grocery:#F2E4D2;--ic-sushi:#EAE3F7}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:Manrope,sans-serif;font-size:15px;line-height:1.5}h1,h2,h3.display,.brand{font-family:Unbounded,sans-serif}button{font-family:inherit;border:none;cursor:pointer;background:none;color:inherit;font-size:inherit}input,textarea,select{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}.app{max-width:430px;margin:0 auto;height:100dvh;display:flex;flex-direction:column;position:relative;background:var(--bg);overflow:hidden}.screen{flex:1;overflow-y:auto;padding-bottom:20px;min-height:0}.screen.noTabs{padding-bottom:24px}.screen,.sheet{scrollbar-width:thin;scrollbar-color:var(--scroll) transparent}.screen::-webkit-scrollbar,.sheet::-webkit-scrollbar{width:5px}.screen::-webkit-scrollbar-track,.sheet::-webkit-scrollbar-track{background:transparent}.screen::-webkit-scrollbar-thumb,.sheet::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:8px}.screen::-webkit-scrollbar-thumb:hover,.sheet::-webkit-scrollbar-thumb:hover{background:var(--scroll-hover)}.brand{font-size:19px;font-weight:700;color:var(--accent-text);letter-spacing:.5px}.hdr{padding:18px 18px 10px;display:flex;justify-content:space-between;align-items:center;gap:10px}.hdr .title{font-family:Unbounded;font-size:16px;font-weight:500;color:var(--text)}.hdr .loc{font-size:12.5px;color:var(--sub);font-weight:600;text-align:right}.theme-toggle{width:34px;height:34px;border-radius:10px;background:var(--card2);border:1px solid var(--line);font-size:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.greet{padding:0 18px 12px;font-size:13.5px;color:var(--sub)}.greet b{color:var(--text);font-weight:600}.mapwrap{margin:0 18px;border-radius:var(--r);overflow:hidden;background:var(--map-bg);border:1px solid var(--line);position:relative;height:300px;isolation:isolate}.mapwrap .leaflet-container{height:100%;width:100%;background:var(--map-bg);font-family:Manrope,sans-serif}.map-hint{position:absolute;bottom:10px;left:10px;background:var(--hint-bg);padding:5px 10px;border-radius:8px;font-size:11.5px;color:var(--sub);z-index:500;pointer-events:none}.pinbubble{position:absolute;left:0;top:0;width:max-content;display:flex;align-items:center;gap:4px;padding:3px 10px;border-radius:14px;font-weight:700;font-size:13px;white-space:nowrap;filter:drop-shadow(0 3px 6px rgba(0,0,0,.4));transform:translate(-50%,calc(-100% - 5px))}.pinbubble:after{content:"";position:absolute;left:50%;bottom:-5px;transform:translate(-50%);border:6px solid transparent;border-bottom:none;border-top-color:inherit}.pinbubble.sold{filter:grayscale(1) drop-shadow(0 3px 6px rgba(0,0,0,.4));opacity:.65}.leaflet-div-icon{background:none;border:none}.leaflet-control-attribution{background:var(--hint-bg)!important;color:var(--muted)!important;font-size:9px!important}.leaflet-control-attribution a{color:var(--sub)!important}.leaflet-control-zoom a{background:var(--card)!important;color:var(--text)!important;border-color:var(--line)!important}.cards{padding:14px 18px;display:flex;flex-direction:column;gap:10px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:13px 14px;cursor:pointer;transition:transform .1s;text-align:left;width:100%}.card:active{transform:scale(.985)}.card .row1{display:flex;gap:11px;align-items:center}.ic{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}.ic.bread{background:var(--ic-bread)}.ic.meal{background:var(--ic-meal)}.ic.grocery{background:var(--ic-grocery)}.ic.sushi{background:var(--ic-sushi)}.card .nm{font-weight:700;font-size:15px}.card .tp{font-size:12.5px;color:var(--sub)}.card .pr{text-align:right;flex-shrink:0}.card .pr .now{font-weight:700;font-size:16px;color:var(--accent-text)}.card .pr .was{font-size:12px;color:var(--muted);text-decoration:line-through}.card .row2{display:flex;justify-content:space-between;align-items:center;margin-top:9px;padding-top:9px;border-top:1px solid var(--line);font-size:12.5px;color:var(--sub)}.badge{font-size:11.5px;font-weight:700;padding:2px 8px;border-radius:20px}.badge.left{background:var(--lime-soft-bg);color:var(--lime-soft-fg)}.badge.low{background:var(--red-soft-bg);color:var(--red-soft-fg)}.badge.out{background:var(--card2);color:var(--muted)}.soldout{opacity:.6}.dim{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008c;opacity:0;pointer-events:none;transition:opacity .25s;z-index:20}.dim.on{opacity:1;pointer-events:auto}.sheet{position:absolute;left:0;right:0;bottom:0;background:var(--card);border-radius:22px 22px 0 0;padding:10px 20px calc(26px + env(safe-area-inset-bottom));transform:translateY(105%);transition:transform .3s cubic-bezier(.3,1,.4,1);z-index:21;max-height:88%;overflow-y:auto}.sheet.on{transform:translateY(0)}.grip{width:38px;height:4px;background:var(--line);border-radius:4px;margin:4px auto 14px}.sh-head{display:flex;gap:12px;align-items:center;margin-bottom:14px}.sh-head .nm{font-family:Unbounded;font-size:16px;font-weight:500}.sh-head .meta{font-size:12.5px;color:var(--sub)}.star{color:var(--accent-text)}.bell{margin-left:auto;font-size:20px;flex-shrink:0;width:40px;height:40px;border-radius:12px;background:var(--card2);display:flex;align-items:center;justify-content:center;filter:grayscale(1);opacity:.55}.bell.on{filter:none;opacity:1;background:var(--accent-soft)}.bagbox{background:var(--card2);border-radius:14px;padding:14px;display:flex;gap:13px;align-items:center;margin-bottom:12px}.bagbox .t1{font-weight:700;font-size:14.5px}.bagbox .t2{font-size:12.5px;color:var(--sub)}.info{display:flex;gap:8px;margin-bottom:12px}.info .cell{flex:1;background:var(--card2);border-radius:12px;padding:10px 12px}.info .lb{font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.info .vl{font-size:14.5px;font-weight:700;margin-top:2px}.note{font-size:12.5px;color:var(--sub);margin-bottom:16px}.cta{display:block;width:100%;background:var(--accent);color:var(--on-accent);font-weight:700;font-size:15.5px;padding:15px;border-radius:14px;text-align:center;transition:transform .1s,opacity .15s}.cta:active{transform:scale(.98)}.cta:disabled{opacity:.45;cursor:default}.cta.ghost{background:transparent;color:var(--sub);font-weight:600;padding:12px}.cta.danger{background:transparent;color:var(--red);border:1px solid rgba(232,106,94,.4);font-weight:600}.errmsg{background:var(--red-soft-bg);color:var(--red-soft-fg);border-radius:12px;padding:10px 14px;font-size:13px;margin-bottom:12px}.field{margin-bottom:12px}.field label{display:block;font-size:12px;color:var(--sub);font-weight:600;margin-bottom:6px}.field input,.field textarea{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:13px 14px;color:var(--text);outline:none}.field input:focus,.field textarea:focus{border-color:var(--accent)}.hint{font-size:12px;color:var(--muted);margin:-6px 0 12px}.otp-hint{font-size:12.5px;color:var(--green);margin:-6px 0 12px}.agree{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;color:var(--sub);margin:4px 0 14px;cursor:pointer}.agree input{width:18px;height:18px;margin-top:1px;accent-color:var(--accent);flex-shrink:0}.paycard{background:var(--card2);border-radius:14px;padding:14px;display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.paycard .change{color:var(--sub);font-size:13px}.payrow{display:flex;justify-content:space-between;font-size:14px;padding:7px 0;color:var(--sub)}.payrow b{color:var(--text)}.paytotal{display:flex;justify-content:space-between;font-size:16px;font-weight:700;padding:12px 0 16px;border-top:1px solid var(--line);margin-top:6px}.succ{text-align:center;padding:14px 0 6px}.succ .chk{width:60px;height:60px;border-radius:50%;background:var(--green-soft);color:var(--green);font-size:30px;display:flex;align-items:center;justify-content:center;margin:0 auto 14px}.succ h2{font-size:17px;font-weight:500;margin-bottom:4px}.succ .sub{font-size:13.5px;color:var(--sub);margin-bottom:18px}.codebox{background:var(--bg);border:1.5px dashed var(--accent);border-radius:16px;padding:16px;margin-bottom:14px}.codebox .lb{font-size:11.5px;color:var(--sub);text-transform:uppercase;letter-spacing:1px}.codebox .cd{font-family:Unbounded;font-size:34px;font-weight:700;color:var(--accent-text);letter-spacing:6px;margin-top:2px}.eco{font-size:13px;color:var(--green);margin-bottom:16px}.empty{text-align:center;padding:60px 30px;color:var(--muted)}.bk{margin:0 18px 10px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px}.bk .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px}.bk .st{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:20px;flex-shrink:0}.bk .st.paid{color:var(--green);background:var(--green-soft)}.bk .st.issued{color:var(--lime-soft-fg);background:var(--lime-soft-bg)}.bk .st.no_show{color:var(--red-soft-fg);background:var(--red-soft-bg)}.bk .st.cancelled,.bk .st.refunded{color:var(--muted);background:var(--card2)}.bk .st.gifted{color:var(--accent-soft-fg);background:var(--accent-soft)}.bk .code{font-family:Unbounded;font-size:24px;color:var(--accent-text);letter-spacing:4px;text-align:center;background:var(--bg);border-radius:12px;padding:10px;margin:8px 0}.bk .tm{text-align:center;font-size:12.5px;color:var(--sub)}.bk .cancelrow{margin-top:10px;display:flex;flex-direction:column;gap:6px}.bk .sharebtn{padding:10px;border-radius:12px;font-weight:700;font-size:13px;color:var(--on-accent);background:var(--accent)}.bk .cancelbtn{padding:10px;border-radius:12px;font-weight:600;font-size:13px;color:var(--red);border:1px solid rgba(232,106,94,.4)}.bk .cancelbtn:disabled{color:var(--muted);border-color:var(--line);cursor:default}.bk .cancelnote{font-size:11.5px;color:var(--muted);text-align:center}.sechead{padding:16px 18px 8px;font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.6px}.demo-banner{flex-shrink:0;display:flex;justify-content:center;align-items:center;gap:12px;background:var(--accent-soft);color:var(--accent-soft-fg);font-size:12.5px;font-weight:700;padding:8px 14px;border-bottom:1px solid rgba(255,197,61,.25)}.demo-banner button{color:var(--sub);font-weight:600;font-size:12px;text-decoration:underline}.stars{display:inline-flex;gap:2px}.stars button{font-size:22px;color:var(--accent-text);line-height:1;padding:0 2px}.stars button:disabled{opacity:.5}.rated{color:var(--accent-text);font-size:15px;letter-spacing:2px}.chips{display:flex;gap:8px;padding:0 18px}.chip{padding:7px 14px;border-radius:20px;background:var(--card);border:1px solid var(--line);font-size:12.5px;font-weight:600;color:var(--sub)}.chip.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.stats{display:flex;gap:10px;padding:4px 18px 14px}.stat{flex:1;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px}.stat .vl{font-family:Unbounded;font-size:21px;font-weight:700;color:var(--accent-text)}.stat .vl.g{color:var(--green)}.stat .lb{font-size:12px;color:var(--sub);margin-top:3px}.hist{margin:0 18px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.hrow{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);font-size:13.5px;gap:8px}.hrow:last-child{border:none}.hrow .d{color:var(--muted);font-size:12px;flex-shrink:0}.linkbtn{margin:14px 18px 0;display:block;text-align:center;padding:13px;border:1px solid var(--line);border-radius:14px;color:var(--sub);font-weight:600;font-size:13.5px;width:calc(100% - 36px)}.sl-sec{margin:0 18px 12px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px}.sl-sec h3{font-size:14.5px;font-weight:700;margin-bottom:10px}.cnt{display:flex;gap:7px}.cnt button{flex:1;min-height:48px;border-radius:11px;background:var(--card2);font-weight:700;font-size:16px;color:var(--text);transition:transform .1s}.cnt button:active{transform:scale(.94)}.cnt button.sel{background:var(--accent);color:var(--on-accent)}.slstatus{font-size:12.5px;color:var(--sub);margin-top:9px}.brow{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid var(--line);gap:8px}.brow:last-child{border:none}.brow .c{font-weight:700;font-size:15px}.brow .c.done{color:var(--green)}.brow .c.miss{color:var(--muted)}.brow .s{font-size:12px;color:var(--sub)}.give{background:var(--card2);padding:10px 14px;border-radius:10px;font-weight:600;font-size:13px;color:var(--text);min-height:40px}.given{color:var(--green);font-weight:700;font-size:13px}.stopbtn{color:var(--red);border:1px solid rgba(232,106,94,.4);padding:10px 14px;border-radius:10px;font-weight:600;font-size:13px}.stopbtn:disabled{color:var(--muted);border-color:var(--line)}.profrow{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:13.5px;gap:12px}.profrow:last-child{border:none}.profrow .k{color:var(--muted);flex-shrink:0}.profrow .v{text-align:right}.tabs{flex-shrink:0;background:var(--tabs-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;padding:8px 6px calc(10px + env(safe-area-inset-bottom));z-index:10}.tab{flex:1;text-align:center;color:var(--muted);font-size:10.5px;font-weight:600;padding:4px 0;position:relative}.tab .em{font-size:20px;display:block;margin-bottom:2px;filter:grayscale(1);opacity:.6}.tab.on{color:var(--accent-text)}.tab.on .em{filter:none;opacity:1}.tab .dot{position:absolute;top:0;left:calc(50% + 10px);width:8px;height:8px;background:var(--red);border-radius:50%}.legal{padding:6px 18px 30px;font-size:14px;line-height:1.65;max-width:680px}.legal h1{font-size:19px;font-weight:700;margin-bottom:6px;line-height:1.35}.legal h2{font-size:14.5px;font-weight:700;margin:20px 0 8px;font-family:Manrope}.legal p{margin-bottom:10px}.legal ul{margin:0 0 10px 18px}.legal li{margin-bottom:6px}.legal a{color:var(--accent-text);text-decoration:underline}.legal .muted{color:var(--muted);font-size:12.5px}.legal mark{background:var(--accent-soft);color:var(--accent-soft-fg);padding:0 4px;border-radius:4px}.legal-table-wrap{overflow-x:auto;margin:0 0 10px;border:1px solid var(--line);border-radius:12px;scrollbar-width:thin;scrollbar-color:var(--scroll) transparent}.legal table{border-collapse:collapse;font-size:12.5px;min-width:560px;width:100%}.legal th{text-align:left;padding:9px 10px;color:var(--sub);font-weight:700;border-bottom:1px solid var(--line);background:var(--card);white-space:nowrap}.legal td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top;color:var(--text)}.legal tr:last-child td{border-bottom:none}.consent-note{font-size:11.5px;color:var(--muted);text-align:center;margin-top:10px}.consent-note a{color:var(--sub);text-decoration:underline}.admin{min-height:100dvh;background:#f4f3ee;color:#26302a;display:flex;font-size:14px}.admin h1,.admin h2{font-family:Unbounded}.adm-side{width:220px;background:#101b14;color:#f2efe6;padding:20px 14px;display:flex;flex-direction:column;gap:4px;flex-shrink:0;position:sticky;top:0;height:100dvh}.adm-side .brand{font-size:16px;margin-bottom:18px;padding:0 8px}.adm-nav{display:flex;flex-direction:column;gap:2px}.adm-nav button{display:flex;gap:9px;align-items:center;text-align:left;padding:10px 12px;border-radius:10px;color:#9daa9f;font-weight:600;font-size:13.5px}.adm-nav button.on{background:#20342a;color:#ffc53d}.adm-nav button:hover{color:#f2efe6}.adm-side .adm-user{margin-top:auto;font-size:12px;color:#6c7a6f;padding:0 8px}.adm-main{flex:1;padding:26px 30px;min-width:0}.adm-main h1{font-size:20px;font-weight:700;margin-bottom:18px}.adm-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:22px}.adm-card{background:#fff;border:1px solid #E4E2D8;border-radius:14px;padding:16px}.adm-card .vl{font-family:Unbounded;font-size:22px;font-weight:700}.adm-card .vl.accent{color:#c8940a}.adm-card .vl.green{color:#2e8b5f}.adm-card .vl.red{color:#cb4a3d}.adm-card .lb{font-size:12px;color:#7a8578;margin-top:4px}.adm-panel{background:#fff;border:1px solid #E4E2D8;border-radius:14px;padding:18px;margin-bottom:20px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#CFCCC0 transparent}.adm-panel::-webkit-scrollbar{height:6px;width:6px}.adm-panel::-webkit-scrollbar-thumb{background:#cfccc0;border-radius:6px}.adm-panel::-webkit-scrollbar-track{background:transparent}.adm-panel h2{font-size:14px;font-weight:700;margin-bottom:12px}table.adm{width:100%;border-collapse:collapse;font-size:13px}table.adm th{text-align:left;padding:8px 10px;color:#7a8578;font-weight:600;border-bottom:2px solid #E4E2D8;font-size:12px;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}table.adm td{padding:9px 10px;border-bottom:1px solid #EEECE3;vertical-align:middle}table.adm tr:last-child td{border-bottom:none}.pill{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:20px;white-space:nowrap}.pill.active,.pill.paid,.pill.issued,.pill.resolved{background:#e2f2e7;color:#2e8b5f}.pill.paused,.pill.pending,.pill.in_progress{background:#fbf0d3;color:#9a7409}.pill.no_show,.pill.blocked,.pill.open{background:#fbe3df;color:#cb4a3d}.pill.cancelled,.pill.refunded,.pill.none,.pill.stopped{background:#eceae0;color:#7a8578}.adm-btn{background:#101b14;color:#f2efe6;padding:8px 14px;border-radius:10px;font-weight:600;font-size:13px}.adm-btn.warn{background:#fbe3df;color:#cb4a3d}.adm-btn.soft{background:#eceae0;color:#26302a}.adm-btn.accent{background:#ffc53d;color:#3a2e0e}.adm-btn:disabled{opacity:.5;cursor:default}.adm-btn+.adm-btn{margin-left:6px}.adm-tools{display:flex;gap:10px;margin-bottom:14px;align-items:center;flex-wrap:wrap}.adm-tools input,.adm-tools select{background:#fff;border:1px solid #DDDACB;border-radius:10px;padding:9px 12px;outline:none;font-size:13.5px}.adm-tools input:focus{border-color:#ffc53d}.adm-form{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 14px;max-width:720px}.adm-form label{font-size:12px;color:#7a8578;font-weight:600;display:block;margin-bottom:4px}.adm-form input,.adm-form select,.adm-form textarea{width:100%;background:#fff;border:1px solid #DDDACB;border-radius:10px;padding:9px 12px;outline:none;font-size:13.5px}.adm-form .full{grid-column:1 / -1}.adm-chart{display:flex;align-items:flex-end;gap:6px;height:120px;padding-top:8px}.adm-chart .bar{flex:1;background:#ffc53d;border-radius:6px 6px 0 0;min-height:3px;position:relative}.adm-chart .bar span{position:absolute;bottom:-20px;left:50%;transform:translate(-50%);font-size:10px;color:#7a8578;white-space:nowrap}.adm-chart-wrap{padding-bottom:24px}.mono{font-family:ui-monospace,Consolas,monospace;font-size:12.5px}.adm-login{margin:auto;background:#fff;border:1px solid #E4E2D8;border-radius:16px;padding:30px;width:360px}.adm-login h1{font-size:18px;margin-bottom:16px}.adm-login input{width:100%;border:1px solid #DDDACB;border-radius:10px;padding:11px 12px;margin-bottom:10px;outline:none}.adm-empty{color:#7a8578;padding:20px;text-align:center}@media (max-width: 800px){.admin{flex-direction:column}.adm-side{width:100%;height:auto;position:static;flex-direction:row;align-items:center;overflow-x:auto}.adm-side .brand{margin:0 12px 0 0}.adm-nav{flex-direction:row}.adm-side .adm-user{display:none}.adm-form{grid-template-columns:1fr}}
