: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: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){.site-header{height:74px}.header-note{display:none}.header-actions{gap:12px}.step-navigation{width:calc(100% - 28px);margin-top:18px}.step-navigation button{justify-content:center;padding-bottom:12px;font-size:0}.step-navigation button span{font-size:.65rem}.booking-layout{width:calc(100% - 28px);gap:32px;margin:34px auto 60px}.step-panel h1{font-size:clamp(2.35rem,13vw,3.5rem)}.step-intro{margin-bottom:32px}.choice-row{grid-template-columns:auto minmax(0,1fr);gap:13px;padding-inline:4px}.choice-arrow{display:none}.service-row{grid-template-columns:auto minmax(0,1fr)}.service-meta{grid-column:2;justify-items:start;grid-template-columns:auto auto;align-items:baseline}.location-grid,.patient-form{grid-template-columns:1fr}.privacy-check,.patient-form .step-actions{grid-column:1}.slot-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.step-actions{align-items:stretch;flex-direction:column-reverse}.step-actions .button{width:100%}.confirmation-details div{grid-template-columns:1fr;gap:6px}.pin-reveal{grid-template-columns:1fr;gap:18px}.confirmation-actions,.account-heading{align-items:stretch;flex-direction:column}.confirmation-actions .button,.account-heading .button{width:100%}.login-form{grid-template-columns:1fr}.login-form .button,.forgot-link{grid-column:1}.account-view{width:calc(100% - 28px);margin-top:42px}.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}.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}}
