.appointment-page{padding:28px 0 48px}.appointment-intro{margin-bottom:18px}.appointment-intro h1{margin:0;font-size:36px}.appointment-intro>p:last-child{max-width:720px;color:var(--muted)}.appointment-alert{margin:10px 0;padding:11px 13px;border-left:4px solid var(--red);background:#fff0f0;color:#8e2025}.appointment-alert.success{border-color:#18804a;background:#e8f6ee;color:#1f6540}.appointment-shell,.my-appointments{border:1px solid var(--line);background:#fff;box-shadow:0 10px 28px rgba(0,0,0,.07)}.appointment-shell>header{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-bottom:1px solid var(--line)}.appointment-shell h2,.my-appointments h2{margin:0}.appointment-shell header p,.my-appointments p{margin:3px 0 0;color:var(--muted)}.appointment-week-nav{display:flex;gap:6px}.appointment-week-nav button{height:34px;padding:0 12px;border:1px solid var(--line);background:#fff}.appointment-grid-wrap{overflow:auto}.appointment-grid{display:grid;grid-template-columns:88px repeat(7,minmax(130px,1fr));grid-template-rows:64px repeat(18,42px);min-width:1030px}.appointment-day,.appointment-time,.appointment-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.appointment-day{display:grid;place-content:center;text-align:center;background:#f6f7f8;font-weight:800}.appointment-day small{display:block;color:var(--muted)}.appointment-day em{margin-top:3px;color:#777;font-size:8px;font-style:normal;letter-spacing:.4px}.appointment-time{padding:7px 8px;text-align:right;background:#fafafa;color:#666;font-size:11px;font-weight:700}.appointment-cell{position:relative;background:#fff;cursor:pointer}.appointment-cell:hover:not(.busy):not(.disabled-date):not(.disabled-time){box-shadow:inset 0 0 0 2px #2d7cc4}.appointment-cell:focus-visible{z-index:9;outline:3px solid #165b98;outline-offset:-3px}.appointment-cell.busy{cursor:not-allowed;background:#f2f3f4}.appointment-cell.disabled-date,.appointment-cell.disabled-time,.appointment-day.past-date,.appointment-day.advance-closed,.appointment-day.shop-closed{cursor:not-allowed;background:repeating-linear-gradient(135deg,#eceeef 0,#eceeef 7px,#d7dadd 7px,#d7dadd 10px);color:#74787c}.appointment-cell.shop-closed,.appointment-day.shop-closed{background:repeating-linear-gradient(135deg,#e5e5e5 0,#e5e5e5 7px,#c8c8c8 7px,#c8c8c8 10px)}.appointment-cell.covered{background:#19804b}.appointment-cell.selected{z-index:8;padding:3px;box-shadow:inset 0 0 0 2px #165b98}.appointment-picker{display:grid;grid-template-columns:1fr auto;gap:2px}.appointment-picker select{min-width:0;height:17px;border:1px solid #2d7cc4;font-size:8px}.appointment-picker button{height:17px;border:0;background:var(--red);color:#fff;font-size:8px;font-weight:800}.reservation-card{--reserved-slots:1;position:absolute;z-index:6;left:3px;right:3px;top:3px;height:calc(var(--reserved-slots)*42px - 6px);display:flex;align-items:flex-start;gap:7px;padding:7px;border-radius:4px;color:#fff;overflow:hidden;box-shadow:0 3px 9px rgba(0,0,0,.22)}.reservation-card.other{background:#34373a}.reservation-card.mine{background:#177b49}.reservation-card.focused{outline:3px solid #ffbf00;outline-offset:2px;animation:appointment-pulse 1s ease 2}.reservation-card b{display:block;font-size:9px;letter-spacing:.8px}.reservation-card strong{display:block;font-size:10px;line-height:1.15}.reservation-card small{display:block;margin-top:3px;color:rgba(255,255,255,.82);font-size:9px}.reservation-avatar{width:27px;height:27px;flex:0 0 27px;border:2px solid #fff;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:#292d30;font-size:8px;font-weight:900}.reservation-avatar img{width:100%;height:100%;object-fit:cover}.appointment-legend{display:flex;gap:16px;padding:11px 15px;color:var(--muted);font-size:11px}.appointment-legend span{display:flex;align-items:center;gap:5px}.appointment-legend i{width:11px;height:11px;border:1px solid var(--line)}.appointment-legend i.busy{background:#34373a}.appointment-legend i.covered{background:#19804b}.my-appointments{margin-top:14px;padding:15px 18px}.appointment-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.appointment-chip-wrap{display:flex;border:1px solid #b8d8c5;border-radius:20px;background:#e9f6ee;overflow:hidden}.appointment-chip{display:grid;gap:1px;padding:7px 10px;border:0;background:transparent;color:#185d39;text-align:left}.appointment-chip strong{font-size:10px}.appointment-chip small{font-size:9px}.appointment-chip-cancel{width:29px;border:0;border-left:1px solid #b8d8c5;background:transparent;color:var(--red);font-size:15px}.appointment-empty{padding:14px;background:#f5f6f7}.appointment-policy{margin-top:13px;padding:12px;border:1px solid #ead6aa;background:#fff9e9;color:#75531d}

.service-modal-open{overflow:hidden}.service-category-modal{position:fixed;z-index:10001;inset:0;display:grid;place-items:center;padding:20px;background:rgba(13,17,15,.68);backdrop-filter:blur(2px)}.service-category-modal[hidden]{display:none}.service-category-modal>section{display:flex;flex-direction:column;width:min(720px,100%);max-height:min(820px,calc(100vh - 40px));overflow:hidden;border:1px solid #d8dcd9;border-radius:10px;background:#fff;box-shadow:0 24px 70px rgba(0,0,0,.38)}.service-category-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 24px 18px;border-bottom:1px solid #e4e6e5}.service-category-modal-header h2{margin:0 0 4px;font-size:25px}.service-category-modal-header p{margin:0;color:#626864;font-size:13px;font-weight:700}.service-category-close{width:38px;height:38px;flex:0 0 38px;border:1px solid #d1d5d2;border-radius:50%;background:#fff;color:#242724;font-size:25px;line-height:1}.service-category-list{display:grid;gap:8px;overflow-y:auto;padding:16px 24px}.service-category{border:1px solid #d9ddda;border-radius:6px;background:#fff;overflow:hidden}.service-category[open]{border-color:#aebbb3;box-shadow:0 2px 10px rgba(24,74,47,.08)}.service-category summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:0 16px;cursor:pointer;font-size:14px;font-weight:850;list-style:none}.service-category summary::-webkit-details-marker{display:none}.service-category summary:after{content:"›";margin-left:auto;color:#3b433e;font-size:25px;line-height:1;transform:rotate(0);transition:transform .18s ease}.service-category[open] summary:after{transform:rotate(90deg)}.service-category summary small{order:2;color:#777;font-size:10px;font-weight:700}.service-category summary:after{order:3}.service-category-options{border-top:1px solid #e5e7e6;background:#fbfcfb}.service-option{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;min-height:58px;padding:9px 16px;border-bottom:1px solid #eceeed;cursor:pointer}.service-option:last-child{border-bottom:0}.service-option:hover:not(.unavailable){background:#f1f8f4}.service-option:has(input:checked){background:#e9f6ee}.service-option input{width:18px;height:18px;margin:0;accent-color:#147244}.service-option-copy{display:grid;gap:3px}.service-option-copy strong{color:#242724;font-size:13px}.service-option-copy small{color:#737875;font-size:10px}.service-option>b{color:#57605a;font-size:11px;white-space:nowrap}.service-option.unavailable{cursor:not-allowed;background:#f3f3f3;opacity:.65}.service-selection-summary{margin:0 24px 4px;padding:12px 14px;border-left:4px solid #18804a;background:#e8f6ee;color:#185d39;font-size:12px;font-weight:800}.service-category-actions{display:flex;justify-content:space-between;gap:12px;padding:16px 24px 20px;border-top:1px solid #e4e6e5;background:#fff}.service-category-actions button{min-width:112px;min-height:42px;padding:0 18px;border-radius:5px;font:inherit;font-size:13px;font-weight:850}.service-category-cancel{border:1px solid #cfd3d0;background:#fff;color:#313632}.service-category-continue{border:1px solid #147244;background:#147244;color:#fff}.service-category-continue:disabled{cursor:not-allowed;border-color:#b9c0bb;background:#c9ceca;color:#777}.service-category-close:focus-visible,.service-category summary:focus-visible,.service-option input:focus-visible,.service-category-actions button:focus-visible{outline:3px solid #2d7cc4;outline-offset:2px}

.service-category-modal>section{width:min(640px,100%);max-height:min(760px,calc(100vh - 40px))}.service-tree{display:grid;gap:5px;overflow-y:auto;padding:12px 20px}.service-tree-category{background:#fff}.service-tree-branch{display:flex;align-items:center;gap:9px;min-height:40px;padding:0 12px;border:1px solid #d9ddda;border-radius:5px;background:#f7f8f7;cursor:pointer;color:#252925;font-size:12px;font-weight:850;list-style:none}.service-tree-branch::-webkit-details-marker{display:none}.service-tree-branch:before{content:"›";width:16px;color:#177b49;font-size:20px;line-height:1;transition:transform .15s ease}.service-tree-category[open]>.service-tree-branch:before{transform:rotate(90deg)}.service-tree-branch small{margin-left:auto;min-width:24px;padding:2px 7px;border-radius:12px;background:#e2e6e3;color:#59605b;text-align:center;font-size:9px}.service-tree-category[open]>.service-tree-branch{border-color:#aebbb3;background:#eef5f0}.service-tree-services{position:relative;margin:3px 0 4px 16px;padding-left:14px;border-left:2px solid #c3d8ca}.service-tree-service{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;min-height:44px;padding:6px 10px;border-bottom:1px solid #eceeed;cursor:pointer;background:#fff}.service-tree-service:last-child{border-bottom:0}.service-tree-service:hover:not(.unavailable){background:#f3f8f5}.service-tree-service:has(input:checked){background:#e8f6ee}.service-tree-service input{width:16px;height:16px;margin:0;accent-color:#147244}.service-tree-service-copy{display:grid;gap:1px;min-width:0}.service-tree-service-copy strong{overflow:hidden;color:#262a27;font-size:11px;line-height:1.25;text-overflow:ellipsis}.service-tree-service-copy small{color:#747a76;font-size:9px}.service-tree-service>b{color:#5d655f;font-size:9px;white-space:nowrap}.service-tree-service.unavailable{cursor:not-allowed;background:#f3f3f3;opacity:.62}.service-tree-branch:focus-visible,.service-tree-service input:focus-visible{outline:3px solid #2d7cc4;outline-offset:2px}.service-selection-summary{margin:0 20px 3px;padding:9px 12px;font-size:11px}.service-category-actions{padding:12px 20px 16px}.service-category-actions button{min-height:38px}

@keyframes appointment-pulse{50%{filter:brightness(1.3)}}@media(max-width:720px){.appointment-page{padding:18px 0 78px}.appointment-intro h1{font-size:28px}.appointment-shell>header{align-items:flex-start}.appointment-grid{grid-template-columns:70px repeat(7,122px)}.appointment-week-nav button{padding:0 9px}.service-category-modal{align-items:end;padding:0;background:rgba(13,17,15,.58)}.service-category-modal>section{width:100%;height:min(88vh,820px);max-height:none;border-radius:16px 16px 0 0}.service-category-modal-header{padding:18px 18px 14px}.service-category-modal-header h2{font-size:22px}.service-category-list{padding:12px 14px}.service-selection-summary{margin:0 14px 4px}.service-category-actions{position:sticky;bottom:0;padding:12px 14px calc(12px + env(safe-area-inset-bottom))}.service-category-actions button{flex:1}.service-category summary{min-height:50px;padding:0 13px}.service-option{min-height:62px;padding:10px 13px}.service-option>b{font-size:10px}}@media(prefers-reduced-motion:reduce){.service-category summary:after{transition:none}}
@media(max-width:720px){.service-tree{padding:10px 12px}.service-tree-branch{min-height:39px;padding:0 10px}.service-tree-services{margin-left:12px;padding-left:10px}.service-tree-service{min-height:45px;padding:6px 8px}.service-selection-summary{margin:0 12px 3px}.service-category-actions{padding:10px 12px calc(10px + env(safe-area-inset-bottom))}}@media(prefers-reduced-motion:reduce){.service-tree-branch:before{transition:none}}

.appointment-limit-modal{position:fixed;z-index:10002;inset:0;display:grid;place-items:center;padding:20px;background:rgba(13,17,15,.7);backdrop-filter:blur(2px)}.appointment-limit-modal[hidden]{display:none}.appointment-limit-modal>section{position:relative;width:min(430px,100%);padding:28px;border-top:5px solid var(--red);border-radius:10px;background:#fff;box-shadow:0 24px 70px rgba(0,0,0,.4);text-align:center}.appointment-limit-close{position:absolute;top:12px;right:12px;width:36px;height:36px;border:1px solid #d5d8d6;border-radius:50%;background:#fff;color:#313532;font-size:23px;line-height:1}.appointment-limit-eyebrow{margin:0 0 12px;color:var(--red);font-size:11px;font-weight:900;letter-spacing:.8px;text-transform:uppercase}.appointment-limit-count{display:inline-flex;align-items:center;min-height:30px;margin-bottom:13px;padding:0 12px;border-radius:16px;background:#fff0f0;color:#9d2026;font-size:11px;font-weight:900}.appointment-limit-modal h2{margin:0 0 9px;font-size:24px}.appointment-limit-modal p{color:#666}.appointment-limit-modal [data-appointment-limit-message]{margin:0;font-size:14px;line-height:1.5}.appointment-limit-help{margin:9px 0 20px;font-size:12px;line-height:1.45}.appointment-limit-action{width:100%;min-height:42px;border:0;border-radius:5px;background:var(--red);color:#fff;font:inherit;font-size:13px;font-weight:850}.appointment-limit-close:focus-visible,.appointment-limit-action:focus-visible{outline:3px solid #2d7cc4;outline-offset:2px}@media(max-width:520px){.appointment-limit-modal{align-items:end;padding:0}.appointment-limit-modal>section{width:100%;padding:26px 20px calc(20px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0}.appointment-limit-modal h2{font-size:22px}}
