@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes cardIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes tabIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes dotAppear{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes stepFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes sheetSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheetSlideDown{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes backdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes backdropFadeOut{0%{opacity:1}to{opacity:0}}@keyframes calCellIn{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}@keyframes todayPulse{0%,to{box-shadow:0 0 0 0 rgb(var(--color-primary-rgb) / .45)}60%{box-shadow:0 0 0 7px rgb(var(--color-primary-rgb) / 0)}}@keyframes pendingGlow{0%,to{box-shadow:inset 0 0 0 1.5px var(--color-pending-ring)}55%{box-shadow:inset 0 0 0 1.5px var(--color-pending-ring), 0 0 0 3px #e3a04a52}}@keyframes drawHand{0%{stroke-dashoffset:24px}to{stroke-dashoffset:0}}@keyframes maintFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes maintSparkle{0%,to{opacity:1;transform:scale(1)rotate(0)}50%{opacity:.7;transform:scale(1.2)rotate(20deg)}}.spinner{animation:.75s linear infinite spin}.card-in{animation:.2s both cardIn}.toast-in{animation:.25s both toastIn}.step-section{animation:.35s both fadeUp}.maint-float{animation:4s ease-in-out infinite maintFloat}.maint-sparkle{animation:3s ease-in-out infinite maintSparkle}.spinner-border{border:2px solid rgb(var(--color-primary-rgb) / .2);border-top-color:var(--color-primary);border-radius:50%;animation:.6s linear infinite spin;display:inline-block}#js-modal:not(.hidden) #js-modal-panel{animation:.28s cubic-bezier(.22,.68,0,1.2) both modalSlideUp}.sheet-entering{animation:sheetSlideUp .32s var(--ease-spring) both}.sheet-exiting{animation:sheetSlideDown .28s var(--ease-spring) both}.backdrop-in{animation:.22s both backdropFadeIn}.backdrop-out{animation:.22s both backdropFadeOut}.nav-tab.text-primary:after{content:"";width:4px;height:4px;animation:dotAppear .18s var(--ease-bounce) both;background:currentColor;border-radius:50%;margin-top:2px;display:block}.cal-entering .cal-cell,.cal-entering .cal-cell.today{animation:.13s ease-out both calCellIn}.cal-entering .cal-cell:nth-child(7n+2){animation-delay:14ms}.cal-entering .cal-cell:nth-child(7n+3){animation-delay:28ms}.cal-entering .cal-cell:nth-child(7n+4){animation-delay:42ms}.cal-entering .cal-cell:nth-child(7n+5){animation-delay:56ms}.cal-entering .cal-cell:nth-child(7n+6){animation-delay:70ms}.cal-entering .cal-cell:nth-child(7n){animation-delay:84ms}.cal-cell.has-pending:not(.today):not(.past){animation:2.6s ease-in-out .4s infinite pendingGlow}.cal-cell.today{animation:2.8s ease-in-out .5s infinite todayPulse}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.clock-hand{stroke-dashoffset:0;animation:none}#step-5 .animate-pulse,.cal-cell.has-pending:not(.today){animation:none}}*{-webkit-tap-highlight-color:transparent}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--color-cream)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:2px}.btn-primary{background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dk) 100%);transition:transform var(--duration-normal), box-shadow var(--duration-normal), opacity var(--duration-normal)}.btn-primary:not(:disabled):hover{box-shadow:var(--shadow-btn-hover);transform:translateY(-1px)}.btn-primary:not(:disabled):active{transform:translateY(0)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.maint-wa-btn{transition:transform var(--duration-normal), box-shadow var(--duration-normal)}.maint-wa-btn:hover{transform:scale(1.04);box-shadow:0 12px 32px #25d36666}.maint-wa-btn:active{transform:scale(1)}.service-card{border:2px solid var(--border-soft);transition:border-color var(--duration-normal), box-shadow var(--duration-normal), transform var(--duration-normal)}.service-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.service-card:active{transform:translateY(0)}.service-card.selected{border-color:var(--color-primary);background:linear-gradient(135deg, var(--color-cream) 0%, #f5ecf0 100%);box-shadow:0 4px 18px rgb(var(--color-primary-rgb) / .2)}.cal-day{aspect-ratio:1;border-radius:var(--radius-sm);transition:background var(--duration-fast), border-color var(--duration-fast), color var(--duration-fast), transform var(--duration-fast);cursor:default;color:rgb(var(--color-text-rgb) / .28);border:1.5px solid #0000;flex-direction:column;justify-content:center;align-items:center;font-size:.8rem;font-weight:400;display:flex}.cal-day.avail{background:rgb(var(--color-primary-rgb) / .11);border-color:rgb(var(--color-primary-rgb) / .32);color:var(--color-text);cursor:pointer;font-weight:600}.cal-day.avail:hover{background:rgb(var(--color-primary-rgb) / .2);border-color:rgb(var(--color-primary-rgb) / .55);box-shadow:0 4px 14px rgb(var(--color-primary-rgb) / .22);transform:scale(1.08)}.cal-day.selected{background:linear-gradient(135deg, var(--color-primary-lt), var(--color-primary))!important;color:#fff!important;border-color:#0000!important}.cal-day.today-ring{outline:2px solid var(--color-primary);outline-offset:1px;font-weight:700}.cal-day.avail.today-ring{color:var(--color-primary)}.cal-day.disabled{cursor:not-allowed;pointer-events:none}.cal-day.disabled.past{opacity:.18}.cal-day.disabled.weekend{opacity:.22}.cal-day.disabled.no-slots{opacity:.3}.dot-no-slots{background:#a67c8e66;border-radius:50%;width:4px;height:4px;margin-top:2px}.dot-avail{background:var(--color-approved);border-radius:50%;width:5px;height:5px;margin-top:3px}.cal-day.animate-pulse{min-height:2rem}.time-slot{border:2px solid var(--border-secondary);border-radius:var(--radius-md);text-align:center;cursor:pointer;transition:border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast), transform var(--duration-fast);padding:.75rem .5rem}.time-slot:hover{border-color:var(--color-primary);color:var(--color-primary);transform:scale(1.04)}.time-slot.selected{background:var(--color-primary);border-color:var(--color-primary);color:#fff;box-shadow:var(--shadow-time-slot)}.otp-input{text-align:center;border:1.5px solid var(--border-otp);background:var(--surface-card);width:46px;height:58px;color:var(--color-text);transition:border-color var(--duration-fast), box-shadow var(--duration-fast), transform var(--duration-fast);caret-color:var(--color-primary);border-radius:18px;outline:none;font-size:1.4rem;font-weight:700}.otp-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgb(var(--color-primary-rgb) / .18);transform:scale(1.04)}.otp-input.filled{border-color:var(--color-primary);background:#fbf6f9}.otp-input.error{border-color:var(--color-rejected);box-shadow:0 0 0 3px #ef44441f}.clock-hand{stroke-dasharray:24;stroke-dashoffset:24px;animation:.45s .25s forwards drawHand}#js-dash ::-webkit-scrollbar-track{background:var(--color-admin-bg)}#js-dash ::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-admin)}.shadow-sm{box-shadow:var(--shadow-soft)!important}#js-dash main{padding-top:.75rem}#js-dash .bg-white.rounded-2xl{border-radius:var(--radius-lg)}#js-dash .shadow-sm,#js-dash .shadow-soft{box-shadow:var(--shadow-card)!important}#js-dash .uppercase.tracking-widest{align-items:center;gap:.45rem;display:inline-flex;text-transform:none!important;letter-spacing:0!important;color:var(--color-text-subtle)!important;font-size:.82rem!important;font-weight:800!important}#js-dash .uppercase.tracking-widest:before{content:"";background:linear-gradient(90deg, var(--color-primary), var(--color-primary-lt));border-radius:2px;width:14px;height:2px;display:inline-block}#js-dash main>h2{letter-spacing:-.01em;margin-bottom:1.1rem;font-size:1.15rem;font-weight:900}#js-dash main>.space-y-3>*+*{margin-top:.85rem}#js-dash .spinner{border:2px solid rgb(var(--color-primary-rgb) / .2);border-top-color:var(--color-primary);border-radius:50%;animation:.6s linear infinite spin;display:inline-block}.sheet-panel{will-change:transform}.sheet-handle-pill{border-radius:var(--radius-pill);background:rgb(var(--color-primary-rgb) / .35);width:2.5rem;height:4px;transition:width .2s var(--ease-bounce), background-color .12s ease}#js-sheet-handle:active .sheet-handle-pill{background:rgb(var(--color-primary-rgb) / .65);width:4rem}.cal-cell{aspect-ratio:1;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border-radius:.625rem;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:40px;transition:background-color .1s;display:flex;position:relative}.cal-cell:active{transition:transform 70ms;transform:scale(.86)}.cal-cell.today{background:var(--color-primary);color:#fff;border-radius:.75rem;font-weight:900}.cal-cell.cal-selected{background:var(--surface-muted);color:var(--color-primary);font-weight:700}.cal-cell.other-month{pointer-events:none;color:#c5bdc2;background:repeating-linear-gradient(45deg,#f2eef1,#f2eef1 4px,#ebe5ea 4px 8px)}.cal-cell.other-month .cal-count,.cal-cell.other-month .cal-free-dot,.cal-cell.other-month .cal-free-count{display:none}.cal-cell.past{opacity:.6;color:#b3a8ae;background:#f1edf0}.cal-cell.blocked{opacity:.28;pointer-events:none}.cal-cell.has-pending:not(.today){background:var(--color-pending-bg);box-shadow:inset 0 0 0 1.5px var(--color-pending-ring)}.cal-cell.has-approved:not(.today){background:var(--color-approved-bg)}.cal-cell.has-free:not(.today){background:var(--color-free-bg)}.cal-dots{justify-content:center;gap:2px;display:flex}.cal-dot{border-radius:50%;flex-shrink:0;width:4px;height:4px}.cal-count{border-radius:var(--radius-pill);color:#fff;justify-content:center;align-items:center;min-width:15px;height:15px;padding:0 3px;font-size:9px;font-weight:800;line-height:1;display:inline-flex}.cal-count-pending{background:var(--color-pending)}.cal-count-approved{background:var(--color-approved)}.cal-cell.today .cal-count{background:#fff}.cal-cell.today .cal-count-pending{color:#c2781e}.cal-cell.today .cal-count-approved{color:#1f7d40}.cal-free-dot{top:4px;background:var(--color-free-dot);border-radius:50%;width:6px;height:6px;position:absolute;inset-inline-start:5px}.cal-cell.today .cal-free-dot{background:#fff}.cal-free-count{top:3px;border-radius:var(--radius-pill);background:var(--color-free-dot);color:#fff;justify-content:center;align-items:center;min-width:14px;height:14px;padding:0 2.5px;font-size:8px;font-weight:900;line-height:1;display:inline-flex;position:absolute;inset-inline-start:3px}.cal-cell.today .cal-free-count{color:var(--color-free-dot);background:#ffffffd9}.cal-density-bar{bottom:0;background:var(--color-primary);border-radius:0 0 var(--radius-sm) var(--radius-sm);opacity:.35;pointer-events:none;height:3px;position:absolute;inset-inline-start:0}.cal-cell.today .cal-density-bar{opacity:1;background:#ffffffb3}.cal-legend{background:var(--surface-legend);border:1px solid var(--border-primary);border-radius:var(--radius-pill);flex-wrap:wrap;justify-content:center;gap:14px;width:fit-content;max-width:100%;margin-inline:auto;padding:7px 16px;display:flex}.cal-legend span{color:var(--color-text-subtle);align-items:center;gap:5px;font-size:11px;font-weight:600;display:inline-flex}.cal-legend i{border-radius:50%;width:9px;height:9px;display:inline-block}.swipe-wrapper{border-radius:var(--radius-card);position:relative;overflow:hidden}.swipe-card{will-change:transform;touch-action:pan-y;transition:transform .38s var(--ease-bounce);position:relative}.swipe-card.dragging{box-shadow:var(--shadow-swipe-drag);transition:none}.swipe-reveal{border-radius:var(--radius-card);color:#fff;opacity:0;pointer-events:none;align-items:center;padding:0 1.25rem;font-size:.875rem;font-weight:700;transition:opacity .12s;display:flex;position:absolute;inset:0}.swipe-reveal.approve{background:var(--color-approved);justify-content:flex-end}.swipe-reveal.reject{background:var(--color-rejected-lt);justify-content:flex-start}.bottom-nav{padding-bottom:env(safe-area-inset-bottom,0px)}main{padding-bottom:5rem}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-cell{background:linear-gradient(90deg, var(--color-cream,#faf5f0) 25%, var(--color-secondary,#ddc3a5) 50%, var(--color-cream,#faf5f0) 75%);background-size:200% 100%;animation:1.4s infinite shimmer}.skeleton-card{border-radius:var(--radius-card);border:1px solid var(--border-primary);background:#fff;padding:1rem;overflow:hidden}.skeleton-card .s-line{border-radius:.4rem}.slot-count{color:var(--color-primary);opacity:.85;margin-top:2px;font-size:9px;font-weight:700;line-height:1;display:block}.slot-count.sel{color:#ffffffbf;opacity:1}.time-slot{flex-direction:column;align-items:center;gap:1px;display:flex}.slot-duration{opacity:.55;font-size:9px;line-height:1}.time-slot.selected .slot-duration{opacity:.8}@media (width>=640px){body>header>div,body>main,body>footer{max-width:36rem!important}#js-nav>div{max-width:36rem}#js-services{grid-template-columns:repeat(2,1fr)}#js-slots{grid-template-columns:repeat(4,1fr)}body{background-image:radial-gradient(60% 40% at 15% 10%,#a67c8e12 0%,#0000 60%),radial-gradient(60% 40% at 85% 90%,#ddc3a51a 0%,#0000 60%)}}@media (width>=1024px){#js-dash:not(.hidden){flex-direction:column;display:flex}#js-dash>header{z-index:50;order:1;position:sticky;top:0}#js-dash>header>div{max-width:64rem}#js-dash>.bottom-nav{z-index:39;border-top:none;border-bottom:1px solid #ddc3a54d;order:2;padding-bottom:0!important;position:sticky!important;top:68px!important;bottom:auto!important}#js-dash>.bottom-nav>div{justify-content:flex-start;gap:.25rem;max-width:64rem;padding-left:1.5rem;padding-right:1.5rem}.nav-tab{border-radius:.5rem;margin-bottom:.25rem;flex-direction:row!important;flex:none!important;gap:.5rem!important;padding:.625rem .875rem!important}.nav-tab span{font-size:.8125rem!important}.nav-tab svg{width:1.1rem!important;height:1.1rem!important}#tab-calendar,#tab-bookings,#tab-pulse,#tab-diary,#tab-clients{order:3;width:100%;padding-top:1.5rem;max-width:64rem!important;margin-left:auto!important;margin-right:auto!important;padding-bottom:3rem!important;padding-left:2rem!important;padding-right:2rem!important}#js-sheet-panel{max-width:40rem}#js-sms-modal,#js-cancel-modal{align-items:center}}
