/* Dedicated booking: the calendar owns the scroll, never the sales page. */
html:has(.booking-page){height:100%;scroll-padding-top:0;scroll-behavior:auto;overflow:hidden}
.booking-page{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--paper)}
.booking-header{flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;min-height:76px;padding:8px max(24px,env(safe-area-inset-right)) 8px max(24px,env(safe-area-inset-left));background:var(--cream);border-bottom:1px solid var(--line)}
.booking-back{display:inline-flex;align-items:center;gap:5px;min-height:44px;width:fit-content;font-size:13px;font-weight:500;color:#654b76}
.booking-back svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.booking-brand b{font-size:32px}
.booking-session{text-align:right;font-size:13px;line-height:1.4}
.booking-session p{font-weight:600;font-variant-numeric:tabular-nums}
.booking-session a{display:inline-flex;align-items:center;justify-content:flex-end;min-height:30px;font-size:12px;color:#654b76;text-decoration:underline;text-underline-offset:3px}
.booking-help{justify-self:end;display:inline-flex;align-items:center;min-height:44px;font-size:13px;color:#654b76;text-decoration:underline;text-underline-offset:4px}
.booking-main{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;outline:none}
.booking-page.is-booking .booking-main{overflow:hidden}
.booking-workspace,.booking-workspace #booking-frame-mount{height:100%;width:100%;min-height:0;position:relative}
.booking-workspace iframe{height:100%;width:100%;display:block;border:0;background:white}
.booking-loading,.booking-complete{position:absolute;z-index:1;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center;background:var(--paper);font-size:15px;color:var(--body)}
.booking-loading{pointer-events:none}
.booking-loading-slow{display:flex;flex-direction:column;align-items:center;gap:16px;pointer-events:auto}
.booking-loading-slow p{max-width:34ch;line-height:1.6}
.booking-complete{z-index:2}
.booking-complete h2{font-size:clamp(32px,7vw,44px);color:var(--ink)}
.booking-complete p{max-width:36ch;line-height:1.65}
.booking-complete .btn{margin-top:6px}
.booking-spinner{width:30px;height:30px;border-radius:50%;border:2px solid var(--line);border-top-color:#654b76;animation:booking-spin .9s linear infinite}
@keyframes booking-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.booking-spinner{display:none}}
/* Short screens (phones held sideways): let the page scroll so the calendar keeps a usable height. */
@media(max-height:620px){.booking-page.is-booking{height:auto;min-height:100dvh;overflow:visible}.booking-page.is-booking .booking-main{flex:none;overflow:visible}.booking-page.is-booking .booking-workspace{height:600px}}
.booking-footer{position:relative;z-index:3;flex:none;display:flex;justify-content:center;align-items:center;flex-wrap:nowrap;gap:16px;min-height:44px;padding:0 max(12px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(12px,env(safe-area-inset-left));background:var(--cream);border-top:1px solid var(--line);font-size:11px;line-height:1.5}
.booking-footer a{display:inline-flex;align-items:center;min-height:40px;color:#654b76;text-decoration:underline;text-underline-offset:3px}
.booking-footer svg{width:13px;height:13px;margin-left:4px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.booking-policy-menu{position:relative;flex:none}
.booking-policy-menu summary{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;list-style:none;color:#654b76;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.booking-policy-menu summary::-webkit-details-marker{display:none}
.booking-policies{position:absolute;right:0;bottom:calc(100% + 4px);z-index:1;display:flex;flex-direction:column;min-width:172px;gap:0;padding:4px 12px;border:1px solid var(--line);border-radius:8px;background:var(--cream);box-shadow:0 4px 18px #251c3620}
.booking-footer .booking-policies a{min-height:44px;white-space:nowrap}
.booking-footer .ac-privacy-toggle{flex:none;min-height:44px;padding:0 6px;margin:0;border:0;border-radius:0;background:transparent;color:#654b76;font:inherit;text-decoration:underline;text-underline-offset:3px}
.booking-footer>div:first-child{flex:none}
.booking-footer> .ac-privacy-status:not([hidden]){position:absolute;right:12px;bottom:calc(100% + 4px);width:min(340px,calc(100vw - 24px));padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--cream)}
.booking-policy-menu summary:focus-visible,.booking-footer .ac-privacy-toggle:focus-visible{outline:2px solid #915bb0;outline-offset:2px}
.booking-choice{max-width:1320px;margin:auto;min-height:100%;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.8fr);gap:64px;padding:64px 40px;align-items:center}
.booking-choice h1{font-size:52px;margin-bottom:18px}
.booking-intro{font-size:15px;line-height:1.75;color:var(--body);max-width:55ch}
.booking-options{margin-top:24px}
.booking-options article{padding:26px 0;border-top:1px solid var(--line)}
.booking-option-title{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.booking-option-title h2{font-size:33px}
.booking-option-title>p{font-size:20px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}
.booking-option-title small{font-size:11px;font-weight:400}
.booking-duration{font-size:13px;color:#654b76;margin-top:6px;margin-bottom:12px}
.booking-options article>p:not(.booking-duration){font-size:16px;line-height:1.7;color:var(--body);max-width:55ch}
.booking-options .btn{margin-top:18px;min-width:215px}
.booking-choice-note{font-size:12px;line-height:1.8;color:var(--body)}
.booking-choice-note a{display:block;width:fit-content;min-height:44px;align-content:center;text-decoration:underline;text-underline-offset:4px;color:#654b76}
.booking-choice-art{align-self:center;position:relative;height:min(620px,72vh);min-height:450px;border-radius:120px 120px 8px 8px;overflow:hidden;background:var(--cream2)}
.booking-choice-art img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:94% center}
.booking-choice-art .script{position:absolute;left:20px;right:20px;bottom:34px;text-align:center;font-size:38px;color:var(--ink);background:var(--cream);padding:16px 8px;border-radius:6px}
.booking-noscript{margin-top:20px;padding:20px;background:var(--cream2)}
.booking-noscript a{display:block;text-decoration:underline;padding-block:10px}
.booking-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(hover:hover){.booking-header a:hover,.booking-footer a:hover{color:#8b5a93}.booking-options .btn:hover{transform:translateY(-1px)}}
@media(max-width:850px){.booking-choice{grid-template-columns:1fr;max-width:680px;padding:40px 24px;gap:0}.booking-choice-art{display:none}.booking-choice h1{font-size:44px}}
@media(max-width:600px){.booking-header{min-height:72px;gap:8px;padding:6px max(14px,env(safe-area-inset-right)) 6px max(14px,env(safe-area-inset-left));grid-template-columns:auto 1fr auto}.booking-brand{justify-self:center}.booking-brand b{font-size:25px}.booking-back{font-size:12px;gap:0;min-width:44px}.booking-back svg{width:17px}.booking-session{font-size:11px}.booking-session a{font-size:11px;min-height:36px}.booking-footer{padding-inline:12px;gap:0 20px;font-size:11px}.booking-page.is-booking .booking-footer{gap:0 14px}.booking-choice{padding:32px 22px}.booking-choice h1{font-size:40px}.booking-intro{font-size:14px}.booking-option-title h2{font-size:30px}.booking-option-title>p{font-size:19px}.booking-options article{padding:23px 0}.booking-options .btn{width:100%}.booking-choice-note{font-size:11px}.booking-help{font-size:11px}.booking-footer a{min-height:40px}}
@media(max-width:360px){.booking-brand b{font-size:21px}.booking-session{font-size:11px}.booking-back span{display:none}.booking-header{grid-template-columns:32px 1fr auto;padding-inline:10px}.booking-back{min-width:32px}.booking-choice h1{font-size:36px}.booking-option-title h2{font-size:28px}}

.booking-options .btn{font-size:12px}
.booking-intro{font-size:16px}
.booking-choice h1,.booking-option-title h2{text-wrap:balance}
.booking-intro,.booking-options article>p{text-wrap:pretty}
