.room-landing-page { background: #fff; font-size: 16px; }
.reservation-page .public-card { overflow-wrap: anywhere; }
.reservation-page :is(input, button) { min-height: 44px; }
.room-landing-page .public-wrap { max-width: 1180px; padding: 24px; }
.room-landing-page h1 { font-size: clamp(26px, 3vw, 36px); }
.room-landing-page h2 { font-size: 23px; }
.room-heading { margin-bottom: 20px; }
.room-brand { width: 140px; margin-bottom: 20px; }
.room-heading p { margin: 8px 0; }
.room-photo-tools { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; margin: 12px 0; }
.room-photo-tools button, .room-photo-tools a { border: 1px solid #c5d5ea; border-radius: 12px; padding: 10px 16px; background: #fff; color: #1455b8; cursor: pointer; min-height: 44px; }
.room-photo-viewer { width: min(900px, calc(100% - 32px)); max-height: 90vh; border: 0; border-radius: 20px; padding: 20px; }
.room-photo-viewer::backdrop { background: #082a6bb3; }
.room-photo-viewer img { width: 100%; height: auto; border-radius: 16px; }
.room-photo-viewer figure { margin: 20px 0; }
.room-photo-viewer button { min-height: 44px; padding: 10px 20px; border-radius: 12px; cursor: pointer; }
.room-stays-footer { margin-top: 40px; padding-top: 24px; border-top: 1px solid #e3e9f1; }
.room-stays-footer .public-portal-return { margin: 24px 0 0; }
.room-gallery { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 8px; overflow: hidden; border-radius: 20px; }
.room-gallery img { width: 100%; height: 220px; object-fit: cover; border-radius: 16px; }
.room-gallery img:first-child { grid-row: span 2; height: 448px; }
.room-gallery:has(img:only-child) { grid-template-columns: 1fr; }
.room-gallery:has(img:nth-child(2):last-child) { grid-template-columns: 2fr 1fr; }
.room-gallery:has(img:nth-child(2):last-child) img { height: 360px; }
.room-columns { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 36px; align-items: start; }
.room-columns:not(:has(.room-booking)) { grid-template-columns: 1fr; }
.room-main { min-width: 0; }
.room-review-guest { display: flex; align-items: center; gap: 12px; }
.room-review-avatar { display: flex; align-items: center; justify-content: center; flex: 0 0 44px; width: 44px; height: 44px; border-radius: 50%; background: #eaf1fb; color: #082a6b; overflow: hidden; }
.room-review-avatar svg { width: 30px; height: 30px; }
.room-review-guest-details { min-width: 0; }
.room-main > section { padding: 24px 0; border-bottom: 1px solid #e3e9f1; margin: 0; background: #fff; border-radius: 0; }
.room-landing-page .public-panel { display: block; border: 0; box-shadow: none; }
.room-landing-page .public-amenities-card { border: 0; box-shadow: none; }
.room-facts, .room-highlights ul { display: flex; flex-wrap: wrap; gap: 20px; list-style: none; padding: 0; }
.room-facts li, .room-highlights li { display: flex; gap: 10px; align-items: center; }
.room-highlights ul { display: grid; grid-template-columns: 1fr 1fr; }
.room-icon { width: 24px; height: 24px; flex-shrink: 0; color: #1455b8; }
.room-highlight-icon { display: grid; place-items: center; background: #e7f3ff; border-radius: 50%; width: 44px; height: 44px; flex-shrink: 0; }
.room-landing-page .public-amenities-list { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding: 0; list-style: none; }
.room-landing-page .public-amenities-list li { display: flex; gap: 12px; align-items: center; }
.room-landing-page .public-amenity-icon { display: inline-flex; flex: 0 0 24px; align-items: center; }
.room-description.is-collapsed { max-height: 220px; overflow: hidden; }
.room-more { margin-top: 12px; background: #edf4ff; color: #1455b8; border: 0; border-radius: 12px; padding: 10px 16px; cursor: pointer; }
.room-section-heading { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; }
.room-event-row { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(190px, 46%); gap: 16px; overflow-x: auto; padding-bottom: 12px; }
.room-event-row .event-card { border-radius: 16px; overflow: hidden; }
.room-event-disclaimer { font-size: 12px; line-height: 1.4; margin: 8px 0 0; }
.room-booking { position: sticky; top: 24px; border: 1px solid #dfe7f1; border-radius: 20px; padding: 24px; box-shadow: 0 8px 28px #082a6b0d; }
.room-booking label { display: grid; gap: 5px; margin-bottom: 12px; font-size: 14px; }
.room-booking input, .room-booking textarea, .room-booking select { width: 100%; min-width: 0; padding: 10px; border: 1px solid #b9c6d9; border-radius: 10px; min-height: 44px; }
.room-date-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.room-booking fieldset { border: 0; padding: 12px 0 0; margin: 0; }
.room-booking legend { font-weight: 700; }
.room-booking button { width: 100%; background: #1455e8; border: 0; border-radius: 25px; color: white; min-height: 48px; padding: 12px; font-weight: 700; cursor: pointer; }
.room-booking button:disabled { background: #dce4ef; color: #56647a; cursor: default; }
.room-booking .room-payment-note { margin-top: 24px; line-height: 1.7; }
#room-quote { padding: 12px 0; overflow-wrap: anywhere; }
#room-quote p { margin: 8px 0; }
.room-landing-page :is(a, button, input, textarea, select):focus-visible { outline: 3px solid #1455b8; outline-offset: 3px; }
.room-landing-page [hidden] { display: none; }
@media (max-width: 800px) {
  .room-landing-page .public-wrap { padding: 16px; }
  .room-columns { display: flex; flex-direction: column; gap: 24px; }
  .room-main { display: contents; }
  .room-main > * { order: 4; width: 100%; }
  .room-main > .room-facts { order: 0; }
  .room-main > .room-highlights { order: 1; }
  .room-main > .room-overview { order: 2; }
  .room-booking { position: static; order: 3; width: 100%; padding: 20px; }
  .room-gallery { display: block; }
  .room-gallery img, .room-gallery img:first-child, .room-gallery:has(img:nth-child(2):last-child) img { width: 100%; height: 260px; }
  .room-gallery img:not(:first-child) { display: none; }
  .room-highlights ul { grid-template-columns: 1fr; }
  .room-event-row { grid-auto-columns: 82%; }
}

.room-calendar-dialog { width: min(720px, calc(100% - 24px)); max-height: 90vh; overflow: auto; border: 1px solid #dfe7f1; border-radius: 20px; padding: 24px; color: #082a6b; }
.room-calendar-dialog::backdrop { background: #082a6b80; }
.room-calendar-nav, .room-calendar-footer { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.room-calendar-nav p { text-align: center; }
.room-calendar button, .room-calendar-close { min-height: 44px; min-width: 44px; border: 0; border-radius: 12px; background: #edf4ff; color: #082a6b; cursor: pointer; font: inherit; }
.room-calendar button:disabled { opacity: .4; cursor: default; }
.room-calendar-months { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.room-calendar-months h3 { text-align: center; font-size: 16px; }
.room-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; text-align: center; }
.room-calendar-grid > span { font-size: 12px; color: #56647a; padding: 6px 0; }
.room-calendar .room-calendar-day { min-width: 0; padding: 0; background: white; border-radius: 50%; font-size: 14px; font-weight: 600; }
.room-calendar-day[aria-disabled="true"] { color: #8b929c; cursor: default; }
.room-calendar-day.is-unavailable, .room-calendar-day.is-past, .room-calendar-unavailable { text-decoration: line-through; color: #8b929c; }
.room-calendar-day.is-past { opacity: .45; }
.room-calendar .room-calendar-day.is-in-range { background: #edf4ff; border-radius: 0; }
.room-calendar .room-calendar-day.is-selected, .room-calendar-selected-legend { background: #082a6b; color: white; }
.room-calendar-day.is-selected, .room-calendar-day.is-checkout { text-decoration: none; }
.room-calendar-day.is-checkout { color: #082a6b; }
.room-calendar-selected-legend { border-radius: 4px; padding: 2px 4px; }
.room-calendar-footer { margin-top: 20px; font-size: 12px; }
.room-calendar-footer button, .room-calendar-close { padding: 8px 12px; }
.room-booking [data-open-calendar] { display: grid; gap: 4px; border: 1px solid #b9c6d9; border-radius: 10px; background: white; color: #082a6b; text-align: left; padding: 10px; font-size: 14px; }
.room-booking [data-open-calendar] small { font-size: 11px; }
@media (max-width: 800px) {
  .room-calendar-months { grid-template-columns: 1fr; }
  .room-calendar-dialog { padding: 16px; }
  .room-calendar-footer { flex-wrap: wrap; }
}
