.booking-dialog{width:min(900px,calc(100vw - 32px));max-width:none;max-height:min(92vh,1000px);padding:0;border:1px solid #eadfc7;border-radius:26px;background:#fffdf8;color:#352417;box-shadow:0 28px 100px #150b08a8;overflow:visible}
.booking-dialog::backdrop{background:#120d0bcc;backdrop-filter:blur(7px)}
.booking-dialog-shell{position:relative;max-height:min(92vh,1000px);overflow:auto;padding:clamp(24px,5vw,58px)}
.booking-dialog-close{position:sticky;top:0;float:right;display:grid;width:46px;height:46px;margin:-18px -18px 0 0;place-items:center;border:1px solid #ead291;border-radius:50%;background:#fff9e8;color:#916b18;font-size:30px;line-height:1;cursor:pointer}
.booking-dialog-heading{max-width:760px;margin:0 auto 34px;text-align:center}
.booking-dialog-heading .eyebrow{margin:10px 0;color:#9c711c;font:700 14px var(--serif);letter-spacing:.04em;text-transform:none}
.booking-dialog-heading h2{margin:10px 0 12px;color:#392312;font:600 clamp(30px,5vw,50px)/1.1 var(--serif)}
.booking-dialog-heading>p:last-child{margin:0;color:#776958;font-size:15px}
.booking-form{display:grid;gap:20px}
.booking-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 26px}
.booking-form-grid>label{display:grid;align-content:start;gap:8px;color:#303949;font-size:14px;font-weight:600;letter-spacing:.02em}
.booking-form-grid>label[hidden]{display:none}
.booking-day-status{display:block;min-height:1.4em;color:#7b6a52;font-size:11px;font-weight:500;letter-spacing:0;line-height:1.4}
.booking-day-status.is-open{color:#287145}
.booking-day-status.is-closed,.booking-day-status.is-error{color:#a13d32}
.booking-date-field{grid-column:1/-1;display:grid;gap:9px;min-width:0;margin:0;padding:0;border:0}
.booking-date-field legend{margin-bottom:2px;padding:0;color:#303949;font-size:14px;font-weight:600;letter-spacing:.02em}
.booking-calendar-heading{display:grid;grid-template-columns:42px 1fr 42px;align-items:center;gap:8px;min-height:42px}
.booking-calendar-heading strong{color:#493a2b;text-align:center;font:600 15px/1.2 var(--serif);text-transform:capitalize}
.booking-calendar-nav{display:grid;width:42px;height:42px;place-items:center;border:1px solid #eadfc7;border-radius:12px;background:#fff;color:#916b18;font:500 26px/1 var(--sans);cursor:pointer;transition:background .18s,border-color .18s,transform .18s}
.booking-calendar-nav:hover:not(:disabled){transform:translateY(-1px);border-color:#c49b37;background:#fff9e8}
.booking-calendar-nav:disabled{opacity:.35;cursor:not-allowed}
.booking-calendar-weekdays,.booking-calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.booking-calendar-weekdays span{padding:2px 0;color:#8d806e;text-align:center;font-size:10px;font-weight:700}
.booking-calendar-day{display:flex;min-width:0;min-height:64px;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:5px 1px;border:1px solid #eee6d7;border-radius:10px;background:#fff;color:#493a2b;cursor:pointer;transition:transform .16s,border-color .16s,background .16s,box-shadow .16s}
.booking-calendar-day:hover:not(:disabled){transform:translateY(-1px);border-color:#c49b37;box-shadow:0 3px 9px #755a1212}
.booking-calendar-day:focus-visible,.booking-calendar-nav:focus-visible{outline:3px solid #d8b44688;outline-offset:2px}
.booking-calendar-number{font-size:13px;font-weight:700;line-height:1}
.booking-calendar-day-state{display:flex;max-width:100%;align-items:center;gap:3px;overflow:hidden;color:#756b5c;font-size:8px;font-weight:600;line-height:1.1;white-space:nowrap}
.booking-calendar-day-state:before,.booking-calendar-legend i{width:6px;height:6px;flex:0 0 auto;border-radius:50%;background:#a3a3a3;content:""}
.booking-calendar-day.is-open .booking-calendar-day-state:before,.booking-calendar-legend .is-open i{background:#32885a}
.booking-calendar-day.is-closed .booking-calendar-day-state:before,.booking-calendar-legend .is-closed i{background:#bf5749}
.booking-calendar-day.is-full .booking-calendar-day-state:before,.booking-calendar-legend .is-full i{background:#ba8a27}
.booking-calendar-day.is-open{background:#f5fbf5;border-color:#d8ead9}
.booking-calendar-day.is-closed{background:#fff7f4;border-color:#f0d9d4}
.booking-calendar-day.is-full{background:#fffaf0;border-color:#f0e2bc}
.booking-calendar-day.is-outside{opacity:.58}
.booking-calendar-day.is-selected{border:2px solid #b58a28;background:#f8edcb;box-shadow:0 0 0 2px #d7b24a2b}
.booking-calendar-day:disabled{cursor:not-allowed;opacity:.36}
.booking-calendar-legend{display:flex;flex-wrap:wrap;gap:14px;color:#756b5c;font-size:10px}
.booking-calendar-legend span{display:inline-flex;align-items:center;gap:5px}
.booking-calendar-loading,.booking-calendar-error{grid-column:1/-1;min-height:130px;display:grid;place-items:center;margin:0;padding:18px;color:#82745f;text-align:center;font-size:12px}
.booking-calendar-error{color:#a13d32}
.booking-form-grid input,.booking-form-grid select,.booking-form-grid textarea{width:100%;min-height:52px;padding:11px 14px;border:1px solid #e6d68f;border-radius:9px;background:#fff;color:#493a2b;font:400 16px/1.4 var(--sans);box-shadow:0 2px 5px #755a120a}
.booking-form-grid textarea{min-height:86px;resize:vertical}
.booking-form-grid input:focus,.booking-form-grid select:focus,.booking-form-grid textarea:focus{border-color:#b98b25;outline:3px solid #d9b84d30}
.booking-form-grid input:disabled,.booking-form-grid select:disabled,.booking-form-grid textarea:disabled{background:#f6f1e7;color:#7c7060}
.booking-time-field,.booking-note-field{grid-column:1/-1}
.booking-status{margin:0;padding:12px 14px;border-radius:9px;background:#f8f1df;color:#70551a;font-size:13px}
.booking-staff-status{grid-column:1/-1;margin:-12px 0 0;color:#776958;font-size:13px}
.booking-staff-status.is-error{color:#9a3f2e}
.booking-practitioner-choice{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px;margin:0;padding:0;border:0}
.booking-practitioner-choice[hidden],.booking-practitioner-choice [hidden]{display:none!important}
.booking-practitioner-choice legend{grid-column:1/-1;padding:0;color:#303949;font-size:14px;font-weight:600;letter-spacing:.02em}
.booking-practitioner-choice>label{display:grid;align-content:start;gap:8px;color:#303949;font-size:14px;font-weight:600;letter-spacing:.02em}
.booking-practitioner-choice small{grid-column:1/-1;color:#776958;font-size:13px}
.booking-status.is-success{background:#e8f5eb;color:#2c6840}
.booking-consent{display:flex;align-items:flex-start;gap:9px;color:#665b4d;font-size:12px;line-height:1.55}
.booking-consent input{width:17px;height:17px;margin:2px 0 0;accent-color:#ad8122;flex:0 0 auto}
.booking-consent a{color:#866116;text-decoration:underline}
.booking-submit{justify-self:start;min-height:52px;padding-inline:26px}
.booking-submit:disabled{opacity:.55;cursor:not-allowed;transform:none}
.booking-unavailable{text-align:center;padding:18px;color:#675b4d}
.booking-unavailable .button{margin-top:10px}
@media(max-width:600px){.booking-dialog{width:calc(100vw - 18px);max-height:94vh;border-radius:18px}.booking-dialog-shell{max-height:94vh;padding:23px 18px}.booking-dialog-close{width:40px;height:40px;margin:-10px -8px 0 0}.booking-dialog-heading{margin-bottom:24px}.booking-dialog-heading h2{font-size:32px}.booking-form-grid{grid-template-columns:1fr;gap:15px}.booking-date-field,.booking-practitioner-choice{grid-column:1}.booking-practitioner-choice{grid-template-columns:1fr}.booking-time-field,.booking-note-field{grid-column:1}.booking-submit{width:100%}.booking-calendar-weekdays,.booking-calendar-days{gap:4px}.booking-calendar-day{min-height:53px;border-radius:8px}.booking-calendar-day-state{font-size:7px}.booking-calendar-legend{gap:10px}}
