/* Service list and the existing booking service form, scoped to the cabinet. */
.booking-cabinet .ab-service-list { border-top: 1px solid var(--ab-line); }
.booking-cabinet .ab-service-card { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: 16px; min-width: 0; padding: 18px 0; border-bottom: 1px solid var(--ab-line); }
.booking-cabinet .ab-service-main { min-width: 0; }
.booking-cabinet .ab-service-main h3 { margin: 0 0 5px; font-size: 16px; font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; }
.booking-cabinet .ab-service-meta { display: block; margin: 0; font-size: 14px; color: var(--ab-muted); line-height: 1.5; overflow-wrap: anywhere; }
.booking-cabinet .ab-service-status { display: inline-flex; align-items: center; margin-top: 8px; padding: 3px 8px; border-radius: 5px; font-size: 12px; line-height: 1.4; color: #797f89; background: #f0f2f4; }
.booking-cabinet .ab-service-status.is-active { color: #2c7251; background: #e9f6ef; }
.booking-cabinet .ab-service-price { font-size: 15px; font-weight: 600; white-space: nowrap; }
.booking-cabinet .ab-service-edit { min-height: 40px; padding: 8px 12px; font-size: 13px; }
.booking-cabinet .ab-dialog:has(.ab-service-heading) { width: min(620px,calc(100vw - 32px)); }
.booking-cabinet .ab-service-heading h2 { font-size: 21px; }
.booking-cabinet .ab-service-form { display: block; padding: 0; }
.booking-cabinet .ab-service-form .ab-field { margin: 15px 0; min-width: 0; }
.booking-cabinet .ab-service-form .ab-field > :is(label,span) { font-size: 14px; font-weight: 400; color: #646b74; }
.booking-cabinet .ab-service-form :is(input,select,textarea) { min-width: 0; width: 100%; min-height: 44px; font-size: 16px; line-height: 24px; padding: 11px 13px; }
.booking-cabinet .ab-service-form textarea { min-height: 72px; height: 72px; resize: vertical; }
.booking-cabinet .ab-service-form :is(input,select):disabled { color: var(--text-primary); -webkit-text-fill-color: var(--text-primary); opacity: .65; }
.booking-cabinet .ab-service-language-panel { display: block; }
.booking-cabinet .ab-service-language-panel[hidden] { display: none; }
.booking-cabinet .ab-service-languages { display: flex; align-items: stretch; width: 100%; min-width: 0; gap: 18px; border: 0; border-bottom: 1px solid #e3e5e7; padding: 0; border-radius: 0; background: transparent; }
.booking-cabinet .ab-service-languages button { flex: 1; min-width: 0; min-height: 44px; padding: 12px 3px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; color: #777d85; background: transparent; font-size: 14px; line-height: 1.25; }
.booking-cabinet .ab-service-languages button[aria-pressed="true"] { color: #202329; border-bottom-color: var(--accent); font-weight: 500; }
.booking-cabinet .ab-service-form .ab-service-language-help { margin: 12px 0 0; font-size: 13px; }
.booking-cabinet .ab-service-two { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
.booking-cabinet .ab-service-form .ab-resource-check { align-items: flex-start; min-height: 44px; margin: 0; padding: 12px 0; font-size: 14px; }
.booking-cabinet .ab-service-form .ab-resource-check input { width: 19px; height: 19px; min-height: 19px; margin-top: 2px; padding: 0; accent-color: #111; }
.booking-cabinet .ab-service-market-note { margin: -8px 0 0; font-size: 12px; }
.booking-cabinet .ab-service-advanced { margin: 20px 0 0; }
.booking-cabinet .ab-service-advanced > summary { min-height: 50px; padding: 13px 0; font-size: 14px; }
.booking-cabinet .ab-service-advanced > .ab-resource-check { margin-top: 10px; }
.booking-cabinet .ab-service-footer { justify-content: flex-end; flex-wrap: wrap; gap: 10px; border-top: 1px solid var(--ab-line); padding-top: 16px; margin-top: 20px; }
.booking-cabinet .ab-service-footer .ab-action { width: auto; min-width: 130px; min-height: 44px; font-size: 14px; flex: 1; }
.booking-cabinet .ab-service-comparison { padding: 12px; border: 1px solid var(--ab-line); border-radius: 10px; margin-bottom: 16px; }
.booking-cabinet .ab-service-comparison h3 { margin: 0 0 8px; font-size: 15px; }
.booking-cabinet .ab-service-comparison p { margin: 4px 0; font-size: 14px; overflow-wrap: anywhere; }
.booking-cabinet .ab-service-comparison dl { margin: 8px 0 0; }
.booking-cabinet .ab-service-comparison dl > div { display: flex; gap: 16px; justify-content: space-between; font-size: 13px; }
.booking-cabinet .ab-service-comparison dd { margin: 0; }
@media(max-width:768px) {
  .booking-cabinet .ab-service-card { grid-template-columns: minmax(0,1fr) auto; gap: 9px; }
  .booking-cabinet .ab-service-main { grid-column: 1; grid-row: 1; }
  .booking-cabinet .ab-service-price { grid-column: 1; grid-row: 2; margin-top: -4px; font-size: 14px; font-weight: 500; }
  .booking-cabinet .ab-service-edit { grid-column: 2; grid-row: 1 / span 2; justify-self: end; min-height: 44px; }
  .booking-cabinet .ab-service-meta { font-size: 13px; }
  .booking-cabinet .ab-dialog:has(.ab-service-heading) { width: calc(100vw - 24px); }
  .booking-cabinet .ab-service-form :is(input,select,textarea) { font-size: 16px; }
  .booking-cabinet .ab-service-two { gap: 10px; }
  .booking-cabinet .ab-service-languages button { min-height: 44px; }
  .booking-cabinet .ab-service-languages { gap: 12px; }
}
@media(max-width:359px) {
  .booking-cabinet .ab-service-two { grid-template-columns: minmax(0,1fr); }
}

.booking-cabinet .ab-service-specialists-action { margin:4px 0 12px; }
.booking-cabinet .ab-assignment-people { display:grid; gap:14px; margin:14px 0; max-height:50dvh; overflow:auto; min-width:0; }
.booking-cabinet .ab-assignment-person { display:grid; gap:6px; min-width:0; }
.booking-cabinet .ab-assignment-person .ab-field { margin:0; min-width:0; }
.booking-cabinet .ab-assignment-person .ab-resource-check { margin:0; align-items:center; }
.booking-cabinet .ab-assignment-person small { color:var(--text-secondary); margin-left:30px; }
.booking-cabinet .ab-assignment-person select { width:100%; min-width:0; max-width:100%; font-size:16px; }
.booking-cabinet .ab-service-assignment .ab-service-footer { display:flex; justify-content:flex-end; gap:10px; flex-wrap:nowrap; }
.booking-cabinet .ab-service-assignment .ab-service-footer button { min-width:0; }

.booking-cabinet .ab-assignment-person .ab-resource-check > span { min-width:0; overflow-wrap:anywhere; }

/* The staff entry follows salon → services → specialist → the shared date sheet. */
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet { width:min(560px,calc(100vw - 24px)); max-width:calc(100vw - 24px); border-radius:20px; }
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet .ab-dialog-inner { padding:20px 16px 16px; }
.booking-cabinet .ab-staff-selection { display:flex; flex-direction:column; gap:8px; max-height:58dvh; overflow:auto; padding:2px; }
.booking-cabinet #ab-dialog .ab-staff-choice { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; padding:14px; border:1px solid #e2e4e7; border-radius:14px; background:#fff; text-align:left; box-shadow:none; }
.booking-cabinet .ab-staff-choice > span:first-child { min-width:0; }
.booking-cabinet .ab-staff-choice strong { display:block; font-size:14px; font-weight:500; overflow-wrap:anywhere; }
.booking-cabinet .ab-staff-choice small { display:block; margin-top:4px; color:#747a83; font-size:12px; overflow-wrap:anywhere; }
.booking-cabinet .ab-staff-choice .ab-staff-choice-tick { flex:none; visibility:hidden; color:#454b55; }
.booking-cabinet #ab-dialog .ab-staff-choice[aria-pressed=true] { background:#f1f2f4; border-color:#bfc4cb; }
.booking-cabinet .ab-staff-choice[aria-pressed=true] .ab-staff-choice-tick { visibility:visible; }
.booking-cabinet .ab-staff-service-summary { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:10px 2px; font-size:13px; }
.booking-cabinet .ab-staff-service-summary strong { min-width:0; font-weight:500; overflow-wrap:anywhere; }
.booking-cabinet .ab-staff-service-summary select { max-width:55%; min-width:0; font-size:16px; }
.booking-cabinet #ab-dialog .ab-staff-footer { display:flex; justify-content:flex-end; gap:12px; margin-top:16px; padding:0; border:0; }
.booking-cabinet #ab-dialog .ab-staff-footer :is(button,a) { min-height:44px; border-radius:12px; }

/* Creation stays in one sheet, with a stable header and action row. */
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet { box-sizing:border-box; width:min(560px,calc(100vw - 24px)); height:min(720px,90dvh); max-height:90dvh; padding:0; overflow:hidden; }
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet .ab-dialog-inner { display:flex; flex-direction:column; box-sizing:border-box; height:100%; min-height:0; padding:16px; }
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet .ab-dialog-heading { flex:none; margin:0 0 12px; }
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet .ab-dialog-heading h2 { font-size:19px; }
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet .ab-staff-selection { flex:1; min-height:0; max-height:none; overflow:auto; overflow-x:hidden; overscroll-behavior-y:contain; padding:2px; scrollbar-width:thin; }
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet .ab-staff-footer { flex:none; margin:0; padding-top:14px; border:0; }
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet .ab-staff-footer > :last-child { min-width:140px; }
.booking-cabinet #ab-dialog .ab-staff-error,.booking-cabinet #ab-dialog .ab-staff-field-error { flex:none; margin:8px 0 0; color:#a03c35; font-size:12px; line-height:1.45; }
.booking-cabinet #ab-dialog .ab-staff-error[hidden],.booking-cabinet #ab-dialog .ab-staff-field-error[hidden] { display:none; }
.booking-cabinet .ab-staff-directions { display:flex; gap:6px; flex-wrap:wrap; margin:0 0 8px; }
.booking-cabinet #ab-dialog .ab-staff-directions > button { min-height:34px; padding:6px 10px; border:0; border-radius:10px; background:#f1f2f4; color:#626973; box-shadow:none; font-size:12px; }
.booking-cabinet #ab-dialog .ab-staff-directions > button[aria-pressed=true] { background:#343941; color:white; }
.booking-cabinet .ab-staff-summary { flex:none; margin:0 0 12px; color:#454b55; font-size:13px; line-height:1.45; }
.booking-cabinet .ab-staff-summary small { display:block; margin-top:4px; color:#777d85; font-size:12px; }
.booking-cabinet .ab-staff-contact-form { min-width:0; margin:0; }
.booking-cabinet .ab-staff-contact-form .form-group { margin:0 0 12px; }
.booking-cabinet .ab-staff-contact-form :is(input:not([type=checkbox]):not([type=hidden]),textarea) { box-sizing:border-box; width:100%; min-width:0; min-height:44px; padding:10px 12px; border:1px solid #dfe2e6; border-radius:12px; background:#fff; box-shadow:none; font-size:16px; }
.booking-cabinet .ab-staff-contact-form label { font-size:12px; line-height:1.45; }
.booking-cabinet .ab-staff-contact-form .gb-phone { position:relative; }
.booking-cabinet .ab-staff-contact-form .gb-phone-country { position:absolute; left:12px; top:11px; font-size:18px; line-height:22px; }
.booking-cabinet .ab-staff-contact-form .gb-phone input[type=tel] { padding-left:44px; }
.booking-cabinet .ab-staff-contact-form .is-invalid :is(input:not([type=hidden]),textarea) { border-color:#bd6f66; }
.booking-cabinet .ab-staff-contact-form :is(input,textarea):focus { outline:0; border-color:#858b94; box-shadow:none; }
.booking-cabinet .ab-staff-contact-form .is-invalid :is(input,textarea):focus { border-color:#bd6f66; }
.booking-cabinet .ab-staff-contact-form .ab-resource-check { display:flex; align-items:flex-start; gap:8px; margin:8px 0 12px; }
.booking-cabinet .ab-staff-contact-form input[type=checkbox] { flex:none; margin:2px 0 0; accent-color:#343941; }
.booking-cabinet .ab-staff-contact-form .contact-tab:focus { box-shadow:none; }
.booking-cabinet .ab-staff-receipt { text-align:center; padding:32px 12px; font-size:14px; color:#626973; }
.booking-cabinet .ab-staff-receipt > span { display:inline-grid; place-items:center; width:44px; height:44px; border-radius:14px; background:#f0f1f3; font-size:24px; color:#535b66; }
.booking-cabinet .ab-staff-receipt h3 { color:#282c33; font-size:20px; margin:16px 0; }
@media(max-width:768px){
 body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet { inset:auto 0 0; margin:0; width:100%; max-width:100%; height:90dvh; border-radius:20px 20px 0 0; }
 body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet .ab-dialog-inner { padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px)); }
}

/* The direction rail follows the service list inside the booking sheet. */
body.booking-cabinet #ab-dialog.ab-staff-dialog.booking-time-sheet { height:min(650px,90dvh); }
.booking-cabinet #ab-dialog .ab-staff-directions { position:sticky; top:-2px; z-index:3; flex:none; flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; margin:-2px -2px 8px; padding:8px 2px; background:#fff; }
.booking-cabinet #ab-dialog .ab-staff-directions > button { flex:none; white-space:nowrap; }
.booking-cabinet .ab-staff-direction-group { flex:none; scroll-margin-top:52px; }
.booking-cabinet .ab-staff-direction-group h3 { margin:10px 0 8px; font-size:14px; }
.booking-cabinet .ab-staff-direction-group .ab-staff-choice { margin:6px 0; }
.booking-cabinet #ab-dialog.ab-staff-dialog .ab-dialog-heading { gap:8px; }
.booking-cabinet #ab-dialog.ab-staff-dialog .ab-dialog-heading h2 { flex:1; }
.booking-cabinet .ab-staff-contact-form .form-group { margin-bottom:10px; }
.booking-cabinet .ab-staff-contact-form textarea { max-height:80px; resize:vertical; }
.booking-cabinet #ab-dialog .ab-staff-choice .ab-staff-nearest { min-height:16px; color:#727985; }

/* Every visible contact channel owns an equal part of the whole form row. */
.booking-cabinet #ab-staff-contact-form .publication-contacts { width:100%; min-width:0; }
.booking-cabinet #ab-staff-contact-form .publication-contact-tabs { box-sizing:border-box; width:100%; max-width:none; grid-template-columns:none !important; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); }
.booking-cabinet #ab-staff-contact-form .publication-contact-tabs > button { width:100%; min-width:0; }
/* Compact service surfaces; expanding conditions scrolls inside the same frame. */
@media(min-width:769px) { .booking-cabinet .ab-service-list { max-width:680px; } }
.booking-cabinet .ab-dialog:has(.ab-service-form) { width:min(560px,calc(100vw - 24px)); height:min(680px,calc(100dvh - 32px)); max-height:calc(100dvh - 32px); padding:0; overflow:hidden; }
.booking-cabinet .ab-dialog:has(.ab-service-form) .ab-dialog-inner { box-sizing:border-box; height:100%; min-height:0; display:flex; flex-direction:column; padding:16px; overflow:hidden; }
.booking-cabinet .ab-dialog:has(.ab-service-form) .ab-dialog-heading { flex:none; margin:0 0 12px; }
.booking-cabinet .ab-dialog .ab-service-form { display:flex; flex-direction:column; flex:1; min-height:0; }
.booking-cabinet .ab-service-fields { flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; overflow-anchor:none; padding:0 2px; }
.booking-cabinet .ab-service-list,.booking-cabinet .ab-service-footer,.booking-cabinet .ab-service-languages,.booking-cabinet .ab-service-advanced { border:0; }
.booking-cabinet .ab-dialog .ab-service-footer { flex:none; justify-content:flex-end; gap:8px; padding-top:12px; margin-top:0; position:static; background:#fff; }
.booking-cabinet .ab-dialog .ab-service-footer > .ab-action:not(.ab-action--icon) { flex:0 1 auto; min-width:0; width:auto; min-height:40px; padding:9px 14px; font-size:13px; border-radius:11px; }
.booking-cabinet .ab-service-performers { min-width:0; padding:0; margin:16px 0; border:0; }
.ab-service-performers legend { font-size:13px; color:#697380; }
.booking-cabinet .ab-service-performers .ab-resource-check { padding:6px 0; min-height:36px; font-size:13px; align-items:center; }
.booking-cabinet .ab-service-performers .ab-resource-check input { flex:none; width:17px; height:17px; min-height:17px; padding:0; margin:0; }
.ab-service-performer { display:flex; align-items:center; flex-wrap:wrap; gap:6px 12px; min-width:0; }
.ab-service-performer > label { flex:1; min-width:0; }
.ab-service-performer > small { font-size:11px; color:#9299a3; }
.booking-cabinet .ab-service-form .ab-service-performer > select { flex:0 1 180px; width:180px; min-width:0; min-height:36px; padding:5px 9px; font-size:13px; border-radius:10px; }
.ab-service-performer-empty { margin:12px 0; color:#858e9a; font-size:12px; line-height:1.5; }
@media(min-width:769px) { .booking-cabinet .ab-content:has(.ab-service-list) > :is(.ab-title-row,.ab-controls) { max-width:680px; } }

.booking-cabinet .ab-service-main-fields[hidden],.booking-cabinet .ab-service-conditions[hidden] { display:none; }
.booking-cabinet .ab-service-heading h2 { flex:1; margin:0; }
.booking-cabinet .ab-service-performers { border:0; border-radius:12px; background:#f4f5f7; padding:0; margin:14px 0; }
.booking-cabinet .ab-service-performers > summary { display:flex; flex-direction:column; gap:3px; min-height:44px; padding:10px 12px; font-size:12px; color:#858b94; cursor:pointer; list-style:none; }
.booking-cabinet .ab-service-performers > summary::-webkit-details-marker { display:none; }
.booking-cabinet .ab-service-performers > summary > span { display:block; font-size:14px; color:#343940; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.booking-cabinet .ab-service-form .ab-service-confirmation { margin:0 0 12px; }
.booking-cabinet .ab-service-form .ab-service-confirmation select { min-height:42px; padding:8px 12px; }
.booking-cabinet .ab-service-price-control { display:flex; align-items:center; gap:8px; min-width:0; }
.booking-cabinet .ab-service-price-control > input { flex:1; width:0; min-width:0; }
.booking-cabinet .ab-service-price-control > :is(select,.ab-v16-select) { flex:0 0 48px; width:48px; min-width:48px; }
.booking-cabinet .ab-service-price-control > select,.booking-cabinet .ab-service-price-control .ab-v16-select-button { display:flex; align-items:center; justify-content:center; width:48px; height:44px; min-height:44px; padding:0; border:0; border-radius:10px; background:#f3f4f6; color:#535c68; font-size:11px; line-height:16px; box-shadow:none; }
.booking-cabinet .ab-service-price-control .ab-v16-select-button > svg { display:none; }
.booking-cabinet .ab-service-price-control .ab-v16-select-value { flex:none; }
.booking-cabinet .ab-service-people { max-height:240px; overflow-y:auto; padding:0 12px 10px; }
.booking-cabinet .ab-service-conditions .ab-form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.booking-cabinet .ab-service-conditions .ab-field { margin:10px 0; }
.booking-cabinet .ab-service-conditions .ab-form-grid .ab-field > span { min-height:36px; line-height:18px; font-size:13px; }
@media(max-width:359px) { .booking-cabinet .ab-service-conditions .ab-form-grid { grid-template-columns:minmax(0,1fr); } }

.booking-cabinet .ab-service-price-control .ab-service-currency { display:flex; align-items:center; justify-content:center; min-width:43px; padding:8px; color:#89919c; font-size:12px; font-weight:500; background:transparent; border:0; pointer-events:none; }

.booking-cabinet .ab-service-card{margin-bottom:8px;padding:14px;border:0;border-radius:15px;background:#f3f4f6}
.booking-cabinet .ab-service-main h3{font-size:15px}
.booking-cabinet .ab-service-meta{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.booking-cabinet .ab-service-copy-group{padding:12px;border-radius:15px;background:#f3f4f6}
.booking-cabinet .ab-service-copy-group .ab-field{margin:8px 0}
.booking-cabinet .ab-service-copy-group .ab-service-language-panel{padding:0;background:transparent}
.booking-cabinet .ab-service-copy-group .ab-service-languages{background:transparent;border-radius:0;padding:0}
.booking-cabinet .ab-service-copy-group .ab-service-language-help{margin:8px 0;font-size:11px}
.ab-service-team-help{margin:12px 0;padding:14px;border:0;border-radius:12px;background:#f5f3ef;color:#4d535c;font-size:13px;line-height:1.5;outline:0}
.ab-service-team-help strong{font-size:14px;color:#30363e}
.ab-service-team-help p{margin:7px 0}
.ab-service-team-help a{display:inline-flex;min-height:36px;align-items:center;color:#555f6c;text-decoration:underline;text-underline-offset:3px}

/* Reserve the service frame before its first asynchronous form render. */
.booking-cabinet .ab-dialog--service{box-sizing:border-box;width:min(560px,calc(100vw - 24px));height:min(680px,calc(100dvh - 32px));max-height:calc(100dvh - 32px);padding:0;overflow:hidden}
.booking-cabinet .ab-dialog--service .ab-dialog-inner{box-sizing:border-box;height:100%;min-height:0;display:flex;flex-direction:column;padding:16px;overflow:hidden}
.booking-cabinet .ab-service-person-locations{display:grid;gap:6px;padding:4px 0 8px 24px}
.booking-cabinet .ab-service-performer:has(.ab-service-person-locations){display:block}
.booking-cabinet .ab-service-person-locations .ab-resource-check{align-items:flex-start;font-size:13px;line-height:1.5}
.booking-cabinet .ab-service-person-locations .ab-resource-check span{min-width:0;overflow-wrap:anywhere}
