/* Reusable booking form and room detail composition; Gutenberg owns content. */
.nr-entry-body .nr-room-detail.nr-room-booking-ready {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 440px);
  align-items: start;
  column-gap: clamp(32px, 5vw, 90px);
  row-gap: 22px;
  width: min(100%, 1454px);
  max-width: 1454px;
  margin-inline: auto;
  padding: 80px 24px 110px;
}
.nr-entry-body .nr-room-detail.nr-room-booking-ready > * {
  grid-column: 1;
  width: 100%;
  max-width: none;
  min-width: 0;
  margin: 0;
}
.nr-entry-body .nr-room-detail.nr-room-booking-ready > .wp-block-image {
  grid-column: 1;
  margin-top: 45px;
}
.nr-entry-body .nr-room-detail.nr-room-booking-ready > .wp-block-image img {
  display: block;
  width: 100%;
  max-height: 680px;
  object-fit: cover;
}
.nr-entry-body .nr-room-detail.nr-room-booking-ready > .wp-block-buttons { grid-column: 1; }
.nr-entry-body .nr-room-detail.nr-room-booking-ready > .nr-room-booking-panel,
.nr-entry-body .nr-room-detail.nr-room-booking-ready > .wp-block-shortcode:has(.nr-room-booking-panel) {
  grid-column: 2;
  grid-row: 1 / span 4;
  position: sticky;
  top: 24px;
  align-self: start;
  width: 100%;
  margin: 0;
}
.nr-room-booking-panel {
  scroll-margin-top: 120px;
  padding: 36px;
  background: #fff;
  border: 1px solid rgba(10, 30, 55, .1);
  box-shadow: 0 14px 38px rgba(10, 30, 55, .08);
}
.nr-room-booking-panel__price {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 28px;
  color: var(--nr-ink);
  font: 700 clamp(30px, 3vw, 44px)/1.2 var(--nr-heading);
}
.nr-room-booking-panel__price small { font: 400 15px/1.4 var(--nr-body); }
.nr-room-booking-panel #hotel_booking_room_hidden,
.nr-room-booking-panel .wphb-room-tmpl-dates-available,
.nr-room-booking-panel .hb-search-results-form-container,
.nr-room-booking-panel .hotel-booking-search {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  background: transparent;
  box-shadow: none;
}
.nr-room-booking-panel .hb-booking-room-form-header .description { display: none; }
.nr-room-booking-panel .hb-booking-room-form-group { min-width: 0; margin-bottom: 18px; }
.nr-room-booking-panel .hb-booking-room-form-group label {
  display: block;
  margin-bottom: 8px;
  color: var(--nr-ink);
  font: 600 13px/1.4 var(--nr-body);
}
.nr-room-booking-panel input:not([type="hidden"]),
.nr-room-booking-panel select {
  width: 100%;
  max-width: none;
  min-height: 48px;
  padding: 10px 12px;
  border: 1px solid rgba(10, 30, 55, .2);
  border-radius: 0;
  color: var(--nr-ink);
  background: #fff;
  font: 400 15px/1.4 var(--nr-body);
  box-sizing: border-box;
}
.nr-room-booking-panel .hb-total-price { display: flex; justify-content: space-between; gap: 14px; }
.nr-room-booking-panel .hb_button,
.nr-room-booking-panel button[type="submit"] {
  display: block;
  width: 100%;
  min-height: 54px;
  padding: 13px 20px;
  border: 0;
  border-radius: 0;
  background: var(--nr-navy);
  color: #fff;
  font: 700 15px/1.4 var(--nr-body);
  cursor: pointer;
}
.nr-room-booking-panel .hb_button:hover,
.nr-room-booking-panel button[type="submit"]:hover { background: #456e8d; color: #fff; }

/* Figma room page: both columns are independent. Images never span behind booking widgets. */
.nr-entry-body .wp-block-cover.nr-hero.nr-room-figma-hero {
  min-height: clamp(520px, 37vw, 711px) !important;
  padding: 155px 24px 95px;
}
.nr-entry-body .wp-block-cover.nr-room-figma-hero .wp-block-cover__inner-container {
  max-width: 680px;
  text-align: center;
}
.nr-entry-body .wp-block-cover.nr-room-figma-hero h1 {
  max-width: 650px;
  margin: 0 auto;
  font-size: clamp(38px, 4.2vw, 80px);
  line-height: 1.12;
}
.nr-entry-body .nr-room-detail.nr-room-booking-ready.nr-room-figma-ready {
  box-sizing: border-box;
  grid-template-columns: minmax(0, 925fr) minmax(320px, 515fr);
  column-gap: clamp(36px, 6.2vw, 120px);
  row-gap: 62px;
  width: min(calc(100% - 48px), 1612px);
  max-width: 1612px;
  padding: 80px 0 100px;
  background: var(--nr-ice);
}
.nr-entry-body .nr-room-detail.nr-room-booking-ready.nr-room-figma-ready > * {
  box-sizing: border-box;
  width: 100% !important;
  max-width: none !important;
  min-width: 0;
  margin: 0 !important;
}
.nr-entry-body .nr-room-figma-ready > .nr-room-figma-intro {
  grid-column: 1;
  grid-row: 1;
}
.nr-entry-body .nr-room-figma-ready .nr-room-figma-intro > * {
  max-width: none;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.nr-room-figma-intro .nr-eyebrow,
.nr-room-figma-intro .nr-room-amenities-heading {
  margin: 0 0 22px !important;
  color: #7dbff5;
  font: 700 16px/1.5 var(--nr-body);
  text-transform: uppercase;
}
.nr-room-figma-intro h2 {
  margin: 0 0 34px !important;
  color: var(--nr-navy);
  font: 700 clamp(32px, 3vw, 48px)/1.25 var(--nr-heading);
}
.nr-room-figma-intro > p:not(.nr-eyebrow):not(.nr-room-amenities-heading) {
  margin: 0 0 23px !important;
  color: rgba(4, 20, 66, .76);
  font: 400 18px/1.8 var(--nr-body);
}
.nr-room-figma-intro .nr-room-amenities-heading { margin-top: 34px !important; margin-bottom: 18px !important; }
.nr-entry-body .nr-room-figma-intro > .nr-room-amenities-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  width: min(100%, 620px);
  max-width: 620px;
  margin: 0 !important;
}
.nr-entry-body .nr-room-amenities-grid > .nr-room-amenity {
  display: flex;
  align-items: center;
  gap: 10px;
  box-sizing: border-box;
  min-height: 50px;
  min-width: 0;
  padding: 8px 12px;
  border-radius: 5px;
  background: var(--nr-pale);
  margin: 0 !important;
}
.nr-room-amenity > figure.wp-block-image,
.nr-room-spec-label > figure.wp-block-image { flex: 0 0 25px; width: 25px; height: 25px; margin: 0 !important; }
.nr-room-amenity > figure.wp-block-image img,
.nr-room-spec-label > figure.wp-block-image img { display: block; width: 100%; height: 100%; object-fit: contain; }
.nr-room-amenity > p { min-width: 0; margin: 0 !important; color: var(--nr-ink); font: 400 15px/1.4 var(--nr-body); }

/* One native Gutenberg Gallery powers all seven images and the existing lightbox. */
.nr-entry-body .nr-room-figma-ready > figure.nr-room-figma-gallery,
.nr-entry-body .nr-room-figma-ready > .nr-gallery-shell {
  grid-column: 1;
  grid-row: 2;
  width: 100% !important;
  max-width: none !important;
  min-width: 0;
  margin: 0 !important;
}
.nr-room-figma-ready .nr-gallery-shell[data-nr-width="full"] {
  left: auto !important;
  transform: none !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
}
.nr-entry-body .nr-room-figma-ready figure.nr-room-figma-gallery {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 16px !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
.nr-entry-body .nr-room-figma-ready figure.nr-room-figma-gallery > figure.wp-block-image {
  grid-column: auto;
  display: block !important;
  width: 100% !important;
  min-width: 0;
  height: 120px !important;
  margin: 0 !important;
  overflow: hidden;
}
.nr-entry-body .nr-room-figma-ready figure.nr-room-figma-gallery > figure.wp-block-image:nth-child(-n+3) {
  grid-column: 1 / -1;
  height: clamp(320px, 32vw, 600px) !important;
}
.nr-entry-body .nr-room-figma-ready figure.nr-room-figma-gallery > figure.wp-block-image:nth-child(2),
.nr-entry-body .nr-room-figma-ready figure.nr-room-figma-gallery > figure.wp-block-image:nth-child(3) { height: clamp(300px, 27vw, 500px) !important; }
.nr-room-figma-ready figure.nr-room-figma-gallery > figure.wp-block-image a,
.nr-room-figma-ready figure.nr-room-figma-gallery > figure.wp-block-image img { display: block; width: 100%; height: 100%; }
.nr-room-figma-ready figure.nr-room-figma-gallery > figure.wp-block-image img { object-fit: cover; }

/* Right column: editable native booking shortcode and six room facts. */
.nr-entry-body .nr-room-figma-ready > .nr-room-figma-sidebar {
  grid-column: 2 !important;
  grid-row: 1 / span 2 !important;
  position: relative !important;
  top: auto !important;
  align-self: start;
  display: flex;
  flex-direction: column;
  gap: clamp(36px, 7.2vw, 139px);
  width: 100%;
  padding: 0;
}
.nr-entry-body .nr-room-figma-sidebar > .nr-room-booking-box,
.nr-entry-body .nr-room-figma-sidebar > .nr-room-specs {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin: 0 !important;
  background: var(--nr-pale);
}
.nr-entry-body .nr-room-booking-box { padding: clamp(25px, 3vw, 48px); box-shadow: 0 20px 30px rgba(0,0,0,.05); }
.nr-room-booking-box > .wp-block-shortcode { margin: 0 !important; }
.nr-room-booking-box .nr-room-booking-panel {
  width: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.nr-room-booking-box .nr-room-booking-panel__price { color: var(--nr-navy); font: 400 clamp(35px, 3vw, 48px)/1.25 var(--nr-heading); }
.nr-room-booking-box .nr-room-booking-panel__price small { font-size: 20px; }
.nr-room-booking-box .hb-search-results-form-container { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 1px; }
.nr-room-booking-box .hb-booking-room-form-group { grid-column: 1 / -1; margin: 0 !important; padding: 12px 14px; background: #fff; border: 1px solid rgba(4,20,66,.2); border-radius: 6px; }
.nr-room-booking-box .hb-booking-room-form-group:nth-child(1),
.nr-room-booking-box .hb-booking-room-form-group:nth-child(2) { grid-column: auto; }
.nr-room-booking-box .hb-booking-room-form-group label { color: #3e59a6; font-weight: 800; text-transform: uppercase; font-size: 12px; }
.nr-room-booking-box .hb-booking-room-form-group input:not([type="hidden"]),
.nr-room-booking-box .hb-booking-room-form-group select { min-height: 34px; padding: 3px 0; border: 0; background: transparent; }
.nr-room-booking-box .hb-booking-room-form-group.hb-room-price { padding: 16px 0 0; border: 0; background: transparent; }
.nr-room-booking-box .hb-room-price .hb-total-price { color: var(--nr-navy); font: 800 18px/1.5 var(--nr-body); }
.nr-room-booking-box .hb-booking-room-form-group:has(button.hb_button) { padding: 0; border: 0; background: transparent; }
.nr-room-booking-box .hb-booking-room-form-group button.hb_button { min-height: 56px; }
.nr-room-booking-box .wphb-max-qty { display: none !important; }
.nr-room-booking-box .nr-room-booking-help { margin: 16px 0 0 !important; text-align: center; font: 600 14px/1.5 var(--nr-body); }
.nr-room-booking-box .nr-room-booking-help a { color: #3e59a6; text-decoration: underline; text-underline-offset: 3px; }
.nr-entry-body .nr-room-specs { padding: 26px 40px; }
.nr-entry-body .nr-room-specs > .nr-room-spec-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-width: 0;
  padding: 16px 0;
  margin: 0 !important;
  border-bottom: 1px solid rgba(4,20,66,.18);
}
.nr-entry-body .nr-room-specs > .nr-room-spec-row:last-child { border-bottom: 0; }
.nr-entry-body .nr-room-spec-row > .nr-room-spec-label { display: flex; align-items: center; gap: 12px; margin: 0 !important; min-width: 0; }
.nr-room-spec-label > figure.wp-block-image { flex-basis: 20px; width: 20px; height: 20px; }
.nr-room-spec-label > p { margin: 0 !important; font: 600 15px/1.5 var(--nr-body); color: var(--nr-ink); }
.nr-room-spec-row > p.nr-room-spec-value { flex: 0 1 auto; margin: 0 !important; color: rgba(4,20,66,.7); text-align: right; font: 400 15px/1.5 var(--nr-body); }

@media (max-width: 1100px) {
  .nr-entry-body .nr-room-detail.nr-room-booking-ready { grid-template-columns: minmax(0, 1fr); padding: 55px 20px 75px; }
  .nr-entry-body .nr-room-detail.nr-room-booking-ready > .nr-room-booking-panel,
  .nr-entry-body .nr-room-detail.nr-room-booking-ready > .wp-block-shortcode:has(.nr-room-booking-panel) {
    grid-column: 1;
    grid-row: auto;
    position: static;
    max-width: 570px;
  }
  .nr-entry-body .nr-room-detail.nr-room-booking-ready.nr-room-figma-ready { grid-template-columns: minmax(0, 1fr); row-gap: 38px; padding: 54px 0 76px; }
  .nr-entry-body .nr-room-figma-ready > .nr-room-figma-intro { grid-column: 1; grid-row: 1; }
  .nr-entry-body .nr-room-figma-ready > .nr-room-figma-sidebar { grid-column: 1 !important; grid-row: 2 !important; max-width: 650px !important; gap: 30px; }
  .nr-entry-body .nr-room-figma-ready > figure.nr-room-figma-gallery,
  .nr-entry-body .nr-room-figma-ready > .nr-gallery-shell { grid-column: 1; grid-row: 3; }
}
@media (max-width: 600px) {
  .nr-room-booking-panel { padding: 22px; }
  .nr-entry-body .nr-room-detail.nr-room-booking-ready { row-gap: 18px; }
  .nr-entry-body .wp-block-cover.nr-room-figma-hero { padding-top: 195px; }
  .nr-entry-body .nr-room-detail.nr-room-booking-ready.nr-room-figma-ready { width: calc(100% - 36px); }
  .nr-room-figma-intro > p:not(.nr-eyebrow):not(.nr-room-amenities-heading) { font-size: 16px; }
  .nr-entry-body .nr-room-figma-intro > .nr-room-amenities-grid { grid-template-columns: 1fr; }
  .nr-entry-body .nr-room-figma-ready figure.nr-room-figma-gallery { gap: 8px !important; }
  .nr-entry-body .nr-room-figma-ready figure.nr-room-figma-gallery > figure.wp-block-image { height: 72px !important; }
  .nr-entry-body .nr-room-figma-ready figure.nr-room-figma-gallery > figure.wp-block-image:nth-child(-n+3) { height: 300px !important; }
  .nr-entry-body .nr-room-booking-box { padding: 23px; }
  .nr-room-booking-box .hb-search-results-form-container { grid-template-columns: minmax(0, 1fr); }
  .nr-room-booking-box .hb-booking-room-form-group:nth-child(1),
  .nr-room-booking-box .hb-booking-room-form-group:nth-child(2) { grid-column: 1; }
  .nr-entry-body .nr-room-specs { padding: 16px 22px; }
  .nr-room-spec-row > p.nr-room-spec-value { font-size: 13px; }
}

/* Client occupancy rules: under-5 exemption, cot request and stay notes. */
.nr-room-booking-box .nr-baby-cot small,
.nr-room-booking-box .nr-under5 small,
.nr-room-booking-box .nr-stay-policy small {
  display: block;
  margin-top: 5px;
  color: rgba(4,20,66,.66);
  font-size: 12px;
  line-height: 1.5;
}
.nr-room-booking-box .nr-stay-policy {
  display: grid;
  gap: 5px;
  padding: 14px;
  background: rgba(69,110,141,.08);
}
.nr-room-booking-box .nr-stay-policy small { margin: 0; }

/* Occupancy guidance and baby-cot control. */
.nr-room-booking-box .nr-baby-cot__control {
  display: flex;
  align-items: center;
  gap: 10px;
}
.nr-room-booking-box .nr-baby-cot__control input[type="checkbox"] {
  -webkit-appearance: checkbox !important;
  appearance: auto !important;
  flex: 0 0 18px;
  width: 18px !important;
  height: 18px !important;
  min-width: 18px !important;
  min-height: 18px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: initial !important;
  border-radius: 0 !important;
  background: initial !important;
  box-shadow: none !important;
  accent-color: #456e8d;
  cursor: pointer;
}
.nr-room-booking-box .nr-baby-cot__control label {
  display: inline;
  width: auto;
  margin: 0;
  cursor: pointer;
}

/* Booking form field pairing on desktop. */
@media (min-width: 900px) {
  .nr-room-booking-box .nr-booking-check-in,
  .nr-room-booking-box .nr-booking-check-out,
  .nr-room-booking-box .nr-booking-guests,
  .nr-room-booking-box .nr-under5,
  .nr-room-booking-box .nr-booking-rooms,
  .nr-room-booking-box .nr-extra-beds {
    grid-column: auto !important;
  }

  .nr-room-booking-box .nr-baby-cot {
    grid-column: 1 / -1 !important;
    display: flex;
    align-items: center;
    gap: 16px;
    min-height: 0;
    padding-block: 10px;
  }

  .nr-room-booking-box .nr-baby-cot small {
    margin: 0;
  }
}
