/* Private confirmation management uses the same controls as the booking flow. */
.confirmation-management { border-top:1px solid var(--line); margin-top:2rem; padding-top:2rem; }
.booking-shell:has(#confirmation-view) { grid-template-columns:minmax(0,1fr); }
.confirmation-management { grid-column:1/-1; }
.confirmation-management h2,.confirmation-manage-dialog h2 { font:600 clamp(1.7rem,5vw,2.4rem)/1.1 var(--font-display); margin-bottom:.8rem; }
.confirmation-management>p,.confirmation-manage-dialog p { color:var(--text-soft); }
.confirmation-manage-dialog { width:min(92vw,570px); max-height:90svh; margin:auto; padding:clamp(1.25rem,4vw,2rem); overflow:auto; border:1px solid var(--line); border-radius:18px; background:var(--paper); color:var(--text); }
.confirmation-manage-dialog::backdrop { background:rgba(35,24,34,.55); backdrop-filter:blur(4px); }
.confirmation-manage-dialog .form-grid { display:grid; gap:1rem; margin-top:1rem; }
.confirmation-manage-dialog label { display:grid; gap:.4rem; font:600 .9rem var(--font-body); }
.confirmation-manage-dialog input,.confirmation-manage-dialog select { width:100%; min-width:0; min-height:48px; padding:.75rem; border:1px solid var(--line); border-radius:12px; background:#fff; color:var(--text); font:400 1rem var(--font-body); }
.confirmation-manage-dialog .form-message { min-height:1.7em; margin-top:1rem; }
.confirmation-manage-dialog button { min-height:44px; }
.booking-shell{max-width:980px;margin:auto;padding:5rem 1.25rem 7rem}
.booking-layout{display:grid;gap:2rem}
.booking-panel{background:var(--blush);border:1px solid var(--line);border-radius:20px;padding:clamp(1.35rem,4vw,3rem);box-shadow:var(--shadow-soft)}
.booking-intro{max-width:680px;margin-bottom:2.5rem}
.booking-intro h1{font:500 clamp(3rem,8vw,6rem)/.88 var(--font-display);letter-spacing:-.06em;margin:.75rem 0 1.25rem}
.form-grid{display:grid;gap:1.25rem}
.form-grid label,.auth-card label{display:grid;gap:.45rem;font:600 11px var(--font-body);letter-spacing:.04em;text-transform:uppercase}
.form-grid input,.form-grid select,.form-grid textarea,.auth-card input,.portal-toolbar input,.booking-actions select{width:100%;min-height:50px;border:1px solid var(--line);background:var(--paper);color:var(--text);padding:.8rem;font:500 16px var(--font-body);border-radius:8px}
.form-grid textarea{min-height:110px;resize:vertical}
.field-help{color:var(--text-soft);font-size:.88rem}
.required{color:var(--rose-deep)}
.time-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}
.time-chip{min-height:48px;border:1px solid #e9cbd3;border-radius:9px;background:var(--white);color:var(--text);cursor:pointer;font:600 13px var(--font-body)}
.time-chip:hover,.time-chip.is-selected{background:var(--ink);border-color:var(--ink);color:var(--white)}
.form-message{padding:.9rem;background:var(--petal);margin:1rem 0;border-radius:10px}
.form-message.error{background:#f7dcda;color:#7f1d1d}
.summary-list{display:grid;border-top:1px solid var(--line);margin:1.5rem 0}
.summary-list>div{display:grid;grid-template-columns:minmax(110px,.7fr) 1.3fr;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line)}
.summary-list dt{color:var(--text-muted);font:500 10px var(--font-body);letter-spacing:.04em;text-transform:uppercase}
.summary-list dd{font-weight:600}
.confirmation-mark{font-size:3rem;color:var(--rose-deep)}
.confirmation-details{max-width:700px}
.screenshot-prompt{display:grid;gap:.2rem;background:var(--cocoa);color:var(--white);padding:1rem 1.2rem;margin:1.5rem 0}
.screenshot-prompt span{color:var(--petal);font-size:.9rem}
.receipt-note{font-size:.85rem;color:var(--text-muted)}
.setup-panel,.auth-card{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:clamp(1.5rem,4vw,3rem);max-width:680px}
.auth-card{display:grid;gap:1.2rem}
.auth-card h2,.setup-panel h2,.portal-toolbar h2{font:500 clamp(2rem,5vw,3.5rem)/1 var(--font-display);margin-bottom:.8rem}
.portal-toolbar{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:2rem}
.portal-toolbar input{max-width:360px}
.filter-row{display:flex;flex-wrap:wrap;gap:.5rem}
.filter-row input,.filter-row select{min-height:46px;border:1px solid var(--line);border-radius:8px;background:var(--white);padding:.7rem;font:500 14px var(--font-body)}
.booking-list{display:grid;gap:1rem}
.booking-record{display:flex;justify-content:space-between;gap:1.5rem;align-items:flex-start;background:var(--white);border:1px solid var(--line);border-radius:14px;padding:1.4rem}
.booking-record h3{font:600 1.45rem var(--font-display);margin:.2rem 0}
.booking-record p{color:var(--text-soft);font-size:.86rem}
.booking-ref{font:600 10px var(--font-body)!important;color:var(--rose-deep)!important}
.booking-actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}
.booking-actions .btn{min-height:40px;padding:.55rem .75rem;font-size:9px}
.status-pill{padding:.55rem .8rem;background:var(--petal);font:600 10px var(--font-body);text-transform:uppercase}
.portal-links{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.5rem}
.admin-settings{margin-top:4rem}
.settings-panel{max-width:none}
.hours-grid,.service-settings{display:grid;gap:.6rem;margin-top:1rem}
.hours-row{display:grid;grid-template-columns:minmax(150px,1fr) 130px auto 130px;align-items:center;gap:.7rem;padding:.6rem 0;border-bottom:1px solid var(--soft-line)}
.hours-row label{display:flex;grid-auto-flow:column;justify-content:start;align-items:center}
.hours-row label input{width:auto;min-height:auto}
.hours-row input{min-height:44px}
.reschedule-control{display:grid;gap:.25rem;color:var(--text-muted);font-size:9px;font-weight:600;text-transform:uppercase}
.reschedule-control input{min-height:40px;max-width:170px;padding:.45rem;border:1px solid var(--line);background:var(--paper);font:500 14px var(--font-body);color:var(--text)}
.booking-actions [data-reschedule-message]{flex-basis:100%;margin:0}
.form-message[hidden]{display:none}
@media(min-width:700px){.form-grid{grid-template-columns:1fr 1fr}.form-field--full{grid-column:1/-1}.time-slots{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:699px){.booking-shell{padding:2.5rem 1rem 5rem}.booking-record,.portal-toolbar{align-items:stretch;flex-direction:column}.booking-actions{justify-content:flex-start}.booking-actions>*{flex:1}.booking-actions .reschedule-control{flex:1 1 42%}.booking-actions .reschedule-control input{max-width:100%;width:100%}.booking-actions select{max-width:none}.summary-list>div{grid-template-columns:1fr;gap:.25rem}.hours-row{grid-template-columns:1fr 1fr}.hours-row label{grid-column:1/-1}.booking-record{padding:1rem}}
@media print{.site-header,.site-footer,.mobile-book-bar,.mockup-banner,.btn-row{display:none!important}.booking-shell{padding:0}.booking-panel{border:0;box-shadow:none}}

/* Customer booking palette: ivory surfaces, soft rose panels, and clear pink actions. */
.booking-page{
  --cocoa:#764856;--rose:#bd7188;--rose-light:#edc8d3;--rose-deep:#963f5b;
  --petal:#fff0f4;--blush:#fffbfc;--paper:#fffefe;--ink:#98445f;
  --line:#ead7de;--soft-line:#f2e5e9;--text:#362b32;--text-soft:#66565e;--text-muted:#82747a;
  --shadow-soft:0 16px 42px rgba(92,49,64,.075);
  background:#fffefe;color:var(--text);
}
.booking-page .site-header{background:rgba(255,254,254,.97);border-bottom:1px solid #f0e5e9}
.booking-page .header-cta,
.booking-page .booking-shell .btn--primary{background:var(--ink);border-color:var(--ink);color:#fff}
.booking-page .header-cta:hover,
.booking-page .booking-shell .btn--primary:hover{background:#7d334c;border-color:#7d334c;color:#fff}
.booking-page .booking-panel{background:#fff;border-color:#eddee3;border-radius:16px;box-shadow:0 18px 46px rgba(92,49,64,.075)}
.booking-page .booking-progress li.is-current{border-color:var(--rose)}
.booking-page .booking-progress li.is-current::before{background:var(--petal);border-color:var(--rose);color:#753249}
.booking-page .booking-progress li::before{background:#fff;border-color:#ecd8df;color:#856d77}
.booking-page .service-choice{background:#fff;border-color:#efdbe2}
.booking-page .service-choice:hover,
.booking-page .service-choice.is-selected{background:#fff4f7;border-color:#bd7188;box-shadow:inset 0 0 0 1px #bd7188;color:#382b32}
.booking-page .service-choice small{color:#71616a}
.booking-page .time-chip{background:#fff;border-color:#ead7de;color:#46343c}
.booking-page .time-chip:hover,
.booking-page .time-chip.is-selected{background:#98445f;border-color:#98445f;color:#fff}
.booking-page .form-grid input:focus,
.booking-page .form-grid select:focus,
.booking-page .form-grid textarea:focus{border-color:#bd7188;box-shadow:0 0 0 3px rgba(189,113,136,.16);outline:none}
.booking-page .booking-shell .btn--secondary{background:#fff;border-color:#d6acb9;color:#80374f}
.booking-page .booking-shell .btn--secondary:hover{background:#fff4f7;border-color:#bd7188;color:#723047}
.booking-page .site-footer{background:#fcf5f7;color:#44353c;border-top:1px solid #eddee3}
.booking-page .site-footer .footer__bottom{border-color:#eddee3}
.booking-page .site-footer a,
.booking-page .site-footer .notification-settings-link{color:#893d56}
.booking-page .site-footer p,
.booking-page .site-footer .footer__bottom{color:#74656d}
.booking-page .screenshot-prompt{background:#fff0f4;border:1px solid #ead7de;color:#362b32;border-radius:10px}
.booking-page .screenshot-prompt span{color:#66565e}
.service-choice-heading{grid-column:1/-1;margin:1.25rem 0 -.2rem;color:#70545f;font:600 10px var(--font-body);letter-spacing:.15em;text-transform:uppercase}
.service-choice-subgrid,.service-fill-grid{display:grid;grid-template-columns:1fr;gap:.7rem}
.service-choice-subgrid,.service-fill-grid{grid-column:1/-1}
.service-choice-section{grid-column:1/-1}
.service-choice-section[hidden]{display:none}
.service-kind-switch{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;margin:0 0 .35rem;border-bottom:1px solid #eee0e5}
.service-kind-switch button{min-height:46px;border:0;border-bottom:2px solid transparent;background:#fff;color:#79646e;font:600 12px var(--font-body);letter-spacing:.04em;cursor:pointer}
.service-kind-switch button.is-selected{background:#fff8fa;border-bottom-color:#98445f;color:#80374f}
.service-choice-price{color:#893d56;white-space:nowrap;font:500 14px var(--font-body)}
.service-fill-family{padding:1rem;background:#fffdfd;border:1px solid #eee1e5;border-radius:12px}
.service-fill-family h4{font:600 1.2rem var(--font-display);color:#382d33;text-transform:capitalize}
.service-fill-family>.field-help{margin:.2rem 0 .75rem}
.service-fill-options{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}
.service-fill-options .service-choice{min-height:92px;padding:.75rem .8rem;font-size:13px;flex-direction:column;align-items:flex-start;gap:.5rem}
.service-fill-options .service-choice small{font-size:11px}
.wispy-addon-field{grid-column:1/-1;margin-top:.2rem}
.wispy-addon{display:flex;align-items:center;gap:.75rem;width:100%;padding:.85rem 1rem;border:1px solid #eee0e5;border-radius:12px;background:#fffdfd;color:#382d33;cursor:pointer}
.wispy-addon input{width:20px;height:20px;min-height:0;accent-color:#98445f}
.wispy-addon span{display:grid;gap:.1rem}
.wispy-addon small{font-size:12px;font-weight:400;color:#71616a}
.booking-page .wispy-addon{background:#fffdfd;border-color:#eee0e5}
@media(min-width:600px){.service-choice-subgrid{grid-template-columns:1fr 1fr}.service-fill-grid{grid-template-columns:1fr 1fr}}

/* Date selection and live appointment recap */
.booking-page .booking-selection{
  margin:0 0 1.8rem;
  padding:1.05rem 1.15rem;
  border:1px solid #efdce2;
  border-radius:13px;
  background:linear-gradient(115deg,#fff8fa 0%,#fff 78%);
  color:#46343c;
}
.booking-page .booking-selection__empty{
  color:#796770;
  font-size:.84rem;
  line-height:1.55;
}
.booking-page .booking-selection__eyebrow{
  margin:0 0 .8rem;
  color:#963f5b;
  font:600 9px/1.3 var(--font-body);
  letter-spacing:.16em;
  text-transform:uppercase;
}
.booking-page .booking-selection__grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:.7rem;
}
.booking-page .booking-selection__item{
  min-width:0;
  padding:.65rem .75rem;
  border-left:2px solid #e9bdca;
  background:rgba(255,255,255,.8);
}
.booking-page .booking-selection__item small{
  display:block;
  margin-bottom:.25rem;
  color:#82717a;
  font:600 9px/1.35 var(--font-body);
  letter-spacing:.09em;
  text-transform:uppercase;
}
.booking-page .booking-selection__item strong{
  display:block;
  overflow-wrap:anywhere;
  color:#49343d;
  font:600 13px/1.35 var(--font-body);
}
.booking-page .booking-selection > small{
  display:block;
  margin-top:.75rem;
  color:#786871;
  font:500 11px/1.45 var(--font-body);
}
.booking-page .booking-date-field{
  min-width:0;
  padding:clamp(.9rem,2.5vw,1.25rem);
  border:1px solid #f0dfe4;
  border-radius:14px;
  background:#fffafb;
}
.booking-page .booking-date-field__heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:.8rem 1rem;
  margin-bottom:1rem;
}
.booking-page .booking-date-field__heading .field-help{margin:0}
.booking-page .date-window-tools{
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.55rem;
  color:#795e69;
  font:600 10px/1.3 var(--font-body);
}
.booking-page .date-window-tools span{
  min-width:0;
  text-align:center;
}
.booking-page .date-window-tools button{
  min-width:44px;
  min-height:42px;
  padding:.55rem .65rem;
  border:1px solid #ead2da;
  border-radius:9px;
  background:#fff;
  color:#80374f;
  cursor:pointer;
  font:600 10px/1.2 var(--font-body);
  transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease;
}
.booking-page .date-window-tools button:hover:not(:disabled){
  transform:translateY(-1px);
  border-color:#bd7188;
  background:#fff2f6;
}
.booking-page .date-window-tools button:disabled{
  opacity:.48;
  cursor:not-allowed;
}
.booking-page .date-quick-picks{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,58px),1fr));
  gap:.55rem;
}
.booking-page .date-choice{
  min-width:0;
  min-height:88px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:.12rem;
  padding:.55rem .25rem;
  border:1px solid #ecd8df;
  border-radius:11px;
  background:#fff;
  color:#49343d;
  cursor:pointer;
  text-align:center;
  -webkit-tap-highlight-color:transparent;
  transition:background .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.booking-page .date-choice span{
  color:#806c76;
  font:600 9px/1.2 var(--font-body);
  letter-spacing:.08em;
  text-transform:uppercase;
}
.booking-page .date-choice strong{
  color:#49343d;
  font:600 23px/.98 var(--font-display);
}
.booking-page .date-choice small{
  color:#806c76;
  font:500 9px/1.2 var(--font-body);
  text-transform:uppercase;
}
.booking-page .date-choice:hover{
  transform:translateY(-2px);
  border-color:#c98298;
  background:#fff6f8;
}
.booking-page .date-choice.is-selected,
.booking-page .date-choice[aria-pressed="true"]{
  border-color:#98445f;
  background:#98445f;
  color:#fff;
  box-shadow:0 3px 0 rgba(152,68,95,.12);
}
.booking-page .date-choice.is-selected span,
.booking-page .date-choice.is-selected strong,
.booking-page .date-choice.is-selected small,
.booking-page .date-choice[aria-pressed="true"] span,
.booking-page .date-choice[aria-pressed="true"] strong,
.booking-page .date-choice[aria-pressed="true"] small{color:#fff}
.booking-page .date-choice:active,
.booking-page .date-window-tools button:active:not(:disabled){
  transform:scale(.97);
}
.booking-page .date-manual-label{
  display:grid;
  gap:.5rem;
  margin-top:1rem;
  color:#66545e;
  font:600 10px/1.4 var(--font-body);
  letter-spacing:.07em;
  text-transform:uppercase;
}
.booking-page .date-manual-label input{
  width:100%;
  min-height:50px;
  padding:.7rem .8rem;
  border:1px solid #ead2da;
  border-radius:9px;
  background:#fff;
  color:#49343d;
  font:500 15px var(--font-body);
  text-transform:none;
}
.booking-page .date-manual-label input:focus-visible,
.booking-page .date-window-tools button:focus-visible,
.booking-page .date-choice:focus-visible{
  outline:3px solid rgba(189,113,136,.42);
  outline-offset:3px;
}
.booking-page .time-slots .field-help{
  grid-column:1/-1;
  padding:.75rem .85rem;
  border:1px dashed #e8cbd5;
  border-radius:9px;
  background:#fff9fb;
}
@media(max-width:560px){
  .booking-page .booking-selection__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}
  .booking-page .booking-selection__item:first-child{grid-column:1/-1}
  .booking-page .booking-selection__item{padding:.55rem .5rem}
  .booking-page .booking-selection__item strong{font-size:12px}
  .booking-page .booking-date-field{padding:.8rem}
  .booking-page .booking-date-field__heading{align-items:flex-start}
  .booking-page .date-window-tools{width:100%;justify-content:space-between}
  .booking-page .date-window-tools span{flex:1}
  .booking-page .date-quick-picks{grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem}
  .booking-page .date-choice{min-height:82px}
}
@media(max-width:360px){
  .booking-page .booking-selection{padding:.85rem}
  .booking-page .booking-selection__grid{grid-template-columns:1fr}
  .booking-page .booking-selection__item{display:grid;grid-template-columns:4.5rem minmax(0,1fr);align-items:center;gap:.5rem}
  .booking-page .booking-selection__item:first-child small:last-child{grid-column:1/-1}
  .booking-page .booking-selection__item small{margin:0}
  .booking-page .date-quick-picks{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(prefers-reduced-motion:reduce){
  .booking-page .date-choice,
  .booking-page .date-window-tools button{transition:none}
}
.booking-page .service-choice,.booking-page .time-chip{
  transition:transform .18s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.booking-page .service-choice:hover{transform:translateY(-2px)}
.booking-page .service-choice:active,.booking-page .time-chip:active{transform:scale(.98)}
.booking-page .service-choice:focus-visible,.booking-page .time-chip:focus-visible{
  outline:3px solid rgba(189,113,136,.42);outline-offset:3px;
}
.booking-step:not([hidden]){animation:booking-step-enter .25s ease both}
@keyframes booking-step-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
  .booking-page .service-choice,.booking-page .time-chip{transition:none}
  .booking-step:not([hidden]){animation:none}
}

/* Calendar-led, phone-first booking controls */
.booking-page .booking-shell,
.booking-page .booking-panel,
.booking-page #booking-form,
.booking-page #booking-fields,
.booking-page .booking-step,
.booking-page .form-grid,
.booking-page .form-field--full { min-width:0; max-width:100%; }
.booking-page .booking-shell { width:min(100%, 1040px); padding:clamp(2rem,6vw,5rem) clamp(.75rem,3vw,1.5rem) 6rem; }
.booking-page .booking-intro { margin-inline:auto; max-width:760px; }
.booking-page .booking-intro h1 { overflow-wrap:anywhere; }
.booking-page .booking-panel { padding:clamp(1rem,4vw,2.6rem); }
.booking-page .booking-progress { margin-bottom:1.8rem; }
.booking-page .booking-progress ol { grid-template-columns:repeat(4,minmax(0,1fr)); }
.booking-page .booking-progress li { min-width:0; transition:color .2s ease,border-color .2s ease; }
.booking-page .booking-progress li strong { line-height:1.25; }
.booking-page .booking-progress li.is-complete::before { content:"✓"; color:#7d3850; background:#fff2f6; border-color:#d8a9b8; }
.booking-page .booking-progress li.is-current::before { background:#98445f; color:#fff; border-color:#98445f; }
.booking-page .booking-progress li.is-current { color:#80374f; }
.booking-page .service-choice { min-width:0; min-height:96px; gap:.75rem; padding:.85rem; }
.booking-page .service-choice-copy { min-width:0; flex:1; overflow-wrap:anywhere; }
.booking-page .service-choice-copy>strong { display:block; line-height:1.25; }
.booking-page .service-choice-description { color:#66565e!important; font-size:12px; line-height:1.4; }
.booking-page .service-choice-price { flex:0 0 auto; white-space:normal; text-align:right; }
.booking-page .service-choice-image { flex:0 0 62px; width:62px; height:76px; object-fit:cover; border-radius:8px; }
.booking-page .calendar-toolbar { display:grid; grid-template-columns:48px minmax(0,1fr) 48px; align-items:center; gap:.5rem; margin-bottom:1rem; }
.booking-page .date-quick-picks { display:block; min-width:0; }
.booking-page .calendar-toolbar h3 { min-width:0; text-align:center; color:#42313a; font:600 clamp(1.15rem,4vw,1.5rem)/1.2 var(--font-display); }
.booking-page .calendar-nav { width:48px; height:48px; display:grid; place-items:center; border:1px solid #ead2da; border-radius:50%; background:#fff; color:#80374f; cursor:pointer; }
.booking-page .calendar-nav svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.booking-page .calendar-nav:disabled { opacity:.42; cursor:not-allowed; }
.booking-page .calendar-weekdays,.booking-page .calendar-week { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:clamp(.18rem,1vw,.5rem); }
.booking-page .calendar-grid { display:block; }
.booking-page .calendar-week+.calendar-week { margin-top:clamp(.18rem,1vw,.5rem); }
.booking-page .calendar-weekdays { margin-bottom:.35rem; }
.booking-page .calendar-weekdays span { min-width:0; padding:.45rem 0; text-align:center; color:#826d77; font:600 10px/1 var(--font-body); text-transform:uppercase; }
.booking-page .calendar-day { min-width:0; width:100%; min-height:clamp(44px,8vw,62px); padding:.1rem; border:1px solid transparent; border-radius:11px; background:transparent; color:#49343d; cursor:pointer; font:600 clamp(12px,3vw,15px)/1 var(--font-body); }
.booking-page .calendar-day:hover:not(:disabled) { border-color:#d8a9b8; background:#fff2f6; }
.booking-page .calendar-day.is-selected { border-color:#98445f; background:#98445f; color:#fff; box-shadow:0 3px 10px rgba(152,68,95,.15); }
.booking-page .calendar-day.is-unavailable { color:#b5a9ae; cursor:not-allowed; text-decoration:line-through; text-decoration-color:#dacbd0; }
.booking-page .calendar-day--empty { display:block; min-height:0; }
.booking-page .calendar-day:focus-visible,.booking-page .calendar-nav:focus-visible,.calendar-error button:focus-visible { outline:3px solid rgba(189,113,136,.45); outline-offset:2px; }
.booking-page .calendar-availability-note { margin-top:.8rem; color:#786871; font-size:.78rem; }
.booking-page .calendar-prompt,.booking-page .calendar-loading,.booking-page .calendar-error { padding:1rem; border:1px solid #efdee4; border-radius:11px; background:#fff; color:#66565e; }
.booking-page .calendar-error { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.75rem; }
.booking-page .calendar-error p { flex:1 1 180px; overflow-wrap:anywhere; }
.booking-page .calendar-error button { min-height:44px; padding:.6rem .9rem; border:1px solid #d6acb9; border-radius:8px; background:#fff4f7; color:#80374f; cursor:pointer; font:600 12px var(--font-body); }
.booking-page .calendar-loading { min-height:90px; display:flex; align-items:center; gap:.7rem; }
.booking-page .calendar-loading__dots { width:16px; height:16px; border:2px solid #e4c7d0; border-top-color:#98445f; border-radius:50%; animation:calendar-turn .8s linear infinite; }
@keyframes calendar-turn { to { transform:rotate(360deg); } }
.booking-page .time-group { grid-column:1/-1; min-width:0; padding:.95rem; border:1px solid #f0dfe4; border-radius:12px; background:#fffafb; }
.booking-page .time-group h3 { margin-bottom:.65rem; color:#755461; font:600 11px/1.2 var(--font-body); letter-spacing:.08em; text-transform:uppercase; }
.booking-page .time-group__slots { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,110px),1fr)); gap:.55rem; }
.booking-page .time-chip { min-height:48px; padding:.6rem .45rem; }
.booking-page .time-chip[aria-selected="true"],.booking-page .time-chip.is-selected { background:#98445f; border-color:#98445f; color:#fff; }
.booking-page .availability-loading,.booking-page .availability-empty { grid-column:1/-1; }
.booking-page .availability-empty { padding:1rem; border:1px solid #efdee4; border-radius:11px; background:#fffafb; }
.booking-page .availability-empty p+p { margin-top:.25rem; color:#786871; font-size:.85rem; }
.booking-page .text-button { min-height:44px; margin-top:.55rem; color:#893d56; }
.booking-page .form-grid label { min-width:0; }
.booking-page .form-grid input,.booking-page .form-grid select,.booking-page .form-grid textarea { min-width:0; max-width:100%; }
.booking-page .preferred-contact { min-width:0; padding:0; border:0; }
.booking-page .preferred-contact legend { margin-bottom:.55rem; font:600 11px var(--font-body); letter-spacing:.04em; text-transform:uppercase; }
.booking-page .contact-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.55rem; }
.booking-page .contact-options label { min-width:0; position:relative; display:block; cursor:pointer; }
.booking-page .contact-options input { position:absolute; width:1px; height:1px; opacity:0; }
.booking-page .contact-options span { min-height:48px; display:grid; place-items:center; border:1px solid #ead7de; border-radius:9px; background:#fff; color:#66565e; font:600 12px var(--font-body); text-transform:none; letter-spacing:0; }
.booking-page .contact-options input:checked+span { border-color:#98445f; background:#fff2f6; color:#80374f; box-shadow:inset 0 0 0 1px #98445f; }
.booking-page .contact-options input:focus-visible+span { outline:3px solid rgba(189,113,136,.45); outline-offset:2px; }
.booking-page .booking-review { padding:clamp(.9rem,3vw,1.4rem); border:1px solid #ecd9e0; border-radius:14px; background:#fffafb; }
.booking-page .booking-review__eyebrow { color:#963f5b; font:600 10px var(--font-body); letter-spacing:.14em; text-transform:uppercase; }
.booking-page .booking-review__service { padding:.9rem 0; }
.booking-page .booking-review__service h3 { font:600 clamp(1.35rem,4vw,1.8rem)/1.1 var(--font-display); }
.booking-page .booking-review__service p { margin-top:.25rem; color:#66565e; }
.booking-page .booking-review .summary-list { margin:.5rem 0 0; }
.booking-page .booking-review .summary-list>div { grid-template-columns:minmax(92px,.55fr) minmax(0,1.45fr); align-items:center; gap:.6rem; }
.booking-page .booking-review .summary-list dd { min-width:0; display:flex; align-items:center; justify-content:space-between; gap:.5rem; overflow-wrap:anywhere; }
.booking-page .booking-review .summary-list dd span { min-width:0; overflow-wrap:anywhere; }
.booking-page .booking-review .summary-list dd:has(br) { display:block; }
.booking-page .review-edit { min-height:44px; padding:.5rem; border:0; background:transparent; color:#893d56; cursor:pointer; font:600 11px var(--font-body); text-decoration:underline; text-underline-offset:3px; }
.booking-page :focus-visible { outline-color:#bd7188; }
.booking-page [hidden] { display:none!important; }
@media(max-width:560px) {
  .booking-page .booking-shell { padding:2rem .75rem 4rem; }
  .booking-page .booking-intro { margin-bottom:1.5rem; }
  .booking-page .booking-panel { padding:.9rem; border-radius:13px; }
  .booking-page .booking-progress { margin-bottom:1.4rem; }
  .booking-page .booking-progress li { padding-inline:.1rem; }
  .booking-page .booking-progress li strong { font-size:9px; }
  .booking-page .booking-progress li::before { width:27px; height:27px; font-size:10px; }
  .booking-page .booking-selection { padding:.8rem; }
  .booking-page .booking-selection__grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .booking-page .booking-selection__item:first-child { grid-column:1/-1; }
  .booking-page .calendar-day { min-height:44px; border-radius:9px; }
  .booking-page .calendar-weekdays span { font-size:9px; }
  .booking-page .booking-review .summary-list>div { grid-template-columns:1fr minmax(0,1.5fr); }
  .booking-page .booking-review .summary-list>div .review-edit { grid-column:2; justify-self:start; }
  .booking-page .booking-progress li strong { overflow-wrap:anywhere; }
}
@media(max-width:360px) {
  .booking-page .booking-panel { padding:.75rem; }
  .booking-page .booking-progress li strong { font-size:8px; }
  .booking-page .booking-selection__grid { grid-template-columns:1fr; }
  .booking-page .booking-selection__item:first-child { grid-column:auto; }
  .booking-page .service-choice { gap:.45rem; padding:.65rem; }
  .booking-page .service-choice-image { flex-basis:48px; width:48px; height:62px; }
  .booking-page .service-choice-price { font-size:12px; }
  .booking-page .calendar-toolbar { grid-template-columns:44px minmax(0,1fr) 44px; }
  .booking-page .calendar-nav { width:44px; height:44px; }
  .booking-page .calendar-day { min-height:44px; }
  .booking-page .booking-review .summary-list>div { grid-template-columns:1fr; gap:.3rem; }
  .booking-page .booking-review .summary-list>div .review-edit { grid-column:1; }
}
@media(min-width:768px) {
  .booking-page .booking-panel { padding:clamp(2rem,4vw,3rem); }
  .booking-page .booking-date-field { padding:1.25rem; }
}
@media(prefers-reduced-motion:reduce) {
  .booking-page .calendar-loading__dots { animation:none; }
}
@media(max-width:699px) {
  .booking-page .booking-shell { width:100%; padding:1.6rem 1rem calc(3rem + env(safe-area-inset-bottom)); }
  .booking-page .booking-intro h1 { font-size:clamp(2.55rem,11vw,4rem); line-height:.96; }
  .booking-page .booking-intro .section__lead { font-size:.92rem; }
  .booking-page .booking-panel,
  .booking-page #booking-form,
  .booking-page #booking-fields { min-width:0; }
  .booking-page .booking-panel { padding:clamp(.8rem,4vw,1.15rem); }
  .booking-page .form-grid { gap:1rem; }
  .booking-page .form-grid label { overflow-wrap:anywhere; }
  .booking-page .booking-panel .btn-row { display:grid; grid-template-columns:1fr; gap:.6rem; margin-top:1.25rem; }
  .booking-page .booking-panel .btn-row .btn { width:100%; min-height:48px; }
  .booking-page .service-choice-grid,
  .booking-page .service-choice-subgrid,
  .booking-page .service-fill-grid,
  .booking-page .service-fill-options,
  .booking-page .time-slots,
  .booking-page .time-group__slots { min-width:0; }
  .booking-page .service-fill-options { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .booking-page .service-fill-options .service-choice { min-width:0; overflow-wrap:anywhere; }
  .booking-page .booking-date-field { width:100%; max-width:100%; margin:0; padding:.75rem; }
  .booking-page .calendar-toolbar { grid-template-columns:44px minmax(0,1fr) 44px; }
  .booking-page .calendar-weekdays,
  .booking-page .calendar-week { grid-template-columns:repeat(7,minmax(0,1fr)); }
  .booking-page .calendar-day { padding-inline:0; }
  .booking-page .booking-selection__grid { min-width:0; }
  .booking-page .booking-review .summary-list>div { min-width:0; }
}
@media(max-width:360px) {
  .booking-page .booking-shell { padding-inline:.75rem; }
  .booking-page .booking-progress li span { font-size:8px; letter-spacing:.06em; }
  .booking-page .booking-progress li strong { font-size:8px; }
  .booking-page .service-fill-options { grid-template-columns:1fr; }
  .booking-page .booking-date-field { padding:.55rem; }
  .booking-page .calendar-weekdays span { font-size:8px; }
  .booking-page .calendar-day { min-height:44px; font-size:12px; }
}

@media(max-width:767px) {
  .booking-page .calendar-nav { width:44px; height:44px; min-width:44px; min-height:44px; }
  .booking-page .calendar-day { min-height:44px; }
}
@media(prefers-reduced-motion:reduce) {
  .booking-page .booking-step:not([hidden]) { animation:none; }
}
@media(max-width:560px) {
  .booking-page .booking-date-field { padding:0; border:0; background:transparent; }
  .booking-page .calendar-weekdays,.booking-page .calendar-week { gap:0; }
}
@media(max-width:360px) {
  .booking-page .booking-shell { padding-inline:4px; }
  .booking-page .booking-date-field { margin-inline:-.9rem; width:calc(100% + 1.8rem); max-width:none; }
  .booking-page .calendar-toolbar,.booking-page .booking-date-field__heading,.booking-page .calendar-availability-note { margin-inline:.9rem; }
}
@media(max-width:699px) {
  .booking-page .booking-shell { padding-inline:1rem; }
  .booking-page .booking-date-field { width:100%; max-width:100%; margin:0; padding:.7rem; }
  .booking-page .calendar-toolbar,
  .booking-page .booking-date-field__heading,
  .booking-page .calendar-availability-note { margin-inline:0; }
}
@media(max-width:360px) {
  .booking-page .booking-shell { padding-inline:.75rem; }
  .booking-page .booking-date-field { width:100%; margin:0; padding:.5rem; }
  .booking-page .calendar-toolbar { grid-template-columns:44px minmax(0,1fr) 44px; gap:.25rem; }
  .booking-page .calendar-nav { width:44px; height:44px; }
}