/* Reservation assist on the New Reservation sheet (public/shared/reservation-assist.js): booking intake and the
   reservation checks on the review. Desk tokens only. */
#bookingOverlay .bk-intake{margin:0 0 22px;padding:18px 18px 16px;border:1px solid var(--desk-line,#e6eae1);border-radius:16px;background:#fff;}
#bookingOverlay .bk-intake-title{font:600 14px/1.5 var(--nu-body,inherit);margin:0 0 6px;color:var(--desk-ink,#293126);}
#bookingOverlay .bk-intake .sm-sub{margin:0 0 12px;line-height:1.55;}
#bookingOverlay .bk-intake-label{display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--desk-muted,#64705c);margin:0 0 6px;}
#bookingOverlay .bk-intake-text{display:block;width:100%;max-width:100%;box-sizing:border-box;min-height:96px;resize:vertical;border:1px solid var(--line,#eaece8);border-radius:10px;background:#fff;color:var(--ink,#1d1e1b);font:400 16px/1.5 inherit;padding:10px 12px;}
#bookingOverlay .bk-intake-text:focus{outline:none;border-color:rgba(29,30,27,.28);}
#bookingOverlay .bk-intake-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;}
#bookingOverlay .bk-intake-actions .sm-btn{flex:1 1 180px;min-height:44px;}
#bookingOverlay .bk-intake-status{margin:12px 0 0;font-size:13px;line-height:1.55;color:var(--desk-ink,#293126);}
#bookingOverlay .bk-intake-status:empty{display:none;}
#bookingOverlay .bk-filled,#bookingOverlay .bk-filled-wrap>.ndp-field{border-color:#8a6d1f!important;box-shadow:0 0 0 1px #8a6d1f!important;background:#fffdf5!important;}
#bookingOverlay .bk-filled-note{margin:4px 0 0;font-size:12px;line-height:1.4;color:#6b5414;}
#bookingOverlay .bk-checks-list{margin:0 0 10px;padding:0 0 0 18px;display:grid;gap:8px;font-size:13.5px;line-height:1.55;color:var(--desk-ink,#293126);}
#bookingOverlay .bk-check.is-blocking{color:#983e2e;}
#bookingOverlay .bk-check.is-blocking strong{font-weight:600;}
#bookingOverlay #bkTransferSaved[aria-disabled="true"]{opacity:.5;cursor:not-allowed;}
#bookingOverlay .bk-checks .bk-checks-test{color:#6b5414;margin-top:8px;}
@media (max-width:600px){
  #bookingOverlay .bk-intake{padding:16px 14px 14px;}
  #bookingOverlay .bk-intake-actions .sm-btn{flex-basis:100%;}
}

/* Booking intake, folded: one line that opens the paste box. The sheet opens on the form with one primary (Review). */
#bookingOverlay .bk-intake-title{margin:0;}
#bookingOverlay .bk-intake-toggle{display:grid;gap:4px;width:100%;min-height:48px;margin:0;padding:0 36px 0 0;border:0;background:none;box-shadow:none!important;text-align:left;cursor:pointer;position:relative;color:var(--desk-ink,#242424);font:inherit;transform:none!important;}
#bookingOverlay .bk-intake-toggle::after{content:'';position:absolute;right:8px;top:50%;width:9px;height:9px;margin-top:-7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .15s;}
#bookingOverlay .bk-intake-toggle[aria-expanded="true"]::after{transform:rotate(225deg);margin-top:-2px;}
#bookingOverlay .bk-intake-toggle:focus-visible{outline:3px solid var(--desk-ink,#242424);outline-offset:4px;border-radius:8px;}
#bookingOverlay .bk-intake-name{font:600 15px/1.4 var(--team-font,inherit);}
#bookingOverlay .bk-intake-hint{font:400 14px/1.4 var(--team-font,inherit);color:var(--desk-muted,#676767);}
#bookingOverlay .bk-intake{padding:12px 20px;}
#bookingOverlay .bk-intake-panel{margin-top:var(--gap-in,12px);}
#bookingOverlay .bk-intake-panel[hidden]{display:none;}

/* A form problem under the field it names (it also shows in the action bar). */
#bookingOverlay .bk-field-issue{margin:var(--gap-in,12px) 0 0;font:500 14px/1.45 var(--team-font,inherit);color:var(--field-invalid,#8b3029);}

/* The sheet body holds the tap controls' hidden selects (position:absolute). Without this they escape its scroll box,
   the overlay itself becomes scrollable, and a field scrolled into view slides the whole sheet up. */
#bookingOverlay #bkBody{position:relative;}

/* The action bar stays at the foot of the sheet while the form scrolls: edge to edge, white, a hairline on top. */
#bookingOverlay #bkBody>.nu-sticky-actions{margin-top:auto;padding-top:12px!important;box-shadow:0 0 0 100vmax #fff,0 -1px 0 100vmax var(--desk-line,#e0e0e0);clip-path:inset(-1px -100vmax -100vmax);border-top:0;}
#bookingOverlay #bkBody>.nu-sticky-actions .nu-sticky-note{color:var(--field-invalid,#8b3029);}
#bookingOverlay #bkBody>.nu-sticky-actions .nu-sticky-note>.sm-btn{margin-top:var(--gap-in,12px);}
/* The review bar (polish2 T2): one calm row on an iPad or desktop, at most two rows on a phone. One primary (the dark
   button), the others quiet. A label never wraps inside its 48px button. */
#bookingOverlay .bk-review-actions:not(#nu-none){gap:var(--gap-in,12px)!important;}
#bookingOverlay .bk-review-actions>:is(button,a){white-space:nowrap;}
@media (min-width:601px){
  #bookingOverlay .bk-review-actions>:is(button,a):not(#nu-none){flex:0 0 auto;}
}
/* T2 phone */
@media (max-width:600px){
  #bookingOverlay .bk-review-actions:not(#nu-none){display:flex!important;flex-wrap:wrap;}
  /* The primary fills the first row; Edit details and a quiet link share the second (16px sides so both fit at 360). */
  #bookingOverlay .bk-review-actions>:is(button,a):not(.ghost):not(#nu-none){order:-1;flex:1 1 100%;}
  #bookingOverlay .bk-review-actions>.ghost:not(#nu-none){flex:1 1 auto;min-width:0;margin:0;padding-left:16px!important;padding-right:16px!important;}
}

/* The review's notes read as one calm callout: the same words, one panel, 12px between paragraphs. */
#bookingOverlay .bk-review>.bk-checkout-note+.bk-checkout-note{margin-top:0!important;border-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important;padding-top:0!important;}
#bookingOverlay .bk-review>.bk-checkout-note:has(+.bk-checkout-note){border-bottom:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;padding-bottom:var(--gap-in,12px)!important;}
#bookingOverlay .bk-review>.bk-checkout-note p{margin:0 0 var(--gap-in,12px);}
#bookingOverlay .bk-review>.bk-checkout-note p:last-child{margin-bottom:0;}
#bookingOverlay .bk-checkout-note+.bk-intake{margin-top:var(--gap-in,12px);}
#bookingOverlay .bk-intake{margin-bottom:var(--gap-group,24px);}
/* The save status line under the sheet's header takes no room until it has something to say. */
#bookingOverlay>.sm-panel>.sm-sub:has(>span:empty+button[hidden]){display:none;}
#bookingOverlay .bk-intake-toggle[aria-expanded="true"] .bk-intake-hint{display:none;}
/* Help sits 12px under its field, the tap controls included. */
#bookingOverlay .bk-field>.sm-sub{margin:var(--gap-in,12px) 0 0;}
/* The method cards already say what each route needs, so the line under them stays for screen readers only. */
#bookingOverlay .nu-choice-cards~#bkMethodHelp{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;}
/* A phone: Booking type takes the shared chip size (44px, 15px). Each part is as wide as its words, so
   Family / Friends stays on one line; if the words ever outgrow the row, the parts wrap instead of overflowing.
   The intake line drops its hint, so it stays one 48px row (the name says what it does; the panel says the rest). */
@media (max-width:480px){
  #bookingOverlay .nu-choice-segmented[data-choice-for="bk_bookingType"]{flex-wrap:wrap;}
  #bookingOverlay .nu-choice-segmented[data-choice-for="bk_bookingType"] .nu-choice-option{flex:1 1 auto;padding:8px 6px;font-size:15px;white-space:nowrap;}
  #bookingOverlay .bk-intake-hint{display:none;}
}

/* ===== New Reservation as a page (night 2, 2026-10-12). The Desk hides while it shows; the page sits in the flow like
   the other tool pages (same width and top), not over the Desk. Tokens only: 12 inside a group, 24 between groups, 48
   between sections; fields and buttons 48px, chips 44px. ===== */
body.bk-page-open #dash{display:none!important}
#bookingOverlay.bk-page:not(.show){display:none!important}
#bookingOverlay.bk-page.show{position:static!important;display:block!important;inset:auto!important;z-index:auto!important;padding:0!important;
  height:auto!important;min-height:0!important;max-height:none!important;
  background:none!important;overflow:visible!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;animation:none!important}
#bookingOverlay.bk-page>.sm-panel{display:block!important;width:min(880px,calc(100% - 96px))!important;max-width:none!important;height:auto!important;
  max-height:none!important;margin:54px auto calc(110px + env(safe-area-inset-bottom))!important;padding:0!important;border:0!important;
  border-radius:0!important;box-shadow:none!important;background:none!important;overflow:visible!important}
body.noted-staff.nu-concierge #bookingOverlay.bk-page .sm-head{position:static!important;display:flex!important;grid-template-areas:none!important;align-items:flex-start!important;justify-content:space-between!important;
  gap:var(--gap-in,12px)!important;padding:0 0 var(--gap-group,24px)!important;margin:0 0 var(--gap-section,48px)!important;background:none!important;
  border:0!important;border-bottom:1px solid var(--desk-line,#e0e0e0)!important}
body.noted-staff.nu-concierge #bookingOverlay.bk-page #bkOverlayTitle{margin:0!important;font:700 clamp(40px,5vw,66px)/1.05 var(--team-font,inherit)!important;letter-spacing:-.045em!important;white-space:normal!important;
  color:var(--desk-ink,#242424)!important;overflow-wrap:anywhere}
#bookingOverlay.bk-page .sm-close{flex:0 0 auto;width:44px!important;height:44px!important;border-radius:999px!important;margin-top:6px}
#bookingOverlay.bk-page .sm-body{display:block!important;padding:0!important;background:none!important;overflow:visible!important;min-height:0!important}
body.noted-staff.nu-concierge #bookingOverlay.bk-page>.sm-panel>.sm-sub{margin:0 0 var(--gap-group,24px)!important;padding:0!important}
#bookingOverlay .bk-sec{margin:0 0 var(--gap-section,48px)}
#bookingOverlay .bk-sec[hidden]{display:none!important}
#bookingOverlay .bk-sec-title{margin:0 0 var(--gap-group,24px)!important;font:700 24px/1.2 var(--team-font,inherit)!important;letter-spacing:-.02em!important;
  color:var(--desk-ink,#242424)!important;text-transform:none!important}
#bookingOverlay .bk-field[hidden]{display:none!important}
/* Fields: one 48px height for every single-line field, the iOS time field included, with room on the right. */
#bookingOverlay .bk-field :is(input:not([type=hidden]):not([type=file]),select){height:var(--field-h,48px)!important;min-height:var(--field-h,48px)!important;
  box-sizing:border-box!important;max-width:100%!important;min-width:0!important;padding-right:16px!important}
#bookingOverlay .bk-field input[type=time]{-webkit-appearance:none!important;appearance:none!important;display:block!important;width:100%!important;
  line-height:normal!important;padding:0 16px!important;text-align:left!important}
#bookingOverlay .bk-field input[type=time]::-webkit-date-and-time-value{text-align:left;margin:0}
#bookingOverlay .bk-field input[type=time]::-webkit-datetime-edit{padding:0}
#bookingOverlay #bkResume{width:100%;height:var(--field-h,48px)}
/* Paste Details and Upload a Screenshot: two equal 48px buttons; the paste box opens under them. */
#bookingOverlay .bk-fill-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-in,12px)}
#bookingOverlay .bk-fill-actions .sm-btn{width:100%;min-height:var(--btn-h,48px);height:auto}
#bookingOverlay .bk-fill-actions .sm-btn:only-of-type{grid-column:1/-1}
#bookingOverlay .bk-paste-panel{margin-top:var(--gap-group,24px);display:grid;gap:var(--gap-in,12px)}
#bookingOverlay .bk-paste-panel[hidden]{display:none}
#bookingOverlay .bk-paste-panel .bk-intake-label{margin:0!important}
#bookingOverlay .bk-paste-panel .sm-btn{min-height:var(--btn-h,48px);justify-self:start;padding:0 24px}
#bookingOverlay .bk-intake-working:not(:empty){margin-top:var(--gap-group,24px)}
#bookingOverlay .bk-intake-status{margin:var(--gap-in,12px) 0 0}
/* A field filled from the request: a light highlight until staff edit it, no words. */
body.noted-staff.nu-concierge #bookingOverlay .bk-field :is(input,select,textarea).bk-filled,body.noted-staff.nu-concierge #bookingOverlay .bk-field .bk-filled-wrap>.ndp-field{border-color:#c9b47a!important;box-shadow:0 0 0 1px #c9b47a!important;background:#fffcf2!important}
#bookingOverlay .bk-filled-choice [role=radio][aria-checked=true]{box-shadow:0 0 0 2px #c9b47a!important}
/* Booking Plan: three buttons, one under the other, no subtext. */
#bookingOverlay .bk-plan-actions{display:grid;gap:var(--gap-in,12px)}
#bookingOverlay .bk-plan-actions .sm-btn{width:100%;min-height:var(--btn-h,48px);height:auto;padding:12px 24px;white-space:normal;line-height:1.3}
#bookingOverlay .bk-plan-status:empty,#bookingOverlay #bkFormError:empty{display:none}
#bookingOverlay .bk-plan-status{margin:var(--gap-in,12px) 0 0;font:500 15px/1.45 var(--team-font,inherit);color:var(--desk-ink,#242424)}
#bookingOverlay #bkFormError{margin:var(--gap-in,12px) 0 0}
@media(max-width:760px){
  #bookingOverlay.bk-page>.sm-panel{width:calc(100% - 48px)!important;margin-top:35px!important}
  body.noted-staff.nu-concierge #bookingOverlay.bk-page .sm-head{margin-bottom:var(--gap-group,24px)!important}
  #bookingOverlay .bk-sec{margin-bottom:var(--gap-group,24px)}
}
@media(max-width:520px){
  #bookingOverlay .bk-fill-actions{grid-template-columns:1fr}
  #bookingOverlay .bk-grid{grid-template-columns:minmax(0,1fr)!important}
}
