:root{--color-text-primary: #1E1A17;--color-text-secondary: #727387;--color-gray: #CFCFD1;--color-disabled: #E4E7EC;--color-gray-background: #E8E7EE;--color-background: #F5F4F9;--color-white: #FFFFFF;--color-primary: #FE5220;--color-primary-opacity: #FE52201A;--color-shadow: #101828;--color-back-drop: #0000004D;--color-opacity-black: #000000CC;--color-dark-border: #E8E7EE80;--color-error: #E70000;--color-red-border: #FECDCA;--color-red-background: #FEF3F2;--color-red-text: #B42318;--color-green-text: #067647;--color-green-border: #ABEFC6;--color-green-background: #ECFDF3;--color-cancelled-bg: #F0443833;--color-cancelled: #F04438;--color-pending-bg: #D96E1033;--color-pending: #D96E10;--color-appointment-confirmed: #22C55E;--color-appointment-pending: #3B82F6;--color-holiday: #7C3AED;--color-chart-magenta: #BE005C;--color-chart-blue: #1C25D1;--color-chart-light-orange: #FFB46F;--color-chart-gray: #215368;--color-chart-pink: #FF9BA5;--color-chart-light-red: #FF5D53;--color-chart-clay: #B35F59;--color-chart-dark-brown: #5C0701;--color-chart-red: #DA001A;--color-chart-yellow: #F5C53E;--color-chart-light-brown: #CC914C;--color-chart-orange: #FF9900;--color-chart-brown: #865119;--color-chart-indigo: #785AEC;--color-chart-light-purple: #8D72E3;--color-chart-purple: #692FBF;--color-chart-dark-cyan: #215368;--color-chart-dark-blue: #193C9F;--color-chart-dark-indigo: #6740E1;--color-chart-lavender: #B4A0EB;--color-chart-vibrant-blue: #1C25D1;--color-chart-sky-blue: #5486E1;--color-chart-cyan: #0099FF;--color-chart-light-cyan: #95D0DE;--color-chart-muted-gray: #717171;--color-chart-dark-green: #1F523F;--color-chart-green: #2E713C;--color-chart-teal: #5E8A76;--color-chart-mint-green: #3FA966;--color-chart-light-green: #81E3B6;--color-chart-emerald: #047C6B;--color-chart-lime-green: #86C139;--color-chart-lavender-pink: #E16AFF;--color-chart-grape: #9853A8;--color-chart-rose: #CB6692;--color-chart-pale-pink: #E9C7C4;--font-family: "Assistant", -apple-system, "Segoe UI", Arial, sans-serif;--text-xs: 13px;--text-sm: 15px;--text-base: 17px;--text-lg: 18px;--text-xl: 20px;--text-2xl: 24px;--text-xxxl: 40px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-background);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}#root{min-height:100dvh;display:flex;flex-direction:column}img{max-width:100%}button{font-family:inherit}.page{flex:1;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:5;background:var(--color-white);border-bottom:1px solid var(--color-dark-border);padding:calc(8px + env(safe-area-inset-top,0px)) 16px 8px}.brand{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--color-primary)}.brand img{width:28px;height:28px;border-radius:7px}.brand-name{direction:ltr;unicode-bidi:isolate;font-weight:800;font-size:var(--text-lg);letter-spacing:.01em}.topbar{display:flex;align-items:center;justify-content:space-between}.topbar-link{color:var(--color-text-primary);font-size:var(--text-sm);font-weight:700;text-decoration:none;padding:8px 0}.content{width:100%;max-width:640px;margin:0 auto;padding:16px 16px 24px}.page.has-cta .content{padding-bottom:calc(132px + env(safe-area-inset-bottom,0px))}.footer{margin-top:auto;padding:16px;text-align:center;color:var(--color-text-secondary);font-size:var(--text-xs)}.page.has-cta .footer{display:none}.loading,.muted{color:var(--color-text-secondary);margin:8px 0}.loading{text-align:center;padding:48px 0}.card{background:var(--color-white);border:1px solid var(--color-dark-border);border-radius:16px;padding:16px;margin-bottom:12px;box-shadow:0 4px 16px -8px color-mix(in srgb,var(--color-shadow) 12%,transparent)}.section-title{font-size:var(--text-lg);font-weight:700;margin:0 0 10px}.title{font-size:var(--text-2xl);font-weight:800;margin:0 0 8px}.lead{color:var(--color-text-secondary);font-size:var(--text-sm);margin:0}.notfound{margin-top:32px;text-align:center}.label{display:block;font-size:var(--text-sm);font-weight:600;margin:12px 0 6px}.hero{display:flex;align-items:center;gap:14px;margin:4px 0 16px}.avatar{width:72px;height:72px;flex:none;border-radius:50%;object-fit:cover;background:var(--color-gray-background);border:1px solid var(--color-dark-border)}.avatar-empty{display:grid;place-items:center;font-size:var(--text-2xl);font-weight:800;color:var(--color-primary)}.hero-text{min-width:0}.name{font-size:var(--text-2xl);font-weight:800;line-height:1.2;margin:0;overflow-wrap:anywhere}.category{margin:2px 0 0;color:var(--color-text-secondary);font-size:var(--text-sm)}.rating{display:flex;align-items:center;gap:4px;margin:4px 0 0;font-size:var(--text-sm);color:var(--color-text-secondary)}.rating svg{width:16px;height:16px;color:var(--color-primary)}.rating-value{font-weight:700;color:var(--color-text-primary)}.gallery{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -16px 12px;padding:0 16px 6px;scroll-padding-inline:16px;scrollbar-width:none}.gallery::-webkit-scrollbar{display:none}.gallery-item{flex:none;height:180px;aspect-ratio:4 / 3;padding:0;border:0;border-radius:12px;overflow:hidden;background:var(--color-gray-background);scroll-snap-align:start;cursor:zoom-in}.gallery-item img{display:block;width:100%;height:100%;object-fit:cover}.lightbox{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;background:#000000eb}.lightbox img{max-width:100vw;max-height:100dvh;object-fit:contain}.lightbox-close,.lightbox-nav{position:absolute;width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:50%;background:#ffffff29;color:var(--color-white);cursor:pointer}.lightbox-close{top:calc(12px + env(safe-area-inset-top,0px));inset-inline-start:12px}.lightbox-nav{top:50%;transform:translateY(-50%)}.lightbox-prev{inset-inline-start:8px}.lightbox-next{inset-inline-end:8px}.lightbox-counter{position:absolute;bottom:calc(16px + env(safe-area-inset-bottom,0px));color:var(--color-white);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.sheet-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-end;justify-content:center;background:var(--color-back-drop)}.sheet{width:100%;max-width:640px;background:var(--color-white);border-radius:16px 16px 0 0;padding:10px 16px calc(16px + env(safe-area-inset-bottom,0px));animation:sheet-up .2s ease-out}@keyframes sheet-up{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}.sheet-handle{width:36px;height:4px;margin:0 auto 12px;border-radius:2px;background:var(--color-gray)}.sheet-title{margin:0;font-size:var(--text-lg);font-weight:700}.sheet-sub{margin:2px 0 12px;color:var(--color-text-secondary);font-size:var(--text-sm)}.sheet-options{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.sheet-option{display:flex;align-items:center;gap:12px;min-height:52px;padding:10px 14px;border:1px solid var(--color-dark-border);border-radius:12px;background:var(--color-background);color:var(--color-text-primary);font-weight:600;text-decoration:none}.sheet-option:active{background:var(--color-gray-background)}.sheet-cancel{width:100%}.latin{direction:ltr;unicode-bidi:isolate}.description{margin:0;white-space:pre-line}.notes{margin:8px 0 0;padding:10px 12px;border-radius:10px;background:var(--color-primary-opacity);font-size:var(--text-sm)}.description+.notes{margin-top:12px}.address{display:flex;align-items:flex-start;gap:8px;margin:0 0 12px;color:var(--color-text-secondary);font-size:var(--text-sm)}.address svg{flex:none;margin-top:2px}.contact-row{display:flex;gap:8px}.pill-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 12px;border:1px solid var(--color-gray);border-radius:12px;background:var(--color-white);color:var(--color-text-primary);font-size:var(--text-sm);font-weight:600;text-decoration:none}.pill-btn.pill-icon{flex:0 0 44px;padding:8px}.pill-btn:active{background:var(--color-background)}.hours-table{margin:0}.hours-row{display:grid;grid-template-columns:112px 1fr;gap:8px;padding:6px 0;border-bottom:1px solid var(--color-dark-border)}.hours-row:last-child{border-bottom:none}.hours-row dt{font-weight:600}.hours-row dd{margin:0;display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.hours-row dd span{direction:ltr;unicode-bidi:isolate}.hours-row.is-closed dd span{direction:rtl}.hours-row.is-closed dd{color:var(--color-gray)}.payment{margin-top:12px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.payment-title{font-size:var(--text-sm);font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;background:var(--color-gray-background);color:var(--color-text-secondary);font-size:var(--text-xs);font-weight:600;white-space:nowrap}.chip-btn{min-height:36px;padding:6px 14px;border:1px solid var(--color-gray);background:var(--color-white);color:var(--color-text-primary);font-size:var(--text-sm);cursor:pointer}.chip-btn.is-selected{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-white)}.service-group+.service-group{margin-top:14px}.group-title{margin:0 0 8px;font-size:var(--text-sm);font-weight:700;color:var(--color-text-secondary)}.service-list{display:flex;flex-direction:column;gap:8px}.service{display:flex;flex-direction:column;gap:4px;width:100%;padding:12px 14px;border:1px solid var(--color-dark-border);border-radius:12px;background:var(--color-background);color:inherit;text-align:start;font-size:var(--text-base);cursor:pointer}.service.is-selected{border-color:var(--color-primary);background:var(--color-primary-opacity);box-shadow:0 0 0 1px var(--color-primary)}.service-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.service-name{font-weight:700}.service-price{flex:none;font-weight:700;direction:ltr;unicode-bidi:isolate}.service-desc{color:var(--color-text-secondary);font-size:var(--text-sm)}.service-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;color:var(--color-text-secondary);font-size:var(--text-sm)}.service-duration{display:inline-flex;align-items:center;gap:4px}.service-note{display:flex;align-items:flex-start;gap:6px;margin-top:2px;color:var(--color-pending);font-size:var(--text-xs);font-weight:600}.service-note svg{flex:none;width:16px;height:16px}.booking-service{margin:0 0 4px}.month-nav{display:flex;align-items:center;justify-content:space-between;margin:12px 0 8px}.month-label{font-weight:700}.icon-btn{width:40px;height:40px;display:inline-grid;place-items:center;border:1px solid var(--color-gray);border-radius:10px;background:var(--color-white);color:var(--color-text-primary);cursor:pointer}.icon-btn:disabled{color:var(--color-gray);border-color:var(--color-disabled);cursor:default}.weekdays,.day-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.weekdays span{text-align:center;font-size:var(--text-xs);color:var(--color-text-secondary)}.day-grid{margin-top:4px;transition:opacity .15s}.day-grid.is-busy{opacity:.5}.day{aspect-ratio:1;display:grid;place-items:center;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--color-gray);font-size:var(--text-sm);font-weight:600;padding:0}.day.has-slots{background:var(--color-white);border-color:var(--color-gray);color:var(--color-text-primary);cursor:pointer}.day.is-today{border-color:var(--color-primary)}.day.is-selected{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-white)}.slot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.slot{min-height:44px;padding:8px 0;border:1px solid var(--color-gray);border-radius:10px;background:var(--color-white);color:var(--color-text-primary);font-size:var(--text-sm);font-weight:600;font-variant-numeric:tabular-nums;direction:ltr;cursor:pointer}.slot.is-selected{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-white)}.remaining{margin:4px 0 0;font-weight:600;color:var(--color-green-text)}.notice{margin:12px 0;padding:12px 14px;border-radius:12px;font-size:var(--text-sm)}.notice strong{display:block;margin-bottom:2px}.notice p{margin:0 0 10px}.notice-ratelimit{background:var(--color-primary-opacity);border:1px solid color-mix(in srgb,var(--color-primary) 35%,transparent)}.notice-error{background:var(--color-red-background);border:1px solid var(--color-red-border);color:var(--color-red-text)}.btn-secondary{padding:9px 14px;border:1px solid var(--color-gray);border-radius:10px;background:var(--color-white);color:var(--color-text-primary);font-size:var(--text-sm);font-weight:700;cursor:pointer}.btn-secondary:disabled{color:var(--color-text-secondary);cursor:default}.cta-bar{position:fixed;inset-inline:0;bottom:0;z-index:5;background:var(--color-white);border-top:1px solid var(--color-dark-border);padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));box-shadow:0 -4px 16px -8px color-mix(in srgb,var(--color-shadow) 15%,transparent)}.cta-inner{max-width:608px;margin:0 auto}.cta-summary{margin:0 0 6px;font-size:var(--text-sm);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-primary{width:100%;min-height:48px;padding:12px 16px;font-size:var(--text-base);font-weight:700;color:var(--color-white);background:var(--color-primary);border:none;border-radius:12px;cursor:pointer}.btn-primary:disabled{background:var(--color-disabled);color:var(--color-text-secondary);cursor:default}.cta-caption{margin:6px 0 0;text-align:center;font-size:var(--text-xs);color:var(--color-text-secondary)}.login-form{display:flex;flex-direction:column;gap:12px;margin-bottom:12px}.field{display:block}.field>span{display:block;font-size:var(--text-sm);font-weight:600;margin-bottom:6px}.field input{width:100%;padding:12px 14px;font-family:inherit;font-size:var(--text-base);color:var(--color-text-primary);background:var(--color-white);border:1px solid var(--color-gray);border-radius:10px;outline:none}.field input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-opacity)}.input-code{direction:ltr;text-align:center;letter-spacing:.4em;font-size:var(--text-xl);font-weight:600}.form-error{margin:0;padding:10px 14px;font-size:var(--text-sm);color:var(--color-red-text);background:var(--color-red-background);border:1px solid var(--color-red-border);border-radius:10px}.fineprint{margin:0;text-align:center;font-size:var(--text-xs);color:var(--color-text-secondary)}.fineprint a{color:inherit;text-decoration:underline}.check{display:flex;align-items:flex-start;gap:10px;font-size:var(--text-sm)}.check input{width:22px;height:22px;margin:1px 0 0;flex:none;accent-color:var(--color-primary)}.btn-link{padding:0;background:none;border:none;font-family:inherit;font-size:var(--text-sm);color:var(--color-text-secondary);text-decoration:underline;cursor:pointer}.btn-link:disabled{text-decoration:none;cursor:default}.login-links{display:flex;justify-content:space-between;gap:12px}.btn-danger{background:var(--color-cancelled)}.result{text-align:center}.result-icon{width:56px;height:56px;margin:4px auto 10px;display:grid;place-items:center;border-radius:50%;background:var(--color-green-background);color:var(--color-green-text);font-size:28px;font-weight:800}.result-icon.is-pending{background:var(--color-pending-bg);color:var(--color-pending)}.result-title{margin:0 0 12px;font-size:var(--text-2xl);font-weight:800}.result-lines{margin:0 0 12px;text-align:start}.result-lines div{display:grid;grid-template-columns:72px 1fr;gap:8px;padding:6px 0;border-bottom:1px solid var(--color-dark-border)}.result-lines div:last-child{border-bottom:none}.result-lines dt{color:var(--color-text-secondary);font-size:var(--text-sm)}.result-lines dd{margin:0;font-weight:600}.result-status{margin:0 0 10px;padding:10px 12px;border-radius:10px;background:var(--color-pending-bg);color:var(--color-pending);font-weight:600;font-size:var(--text-sm)}.result-deposit{background:var(--color-primary-opacity);color:var(--color-text-primary)}.result-calendar{display:block;text-decoration:none;text-align:center;margin-bottom:12px}.app-teaser{margin:0;white-space:pre-line;font-size:var(--text-sm);font-weight:600;line-height:1.45}.pill-btn.is-disabled{color:var(--color-text-secondary);border-color:var(--color-disabled);background:var(--color-background);cursor:default}.my-app{margin-top:16px}.my-app .app-block{margin-top:0}.app-block{margin:12px 0 8px;padding:12px;border-radius:12px;background:var(--color-background)}.app-block .app-teaser{margin:0 0 12px;text-align:start;color:var(--color-text-primary)}.app-links{display:flex;gap:8px}.result-links{display:flex;justify-content:space-between;gap:12px;margin-top:8px;font-size:var(--text-sm)}.result-links a{color:var(--color-primary);font-weight:700}.my-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.tabs{display:flex;gap:6px;padding:4px;margin:8px 0 12px;border-radius:12px;background:var(--color-gray-background)}.tab{flex:1;min-height:40px;border:0;border-radius:9px;background:transparent;color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:700;cursor:pointer}.tab.is-active{background:var(--color-white);color:var(--color-text-primary);box-shadow:0 1px 3px color-mix(in srgb,var(--color-shadow) 12%,transparent)}.appt-list{display:flex;flex-direction:column;gap:10px}.appt{background:var(--color-white);border:1px solid var(--color-dark-border);border-radius:14px;padding:12px 14px}.appt-head{display:flex;align-items:flex-start;gap:10px}.appt-logo{width:44px;height:44px;flex:none;border-radius:50%;object-fit:cover;background:var(--color-gray-background)}.appt-text{flex:1;min-width:0}.appt-business{margin:0;font-size:var(--text-base);font-weight:700}.appt-service,.appt-when{margin:2px 0 0;font-size:var(--text-sm)}.appt-when{font-weight:600}.appt-head .chip{flex:none}.chip.status-confirmed{background:var(--color-green-background);color:var(--color-green-text)}.chip.status-pending{background:var(--color-pending-bg);color:var(--color-pending)}.chip.status-cancelled{background:var(--color-cancelled-bg);color:var(--color-cancelled)}.appt-confirmed{margin:8px 0 0;color:var(--color-green-text);font-size:var(--text-sm);font-weight:700}.appt-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.appt-actions .btn-secondary{flex:1;min-height:40px}.appt .form-error{margin-top:8px}.cancel-dialog{margin-bottom:12px}.sheet{max-height:92dvh;overflow-y:auto}.reschedule .reschedule-confirm{margin:12px 0}@media(min-width:640px){.content{padding-top:24px}.gallery-item{height:220px}.slot-grid{grid-template-columns:repeat(6,1fr)}}
