
/* Match the homepage introduction: no mobile text below 17px. */
@media (max-width:980px) {
  :root { --mobile-min-font-size:17px; }
  body { font-size:max(17px, 1rem); }
  small, sub, sup { font-size:max(17px, .833em); }
  input, select, textarea, button { font-size:inherit; }
}
.booking-request { gap:32px; }
.booking-request [hidden] { display:none !important; }
.booking-step { min-width:0; margin:0; padding:28px 0 0; border:0; border-top:1px solid rgba(177,138,79,.22); }
.booking-step legend { padding:0 18px 0 0; color:var(--ink); font:500 clamp(25px,3vw,32px)/1.2 var(--serif); }
.booking-step legend > span { display:inline-flex; align-items:center; justify-content:center; width:48px; height:48px; box-sizing:border-box; margin-right:12px; border:1px solid var(--gold); border-radius:50%; background:var(--cream); color:var(--gold-dark); padding:0; font-family:Georgia, "Times New Roman", serif; font-size:26px; font-weight:400; line-height:1; font-variant-numeric:lining-nums tabular-nums; letter-spacing:0; vertical-align:middle; }
.booking-hint { margin:0 0 20px; color:var(--muted); font-size:max(var(--mobile-min-font-size, 0px), 13px); line-height:1.7; }
.booking-choices { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.booking-service-choices { margin-bottom:20px; }
#booking-bridal-details > label { display:flex; flex-direction:column; min-width:0; }
#booking-bridal-details > label > span { flex:1; }
.booking-request .booking-choice { display:flex; align-items:flex-start; gap:12px; padding:20px; border:1px solid rgba(177,138,79,.28); background:rgba(255,255,255,.5); cursor:pointer; }
.booking-request .booking-choice:hover { border-color:var(--gold); background:#fffdf9; }
.booking-request .booking-choice:has(input:checked) { border-color:var(--gold-dark); background:var(--cream-2); box-shadow:inset 3px 0 var(--gold); }
.booking-request .booking-choice:focus-within { outline:2px solid var(--gold-dark); outline-offset:3px; }
.booking-request input[type=radio] { flex:0 0 18px; width:18px; height:18px; padding:0; margin:3px 0 0; accent-color:var(--gold-dark); }
.booking-request .booking-choice > span { margin:0; color:var(--ink); font-family:var(--sans); font-size:max(var(--mobile-min-font-size, 0px), 14px); line-height:1.5; letter-spacing:0; text-transform:none; }
.booking-choice strong { display:block; font-weight:600; }
.booking-choice small { display:block; margin-top:6px; color:var(--muted); font-size:max(var(--mobile-min-font-size, 0px), 12px); font-weight:400; line-height:1.6; }
.booking-request select { width:100%; min-width:0; min-height:54px; margin:8px 0 16px; padding:12px; border:1px solid rgba(140,109,61,.35); border-radius:0; background:#fffdf9; color:var(--ink); font:max(var(--mobile-min-font-size, 0px), 14px) var(--sans); }
.booking-request select:focus-visible { outline:2px solid var(--gold-dark); outline-offset:2px; }
.booking-consultation, .booking-selection { padding:20px; border:1px solid rgba(177,138,79,.3); background:var(--cream); }
.booking-consultation { margin:24px 0 0; }
.booking-consultation legend { padding:0 8px; font:500 22px/1.3 var(--serif); }
.booking-request .booking-answer { display:flex; align-items:center; gap:10px; margin-top:14px; font-size:max(var(--mobile-min-font-size, 0px), 14px); cursor:pointer; }
.booking-selection { margin:0 0 30px; border-color:rgba(177,138,79,.55); border-left:4px solid var(--gold); color:var(--ink); font-size:max(var(--mobile-min-font-size, 0px), 14px); line-height:1.7; }
.booking-selection strong { display:block; margin-bottom:6px; font-weight:600; }
#booking-details .booking-step + .booking-step { margin-top:32px; }
.booking-request .booking-step > label { display:block; margin-top:20px; }
.booking-request label > span:not(.booking-choice > span) { display:block; margin-bottom:8px; }
.booking-submit-note { margin:30px 0 16px; color:var(--muted); font-size:max(var(--mobile-min-font-size, 0px), 13px); line-height:1.7; }
.booking-submit { flex-wrap:wrap; }
.booking-submit .button { width:min(304px,100%); min-width:0; max-width:100%; box-sizing:border-box; padding-inline:12px; font-size:max(var(--mobile-min-font-size, 0px), 12px); letter-spacing:.06em; white-space:nowrap; }
#booking-recaptcha { max-width:100%; min-height:78px; }
@media (max-width:400px) {
  .booking-submit .button { width:min(164px,100%); padding-inline:6px; font-size:max(var(--mobile-min-font-size, 0px), 9px); letter-spacing:0; }
}
.booking-request button:disabled { cursor:wait; opacity:.65; }
#booking-form { scroll-margin-top:110px; }
@media (max-width:700px) {
  .booking-choices, .booking-request .form-row { grid-template-columns:minmax(0,1fr); }
  .booking-request .form-row > label { min-width:0; }
  .booking-request .booking-choice { padding:16px; }
  .booking-consultation, .booking-selection { padding:16px 12px; }
  .booking-request input, .booking-request textarea, .booking-request select { font-size:max(var(--mobile-min-font-size, 0px), 16px); }
}
.booking-date-field, .booking-time-field { min-width:0; }
.booking-date-field > label > span, .booking-time-field > label > span { display:block; margin-bottom:8px; color:var(--muted); font-size:max(var(--mobile-min-font-size, 0px), 9px); font-weight:600; letter-spacing:.15em; text-transform:uppercase; }
.booking-request input[type=time] { display:block; width:100%; min-width:0; max-width:100%; box-sizing:border-box; -webkit-appearance:none; appearance:none; background:#fffdf9; border-color:rgba(140,109,61,.35); padding-inline:12px; }
.booking-request .booking-time-select { display:block; height:54px; box-sizing:border-box; margin:0; padding:0 12px; -webkit-appearance:none; appearance:none; text-align:center; text-align-last:center; }

.booking-date-field { position:relative; }
.booking-date-control, .booking-time-control { position:relative; }
.booking-request #booking-date, .booking-request .booking-time-select {
  display:block; width:100%; min-width:0; height:54px; box-sizing:border-box;
  margin:0; padding:0 48px; border:1px solid rgba(140,109,61,.35); border-radius:0;
  background:#fffdf9; color:var(--ink); font-family:var(--sans); font-size:max(var(--mobile-min-font-size, 0px), 14px); font-weight:400; letter-spacing:normal;
  text-align:center; text-align-last:center; -webkit-appearance:none; appearance:none;
  transition:border-color .25s ease, box-shadow .25s ease, background .25s ease;
}
.booking-request #booking-date:focus, .booking-request .booking-time-select:focus {
  border-color:var(--gold); background:#fff;
  box-shadow:inset 3px 0 var(--gold); outline:2px solid var(--gold-dark); outline-offset:2px;
}
.booking-time-icon { position:absolute; right:15px; top:17px; color:var(--gold-dark); pointer-events:none; }
.booking-calendar-toggle { position:absolute; right:4px; top:5px; width:42px; height:44px; display:grid; place-items:center; border:0; background:transparent; color:var(--gold-dark); cursor:pointer; }
.booking-date-popup { position:absolute; top:100%; left:0; z-index:20; width:min(340px,100%); margin-top:8px; padding:12px; border:1px solid rgba(177,138,79,.35); background:#fffdf9; box-shadow:0 12px 32px rgba(76,58,38,.18); }
.booking-calendar-nav { display:flex; align-items:center; gap:4px; margin-bottom:8px; }
.booking-calendar-nav strong { flex:1; text-align:center; font:500 21px var(--serif); }
.booking-date-popup button { border:1px solid transparent; border-radius:3px; background:transparent; color:var(--ink); font:inherit; cursor:pointer; }
.booking-calendar-nav button { flex:none; width:30px; height:34px; font-size:24px; }
.booking-date-popup table { width:100%; table-layout:fixed; border-collapse:collapse; }
.booking-date-popup th { padding:8px 0; color:var(--muted); font-size:max(var(--mobile-min-font-size, 0px), 11px); font-weight:600; }
.booking-date-popup td { padding:1px; text-align:center; }
.booking-date-popup td button { width:100%; min-height:36px; padding:5px 0; font-size:max(var(--mobile-min-font-size, 0px), 13px); }
.booking-date-popup .booking-sunday { color:#b3262d; }
.booking-date-popup button:hover:not(:disabled) { background:var(--cream-2); }
.booking-date-popup button[aria-pressed=true] { border-color:var(--gold-dark); background:var(--cream-2); font-weight:600; }
.booking-date-popup button[aria-current=date] { text-decoration:underline; text-underline-offset:4px; }
.booking-calendar-toggle:focus-visible, .booking-date-popup button:focus-visible { outline:2px solid var(--gold-dark); outline-offset:1px; }
.booking-date-popup button:disabled { cursor:default; opacity:.4; }

/* Finish the shimmer after a tap, even while mobile keeps :hover active. */
#booking-form .button.primary.gold-shimmer.booking-shimmer-release {
  --shimmer-start-position:var(--booking-shimmer-start, 25% 0);
  --shimmer-opacity:1;
  background-image:linear-gradient(115deg,
    rgb(145 103 47 / var(--shimmer-opacity)) 0%,
    rgb(168 126 66 / var(--shimmer-opacity)) 38%,
    rgb(245 221 160 / var(--shimmer-opacity)) 49%,
    rgb(255 240 198 / var(--shimmer-opacity)) 52%,
    rgb(184 140 73 / var(--shimmer-opacity)) 62%,
    rgb(145 103 47 / var(--shimmer-opacity)) 100%),
    linear-gradient(135deg,#96713b 0%,#c7a363 48%,#a27b40 100%);
  background-size:250% 100%,100% 100%;
  animation:book-shimmer-out .6s ease-in forwards;
}
@media (prefers-reduced-motion:reduce) {
  #booking-form .button.primary.gold-shimmer.booking-shimmer-release {
    animation:none;
    background:linear-gradient(135deg,#96713b 0%,#c7a363 48%,#a27b40 100%);
  }
}
.booking-request #booking-date::placeholder { color:var(--ink); opacity:1; }
@media (max-width:700px) {
  .booking-request #booking-date, .booking-request .booking-time-select { font-size:max(var(--mobile-min-font-size, 0px), 16px); }
}
.booking-request button.booking-time-select { cursor:pointer; line-height:normal; text-transform:none; }
.booking-time-icon { z-index:1; }
.booking-time-popup {
  position:absolute; top:100%; left:0; z-index:25; width:100%; box-sizing:border-box;
  max-height:280px; max-height:min(280px,45vh); overflow-y:auto; overscroll-behavior:contain;
  margin-top:8px; padding:8px; border:1px solid rgba(177,138,79,.35);
  background:#fffdf9; box-shadow:0 12px 32px rgba(76,58,38,.18);
  scrollbar-width:thin; scrollbar-color:var(--gold) var(--cream);
}
.booking-time-option {
  display:block; width:100%; box-sizing:border-box; margin:0; background:transparent;
  appearance:none; -webkit-appearance:none; letter-spacing:normal; text-transform:none;
  padding:12px; border:1px solid transparent; border-radius:3px;
  color:var(--ink); font:max(var(--mobile-min-font-size, 0px), 14px)/1.4 var(--sans); text-align:center; cursor:pointer;
}
.booking-time-option:hover, .booking-time-option.is-active { background:var(--cream-2); }
.booking-time-option.is-active { outline:1px solid var(--gold-dark); outline-offset:-2px; }
.booking-time-option[aria-selected=true] { border-color:var(--gold-dark); background:var(--cream-2); font-weight:600; }
@media (max-width:700px) { .booking-time-option { font-size:max(var(--mobile-min-font-size, 0px), 16px); } }
/* Center the numeral's cap-height box instead of the font's extra leading. */
.booking-step-number { display:block; }
@supports (text-box:trim-both cap alphabetic) {
  .booking-step-number { text-box:trim-both cap alphabetic; }
}
/* Category and service menus share the preferred-time dropdown. */
.booking-choice-control { margin-top:8px; }
.booking-choice-control::after {
  content:""; position:absolute; right:20px; top:23px; width:7px; height:7px;
  border-right:1.5px solid var(--gold-dark); border-bottom:1.5px solid var(--gold-dark);
  transform:rotate(45deg); pointer-events:none;
}
.booking-request .booking-choice-control .booking-time-select {
  height:auto; min-height:58px; padding:16px 48px 16px 18px;
  text-align:left; text-align-last:left; line-height:1.5; white-space:normal;
}
.booking-choice-control .booking-time-option { text-align:left; padding:13px 12px; }
.booking-time-option small { display:block; margin-top:4px; color:var(--muted); font-size:max(var(--mobile-min-font-size, 0px), 12px); font-weight:400; line-height:1.5; }
.booking-choice-control .booking-time-select:hover { border-color:var(--gold); background:#fff; }
/* Lift the whole booking stacking context above adjacent page sections. */
.booking-page .booking-widget { z-index:30; overflow:visible; }
.booking-time-control:has(.booking-time-popup:not([hidden])),
.booking-date-control:has(.booking-date-popup:not([hidden])) { z-index:30; }
@media (max-width:980px) {
  .booking-submit .button { width:100%; max-width:360px; white-space:normal; padding:16px 12px; line-height:1.5; }
  .booking-calendar-nav { flex-wrap:wrap; }
  .booking-time-option, .booking-choice strong, .booking-choice small { overflow-wrap:break-word; }
}
/* Consistent, single-line action labels on phones and tablets. */
@media (max-width:980px) {
  body :is(.button, .book-small,
    button:not([role="combobox"]):not([role="option"]):not([aria-label]):not([data-calendar-button])) {
    font-size:var(--button-label-size, 16px) !important;
    letter-spacing:0 !important;
    white-space:nowrap !important;
    overflow-wrap:normal !important;
    min-width:0 !important;
    max-width:100%;
    box-sizing:border-box;
    padding-inline:10px !important;
  }
  body :is(.button, .book-small, .blog-share-button) span { font-size:inherit !important; }
  body .contact-form-actions .button { width:100%; }
  .blog-cta { flex-wrap:wrap; }
  .blog-cta .button { flex-shrink:0; }
}
body .booking-services-link { padding-inline:0 !important; }
