:root{--ink:#23291f;--ink-soft:#55604c;--line:#dcded1;--paper:#f6f5ee;--card:#fff;--sage:#4a5a3c;--sage-soft:#eef1e6;--clay:#b46a4e;--gold:#b98a2e;--ok:#3f7250;--warn:#9a6b1f;--radius:14px;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--paper);font-family:var(--font);color:var(--ink);-webkit-tap-highlight-color:transparent}.app{max-width:420px;margin:0 auto;min-height:100vh;padding:0 0 40px}.top{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 10px;position:-webkit-sticky;position:sticky;top:0;z-index:6;background:var(--paper)}.top h1{font-size:17px;font-weight:600;letter-spacing:-.01em}.storepill{align-items:center;font-size:12px;font-weight:600;color:var(--sage);background:var(--sage-soft);border:none;border-radius:100px;padding:6px 11px;cursor:pointer;font-family:var(--font);text-decoration:none}.storepill,.tabs{display:flex;gap:6px}.tabs{padding:0 14px 8px;position:-webkit-sticky;position:sticky;top:48px;z-index:6;background:var(--paper);border-bottom:1px solid var(--line)}.tab{flex:1 1;text-align:center;padding:10px;font-size:14px;font-weight:600;color:var(--ink-soft);background:none;cursor:pointer;border:none;border-bottom:2px solid transparent;font-family:var(--font)}.tab.active{color:var(--ink);border-bottom-color:var(--sage)}.tab .n{font-size:12px;color:var(--sage);font-weight:700}form{padding:8px 16px}.who{color:var(--ink-soft);font-size:13px;padding:6px 4px 2px}.group{margin-top:14px}.group>label{display:block;font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-soft);margin:0 4px 6px}.req b{color:var(--clay);font-weight:700}input[type=date],input[type=email],input[type=password],input[type=tel],input[type=text],select,textarea{width:100%;border:1px solid var(--line);background:var(--card);border-radius:var(--radius);padding:14px;font-size:16px;color:var(--ink);font-family:var(--font);-webkit-appearance:none;-moz-appearance:none;appearance:none}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2355604c' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:40px}input:focus,select:focus,textarea:focus{outline:2px solid var(--sage);border-color:transparent}textarea{resize:none;min-height:62px}.hint{font-size:12px;color:var(--ink-soft);margin:6px 4px 0;line-height:1.4}.tbox{margin-top:16px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.trow{display:flex;align-items:center;gap:12px}.trow .t{flex:1 1}.trow .t strong{display:block;font-size:15px}.trow .t span{font-size:12.5px;color:var(--ink-soft)}.switch{position:relative;width:50px;height:30px;flex:0 0 auto}.switch input{opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.track{position:absolute;inset:0;background:#cdd0c2;border-radius:100px;transition:background .18s;pointer-events:none}.track:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;background:#fff;border-radius:50%;transition:transform .18s;box-shadow:0 1px 3px rgba(0,0,0,.2)}.switch input:checked+.track{background:var(--sage)}.switch input:checked+.track:after{transform:translateX(20px)}.saveBtn{width:100%;border:none;border-radius:var(--radius);padding:16px;font-size:16px;font-weight:600;font-family:var(--font);background:var(--sage);color:#fff;cursor:pointer;margin-top:20px;transition:background .15s}.saveBtn:active{background:#3c4a30}.saveBtn.done{background:var(--ok)}.saveBtn:disabled{opacity:.6;cursor:default}.cancelEdit{width:100%;border:1px solid var(--line);background:var(--card);border-radius:var(--radius);padding:12px;font-size:14px;font-weight:600;color:var(--ink-soft);margin-top:8px;cursor:pointer;font-family:var(--font)}.book{padding:12px 16px}.summary{display:flex;gap:10px;margin-bottom:12px}.stat{flex:1 1;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.stat .big{font-size:22px;font-weight:700;letter-spacing:-.02em}.stat .lbl{font-size:12px;color:var(--ink-soft);margin-top:2px}.searchrow{display:flex;gap:8px;margin-bottom:10px}.searchrow input{flex:1 1}.iconbtn{flex:0 0 auto;border:1px solid var(--line);background:var(--card);border-radius:var(--radius);padding:0 14px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;font-family:var(--font)}.filters{display:flex;gap:6px;margin-bottom:12px}.filt{font-size:13px;font-weight:600;padding:7px 13px;border-radius:100px;border:1px solid var(--line);background:var(--card);color:var(--ink-soft);cursor:pointer;font-family:var(--font)}.filt.active{background:var(--ink);color:#fff;border-color:var(--ink)}.rec{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:10px}.rec-head{display:flex;align-items:flex-start;gap:10px}.rec-head .nm{flex:1 1}.rec-head .nm .name{font-size:16px;font-weight:600}.rec-head .nm .sub{font-size:13px;color:var(--ink-soft);margin-top:2px}.star{flex:0 0 auto;font-size:20px;background:none;border:none;cursor:pointer;color:#cfd2c4;line-height:1;padding:2px}.star.on{color:var(--gold)}.badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.badge{font-size:11.5px;font-weight:600;padding:4px 9px;border-radius:100px}.b-trip{background:#e7eef7;color:#2f5988}.b-vip{background:#f6edd6;color:var(--gold)}.b-noconsent{background:#f2e5e0;color:var(--clay)}.b-served{background:var(--sage-soft);color:var(--sage)}.b-sent{background:#e9ede6}.b-sent,.notes{color:var(--ink-soft)}.notes{font-size:13px;margin-top:10px;line-height:1.45;font-style:italic}.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.act{font-size:13px;font-weight:600;padding:9px 12px;border-radius:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer;font-family:var(--font);text-decoration:none;display:inline-block}.act.primary{background:var(--sage);color:#fff;border-color:var(--sage);flex:1 1;text-align:center}.act.primary.off{opacity:.45;pointer-events:none}.act.danger{color:var(--clay);margin-left:auto}.act:disabled{opacity:.5;cursor:default}.empty{text-align:center;padding:48px 24px;color:var(--ink-soft)}.empty .big{font-size:15px;color:var(--ink);font-weight:600;margin-bottom:6px}.hide{display:none!important}.overlay{position:fixed;inset:0;background:rgba(35,41,31,.5);display:flex;align-items:flex-end;justify-content:center;z-index:20}.sheet{background:var(--paper);width:100%;max-width:420px;border-radius:20px 20px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom));max-height:88vh;overflow:auto}.sheet h2{font-size:18px;margin-bottom:4px}.sheet p{font-size:13.5px;color:var(--ink-soft);line-height:1.5;margin-bottom:14px}.storelist{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.storeopt{padding:14px 10px;border:1px solid var(--line);background:var(--card);border-radius:12px;font-size:14px;font-weight:600;cursor:pointer;text-align:center;font-family:var(--font);color:var(--ink)}.storeopt:active{background:var(--sage-soft)}.setupfoot{margin-top:8px;text-align:center}.setupfoot a,.setupfoot button{background:none;border:none;color:var(--sage);font-weight:600;font-size:13px;cursor:pointer;font-family:var(--font);text-decoration:none}.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:11px 18px;border-radius:100px;font-size:14px;font-weight:600;z-index:40;opacity:0;transition:opacity .2s;pointer-events:none}.toast.show{opacity:1}.err{color:var(--clay);font-size:13px;margin:8px 4px 0}.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.panel{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:26px 22px}.panel h2{font-size:19px;margin-bottom:4px}.panel p{font-size:13.5px;color:var(--ink-soft);line-height:1.5;margin-bottom:16px}.brand{text-align:center;font-weight:700;letter-spacing:.04em;color:var(--sage);margin-bottom:14px;font-size:13px;text-transform:uppercase}