:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#1c2925;background:#f4f0e8;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #1c2925;--muted: #69736f;--green: #315f59;--green-dark: #234742;--sage: #dce6df;--paper: #fbfaf6;--line: #d5d8d0;--rose: #9a5f68}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}button{color:inherit}.site-shell{min-height:100vh;position:relative;overflow:hidden}.site-shell:before{content:"";position:fixed;z-index:-1;top:-230px;right:-130px;width:560px;height:560px;border:1px solid rgba(49,95,89,.12);border-radius:50%;box-shadow:0 0 0 70px #315f5906,0 0 0 140px #315f5905}.site-header{display:flex;align-items:center;justify-content:space-between;height:86px;padding:0 clamp(22px,5vw,76px);border-bottom:1px solid rgba(49,95,89,.15)}.brand{display:inline-flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--green);border-radius:50%;color:var(--green);font-family:Georgia,serif;font-size:1.15rem;font-style:italic}.brand>span:last-child{display:grid}.brand strong{font-size:.84rem;letter-spacing:-.01em}.brand small{color:var(--muted);font-size:.58rem;letter-spacing:.13em;text-transform:uppercase}.header-actions{display:flex;align-items:center;gap:24px}.header-note{color:var(--muted);font-size:.72rem}.header-note:before{content:"●";margin-right:7px;color:var(--green);font-size:.55rem}.header-link{padding:8px 0;border:0;border-bottom:1px solid var(--green);background:transparent;color:var(--green);cursor:pointer;font-size:.72rem;font-weight:750}.header-link:disabled{cursor:wait;opacity:.5}.step-navigation{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:min(1180px,calc(100% - 44px));margin:28px auto 0;border-bottom:1px solid var(--line)}.step-navigation button{display:flex;align-items:center;gap:10px;padding:13px 4px 17px;border:0;border-bottom:2px solid transparent;background:transparent;color:#8a918e;cursor:default;font-size:.72rem;text-align:left}.step-navigation button span{font-size:.6rem;letter-spacing:.08em}.step-navigation button.complete{color:var(--green);cursor:pointer}.step-navigation button.active{border-color:var(--green);color:var(--ink);font-weight:700}.booking-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:clamp(42px,7vw,100px);width:min(1180px,calc(100% - 44px));margin:54px auto 90px}.booking-workspace{min-width:0}.step-panel{position:relative;animation:step-enter .3s cubic-bezier(.2,.8,.2,1) both}.eyebrow,.summary-kicker{display:inline-block;color:var(--rose);font-size:.66rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.step-panel h1,.confirmation-view h1{margin:12px 0;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.45rem,5.4vw,4.9rem);font-weight:400;line-height:.98;letter-spacing:-.055em}.step-intro{max-width:600px;margin:0 0 44px;color:var(--muted);font-size:.92rem;line-height:1.65}.choice-list{border-top:1px solid var(--line)}.choice-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;width:100%;min-height:92px;padding:17px 10px;border:0;border-bottom:1px solid var(--line);background:transparent;cursor:pointer;text-align:left;transition:background .18s ease,padding .18s ease}.choice-row:hover{padding-inline:17px;background:#ffffff7a}.choice-row.selected{background:var(--paper)}.avatar{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--sage);color:var(--green);font-family:Georgia,serif;font-size:1.25rem}.choice-copy{display:grid;gap:6px;min-width:0}.choice-copy strong{font-size:.96rem}.choice-copy small{overflow:hidden;color:var(--muted);font-size:.73rem;line-height:1.45;text-overflow:ellipsis}.choice-arrow{color:var(--green);font-size:1.35rem;transition:transform .18s ease}.choice-row:hover .choice-arrow{transform:translate(4px)}.selection-dot{width:19px;height:19px;border:1px solid #adb7b2;border-radius:50%;box-shadow:inset 0 0 0 4px var(--paper)}.selected .selection-dot{border-color:var(--green);background:var(--green)}.service-meta{display:grid;justify-items:end;gap:4px;min-width:92px}.service-meta strong{font-size:.87rem}.service-meta small{color:var(--muted);font-size:.65rem}.location-section,.slots-section{margin-top:38px;animation:reveal .22s ease both}.field-label{display:block;margin-bottom:13px;color:var(--muted);font-size:.68rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.location-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.location-grid button{display:grid;grid-template-columns:auto 1fr;gap:5px 10px;padding:17px;border:1px solid var(--line);border-radius:3px;background:#fbfaf699;cursor:pointer;text-align:left;transition:border-color .16s ease,transform .16s ease}.location-grid button:hover{transform:translateY(-2px);border-color:var(--green)}.location-grid button.selected{border-color:var(--green);background:var(--paper)}.location-grid .selection-dot{grid-row:1 / 3;margin-top:1px}.location-grid strong{font-size:.8rem}.location-grid small{color:var(--muted);font-size:.68rem;line-height:1.4}.step-actions{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:42px;padding-top:22px;border-top:1px solid var(--line)}.button,.text-button{min-height:47px;border:0;cursor:pointer;font-weight:700}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:0 24px;border-radius:2px}.button.primary{background:var(--green);color:#fff}.button.primary:hover:not(:disabled){background:var(--green-dark)}.button.secondary{padding-inline:0;border-bottom:1px solid var(--green);background:transparent;color:var(--green)}.button:disabled{cursor:not-allowed;opacity:.38}.text-button{padding:0;background:transparent;color:var(--muted)}.day-strip{display:grid;grid-template-columns:repeat(7,minmax(90px,1fr));gap:7px;overflow-x:auto;padding-bottom:8px;scrollbar-width:thin}.day-strip button{display:grid;justify-items:start;min-width:92px;min-height:96px;padding:13px;border:1px solid var(--line);background:#fbfaf680;cursor:pointer;text-align:left}.day-strip button span{color:var(--muted);font-size:.63rem;text-transform:capitalize}.day-strip button strong{margin:5px 0 8px;font-family:Georgia,serif;font-size:1rem;font-weight:400;text-transform:capitalize}.day-strip button small{color:var(--green);font-size:.59rem}.day-strip button.selected{border-color:var(--green);background:var(--green);color:#fff}.day-strip button.selected span,.day-strip button.selected small{color:#ffffffc7}.day-strip button:disabled{opacity:.4;cursor:not-allowed}.slot-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.slot-grid button{min-height:45px;border:1px solid var(--line);background:var(--paper);cursor:pointer;font-size:.78rem;font-weight:700}.slot-grid button:hover,.slot-grid button.selected{border-color:var(--green);background:var(--green);color:#fff}.patient-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 18px}.patient-form label{display:grid;gap:8px}.patient-form label>span{color:var(--muted);font-size:.68rem;font-weight:700}.patient-form input:not([type=checkbox]){width:100%;height:49px;padding:0 13px;border:1px solid var(--line);border-radius:2px;outline:none;background:#fbfaf6bf;transition:border-color .16s ease,box-shadow .16s ease}.patient-form input:focus{border-color:var(--green);box-shadow:0 0 0 3px #315f591a}.privacy-check{grid-column:1 / -1;display:grid!important;grid-template-columns:auto 1fr;align-items:start;gap:10px!important;margin-top:6px}.privacy-check input{width:17px;height:17px;accent-color:var(--green)}.privacy-check span{font-weight:400!important;line-height:1.5}.patient-form .step-actions{grid-column:1 / -1}.booking-summary{position:sticky;top:26px;align-self:start;min-height:500px;padding:31px 29px;background:var(--green);color:#fff}.booking-summary .summary-kicker{color:#d9c0c5}.summary-number{position:absolute;right:22px;top:8px;color:#ffffff14;font-family:Georgia,serif;font-size:6.4rem;line-height:1}.booking-summary dl{position:relative;margin:52px 0 0}.booking-summary dl div{padding:17px 0;border-bottom:1px solid rgba(255,255,255,.16);animation:reveal .22s ease both}.booking-summary dt{margin-bottom:6px;color:#ffffff9e;font-size:.59rem;letter-spacing:.1em;text-transform:uppercase}.booking-summary dd{margin:0;font-family:Georgia,serif;font-size:.98rem;line-height:1.35;text-transform:capitalize}.booking-summary dd small{display:block;margin-top:5px;color:#ffffff9e;font-family:Inter,sans-serif;font-size:.61rem}.booking-summary .empty dd{color:#ffffff57}.booking-summary>p{margin:35px 0 0;color:#ffffff8f;font-size:.63rem;line-height:1.55}.loading-state,.empty-state{display:grid;place-items:center;min-height:260px;border-block:1px solid var(--line);text-align:center}.loading-state p,.empty-state p{margin:7px 0 0;color:var(--muted);font-size:.78rem}.empty-state.compact{min-height:150px;margin-top:28px}.loader{width:26px;height:26px;border:2px solid var(--sage);border-top-color:var(--green);border-radius:50%;animation:spin .7s linear infinite}.button-loader{width:15px;height:15px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.error-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:24px;padding:13px 16px;border-left:3px solid #a63d40;background:#f5e7e5;color:#793238;font-size:.75rem}.error-banner button{border:0;background:transparent;cursor:pointer;font-size:1.2rem}.confirmation-view{width:min(790px,calc(100% - 44px));margin:clamp(60px,10vw,120px) auto 110px;animation:step-enter .36s ease both}.confirmation-mark{display:grid;place-items:center;width:72px;height:72px;margin-bottom:30px;border-radius:50%;background:var(--green);color:#fff;font-size:1.8rem}.confirmation-lead{max-width:560px;color:var(--muted);line-height:1.6}.confirmation-details{margin:45px 0 32px;border-top:1px solid var(--line)}.confirmation-details div{display:grid;grid-template-columns:150px 1fr;gap:20px;padding:16px 0;border-bottom:1px solid var(--line)}.confirmation-details dt{color:var(--muted);font-size:.66rem;text-transform:uppercase}.confirmation-details dd{margin:0;font-size:.85rem}.booking-code{overflow-wrap:anywhere;font-family:ui-monospace,monospace;font-size:.72rem!important}.pin-reveal{display:grid;grid-template-columns:190px 1fr;align-items:center;gap:30px;margin:38px 0 8px;padding:26px 28px;background:var(--green);color:#fff}.pin-reveal>div{display:grid;gap:7px}.pin-reveal span{color:#ffffffab;font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.pin-reveal strong{font-family:ui-monospace,monospace;font-size:2rem;letter-spacing:.16em}.pin-reveal p{margin:0;color:#ffffffb8;font-size:.72rem;line-height:1.65}.pin-reveal p strong{color:#fff;font-family:inherit;font-size:inherit;letter-spacing:0}.account-reminder{margin:34px 0 8px;padding:20px 22px;border-left:3px solid var(--green);background:var(--sage)}.account-reminder p{margin:6px 0 0;color:var(--muted);font-size:.75rem;line-height:1.5}.confirmation-actions{display:flex;align-items:center;gap:28px}.auth-view{width:min(640px,calc(100% - 44px));min-height:calc(100vh - 165px);margin:clamp(56px,8vw,96px) auto 80px;animation:step-enter .3s ease both}.auth-view h1,.account-heading h1{margin:12px 0 14px;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.7rem,6vw,4.6rem);font-weight:400;line-height:.98;letter-spacing:-.055em}.auth-back{display:block;min-height:auto;margin-bottom:62px;font-size:.7rem}.login-form{display:grid;grid-template-columns:1fr 170px;gap:18px 14px;margin-top:38px;padding-top:27px;border-top:1px solid var(--line)}.login-form label{display:grid;gap:8px}.login-form label span{color:var(--muted);font-size:.68rem;font-weight:700}.login-form input{width:100%;height:50px;padding:0 13px;border:1px solid var(--line);border-radius:2px;outline:none;background:#fbfaf6c7}.login-form input:focus{border-color:var(--green);box-shadow:0 0 0 3px #315f591a}.pin-input{font-family:ui-monospace,monospace;font-size:1.1rem;letter-spacing:.16em}.login-form .button{grid-column:1 / -1;margin-top:6px}.forgot-link{grid-column:1 / -1;border:0;background:transparent;color:var(--muted);font-size:.67rem}.forgot-link:disabled{opacity:.55}.account-view{width:min(1080px,calc(100% - 44px));min-height:calc(100vh - 165px);margin:62px auto 100px;animation:step-enter .3s ease both}.account-heading{display:flex;align-items:end;justify-content:space-between;gap:40px;margin-bottom:64px}.account-heading h1{font-size:clamp(2.8rem,6vw,4.8rem)}.account-heading p{margin:0;color:var(--muted);font-size:.83rem;line-height:1.55}.section-heading{display:flex;align-items:center;justify-content:space-between;padding-bottom:13px;border-bottom:1px solid var(--ink);color:var(--muted);font-size:.66rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.section-heading strong{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--sage);color:var(--green);font-size:.65rem}.appointment-list{border-bottom:1px solid var(--line)}.appointment-row{display:grid;grid-template-columns:150px minmax(0,1fr) auto;align-items:center;gap:30px;min-height:132px;padding:22px 8px;border-bottom:1px solid var(--line)}.appointment-row:last-child{border-bottom:0}.appointment-row time{display:grid;gap:7px}.appointment-row time strong{font-family:Georgia,serif;font-size:1.05rem;font-weight:400;text-transform:capitalize}.appointment-row time span{color:var(--green);font-size:.78rem;font-weight:800}.appointment-copy h2,.reschedule-panel h2{margin:7px 0 5px;font-family:Georgia,serif;font-size:1.35rem;font-weight:400}.appointment-copy p{margin:0;color:var(--muted);font-size:.7rem}.status-label{color:var(--green);font-size:.58rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.status-label[data-status=cancelled]{color:var(--rose)}.appointment-actions{display:flex;gap:9px}.appointment-actions button{min-height:39px;padding:0 15px;border:1px solid var(--green);background:transparent;color:var(--green);cursor:pointer;font-size:.67rem;font-weight:750}.appointment-actions .danger-action{border-color:transparent;color:var(--rose)}.appointment-actions button:disabled{cursor:wait;opacity:.45}.history-section{margin-top:68px}.history-list{opacity:.72}.history-list .appointment-row{grid-template-columns:150px minmax(0,1fr);min-height:110px}.reschedule-panel{animation:reveal .22s ease both}.reschedule-panel>.text-button{min-height:auto;margin-bottom:42px;font-size:.7rem}.reschedule-panel>h2{margin-top:12px;font-size:clamp(2.2rem,5vw,3.8rem)}.reschedule-panel>p{margin:0 0 35px;color:var(--muted);font-size:.82rem}.site-footer{display:flex;justify-content:space-between;padding:25px clamp(22px,5vw,76px);border-top:1px solid rgba(49,95,89,.14);color:var(--muted);font-size:.62rem}@keyframes step-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes reveal{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:900px){.booking-layout{grid-template-columns:minmax(0,1fr);margin-top:42px}.booking-summary{position:relative;top:auto;min-height:auto;order:-1;padding:18px 20px}.summary-number,.booking-summary .summary-kicker,.booking-summary>p{display:none}.booking-summary dl{display:flex;gap:20px;margin:0;overflow-x:auto}.booking-summary dl div{flex:0 0 auto;min-width:130px;padding:5px 16px 5px 0;border:0;border-right:1px solid rgba(255,255,255,.16)}.booking-summary dl div:last-child{border-right:0}.booking-summary dd{font-family:Inter,sans-serif;font-size:.75rem}.slot-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.appointment-row{grid-template-columns:120px minmax(0,1fr)}.appointment-actions{grid-column:2}}@media(max-width:620px){:root{--mobile-gutter: 18px}body{min-height:100svh}.site-shell{display:flex;min-height:100svh;overflow-x:clip;flex-direction:column}.site-shell:before{top:80px;right:-260px;width:520px;height:520px}.site-header{position:sticky;z-index:20;top:0;height:68px;padding-inline:var(--mobile-gutter);background:#f4f0e8f0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.brand{gap:9px}.brand-mark{width:34px;height:34px;font-size:1rem}.brand strong{font-size:.79rem}.brand small{font-size:.52rem}.header-note{display:none}.header-actions{gap:12px}.header-link{min-height:44px;padding:0}.step-navigation{display:flex;width:calc(100% - (var(--mobile-gutter) * 2));margin-top:12px;overflow:hidden}.step-navigation button{flex:0 0 39px;justify-content:center;gap:7px;min-width:0;min-height:48px;padding:10px 0 11px;font-size:0;white-space:nowrap;transition:flex .22s ease,color .18s ease}.step-navigation button span{font-size:.62rem}.step-navigation button.active{flex:1 1 auto;justify-content:flex-start;padding-inline:8px;font-size:.68rem}.booking-layout{grid-template-columns:minmax(0,1fr);width:calc(100% - (var(--mobile-gutter) * 2));gap:24px;margin:28px auto 44px}.booking-workspace,.step-panel{width:100%;min-width:0}.step-panel h1{max-width:100%;margin-top:10px;font-size:clamp(2.45rem,12.7vw,3.25rem);line-height:.94;overflow-wrap:break-word}.step-intro{max-width:none;margin-bottom:28px;font-size:.86rem;line-height:1.55}.choice-row{grid-template-columns:auto minmax(0,1fr);gap:13px;min-width:0;min-height:86px;padding:15px 4px}.choice-row:hover{padding-inline:4px;background:transparent}.choice-row.selected,.choice-row.selected:hover{background:var(--paper)}.choice-copy small{white-space:normal}.choice-arrow{display:none}.service-row{grid-template-columns:auto minmax(0,1fr)}.service-meta{grid-column:2;grid-template-columns:auto auto;justify-items:start;align-items:baseline;gap:10px;min-width:0}.service-meta strong{font-size:.82rem}.location-section,.slots-section{margin-top:30px}.location-grid,.patient-form{grid-template-columns:1fr}.location-grid button{min-height:76px;padding:15px}.privacy-check,.patient-form .step-actions{grid-column:1}.day-strip{display:flex;width:calc(100% + var(--mobile-gutter));margin-right:calc(var(--mobile-gutter) * -1);scroll-snap-type:x mandatory;scroll-padding-inline:0 var(--mobile-gutter)}.day-strip button{flex:0 0 104px;min-width:104px;min-height:104px;scroll-snap-align:start}.slot-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.slot-grid button{min-height:50px}.step-actions{position:sticky;z-index:10;bottom:0;display:grid;grid-template-columns:minmax(92px,auto) minmax(0,1fr);align-items:center;gap:12px;margin:34px calc(var(--mobile-gutter) * -1) -12px;padding:12px var(--mobile-gutter) calc(12px + env(safe-area-inset-bottom));border-top-color:#315f592e;background:#f4f0e8f5;box-shadow:0 -12px 28px #1c292512;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.step-actions .button{width:100%;min-height:50px}.step-actions .text-button{min-height:48px;text-align:left}.booking-summary{display:flex;align-items:center;gap:16px;width:100%;max-width:100%;padding:13px 16px;overflow:hidden}.booking-summary .summary-kicker{display:block;flex:0 0 auto;color:#ffffff94}.booking-summary dl{display:block;min-width:0;max-width:100%;margin:0;overflow:hidden}.booking-summary dl div{display:none;min-width:0;padding:0 0 0 16px;border:0;border-left:1px solid rgba(255,255,255,.18)}.booking-summary dl div:not(.empty):not(:has(~div:not(.empty))){display:block}.booking-summary dt{margin-bottom:4px}.booking-summary dd,.booking-summary dd small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.confirmation-details div{grid-template-columns:1fr;gap:6px}.confirmation-view,.auth-view{width:calc(100% - (var(--mobile-gutter) * 2))}.confirmation-view{margin-top:42px}.confirmation-view h1,.auth-view h1{font-size:clamp(2.5rem,12vw,3.35rem)}.confirmation-mark{width:60px;height:60px;margin-bottom:24px}.pin-reveal{grid-template-columns:1fr;gap:18px;padding:22px 20px}.confirmation-actions,.account-heading{align-items:stretch;flex-direction:column}.confirmation-actions .button,.account-heading .button{width:100%}.confirmation-actions{gap:14px}.auth-view{min-height:auto;margin-top:34px}.auth-back{margin-bottom:42px}.login-form{grid-template-columns:1fr}.login-form .button,.forgot-link{grid-column:1}.login-form input,.patient-form input:not([type=checkbox]){height:52px;font-size:1rem}.account-view{width:calc(100% - (var(--mobile-gutter) * 2));margin-top:36px}.account-heading{gap:28px;margin-bottom:45px}.appointment-row,.history-list .appointment-row{grid-template-columns:1fr;gap:16px;padding:26px 4px}.appointment-actions{grid-column:1}.appointment-actions button{flex:1;min-height:48px}.reschedule-panel .step-actions{margin-inline:calc(var(--mobile-gutter) * -1)}.site-footer{margin-top:auto;padding:22px var(--mobile-gutter)}.site-footer{align-items:flex-start;flex-direction:column;gap:8px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
