@import url("https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,500&family=Hanken+Grotesk:wght@400;500;600;700&display=swap");*{box-sizing:border-box}body,html{margin:0;padding:0}.app{--bg:#fbf8f5;--surface:#fff;--surface-2:#f6f0ea;--surface-sunken:#f3ece4;--border:#ece4dc;--border-strong:#ded2c6;--text:#2a2420;--text-muted:#7a6f66;--text-faint:#a89b8e;--accent:#b07a66;--accent-strong:color-mix(in oklab,var(--accent),#1a0f0a 32%);--accent-strong-hover:color-mix(in oklab,var(--accent),#1a0f0a 42%);--accent-text:color-mix(in oklab,var(--accent),#1a0f0a 30%);--accent-subtle:color-mix(in oklab,var(--accent),var(--surface) 88%);--accent-subtle-2:color-mix(in oklab,var(--accent),var(--surface) 80%);--accent-border:color-mix(in oklab,var(--accent),var(--surface) 64%);--on-accent:#fff;--success:#3e7c5a;--success-subtle:color-mix(in oklab,#3e7c5a,var(--surface) 86%);--warning:#c0792e;--danger:#b5483b;--danger-subtle:color-mix(in oklab,#b5483b,var(--surface) 88%);--info:#5a6b8c;--svc-0:#c58a74;--svc-1:#8fa1b3;--svc-2:#b58bb0;--svc-3:#c9a24b;--svc-4:#7fa88b;--svc-5:#6fa6b0;--svc-6:#c98a98;--svc-7:#9a8fb0;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:22px;--r-pill:999px;--sh-1:0 1px 2px rgba(60,40,30,.05),0 2px 8px rgba(60,40,30,.04);--sh-2:0 2px 6px rgba(60,40,30,.07),0 10px 28px rgba(60,40,30,.08);--sh-pop:0 8px 30px rgba(40,28,20,.16);--font-display:"Cormorant Garamond",Georgia,"Times New Roman",serif;--font-body:"Hanken Grotesk",system-ui,-apple-system,sans-serif;font-family:var(--font-body);color:var(--text);background:var(--bg);text-rendering:optimizeLegibility;min-height:100vh}.app,.app *{-webkit-font-smoothing:antialiased}.app[data-mode=dark]{--bg:#1a1714;--surface:#242019;--surface-2:#2c271f;--surface-sunken:#201c16;--border:#383027;--border-strong:#463d31;--text:#f3ece4;--text-muted:#b3a696;--text-faint:#8a7e70;--accent-strong:color-mix(in oklab,var(--accent),#fff 6%);--accent-strong-hover:color-mix(in oklab,var(--accent),#fff 16%);--accent-text:color-mix(in oklab,var(--accent),#fff 26%);--accent-subtle:color-mix(in oklab,var(--accent),var(--surface) 82%);--accent-subtle-2:color-mix(in oklab,var(--accent),var(--surface) 70%);--accent-border:color-mix(in oklab,var(--accent),var(--surface) 52%);--success-subtle:color-mix(in oklab,#3e7c5a,var(--surface) 80%);--danger-subtle:color-mix(in oklab,#b5483b,var(--surface) 80%);--sh-1:0 1px 2px rgba(0,0,0,.3),0 2px 8px rgba(0,0,0,.25);--sh-2:0 2px 8px rgba(0,0,0,.35),0 12px 30px rgba(0,0,0,.4);--sh-pop:0 10px 36px rgba(0,0,0,.5)}.shell{max-width:480px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;position:relative;background:var(--bg)}.scr-scroll{flex:1 1}.flowhead,.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:12;display:flex;align-items:center;gap:10px;padding:14px 14px 12px;background:color-mix(in oklab,var(--bg),transparent 8%);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);border-bottom:1px solid color-mix(in oklab,var(--border),transparent 30%)}.topbar.is-bare{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;border-bottom:0}.topbar-title{font-weight:600;font-size:16px;letter-spacing:-.01em;flex:1 1;text-align:center}.topbar-spacer{width:44px;height:44px;flex-shrink:0}.footer-dock{position:-webkit-sticky;position:sticky;bottom:0;z-index:12;padding:12px 16px 16px;background:color-mix(in oklab,var(--surface),transparent 6%);backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);border-top:1px solid color-mix(in oklab,var(--border),transparent 30%)}.footer-dock.is-plain{background:var(--surface)}.iconbtn{width:44px;height:44px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-pill);border:1px solid var(--border);background:color-mix(in oklab,var(--surface),transparent 10%);color:var(--text);cursor:pointer;transition:background .15s,transform .1s,border-color .15s}.iconbtn:hover{background:var(--surface-2)}.iconbtn:active{transform:scale(.94)}.iconbtn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-border)}.iconbtn svg{width:19px;height:19px}.btn{font-family:var(--font-body);font-weight:600;font-size:16px;letter-spacing:-.01em;min-height:52px;padding:0 22px;border-radius:var(--r-pill);border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;width:100%;white-space:nowrap;transition:background .16s,color .16s,transform .08s,box-shadow .16s,border-color .16s;-webkit-tap-highlight-color:transparent}.btn:active{transform:scale(.985)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-border)}.btn[disabled]{cursor:not-allowed}.btn-primary{background:var(--accent-strong);color:var(--on-accent);box-shadow:var(--sh-1)}.btn-primary:hover{background:var(--accent-strong-hover)}.btn-primary[disabled]{background:var(--surface-sunken);color:var(--text-faint);box-shadow:none}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--surface-2)}.btn-ghost{background:transparent;color:var(--accent-text)}.btn-ghost:hover{background:var(--accent-subtle)}.btn-danger{background:transparent;color:var(--danger);border-color:color-mix(in oklab,var(--danger),var(--surface) 50%)}.btn-danger:hover{background:var(--danger-subtle)}.btn-sm{min-height:40px;font-size:14px;padding:0 16px;width:auto}.spinner{width:18px;height:18px;border-radius:50%;border:2.5px solid color-mix(in oklab,currentColor,transparent 65%);border-top-color:currentcolor;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:1.4s}}.eyebrow{font-size:11.5px;font-weight:600;letter-spacing:.14em;color:var(--accent-text)}.eyebrow,.section-title{text-transform:uppercase}.section-title{font-size:13px;font-weight:700;letter-spacing:.06em;color:var(--text-muted)}.serif{font-family:var(--font-display);font-weight:500;letter-spacing:0;line-height:1.12}.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-1)}.chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px;border-radius:var(--r-pill);font-size:12.5px;font-weight:600;background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border)}.chip-accent{background:var(--accent-subtle);color:var(--accent-text);border-color:var(--accent-border)}.divider{height:1px;background:var(--border);border:0;margin:0}.dot{width:8px;height:8px}.avatar,.dot{border-radius:50%;flex-shrink:0}.avatar{display:inline-flex;align-items:center;justify-content:center;font-weight:600;letter-spacing:.02em;background:var(--accent-subtle);color:var(--accent-text);border:1px solid var(--accent-border)}.ph{position:relative;overflow:hidden;background:repeating-linear-gradient(135deg,color-mix(in oklab,var(--accent),var(--surface) 86%) 0 10px,color-mix(in oklab,var(--accent),var(--surface) 92%) 10px 20px)}.ph-label{position:absolute;inset:0;justify-content:center;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;letter-spacing:.04em;color:color-mix(in oklab,var(--accent-text),transparent 25%)}.ph-label,.svc{display:flex;align-items:center}.svc{gap:13px;width:100%;text-align:left;color:var(--text);padding:15px 16px;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);transition:border-color .15s,background .15s,transform .08s,box-shadow .15s;-webkit-tap-highlight-color:transparent}.svc:hover{border-color:var(--accent-border);box-shadow:var(--sh-1)}.svc:active{transform:scale(.99)}.svc:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-border);border-color:var(--accent-border)}.svc.is-selected{border-color:var(--accent);background:var(--accent-subtle);box-shadow:0 0 0 1px var(--accent)}.svc-body{flex:1 1;min-width:0}.svc-name{font-weight:600;font-size:15.5px;letter-spacing:-.01em;line-height:1.25}.svc-meta{display:flex;align-items:center;gap:8px;margin-top:3px;color:var(--text-muted);font-size:13px}.svc-meta .sep{width:3px;height:3px;border-radius:50%;background:var(--text-faint)}.svc-price{font-family:var(--font-display);font-size:22px;font-weight:600;letter-spacing:0;white-space:nowrap}.worker{display:flex;align-items:center;gap:13px;width:100%;text-align:left;color:var(--text);padding:13px 14px;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);transition:border-color .15s,background .15s,transform .08s,box-shadow .15s}.worker:hover{border-color:var(--accent-border);box-shadow:var(--sh-1)}.worker:active{transform:scale(.99)}.worker:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-border)}.worker.is-selected{border-color:var(--accent);background:var(--accent-subtle);box-shadow:0 0 0 1px var(--accent)}.worker-any .avatar{background:var(--surface-2);color:var(--accent-text);border:1px dashed var(--accent-border)}.worker-name{display:block;font-weight:600;font-size:15px}.worker-title{display:block;color:var(--text-muted);font-size:13px;margin-top:1px}.radio{width:22px;height:22px;border-radius:50%;flex-shrink:0;border:2px solid var(--border-strong);position:relative;transition:border-color .15s}.is-selected .radio{border-color:var(--accent)}.is-selected .radio:after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--accent)}.datestrip{display:flex;gap:8px;overflow-x:auto;padding:4px 16px 14px;scroll-snap-type:x proximity}.datestrip::-webkit-scrollbar{height:0}.datecell{scroll-snap-align:start;flex-shrink:0;width:56px;padding:9px 0 10px;border-radius:var(--r-md);cursor:pointer;color:var(--text);display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--surface);border:1px solid var(--border);transition:all .14s}.datecell:hover{border-color:var(--accent-border)}.datecell:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-border)}.datecell.is-selected{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--on-accent)}.datecell.is-disabled{opacity:.4;cursor:default}.datecell-wd{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:inherit;opacity:.8}.datecell-day{font-family:var(--font-display);font-size:24px;font-weight:600;line-height:1}.datecell-mo{font-size:10.5px;opacity:.75}.datecell .free-dot{width:5px;height:5px;border-radius:50%;background:var(--success);margin-top:1px}.datecell.is-selected .free-dot{background:var(--on-accent)}.datecell.is-none .free-dot{background:transparent}.slotgroup-label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0 0 10px}.slotgrid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.slot{min-height:46px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface);font-weight:600;font-size:15px;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;cursor:pointer;transition:all .12s;-webkit-tap-highlight-color:transparent}.slot:hover{border-color:var(--accent);color:var(--accent-text)}.slot:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-border)}.slot.is-selected{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--on-accent)}.slot.is-taken{border-color:var(--border);background:var(--surface-sunken);text-decoration:line-through}.slot.is-lead,.slot.is-taken{color:var(--text-faint);cursor:default}.slot.is-lead{border-style:dashed}.field{display:flex;flex-direction:column;gap:6px}.label{font-size:13.5px;font-weight:600;color:var(--text)}.label .opt{color:var(--text-faint);font-weight:500}.input{font-family:var(--font-body);font-size:16px;color:var(--text);min-height:50px;padding:0 14px;width:100%;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);transition:border-color .15s,box-shadow .15s}textarea.input{padding:12px 14px;min-height:76px;resize:none;line-height:1.45}.input::placeholder{color:var(--text-faint)}.input:hover{border-color:var(--accent-border)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-border)}.input.is-error{border-color:var(--danger)}.input.is-error:focus{box-shadow:0 0 0 3px var(--danger-subtle)}.field-error{font-size:12.5px;color:var(--danger);display:flex;align-items:center;gap:5px}.field-help{font-size:12.5px;color:var(--text-muted)}.coupon-row{display:flex;gap:8px}.coupon-row .input{flex:1 1}.sumrow{display:flex;align-items:center;gap:12px;padding:13px 0}.sumrow+.sumrow{border-top:1px solid var(--border)}.sumrow-label{color:var(--text-muted);font-size:13.5px;width:92px;flex-shrink:0}.sumrow-value{font-weight:600;font-size:15px;flex:1 1}.pricebox{background:var(--surface-2);border-radius:var(--r-md);padding:14px 16px}.priceline{display:flex;justify-content:space-between;align-items:baseline;font-size:14px;gap:12px}.priceline+.priceline{margin-top:8px}.priceline.is-total{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.priceline-total-val{font-family:var(--font-display);font-size:28px;font-weight:600;white-space:nowrap}.priceline .strike{text-decoration:line-through;color:var(--text-faint)}.priceline .disc{color:var(--success)}.stampcard{border-radius:var(--r-lg);padding:16px;background:linear-gradient(135deg,var(--accent-subtle),var(--accent-subtle-2));border:1px solid var(--accent-border)}.stamps{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:9px;gap:9px;margin-top:13px}.stamp{aspect-ratio:1;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px dashed var(--accent-border);color:var(--accent-text);font-size:12px;font-weight:600}.stamp.is-filled{background:var(--accent-strong);border-style:solid;border-color:var(--accent-strong);color:var(--on-accent)}.stamp.is-reward{border-style:solid;border-color:var(--accent);background:var(--surface)}.steps{display:flex;align-items:center;gap:6px}.step-pip{height:4px;border-radius:2px;flex:1 1;background:var(--border-strong);transition:background .2s}.step-pip.is-active,.step-pip.is-done{background:var(--accent)}.alert{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--r-md);font-size:13.5px;line-height:1.4}.alert-warn{background:color-mix(in oklab,var(--warning),var(--surface) 86%);color:color-mix(in oklab,var(--warning),#2a1a00 30%);border:1px solid color-mix(in oklab,var(--warning),var(--surface) 60%)}.app[data-mode=dark] .alert-warn{color:color-mix(in oklab,var(--warning),#fff 30%)}.alert-info{background:var(--accent-subtle);color:var(--accent-text);border:1px solid var(--accent-border)}.alert-ok{background:var(--success-subtle);color:color-mix(in oklab,var(--success),#06210f 25%);border:1px solid color-mix(in oklab,var(--success),var(--surface) 60%)}.app[data-mode=dark] .alert-ok{color:color-mix(in oklab,var(--success),#fff 35%)}.alert svg{flex-shrink:0;margin-top:1px}.status-badge{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 12px;border-radius:var(--r-pill);font-size:12.5px;font-weight:700}.status-badge .dot{width:7px;height:7px}.status-badge.is-confirmed{background:var(--success-subtle);color:var(--success)}.status-badge.is-cancelled{background:var(--danger-subtle);color:var(--danger)}.sheet-backdrop{position:fixed;inset:0;z-index:50;background:rgba(26,18,12,.42);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;flex-direction:column;justify-content:flex-end}.sheet{background:var(--surface);color:var(--text);border-radius:24px 24px 0 0;padding:12px 20px 24px;box-shadow:0 -8px 40px rgba(20,12,6,.3);max-width:480px;width:100%;margin:0 auto;animation:sheetUp .28s cubic-bezier(.2,.8,.2,1) both}@keyframes sheetUp{0%{transform:translateY(18px)}to{transform:none}}@media (prefers-reduced-motion:reduce){.sheet{animation:none}}.sheet-grip{width:38px;height:4px;border-radius:2px;background:var(--border-strong);margin:0 auto 14px}.sk{background:linear-gradient(90deg,var(--surface-sunken) 25%,var(--surface-2) 37%,var(--surface-sunken) 63%);background-size:400% 100%;animation:skl 1.4s ease infinite;border-radius:6px}@keyframes skl{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.sk{animation:none}}.fade-up{animation:fadeUp .32s cubic-bezier(.2,.7,.2,1) both}@keyframes fadeUp{0%{transform:translateY(9px)}to{transform:none}}@media (prefers-reduced-motion:reduce){.fade-up{animation:none}}.success-ring{width:92px;height:92px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--success-subtle);color:var(--success);animation:pop .5s cubic-bezier(.2,1.3,.4,1) both}@keyframes pop{0%{transform:scale(.75)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.success-ring{animation:none}}.stack{flex-direction:column}.row,.stack{display:flex}.row{align-items:center}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.center{text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.lang-switch{display:inline-flex;gap:2px;background:var(--surface-2);border-radius:var(--r-pill);padding:3px}.lang-switch button{border:0;background:transparent;font-family:inherit;font-size:12px;font-weight:600;color:var(--text-muted);padding:4px 9px;border-radius:var(--r-pill);cursor:pointer}.lang-switch button.is-on{background:var(--surface);color:var(--text);box-shadow:var(--sh-1)}