/* =========================================================================
   GROOVE PROTOCOL - NIGHT EDITION BOOKINGS
   Loaded only on the Bookings page, after night-edition.css. Every rule is
   scoped to .ne-bk. Same vocabulary as the front page: running heads with a
   section number, one display title, graded portraits, text links with an
   arrow, and fields drawn as a single hairline. No cards, pills or panels.
     head (title + lead + facts) > 01 roster (portrait index) > 02 enquiry
   ========================================================================= */

.ne-bk{
  --ne-grade:grayscale(1) contrast(1.06) brightness(.95);
  --ne-head:72px;
  --ne-sec-y:clamp(88px,8.6vw,136px);
  --ne-col2:104px;
  color:var(--ne-text);
  font-variant-numeric:tabular-nums;
  padding-bottom:var(--ne-sec-y);
}
/* Resets carry no specificity (:where) so every component rule below wins. */
:where(.ne-bk) *,:where(.ne-bk) *::before,:where(.ne-bk) *::after{box-sizing:border-box;}
:where(.ne-bk) :where(h1,h2,h3,p,ol,ul){margin:0;}
:where(.ne-bk) :where(ol,ul){padding:0;list-style:none;}
:root .ne-bk :is(h1,h2,h3){font-weight:500;color:inherit;letter-spacing:0;}
:where(.ne-bk) img{display:block;max-width:100%;height:auto;}
:where(.ne-bk) a{color:inherit;text-decoration:none;}
.ne-bk .ne-wrap{max-width:var(--ne-wrap);margin:0 auto;padding:0 var(--ne-gutter);}

/* ---- Shared primitives (same values as the front page) ---- */
.ne-bk .ne-link{
  position:relative;
  display:inline-flex;align-items:center;gap:8px;min-height:44px;
  font-size:var(--ne-fs-small);color:var(--ne-text);
  transition:color var(--ne-t-fast) var(--ne-ease);
}
.ne-bk .ne-link::after{
  content:"";position:absolute;left:0;right:0;top:calc(50% + .8em);height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:left center;
  transition:transform var(--ne-t) var(--ne-ease);
}
.ne-bk .ne-link:hover::after,.ne-bk .ne-link:focus-visible::after{transform:scaleX(1);}
.ne-bk .ne-link span[aria-hidden]{transition:transform var(--ne-t) var(--ne-ease);}
.ne-bk .ne-link:hover span[aria-hidden]{transform:translateX(3px);}
.ne-bk .ne-link--quiet{color:var(--ne-muted);}
.ne-bk .ne-link--quiet:hover{color:var(--ne-text);}
.ne-bk .ne-btn{
  display:inline-flex;align-items:center;gap:12px;min-height:46px;padding:0 20px;
  border:0;border-radius:2px;background:var(--ne-text);color:var(--ne-ink);
  font:inherit;font-size:var(--ne-fs-small);font-weight:500;cursor:pointer;
  transition:background var(--ne-t-fast) var(--ne-ease);
}
.ne-bk .ne-btn:hover{background:#fff;}
.ne-bk .ne-btn span[aria-hidden]{transition:transform var(--ne-t) var(--ne-ease);}
.ne-bk .ne-btn:hover span[aria-hidden]{transform:translateX(3px);}

/* Running head: number / section / count. Type only, no rule. */
.ne-bk .ne-rh{
  display:grid;grid-template-columns:var(--ne-col2) minmax(0,1fr) auto;align-items:baseline;
  margin-bottom:clamp(36px,4vw,56px);
}
.ne-bk .ne-rh__n{grid-column:1;font-size:var(--ne-fs-meta);color:var(--ne-muted);}
.ne-bk .ne-rh__t{grid-column:2;font-size:var(--ne-fs-meta);letter-spacing:.14em;text-transform:uppercase;line-height:1.4;}
.ne-bk .ne-rh__a{grid-column:3;justify-self:end;font-size:var(--ne-fs-meta);letter-spacing:var(--ne-track-meta);text-transform:uppercase;color:var(--ne-muted);}

/* =========================================================================
   HEAD: display title, lead and actions, then the booking facts
   ========================================================================= */
.ne-bk-head{padding:clamp(64px,7.4vw,120px) 0 0;}
.ne-bk-head__eyebrow{
  margin:0 0 clamp(18px,2vw,28px) var(--ne-col2);
  font-size:var(--ne-fs-meta);letter-spacing:.14em;text-transform:uppercase;color:var(--ne-muted);
}
/* Two-column modules: the 104px axis, a wide column, a gutter track, a
   narrow column. The gutter is a track (not column-gap) so the second
   column starts exactly on the shared 104px axis. */
.ne-bk-head__grid{
  display:grid;grid-template-columns:var(--ne-col2) minmax(0,6fr) clamp(32px,4vw,72px) minmax(0,5fr);
  align-items:end;
}
.ne-bk-head__t{
  grid-column:2;
  font-size:clamp(52px,7.6vw,112px);line-height:.92;letter-spacing:-.045em;
  margin-left:-.04em;
}
.ne-bk-head__lead{grid-column:4;padding-bottom:.4em;}
.ne-bk-head__intro{font-size:var(--ne-fs-lead);line-height:1.5;color:var(--ne-text);max-width:40ch;}
.ne-bk-head__sub{margin-top:12px;font-size:15px;line-height:1.55;color:var(--ne-muted);max-width:46ch;}
.ne-bk-head__act{display:flex;align-items:center;flex-wrap:wrap;gap:12px 28px;margin-top:28px;}

.ne-bk-facts{
  display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:20px 40px;
  margin:clamp(64px,7vw,104px) 0 0 var(--ne-col2);
  padding-top:22px;border-top:1px solid var(--ne-rule);
}
.ne-bk-facts li{min-width:0;font-size:15px;line-height:1.45;color:var(--ne-text);}
.ne-bk-facts__n{display:block;margin-bottom:8px;font-size:var(--ne-fs-meta);color:var(--ne-muted);}
.ne-bk-facts a{color:var(--ne-text);text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:1px;text-underline-offset:4px;transition:text-decoration-color var(--ne-t-fast) var(--ne-ease);}
.ne-bk-facts a:hover,.ne-bk-facts a:focus-visible{text-decoration-color:currentColor;}

/* =========================================================================
   SECTIONS
   ========================================================================= */
.ne-bk-sec{padding:var(--ne-sec-y) 0 0;}
.ne-bk-sec__head{
  display:grid;grid-template-columns:var(--ne-col2) minmax(0,6fr) clamp(32px,4vw,72px) minmax(0,5fr);
  align-items:end;
}
.ne-bk-sec__t{grid-column:2;font-size:var(--ne-fs-h2);line-height:1.08;letter-spacing:-.025em;}
.ne-bk-sec__intro{grid-column:4;font-size:16px;line-height:1.55;color:var(--ne-muted);max-width:46ch;}

/* ---- 01 Roster: graded portraits, number, name, one line of metadata ---- */
.ne-bk-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(44px,4.4vw,72px) clamp(16px,2vw,28px);
  margin-top:clamp(44px,4.6vw,72px);
}
.ne-bk-card{display:grid;grid-template-columns:28px minmax(0,1fr);align-content:start;min-width:0;}
.ne-bk-card__img{
  grid-column:1 / -1;display:block;aspect-ratio:4/5;margin-bottom:18px;
  background:var(--ne-surface);overflow:hidden;
}
.ne-bk-card__img img{
  width:100%;height:100%;object-fit:cover;object-position:50% 25%;
  filter:var(--ne-grade);transform:scale(1);
  transition:transform 700ms var(--ne-ease),filter 400ms var(--ne-ease);
}
.ne-bk-card:hover .ne-bk-card__img img,
.ne-bk-card:focus-within .ne-bk-card__img img{transform:scale(1.025);filter:grayscale(1) contrast(1.08) brightness(1.02);}
.ne-bk-card__no{
  grid-column:1;align-self:baseline;padding-top:.45em;
  font-size:var(--ne-fs-meta);line-height:1;color:var(--ne-muted);
  transition:color var(--ne-t-fast) var(--ne-ease);
}
.ne-bk-card:hover .ne-bk-card__no,.ne-bk-card:focus-within .ne-bk-card__no{color:var(--ne-red-text);}
.ne-bk-card__nm{grid-column:2;font-size:clamp(20px,1.75vw,25px);line-height:1.15;letter-spacing:-.02em;overflow-wrap:anywhere;}
.ne-bk-card__nm a{transition:color var(--ne-t-fast) var(--ne-ease);}
.ne-bk-card__nm a:hover{color:#fff;}
.ne-bk-card__mt{grid-column:2;margin-top:6px;font-size:14px;line-height:1.45;color:var(--ne-muted);}
.ne-bk-card__act{grid-column:2;display:flex;flex-wrap:wrap;gap:0 22px;margin-top:6px;}

/* ---- 02 Enquiry: copy on the second column, fields as single hairlines ---- */
.ne-bk-enq{scroll-margin-top:calc(var(--ne-head) + 8px);}
.ne-bk-enq__grid{
  display:grid;grid-template-columns:var(--ne-col2) minmax(0,5fr) clamp(32px,5vw,96px) minmax(0,7fr);
  align-items:start;
}
.ne-bk-enq__intro{grid-column:2;position:sticky;top:calc(var(--ne-head) + 40px);}
.ne-bk-enq__copy{margin-top:20px;font-size:16px;line-height:1.55;color:var(--ne-text-2);max-width:40ch;}
.ne-bk-enq__mail{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 18px;margin-top:28px;}
.ne-bk-enq__k{font-size:var(--ne-fs-meta);letter-spacing:.14em;text-transform:uppercase;color:var(--ne-muted);}
.ne-bk-enq__panel{grid-column:4;min-width:0;}

.ne-bk-notice{margin:0 0 32px;padding:12px 0 12px 16px;border-left:2px solid var(--ne-red-text);font-size:15px;line-height:1.5;}
.ne-bk-notice.is-success{border-left-color:var(--ne-text);}

.ne-bk-form__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 32px;}
.ne-bk-field{display:flex;flex-direction:column;gap:6px;margin:0;min-width:0;}
.ne-bk-field--full{grid-column:1 / -1;}
.ne-bk-field label{font-size:var(--ne-fs-meta);letter-spacing:var(--ne-track-meta);text-transform:uppercase;color:var(--ne-muted);}
.ne-bk-field__opt{text-transform:none;letter-spacing:0;color:var(--ne-muted);}
.ne-bk .ne-bk-field :is(input,select,textarea){
  display:block;width:100%;min-height:46px;margin:0;padding:10px 0;
  border:0;border-bottom:1px solid rgba(241,239,233,.28);border-radius:0;
  background:transparent;box-shadow:none;color:var(--ne-text);
  font:inherit;font-size:17px;line-height:1.4;
  -webkit-appearance:none;appearance:none;
  transition:border-color var(--ne-t-fast) var(--ne-ease),box-shadow var(--ne-t-fast) var(--ne-ease);
}
.ne-bk .ne-bk-field textarea{min-height:132px;padding-top:12px;resize:vertical;}
.ne-bk .ne-bk-field select{
  padding-right:32px;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23f1efe9' stroke-opacity='.8' stroke-width='1.3'/%3E%3C/svg%3E");
  background-position:right 4px center;background-size:12px 8px;background-repeat:no-repeat;
}
.ne-bk-field select option{background:var(--ne-surface);color:var(--ne-text);}
.ne-bk .ne-bk-field :is(input,select,textarea):hover{border-bottom-color:rgba(241,239,233,.5);}
/* Focus: the hairline turns red and doubles. Outranks the legacy
   body:not(...) input:focus-visible ring (outline plus 8px radius). */
.ne-bk .ne-bk-field :is(input,select,textarea):is(:focus,:focus-visible){
  outline:none;border-radius:0;border-bottom-color:var(--ne-red-text);box-shadow:0 1px 0 var(--ne-red-text);
}
.ne-bk-field input:-webkit-autofill{
  -webkit-text-fill-color:var(--ne-text);
  box-shadow:inset 0 0 0 100px var(--ne-bg);
  caret-color:var(--ne-text);
}
.ne-bk-field input:-webkit-autofill:focus{box-shadow:inset 0 0 0 100px var(--ne-bg),0 1px 0 var(--ne-red-text);}

.ne-bk-form__foot{display:flex;align-items:center;flex-wrap:wrap;gap:16px 28px;margin-top:40px;}
.ne-bk-form__note{font-size:13px;line-height:1.5;color:var(--ne-muted);max-width:40ch;}

/* =========================================================================
   Responsive
   ========================================================================= */
@media (max-width:1100px){
  .ne-bk-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
}
@media (max-width:960px){
  .ne-bk{--ne-head:60px;--ne-col2:88px;}
  .ne-bk .ne-rh{grid-template-columns:auto minmax(0,1fr) auto;column-gap:14px;}
  .ne-bk-head__eyebrow,.ne-bk-facts{margin-left:0;}
  .ne-bk-head__grid,.ne-bk-sec__head,.ne-bk-enq__grid{grid-template-columns:minmax(0,1fr);row-gap:24px;}
  .ne-bk-head__t,.ne-bk-head__lead,.ne-bk-sec__t,.ne-bk-sec__intro,.ne-bk-enq__intro,.ne-bk-enq__panel{grid-column:1;}
  .ne-bk-head__lead{padding-bottom:0;}
  .ne-bk-sec__head{row-gap:14px;}
  .ne-bk-enq__intro{position:static;}
  .ne-bk-enq__panel{margin-top:24px;}
}
@media (max-width:640px){
  .ne-bk{--ne-sec-y:72px;}
  .ne-bk .ne-rh{gap:0 10px;margin-bottom:28px;}
  .ne-bk-head{padding-top:44px;}
  .ne-bk-head__t{font-size:clamp(52px,16vw,72px);}
  .ne-bk-head__intro{font-size:17px;}
  .ne-bk-facts{grid-auto-flow:row;grid-template-columns:minmax(0,1fr);gap:0;margin-top:48px;padding-top:6px;}
  .ne-bk-facts li{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:baseline;padding:10px 0;}
  .ne-bk-facts__n{margin:0;}
  .ne-bk-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 14px;margin-top:36px;}
  .ne-bk-card{grid-template-columns:minmax(0,1fr);}
  .ne-bk-card__img{margin-bottom:12px;}
  .ne-bk-card__no{display:none;}
  .ne-bk-card__nm,.ne-bk-card__mt,.ne-bk-card__act{grid-column:1;}
  .ne-bk-card__nm{font-size:19px;}
  .ne-bk-card__mt{font-size:13px;}
  .ne-bk-card__act{gap:0 16px;}
  .ne-bk-form__grid{grid-template-columns:minmax(0,1fr);gap:26px;}
  .ne-bk-form__foot{flex-direction:column;align-items:stretch;}
  .ne-bk-form__foot .ne-btn{justify-content:center;}
}
@media (prefers-reduced-motion:reduce){
  .ne-bk *,.ne-bk *::before,.ne-bk *::after{transition:none !important;}
}

/* Round 7: a night on the floor between the offer and the facts */
.ne-bk-band{margin:clamp(48px,5.2vw,80px) 0 0 var(--ne-col2);aspect-ratio:21/8;overflow:hidden;background:#160707;}
.ne-bk-band img{width:100%;height:100%;object-fit:cover;object-position:50% 62%;}
.ne-bk-band + .ne-bk-facts{margin-top:clamp(28px,3vw,40px);}
@media (max-width:960px){
  .ne-bk-band{margin-left:0;}
}
@media (max-width:640px){
  .ne-bk-band{aspect-ratio:4/3;margin-top:40px;}
}
