@layer nordic-base, nordic-authored, nordic-custom;@layer nordic-base {.booking-widget { color: var(--ink); --booking-ease: cubic-bezier(.32,.72,0,1); --booking-topbar-height: 76px; }
.booking-widget *, .booking-dialog * { box-sizing: border-box; }
.booking-inline { max-width: 760px; margin-inline: auto; line-height: 1.5; }
.booking-widget[data-booking-expanded] > .booking-inline { visibility: hidden; }
.booking-heading { margin-bottom: 30px; }
.booking-eyebrow { display: block; margin-bottom: 12px; color: var(--booking-muted, var(--primary)); font-size: 16px; }
.booking-heading h2 { margin: 0; font: 400 clamp(30px, 3.5vw, 44px)/1.15 var(--font-heading); letter-spacing: var(--heading-tracking); outline: none; overflow-wrap: anywhere; }
.booking-heading p { max-width: 54ch; margin: 18px 0 0; color: var(--booking-muted, var(--primary)); line-height: 1.65; }
.booking-choices { display: grid; grid-template-columns: 1fr; gap: 10px; }
.booking-choices--list { grid-template-columns: 1fr; gap: 10px; }
.booking-choice { display: flex; align-items: center; justify-content: space-between; gap: 22px; width: 100%; padding: 22px; border: 1px solid var(--line); border-radius: var(--button-radius); color: var(--ink); background: #fff; text-align: left; font: inherit; cursor: pointer; transition: transform 120ms var(--booking-ease), border-color 160ms ease, background-color 160ms ease; }
.booking-choice > span { display: grid; gap: 10px; min-width: 0; }
.booking-choice strong { font-size: 20px; font-weight: 600; line-height: 1.3; }
.booking-choice span span { font-size: 16px; color: var(--booking-muted, var(--primary)); line-height: 1.6; overflow-wrap: anywhere; }
.booking-choice > svg { flex: none; color: var(--primary); }
.booking-choice--customer { display: grid; grid-template-columns: 44px minmax(0, 1fr) 22px; gap: 18px; min-height: 106px; }
.booking-choice .booking-choice__icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--button-radius); background: var(--cream); color: var(--primary); }
.booking-choice .booking-choice__copy { gap: 6px; }
.booking-treatment-list { border-top: 1px solid var(--line); }
.booking-treatment-row { display: flex; align-items: center; justify-content: space-between; gap: 24px; width: 100%; padding: 20px 0; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; color: var(--ink); background: transparent; text-align: left; font: inherit; cursor: pointer; transition: transform 120ms var(--booking-ease), background-color 160ms ease; }
.booking-treatment-row__copy { display: grid; gap: 6px; min-width: 0; }
.booking-treatment-row__copy strong { font-size: 20px; font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.booking-treatment-row__copy > span { color: var(--booking-muted, var(--primary)); font-weight: 400; line-height: 1.5; overflow-wrap: anywhere; }
.booking-treatment-row__price { display: grid; gap: 4px; flex: none; text-align: right; }
.booking-treatment-row__price > span { color: var(--booking-muted, var(--primary)); font-size: 16px; line-height: 1.2; }
.booking-treatment-row__price strong { font-size: 18px; font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.booking-widget .booking-choice .booking-offer-title { display: inline-flex; align-items: center; gap: 8px; max-width: 100%; color: inherit; font: inherit; }
.booking-widget .booking-choice .booking-offer-title > span { min-width: 0; color: inherit; font: inherit; }
.booking-offer-title > svg { flex: none; }
.booking-choices--list .booking-choice { align-items: center; padding: 20px 22px; }
.booking-choices--list .booking-choice strong { font-size: 18px; }
.booking-widget button { touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none; }
.booking-widget button:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
.booking-widget button:active:not(:disabled) { transform: scale(.98); }
.booking-widget button:disabled { opacity: .42; cursor: default; }
.booking-widget button svg { flex: none; }
.booking-widget .booking-primary, .booking-widget .booking-secondary { display: flex; align-items: center; justify-content: center; gap: 12px; min-height: 48px; width: 100%; padding: 14px 22px; border: 1px solid var(--primary); border-radius: var(--button-radius); font: 400 16px/1.45 var(--font-body); text-align: center; cursor: pointer; transition: transform 120ms var(--booking-ease), background-color 160ms ease; }
.booking-widget .booking-primary { color: var(--paper); background: var(--primary); }
.booking-widget .booking-secondary { color: var(--ink); background: transparent; border-color: var(--line); }
.booking-text-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 10px 0; border: 0; background: transparent; color: var(--booking-muted, var(--primary)); font: inherit; font-size: 16px; cursor: pointer; }
.booking-actions { display: grid; gap: 12px; margin-top: 38px; }
.booking-benefits { margin-top: 34px; }
.booking-benefit { display: flex; align-items: center; gap: 14px; min-height: 78px; padding: 16px 0; border-bottom: 1px solid var(--line); line-height: 1.5; }
.booking-benefit > span:nth-child(2) { flex: 1; min-width: 0; }
.booking-benefit__icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--button-radius); color: var(--primary); background: var(--booking-fill, var(--sand)); flex: none; }
.booking-benefit .info-popover__trigger { width: 44px; height: 44px; }
.booking-benefit .information-card__description { margin: 0; }
.booking-summary { margin-bottom: 34px; border-top: 1px solid var(--line); }
.booking-summary__row { display: flex; align-items: center; gap: 18px; min-height: 56px; border-bottom: 1px solid var(--line); padding-block: 8px; }
.booking-summary__row > span { flex: 0 0 88px; color: var(--booking-muted, var(--primary)); }
.booking-summary__row strong { flex: 1; min-width: 0; font-weight: 500; overflow-wrap: anywhere; }
.booking-summary__row button { flex: none; }
.booking-summary__detail { display: block; margin-top: 4px; font: 400 14px/1.5 var(--font-body); color: var(--booking-muted, var(--primary)); }
.booking-message { margin: 20px 0; padding: 20px; border-radius: var(--button-radius); background: var(--booking-fill, var(--sand)); line-height: 1.6; }
.booking-message p { margin: 0; }
.booking-message button { margin-top: 16px; }
.booking-search { display: flex; align-items: center; gap: 12px; border: 1px solid var(--line); border-radius: var(--button-radius); background: #fff; padding: 0 16px; margin-bottom: 22px; color: var(--primary); }
.booking-search input { width: 100%; min-width: 0; min-height: 52px; padding: 12px 0; border: 0; outline: 0; font: 400 16px/1.5 var(--font-body); background: var(--input-surface); color: var(--ink); }
.booking-search:focus-within { border-color: var(--input-focus); }
.booking-search input::placeholder { color: var(--primary); opacity: 1; }
.booking-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.booking-inline__footer { padding-top: 20px; border-top: 1px solid var(--line); }
.booking-inline__footer .booking-actions { margin-top: 0; gap: 10px; }
.booking-dialog:not([open]) { display: none !important; }
.booking-dialog { position: fixed; inset: 0; width: 100%; height: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; border: 0; padding: 0; overflow: hidden; color: var(--ink); background: transparent; font: 400 16px/1.5 var(--font-body); isolation: isolate; }
.booking-dialog__surface { position: absolute; inset: 0; z-index: -1; pointer-events: none; background: var(--booking-background, var(--paper)); transform-origin: 0 0; }
.booking-dialog::backdrop { background: transparent; }
.booking-viewport { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; flex-direction: column; overflow: hidden; }
.booking-dialog__top { position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; flex: none; gap: 20px; min-height: var(--booking-topbar-height, 76px); padding: max(12px, env(safe-area-inset-top, 0px)) max(24px, env(safe-area-inset-right, 0px)) 12px max(24px, env(safe-area-inset-left, 0px)); border-bottom: 1px solid var(--line); }
.booking-dialog__top > span { font-weight: 500; }
.booking-widget .booking-icon-button { display: inline-grid; place-items: center; flex: none; width: 44px; height: 44px; padding: 0; color: var(--ink); border: 1px solid transparent; border-radius: var(--button-radius); background: transparent; cursor: pointer; transition: background-color 160ms ease, transform 120ms var(--booking-ease); }
.booking-widget .booking-close { border: 0; }
.booking-dialog__scroll { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scroll-padding-block: 24px; }
.booking-dialog__footer { flex: none; padding: 16px 24px max(16px, env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--line); background: var(--booking-background, var(--paper)); }
.booking-dialog__footer .booking-actions { width: min(620px, 100%); margin: 0 auto; gap: 10px; }
.booking-dialog__content { width: min(620px, calc(100% - 48px)); margin: 0 auto; padding: 40px 0 max(36px, env(safe-area-inset-bottom, 0px)); }
.booking-dialog .booking-heading h2 { font-size: clamp(28px, 3vw, 36px); }
.booking-dialog .booking-eyebrow { display: none; }
.booking-dialog[data-booking-motion] .booking-dialog__surface {
  animation: booking-surface-morph var(--booking-motion-duration) var(--booking-ease) both;
}
.booking-dialog[data-booking-motion] {
  animation: booking-viewport-mask var(--booking-motion-duration) var(--booking-ease) both;
}
/* Text keeps its final width and type size. Only the surface travels; fading
   the content avoids reflow, stretched fields and overflowing long forms. */
.booking-dialog[data-booking-motion] .booking-dialog__content,
.booking-dialog[data-booking-motion] .booking-dialog__footer {
  animation: booking-content-fade var(--booking-motion-content-duration) var(--booking-ease) var(--booking-motion-content-delay) both;
}
.booking-dialog[data-booking-phase='opening'] .booking-dialog__top { animation: booking-top-enter 160ms var(--booking-ease) both; }
.booking-dialog[data-booking-phase='closing'] .booking-dialog__top { animation: booking-top-exit 100ms var(--booking-ease) both; }
.booking-dialog[data-booking-phase='closing'] :is(.booking-dialog__content, .booking-dialog__footer) { pointer-events: none; }
@keyframes booking-surface-morph {
  from { transform: var(--booking-motion-surface-from); }
  to { transform: var(--booking-motion-surface-to); }
}
@keyframes booking-viewport-mask {
  from { clip-path: var(--booking-motion-clip-from); }
  to { clip-path: var(--booking-motion-clip-to); }
}
@keyframes booking-content-fade {
  from { opacity: var(--booking-motion-content-opacity-from); transform: var(--booking-motion-content-transform-from); }
  to { opacity: var(--booking-motion-content-opacity-to); transform: var(--booking-motion-content-transform-to); }
}
@keyframes booking-top-enter { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes booking-top-exit { from { opacity: 1; } to { opacity: 0; } }
.booking-calendar__toolbar { display: flex; align-items: center; gap: 4px; margin-bottom: 18px; }
.booking-calendar__toolbar h3 { flex: 1; margin: 0; font: 400 20px/1.3 var(--font-heading); }
/* Dates are formatted in lowercase; sentence case raises only the first letter. */
.booking-calendar__toolbar h3::first-letter { text-transform: uppercase; }
.booking-day-strip { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; scroll-snap-type: x proximity; padding: 4px; margin: -4px; }
.booking-day-strip::-webkit-scrollbar { display: none; }
.booking-day { flex: 1 0 68px; display: flex; flex-direction: column; align-items: center; gap: 4px; min-height: 112px; padding: 12px 4px; border: 1px solid transparent; border-radius: var(--button-radius); color: var(--booking-muted, var(--primary)); background: transparent; font: inherit; cursor: pointer; scroll-snap-align: start; font-variant-numeric: tabular-nums; transition: transform 120ms var(--booking-ease), background-color 160ms ease; }
.booking-day strong { font: 400 24px/1.2 var(--font-heading); color: var(--ink); }
.booking-day span { font-size: 16px; }
.booking-widget .booking-day[aria-pressed='true'] { color: var(--paper); background: var(--primary); }
.booking-day[aria-pressed='true'] strong { color: inherit; }
.booking-week-controls { display: flex; justify-content: space-between; gap: 12px; margin-top: 12px; }
.booking-week-controls button { font-size: 16px; }
.booking-month { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; padding: 4px; margin: -4px; }
.booking-month__weekday { text-align: center; color: var(--booking-muted, var(--primary)); padding-block: 12px; font-size: 16px; }
.booking-widget .booking-day--month { min-height: 50px; padding: 10px 4px; justify-content: center; gap: 6px; }
.booking-day__dot { height: 4px; width: 4px; border-radius: 50%; background: transparent; }
.booking-day[data-has-times='true'] .booking-day__dot { background: currentColor; }
.booking-times { margin-top: 30px; }
.booking-practitioner-group h4 { margin: 0 0 12px; font: 500 16px/1.5 var(--font-body); color: var(--booking-muted, var(--primary)); }
.booking-practitioner-group + .booking-practitioner-group { margin-top: 24px; }
.booking-times__heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 24px; }
.booking-times__heading h3 { margin: 0; font: 400 24px/1.3 var(--font-heading); }
.booking-times__heading h3::first-letter { text-transform: uppercase; }
.booking-times__heading > span { flex: none; color: var(--booking-muted, var(--primary)); }
.booking-time-group { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; margin: 0 0 20px; min-width: 0; }
.booking-time-group button { min-height: 48px; padding: 10px; border: 1px solid var(--line); border-radius: var(--button-radius); color: var(--ink); background: transparent; font: 500 16px/1.5 var(--font-body); font-variant-numeric: tabular-nums; cursor: pointer; transition: transform 120ms var(--booking-ease), background-color 160ms ease; }
.booking-time-group button[aria-pressed='true'] { color: var(--paper); background: var(--primary); border-color: var(--primary); }
.booking-widget .booking-continue { flex-direction: column; gap: 2px; min-height: 64px; }
.booking-continue span:last-child { opacity: .86; }
.booking-note { margin: 0; text-align: center; color: var(--booking-muted, var(--primary)); line-height: 1.5; font-size: 16px; }
.booking-review { margin: 28px 0; }
.booking-review > div { display: grid; grid-template-columns: 100px 1fr; gap: 18px; padding-block: 16px; border-bottom: 1px solid var(--line); }
.booking-review dt { color: var(--booking-muted, var(--primary)); }
.booking-review dd { margin: 0; overflow-wrap: anywhere; }
.booking-review dd > span { display: block; color: var(--booking-muted, var(--primary)); margin-top: 6px; }
.booking-receipt { display: grid; gap: 16px; overflow-wrap: anywhere; }
.booking-receipt h3 { margin: 0; font: 400 26px/1.25 var(--font-heading); }
.booking-receipt p { margin: 0; }
.booking-receipt .booking-note { text-align: left; }
.booking-receipt .booking-primary { margin-top: 12px; }
.booking-dialog :is(h2, h3, [role='alert']) { scroll-margin-block-start: 24px; }
@media (hover:hover) and (pointer:fine) {
  .booking-choice:hover { background: #fff; border-color: var(--primary); }
  .booking-treatment-row:hover { background: var(--booking-fill, rgb(255 255 255 / 45%)); }
  .booking-widget .booking-primary:hover { background: var(--ink); }
  .booking-widget .booking-secondary:hover, .booking-widget .booking-icon-button:hover, .booking-day:hover:not(:disabled):not([aria-pressed='true']), .booking-time-group button:hover:not(:disabled):not([aria-pressed='true']) { background: var(--booking-fill, var(--sand)); }
  .booking-text-button:hover { color: var(--ink); }
}
@media (max-width:600px) {
  .booking-choices { gap: 10px; }
  .booking-choice { padding: 18px; }
  .booking-choice--customer { grid-template-columns: 38px minmax(0, 1fr) 20px; gap: 12px; }
  .booking-choice .booking-choice__icon { width: 38px; height: 38px; }
  .booking-choice strong, .booking-treatment-row__copy strong { font-size: 18px; }
  .booking-treatment-row { gap: 16px; }
  .booking-treatment-row__price strong { font-size: 16px; }
  .booking-heading h2 { font-size: 32px; }
  .booking-dialog__top { min-height: var(--booking-topbar-height, 76px); padding-inline: max(16px, env(safe-area-inset-left, 0px)); }
  .booking-dialog__content { width: calc(100% - 32px); padding-top: 28px; }
  .booking-dialog__footer { padding-inline: 16px; }
  .booking-summary__row { gap: 12px; }
  .booking-summary__row > span { flex-basis: 78px; }
  .booking-summary__row button { gap: 3px; }
  .booking-benefit { gap: 10px; }
  .booking-benefit__icon { width: 38px; height: 38px; }
  .booking-actions { margin-top: 28px; }
  .booking-times__heading { align-items: flex-start; }
  .booking-times__heading h3 { font-size: 22px; }
  .booking-review > div { grid-template-columns: 70px 1fr; gap: 12px; }
}
@media (max-width:360px) {
  .booking-summary__row { gap: 8px; }
  .booking-summary__row > span { flex-basis: 64px; }
  .booking-widget .booking-icon-button { width: 44px; }
  .booking-calendar__toolbar h3 { font-size: 18px; }
}
@media (prefers-reduced-motion:reduce) {
  .booking-widget button, .booking-dialog__content { transition: none; }
  .booking-widget button:active:not(:disabled) { transform: none; }
}
@media (forced-colors:active) {
  .booking-choice, .booking-primary, .booking-secondary, .booking-time-group button, .booking-day[aria-pressed='true'] { border: 1px solid ButtonText; }
  .booking-widget button[aria-pressed='true'] { outline: 2px solid Highlight; }
}

.booking-widget a.booking-choice, .booking-widget a.booking-secondary { text-decoration: none; }
.booking-widget a:focus-visible { outline:2px solid var(--primary); outline-offset:3px; }

/* Embedded account booking uses document scrolling and the shell's measured nav. */
.booking-portal[hidden], .booking-widget[data-booking-frame='portal'][data-booking-expanded] > .booking-inline { display: none !important; }
.booking-portal { --account-booking-footer-height: 0px; min-width: 0; font: 400 16px/24px var(--font-body); padding-bottom: calc(var(--account-booking-footer-height) + 16px); }
.booking-portal__content { min-width: 0; width: 100%; }
.booking-portal__back { margin: 0 0 12px; justify-content: flex-start; }
.booking-portal .booking-eyebrow { display: none; }
.booking-portal .booking-heading { margin-bottom: 24px; }
.booking-portal .booking-heading :is(h1, h2) { margin: 0; font: 400 28px/34px var(--font-heading); letter-spacing: var(--heading-tracking); overflow-wrap: anywhere; outline: none; }
.booking-portal .booking-heading p { margin-top: 12px; }
.booking-portal .booking-summary { margin-bottom: 24px; }
.booking-portal .booking-summary__row > span { min-width: 0; overflow-wrap: anywhere; }
.booking-portal .booking-calendar__toolbar h3 { min-width: 0; overflow-wrap: anywhere; }
.booking-portal .booking-primary { min-height: 52px; }
.booking-portal .booking-continue { min-height: 64px; }
.booking-portal :is(h1, h2, h3, input, textarea, select, [role='alert']) { scroll-margin-block-start: calc(var(--account-header-height, var(--header)) + 20px); scroll-margin-block-end: calc(var(--account-booking-footer-height) + var(--account-nav-height, 0px) + 16px); }
.booking-portal__footer { position: fixed; z-index: 35; inset-inline: 0; bottom: var(--account-nav-height, 0px); border-top: 1px solid var(--line); padding: 12px var(--account-gutter, 20px); background: var(--paper); }
.booking-portal__footer .booking-actions { width: min(620px, 100%); margin: 0 auto; gap: 8px; }
@supports ((backdrop-filter: blur(20px)) or (-webkit-backdrop-filter: blur(20px))) {
  .booking-portal__footer { background: color-mix(in srgb, var(--paper) 90%, transparent); backdrop-filter: blur(20px) saturate(1.25); -webkit-backdrop-filter: blur(20px) saturate(1.25); }
}
@media (min-width: 768px) { .booking-portal__footer { padding: 16px var(--account-gutter, 24px); } }
@media (max-width: 359px) { .booking-portal__footer { padding-inline: var(--account-gutter, 16px); } } }
@layer nordic-base, nordic-authored, nordic-custom;
@layer nordic-base {/* These surfaces use the established booking choice geometry. Keep selectors
   scoped so production CSS ordering cannot turn their rows into generic cards. */
.booking-widget .booking-offer,
.booking-widget .booking-appointment {
  width: 100%;
  min-width: 0;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: var(--button-radius);
  background: #fff;
  color: var(--ink);
  text-align: left;
  font: 400 16px/1.5 var(--font-body);
  overflow-wrap: anywhere;
}
.booking-widget .booking-offer {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  gap: 16px;
  cursor: pointer;
  transition: border-color 160ms ease, transform 120ms var(--booking-ease);
}
.booking-offer__copy { display: grid; gap: 0; min-width: 0; }
.booking-widget .booking-offer__title,
.booking-widget .booking-appointment__title {
  margin: 0;
  font: 600 18px/25px var(--font-body);
  color: var(--ink);
  overflow-wrap: anywhere;
}
.booking-widget .booking-appointment__title { font-family: var(--font-body); }
/* The account and assistant import this same personal-card contract. Page
   wrappers must not alter its type or add another gap between adjacent cards. */
.booking-widget .booking-offer__title { font-weight: 500; hyphens: auto; }
.booking-widget .booking-dialog[data-booking-keyboard] :is(button, a[href], summary, input[type=checkbox]):focus {
  outline: 2px solid var(--primary);
  outline-offset: 3px;
}
.booking-offer__description { margin-top: 6px; font: 400 16px/24px var(--font-body); white-space: pre-line; color: var(--ink); }
.booking-offer__duration,
.booking-appointment__duration { display: flex; align-items: center; gap: 8px; color: var(--ink); }
.booking-offer__duration { margin-top: 12px; font: 400 16px/24px var(--font-body); }
.booking-offer svg,
.booking-appointment svg { flex: none; }
.booking-offer > svg { align-self: center; margin: 0; color: var(--primary); }
.booking-widget .booking-offer--inactive { grid-template-columns: minmax(0, 1fr); cursor: default; }
.customer-booking__offer { margin: 0; }
.customer-booking__offers .customer-booking__offer + .customer-booking__offer { margin-top: 12px; }
.customer-booking__secondary > .customer-booking__secondary-title { margin: 0 0 16px; font: 400 21px/1.35 var(--font-heading); }
.customer-booking__offer .customer-booking__history { margin-top: 12px; font-size: 16px; }
.customer-booking__offer-status { margin-top: 12px; display: grid; gap: 8px; }
.customer-booking__offer-status .booking-note { text-align: left; }
.customer-booking__offer-status .booking-secondary { width: auto; justify-self: start; margin: 0; }
.booking-widget .booking-appointment { margin: 0 0 24px; }
.booking-appointment__duration { margin-top: 8px; }
.booking-appointment__rows { display: grid; gap: 16px; margin-top: 20px; }
.booking-appointment__rows:empty { display: none; }
.booking-appointment__row { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; align-items: center; column-gap: 12px; }
.booking-appointment__row > svg { color: var(--ink); }
.booking-appointment__value { display: grid; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
.booking-widget .booking-appointment__edit { align-self: center; min-height: 44px; padding: 0; margin-block: -9px; white-space: nowrap; }
.booking-appointment--compact .booking-appointment__rows { gap: 12px; margin-top: 16px; }
.booking-receipt > .booking-appointment { margin: 0; }
@media (hover: hover) and (pointer: fine) {
  .booking-widget button.booking-offer:hover { border-color: var(--primary); }
}
@media (max-width: 359px) {
  .booking-widget .booking-offer,
  .booking-widget .booking-appointment { padding: 16px; }
  .booking-appointment__row { column-gap: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .booking-widget .booking-offer { transition: none; }
}
@media (forced-colors: active) {
  .booking-widget .booking-dialog[data-booking-keyboard] :is(button, a[href], summary, input[type=checkbox]):focus { outline-color: Highlight; }
  .booking-widget .booking-offer,
  .booking-widget .booking-appointment { background: Canvas; color: CanvasText; border-color: CanvasText; }
}
.booking-terms { margin-block: 1.25rem; }
.booking-terms h4 { font-size: 0.875rem; font-weight: 600; margin-block: 0 0.5rem; }
.booking-terms__text { white-space: pre-wrap; overflow-wrap: anywhere; }
.booking-confirmation-actions { display: grid; gap: 12px; width: 100%; min-width: 0; }
.booking-confirmation-actions .booking-actions { margin-top: 0; }
/* One 24px line. The 44px targets overhang it by 10px, which stays inside the 12px gap to the button, and the
   box's -12px start margin puts the visible 20px square on the button's left edge. */
.booking-terms-acceptance__control { display: flex; align-items: flex-start; min-width: 0; text-align: left; }
.booking-terms-acceptance__box { display: grid; flex: none; place-items: center; width: 44px; height: 44px; margin: -10px -2px -10px -12px; }
.booking-terms-acceptance__box input { width: 20px; height: 20px; margin: 0; accent-color: var(--primary); cursor: inherit; }
.booking-terms-acceptance__box input:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
.booking-terms-acceptance__control > .booking-note { flex: 1; min-width: 0; margin: 0; text-align: left; }
.booking-terms-acceptance__control > .booking-note label { display: inline-block; padding-block: 10px; margin-block: -10px; }
.booking-terms-acceptance label { cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none; }
.booking-terms-acceptance__control:has(input:disabled) label { cursor: default; }
.booking-widget .booking-terms-link { position: relative; display: inline; padding: 0; border: 0; background: none; color: var(--booking-muted, var(--primary)); font: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.booking-widget .booking-terms-link::after { content: ''; position: absolute; inset: -10px 0; }
.booking-widget .booking-terms-link:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; border-radius: 2px; }
/* Offer cards place the row beside their own actions. Keep the same 12px to the button as the shared confirmation block. */
.account-waitlist-offers .booking-terms-acceptance { margin-top: 8px; }
.account-waitlist-offer .booking-terms-acceptance + .account-appointment-actions { margin-top: 0; }
.offer-access .booking-terms-acceptance + .account-appointment-actions { margin-top: -8px; }
.booking-terms-dialog { box-sizing: border-box; width: min(600px, calc(100% - 32px)); max-width: none; max-height: calc(100dvh - 48px); margin: auto; padding: 0; border: 1px solid var(--line); border-radius: var(--button-radius); background: var(--paper); color: var(--ink); font: 400 16px/1.6 var(--font-body); box-shadow: 0 20px 80px rgb(0 0 0 / 20%); }
.booking-terms-dialog[open] { display: flex; flex-direction: column; }
.booking-terms-dialog::backdrop { background: rgb(0 0 0 / 40%); }
.booking-terms-dialog__header { display: flex; flex: none; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 20px; border-bottom: 1px solid var(--line); }
.booking-terms-dialog__header h4 { margin: 0; font: 500 22px/1.3 var(--font-heading); }
.booking-terms-dialog__header h4:focus { outline: none; }
.booking-terms-dialog__body { min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 20px; }
.booking-terms-dialog__body:focus-visible { outline: 2px solid var(--primary); outline-offset: -4px; }
.booking-terms-dialog__body p { margin: 0; text-align: left; }
@media (max-width: 480px) {
  .booking-terms-dialog { max-height: calc(100dvh - 32px); }
  .booking-terms-dialog__header, .booking-terms-dialog__body { padding: 16px; }
}
}
@layer nordic-base, nordic-authored, nordic-custom;@layer nordic-base {.booking-waitlist { display:grid; gap:4px; margin-block-start:24px; min-width:0; }
.booking-waitlist__option { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:16px; padding:16px; border:1px solid var(--line); border-radius:var(--button-radius); background:#fff; min-width:0; }
.booking-waitlist__copy { min-width:0; }
.booking-waitlist__copy label { display:grid; gap:4px; cursor:pointer; font:400 14px/1.45 var(--font-body); }
.booking-waitlist__copy strong { font-size:16px; font-weight:600; }
.booking-waitlist__copy span { color:var(--ink); }
.booking-waitlist > nsb-info-popover { min-width:0; max-width:100%; }
/* Account preferences also use this text helper outside .booking-widget. */
.booking-waitlist .booking-cpr-help { display:inline-flex; align-items:center; justify-content:flex-start; gap:8px; width:auto; max-width:100%; height:auto; padding:8px 0; border-radius:0; font:400 16px/1.5 var(--font-body); text-align:left; }
.booking-preference-switch { position:relative; display:inline-flex; align-items:center; width:50px; min-width:50px; height:44px; cursor:pointer; flex:none; }
.booking-waitlist .booking-preference-switch input[type=checkbox] { position:absolute; inset:0; opacity:0; width:100%; height:100%; min-height:44px; margin:0; cursor:pointer; }
.booking-preference-switch__track { width:50px; height:23px; border-radius:4em; background:var(--sand); pointer-events:none; }
.booking-preference-switch__track>span { display:block; width:19px; height:19px; border-radius:50%; margin:2px; background:var(--paper); transform:translateX(0); transition:transform 160ms ease; }
.booking-preference-switch input:checked+.booking-preference-switch__track { background:var(--primary); }
.booking-preference-switch input:checked+.booking-preference-switch__track>span { transform:translateX(27px); }
.booking-preference-switch input:focus-visible+.booking-preference-switch__track { outline:2px solid var(--ink); outline-offset:4px; }
.booking-preference-switch:has(input:disabled) { opacity:.55; cursor:default; }
.account-profile-waitlist { margin-block:24px; }

.waitlist-editor { display:grid;gap:20px;padding:20px 0;min-width:0; }
.waitlist-editor fieldset { border:0;padding:0;margin:0;min-width:0; }
.waitlist-editor legend { font:600 16px/1.5 var(--font-body);padding:0;margin-block-end:10px; }
.waitlist-editor label { display:grid;gap:6px;font:400 14px/1.5 var(--font-body);min-width:0; }
.waitlist-editor input:not([type=radio]),.waitlist-editor select,.waitlist-enroll input:not([type=radio]) { min-height:46px;width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--line);border-radius:var(--button-radius);background:white;color:var(--ink);font:400 16px/1.4 var(--font-body); }
.waitlist-editor :is(input,select,button):focus-visible,.waitlist-enroll input:focus-visible { outline:2px solid var(--primary);outline-offset:3px; }
.waitlist-choice-row { display:grid;gap:10px; }
.waitlist-choice-row label { display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer; }
.waitlist-choice-row input { width:20px;height:20px;accent-color:var(--primary);flex:none; }
.waitlist-windows { display:grid;gap:12px;margin-block:12px; }
.waitlist-editor .waitlist-window { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px;border:1px solid var(--line);border-radius:var(--button-radius);background:#fcfaf7; }
.waitlist-remove { grid-column:1/-1;justify-self:start; }
.waitlist-date-range,.waitlist-advanced fieldset { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px; }
.waitlist-advanced summary { cursor:pointer;min-height:44px;display:list-item;align-content:center; }
.waitlist-advanced fieldset { margin-block-start:12px; }
.waitlist-summary { margin:0;padding:12px 16px;background:#f3eee8;border-radius:var(--button-radius);font:400 14px/1.6 var(--font-body); }
.waitlist-enroll { margin-block:24px;min-width:0; }
.waitlist-enroll>summary { cursor:pointer;min-height:44px;color:var(--booking-muted, var(--primary));font:500 16px/1.5 var(--font-body);align-content:center; }
.waitlist-enroll form,.waitlist-contact { display:grid;gap:14px; }
.waitlist-contact label { display:grid;gap:6px; }
.waitlist-requests { display:grid;gap:20px;margin-block:24px; }
.waitlist-request { padding:22px;background:white;border:1px solid var(--line);border-radius:var(--button-radius);display:grid;gap:12px; }
.waitlist-request h2,.waitlist-request h3,.waitlist-request p { margin:0; }
.waitlist-request-heading { display:flex;justify-content:space-between;align-items:baseline;gap:12px; }
.waitlist-request-status { font:400 14px/1.5 var(--font-body);white-space:nowrap; }
.waitlist-request-actions { display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center; }
@media(max-width:420px) { .waitlist-date-range,.waitlist-advanced fieldset { grid-template-columns:minmax(0,1fr); } .waitlist-request { padding:16px; } }
@media(prefers-reduced-motion:reduce) { .booking-preference-switch__track>span { transition:none; } }
@media(forced-colors:active) { .booking-preference-switch__track { outline:1px solid ButtonText; } .booking-preference-switch__track>span { background:ButtonText; } }

.waitlist-session { display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;align-items:center;margin-block:12px 20px;font:400 14px/1.5 var(--font-body); }
.waitlist-requirements{margin-block:1rem}.waitlist-requirements label{display:block;line-height:1.5;margin-bottom:.5rem}.waitlist-requirements textarea{display:block;box-sizing:border-box;width:100%;min-height:6rem;resize:vertical;border:1px solid var(--booking-border,#d8d2cc);border-radius:10px;background:#fff;padding:.8rem 1rem;font:inherit;color:inherit}.waitlist-enroll-trigger{text-align:left;line-height:1.5}.waitlist-popup{width:100%;max-width:620px;margin-inline:auto}.waitlist-popup .booking-field{margin-bottom:1rem}.waitlist-popup .booking-primary{width:100%}.waitlist-summary{white-space:pre-wrap;overflow-wrap:anywhere}

.booking-waitlist__option > .waitlist-requirements { grid-column:1/-1; min-width:0; margin:0; }
.booking-waitlist__option .waitlist-requirements label { font:600 14px/1.5 var(--font-body); }
.waitlist-selection { margin-block:0 24px; }
.waitlist-popup--inline { margin:0; max-width:none; }
.booking-widget.waitlist-popup--inline > h3 { margin:0 0 20px; font:400 22px/1.3 var(--font-heading); }
.waitlist-success { display:grid; gap:20px; }
.waitlist-success p { margin:0; }
.waitlist-success__intro { display:flex; gap:12px; align-items:center; }
.waitlist-success__intro > svg { flex:none; }
.waitlist-success .waitlist-selection { margin:0; }
.waitlist-success .booking-primary { text-align:center; }
.waitlist-enroll--inline { margin:0; }

.waitlist-enroll-back { margin: 0 0 16px; }
.waitlist-success__wishes { display: grid; gap: 4px; }
.waitlist-success__wishes p { white-space: pre-wrap; overflow-wrap: anywhere; }
.waitlist-popup .booking-field > label,.waitlist-requirements > label { font-weight:600; }
.waitlist-enroll .waitlist-enroll-trigger,.waitlist-enroll .waitlist-enroll-trigger:hover { display:block; text-align:left; text-decoration:none; }
.waitlist-enroll-trigger__action { text-decoration:underline; text-underline-offset:3px; }
.waitlist-resend { font:400 14px/1.5 var(--font-body); }
.waitlist-resend .waitlist-resend__link { display:inline; width:auto; min-height:0; padding:0; font:inherit; text-decoration:underline; text-underline-offset:3px; }
.waitlist-verification__edit { justify-self:center; text-align:center; }
.waitlist-request-actions--stack { display:flex; flex-direction:column; align-items:stretch; }
.waitlist-request-actions--stack > .account-button { width:100%; text-align:center; }
.waitlist-request-actions--stack > .waitlist-request-secondary { align-self:center; text-align:center; text-decoration:underline; text-underline-offset:3px; } }
